diff --git a/README.md b/README.md index 0404065..4a67682 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,16 @@ TODO:: * ~~Logout~~ * Konfis auf der Frontseite mit Websockets updaten * ~~Mode hinzufügen: in der Config soll man zwischen Gemeinden und Konfis umschalten können, so dass entweder die Gemeinden oder Konfis gegeneinander spielen~~ -* Alles in Fenster packen +* ~~Alles in Fenster packen~~ * Alles an schriften/Bildern/Etc Herunterladen, damit alles auch offline funktioniert * ~~Random Port (wenn man irgendwie den laufenden port finden kann)~~ * ~~Front-Tabelle schöner~~ * ~~Version einbauen, soll in der Konsole und im Adminbereich angezeigt werden (dezent)~~ * Mini-Doku * Inbetriebnahme - * Bedienung \ No newline at end of file + * Bedienung + +Release: 3 Zips. Enthalten jeweils die kompilierten binaries, Templates, JS/CSS/Fonts/etc. Sozusagen Ready-to-Run. +* Win +* macOS +* Linux \ No newline at end of file diff --git a/assets/js/login.js b/assets/js/login.js index 187ae34..738b514 100644 --- a/assets/js/login.js +++ b/assets/js/login.js @@ -1,26 +1,29 @@ $(document).ready(function () { $('#loginform').submit(function (ev) { ev.preventDefault(); - console.log('sumbit'); - var pass = $('#password').val(); - if(pass == ""){ - $('#msg').html('
Bitte gib ein Passwort ein.
'); - } else { - $.ajax({ - url: '/login', - method: 'POST', - data: 'password=' + pass, - success: function (msg) { - console.log(msg); - if(msg.Message == 'success') { - $('#msg').html('
Erfolgreich eingeloggt.
'); - location.reload(); - } else { - $('#msg').html('
Falsches Passwort.
'); - } - } - }) - } - + login(); }); -}); \ No newline at end of file +}); + +function login() { + console.log('sumbit'); + var pass = $('#password').val(); + if(pass == ""){ + $('#msg').html('
Bitte gib ein Passwort ein.
'); + } else { + $.ajax({ + url: '/login', + method: 'POST', + data: 'password=' + pass, + success: function (msg) { + console.log(msg); + if(msg.Message == 'success') { + $('#msg').html('
Erfolgreich eingeloggt.
'); + location.reload(); + } else { + $('#msg').html('
Falsches Passwort.
'); + } + } + }) + } +} \ No newline at end of file diff --git a/astilectron-deps/vendor/astilectron-v0.6.0.zip b/astilectron-deps/vendor/astilectron-v0.6.0.zip new file mode 100644 index 0000000..23aa120 Binary files /dev/null and b/astilectron-deps/vendor/astilectron-v0.6.0.zip differ diff --git a/astilectron-deps/vendor/astilectron/.gitignore b/astilectron-deps/vendor/astilectron/.gitignore new file mode 100644 index 0000000..5586e27 --- /dev/null +++ b/astilectron-deps/vendor/astilectron/.gitignore @@ -0,0 +1,4 @@ +.idea/ +node_modules +npm-debug.log +dist diff --git a/astilectron-deps/vendor/astilectron/LICENSE b/astilectron-deps/vendor/astilectron/LICENSE new file mode 100644 index 0000000..b01df7f --- /dev/null +++ b/astilectron-deps/vendor/astilectron/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Quentin RENARD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/astilectron-deps/vendor/astilectron/main.js b/astilectron-deps/vendor/astilectron/main.js new file mode 100644 index 0000000..3588d4e --- /dev/null +++ b/astilectron-deps/vendor/astilectron/main.js @@ -0,0 +1,277 @@ +'use strict' + +const electron = require('electron') +const {app, BrowserWindow, ipcMain, Menu, MenuItem, Tray} = electron +const consts = require('./src/consts.js') +const client = require('./src/client.js').init() +const rl = require('readline').createInterface({input: client.socket}) + +let elements = {} +let menus = {} + +// App is ready +app.on('ready',() => { + // Init + const screen = electron.screen + Menu.setApplicationMenu(null) + + // Listen to screen events + screen.on('display-added', function() { + client.write(consts.mainTargetID, consts.eventNames.displayEventAdded, {displays: {all: screen.getAllDisplays(), primary: screen.getPrimaryDisplay()}}) + }) + screen.on('display-metrics-changed', function() { + client.write(consts.mainTargetID, consts.eventNames.displayEventMetricsChanged, {displays: {all: screen.getAllDisplays(), primary: screen.getPrimaryDisplay()}}) + }) + screen.on('display-removed', function() { + client.write(consts.mainTargetID, consts.eventNames.displayEventRemoved, {displays: {all: screen.getAllDisplays(), primary: screen.getPrimaryDisplay()}}) + }) + + // Listen on main ipcMain + ipcMain.on(consts.eventNames.ipcWindowMessage, (event, arg) => { + client.write(arg.targetID, consts.eventNames.windowEventMessage, {message: arg.message}) + }) + + // Read from client + rl.on('line', function(line){ + // Parse the JSON + var json = JSON.parse(line) + + // Switch on event name + switch (json.name) { + // Menu + case consts.eventNames.menuCmdCreate: + menuCreate(json.menu) + menus[json.menu.rootId] = json.targetID + setMenu(json.menu.rootId) + client.write(json.targetID, consts.eventNames.menuEventCreated) + break; + case consts.eventNames.menuCmdDestroy: + elements[json.targetID] = null + if (menus[json.menu.rootId] == json.targetID) { + menus[json.menu.rootId] = null + setMenu(json.menu.rootId) + } + client.write(json.targetID, consts.eventNames.menuEventDestroyed) + break; + + // Menu item + case consts.eventNames.menuItemCmdSetChecked: + elements[json.targetID].checked = json.menuItemOptions.checked + client.write(json.targetID, consts.eventNames.menuItemEventCheckedSet) + break; + case consts.eventNames.menuItemCmdSetEnabled: + elements[json.targetID].enabled = json.menuItemOptions.enabled + client.write(json.targetID, consts.eventNames.menuItemEventEnabledSet) + break; + case consts.eventNames.menuItemCmdSetLabel: + elements[json.targetID].label = json.menuItemOptions.label + client.write(json.targetID, consts.eventNames.menuItemEventLabelSet) + break; + case consts.eventNames.menuItemCmdSetVisible: + elements[json.targetID].visible = json.menuItemOptions.visible + client.write(json.targetID, consts.eventNames.menuItemEventVisibleSet) + break; + + // Sub menu + case consts.eventNames.subMenuCmdAppend: + elements[json.targetID].append(menuItemCreate(json.menuItem)) + setMenu(json.menuItem.rootId) + client.write(json.targetID, consts.eventNames.subMenuEventAppended) + break; + case consts.eventNames.subMenuCmdClosePopup: + var window = null + if (typeof json.windowId !== "undefined") { + window = elements[json.windowId] + } + elements[json.targetID].closePopup(window) + client.write(json.targetID, consts.eventNames.subMenuEventClosedPopup) + break; + case consts.eventNames.subMenuCmdInsert: + elements[json.targetID].insert(json.menuItemPosition, menuItemCreate(json.menuItem)) + setMenu(json.menuItem.rootId) + client.write(json.targetID, consts.eventNames.subMenuEventInserted) + break; + case consts.eventNames.subMenuCmdPopup: + var window = null + if (typeof json.windowId !== "undefined") { + window = elements[json.windowId] + } + json.menuPopupOptions.async = true + elements[json.targetID].popup(window, json.menuPopupOptions) + client.write(json.targetID, consts.eventNames.subMenuEventPoppedUp) + break; + + // Tray + case consts.eventNames.trayCmdCreate: + elements[json.targetID] = new Tray(json.trayOptions.image) + if (typeof json.menuId !== "undefined") { + elements[json.targetID].setContextMenu(elements[json.menuId]); + } + if (typeof json.trayOptions.tooltip !== "undefined") { + elements[json.targetID].setToolTip(json.trayOptions.tooltip); + } + client.write(json.targetID, consts.eventNames.trayEventCreated) + break; + case consts.eventNames.trayCmdDestroy: + elements[json.targetID].destroy() + elements[json.targetID] = null + client.write(json.targetID, consts.eventNames.trayEventDestroyed) + break; + + // Window + case consts.eventNames.windowCmdBlur: + elements[json.targetID].blur() + break; + case consts.eventNames.windowCmdCenter: + elements[json.targetID].center() + break; + case consts.eventNames.windowCmdClose: + elements[json.targetID].close() + break; + case consts.eventNames.windowCmdCreate: + windowCreate(json) + break; + case consts.eventNames.windowCmdDestroy: + elements[json.targetID].destroy() + elements[json.targetID] = null + break; + case consts.eventNames.windowCmdFocus: + elements[json.targetID].focus() + break; + case consts.eventNames.windowCmdHide: + elements[json.targetID].hide() + break; + case consts.eventNames.windowCmdMaximize: + elements[json.targetID].maximize() + break; + case consts.eventNames.windowCmdMessage: + elements[json.targetID].webContents.send(consts.eventNames.ipcWindowMessage, json.message) + break; + case consts.eventNames.windowCmdMinimize: + elements[json.targetID].minimize() + break; + case consts.eventNames.windowCmdMove: + elements[json.targetID].setPosition(json.windowOptions.x, json.windowOptions.y, true) + break; + case consts.eventNames.windowCmdResize: + elements[json.targetID].setSize(json.windowOptions.width, json.windowOptions.height, true) + break; + case consts.eventNames.windowCmdRestore: + elements[json.targetID].restore() + break; + case consts.eventNames.windowCmdShow: + elements[json.targetID].show() + break; + case consts.eventNames.windowCmdWebContentsCloseDevTools: + elements[json.targetID].webContents.closeDevTools() + break; + case consts.eventNames.windowCmdWebContentsOpenDevTools: + elements[json.targetID].webContents.openDevTools() + break; + case consts.eventNames.windowCmdUnmaximize: + elements[json.targetID].unmaximize() + break; + } + }) + + // Send electron.ready event + client.write(consts.mainTargetID, consts.eventNames.appEventReady, {displays: {all: screen.getAllDisplays(), primary: screen.getPrimaryDisplay()}}) +}) + +// menuCreate creates a new menu +function menuCreate(menu) { + if (typeof menu !== "undefined") { + elements[menu.id] = new Menu() + for(var i = 0; i < menu.items.length; i++) { + elements[menu.id].append(menuItemCreate(menu.items[i])) + } + return elements[menu.id] + } + return null +} + +// menuItemCreate creates a menu item +function menuItemCreate(menuItem) { + const itemId = menuItem.id + menuItem.options.click = function(menuItem) { + client.write(itemId, consts.eventNames.menuItemEventClicked, {menuItemOptions: menuItemToJSON(menuItem)}) + } + if (typeof menuItem.submenu !== "undefined") { + menuItem.options.type = 'submenu' + menuItem.options.submenu = menuCreate(menuItem.submenu) + } + elements[itemId] = new MenuItem(menuItem.options) + return elements[itemId] +} + +// menuItemToJSON returns the proper fields not to raise an exception +function menuItemToJSON(menuItem) { + return { + checked: menuItem.checked, + enabled: menuItem.enabled, + label: menuItem.label, + visible: menuItem.visible, + } +} + +// setMenu sets a menu +function setMenu(rootId) { + var menu = null + if (typeof menus[rootId] !== "undefined" && typeof elements[menus[rootId]] !== "undefined") { + menu = elements[menus[rootId]] + } + rootId == consts.mainTargetID ? Menu.setApplicationMenu(menu) : elements[rootId].setMenu(menu) +} + +// windowCreate creates a new window +function windowCreate(json) { + elements[json.targetID] = new BrowserWindow(json.windowOptions) + elements[json.targetID].setMenu(null) + elements[json.targetID].loadURL(json.url); + elements[json.targetID].on('blur', () => { client.write(json.targetID, consts.eventNames.windowEventBlur) }) + elements[json.targetID].on('closed', () => { + client.write(json.targetID, consts.eventNames.windowEventClosed) + delete elements[json.targetID] + }) + elements[json.targetID].on('focus', () => { client.write(json.targetID, consts.eventNames.windowEventFocus) }) + elements[json.targetID].on('hide', () => { client.write(json.targetID, consts.eventNames.windowEventHide) }) + elements[json.targetID].on('maximize', () => { client.write(json.targetID, consts.eventNames.windowEventMaximize) }) + elements[json.targetID].on('minimize', () => { client.write(json.targetID, consts.eventNames.windowEventMinimize) }) + elements[json.targetID].on('move', () => { client.write(json.targetID, consts.eventNames.windowEventMove) }) + elements[json.targetID].on('ready-to-show', () => { client.write(json.targetID, consts.eventNames.windowEventReadyToShow) }) + elements[json.targetID].on('resize', () => { client.write(json.targetID, consts.eventNames.windowEventResize) }) + elements[json.targetID].on('restore', () => { client.write(json.targetID, consts.eventNames.windowEventRestore) }) + elements[json.targetID].on('show', () => { client.write(json.targetID, consts.eventNames.windowEventShow) }) + elements[json.targetID].on('unmaximize', () => { client.write(json.targetID, consts.eventNames.windowEventUnmaximize) }) + elements[json.targetID].on('unresponsive', () => { client.write(json.targetID, consts.eventNames.windowEventUnresponsive) }) + elements[json.targetID].webContents.on('did-finish-load', () => { + elements[json.targetID].webContents.executeJavaScript( + `const {ipcRenderer} = require('electron') + const {dialog} = require('electron').remote + var astilectron = { + listen: function(callback) { + ipcRenderer.on('`+ consts.eventNames.ipcWindowMessage +`', function(event, message) { + callback(message) + }) + }, + send: function(message) { + ipcRenderer.send('`+ consts.eventNames.ipcWindowMessage +`', {message: message, targetID: '`+ json.targetID +`'}) + }, + showErrorBox: function(title, content) { + dialog.showErrorBox(title, content) + }, + showMessageBox: function(options, callback) { + dialog.showMessageBox(null, options, callback) + }, + showOpenDialog: function(options, callback) { + dialog.showOpenDialog(null, options, callback) + }, + showSaveDialog: function(options, callback) { + dialog.showSaveDialog(null, options, callback) + } + } + document.dispatchEvent(new Event('astilectron-ready'))` + ) + client.write(json.targetID, consts.eventNames.windowEventDidFinishLoad) + }) +} diff --git a/astilectron-deps/vendor/astilectron/package.json b/astilectron-deps/vendor/astilectron/package.json new file mode 100644 index 0000000..8d64ad2 --- /dev/null +++ b/astilectron-deps/vendor/astilectron/package.json @@ -0,0 +1,7 @@ +{ + "name": "Astilectron", + "description": "Electron-based cross-language application framework", + "devDependencies": { + "electron": "1.6.5" + } +} diff --git a/astilectron-deps/vendor/astilectron/readme.md b/astilectron-deps/vendor/astilectron/readme.md new file mode 100644 index 0000000..7ef4442 --- /dev/null +++ b/astilectron-deps/vendor/astilectron/readme.md @@ -0,0 +1,61 @@ +`astilectron` is an Electron app that provides an API over a TCP socket that allows executing Electron's method as well as capturing Electron's events. + +# Architecture + + +-----------------------+ TCP +-------------+ IPC +---------------------+ + + Client App (any Lang) |<--------->+ Astilectron +<-------->+ win1: (HTML/JS/CSS) + + +-----------------------+ +-------------+ | +---------------------++ + | | +---->+ win2: (HTML/JS/CSS) + + | +----------+ | | +---------------------++ + +---------+ Electron +--------+ +-->+ win3: (HTML/JS/CSS) + + +----------+ +---------------------+ + +# Language bindings + +Language bindings play a major role with `astilectron` as they allow communicating with its TCP socket and therefore interacting with its API in any language. + +## I want to develop language bindings for a new language + +Great! :) + +Here's a few things you need to know: + +- it's the responsibility of the language bindings to provision `astilectron` which usually consists of downloading and unzipping `astilectron` as well as `electron` +- the TCP addr is sent to `astilectron` through a command line argument therefore your command line when calling `astilectron` should look like ` /main.js ` + +## Language bindings for GO + +Check out [go-astilectron](https://github.com/asticode/go-astilectron) for `astilectron` GO language bindings + +# Features and roadmap + +- [x] window basic methods (create, show, close, resize, minimize, maximize, ...) +- [x] window basic events (close, blur, focus, unresponsive, crashed, ...) +- [x] remote messaging (messages between GO and the JS in the webserver) +- [x] multi screens/displays +- [x] menu methods and events (create, insert, append, popup, clicked, ...) +- [x] dialogs (open or save file, alerts, ...) +- [ ] accelerators (shortcuts) +- [ ] file methods (drag & drop, ...) +- [ ] clipboard methods +- [ ] power monitor events (suspend, resume, ...) +- [ ] notifications (macosx) +- [ ] desktop capturer (audio and video) +- [ ] session methods +- [ ] session events +- [ ] window advanced options (add missing ones) +- [ ] window advanced methods (add missing ones) +- [ ] window advanced events (add missing ones) +- [ ] child windows + +# Contribute + +For now only GO has its official bindings with `astilectron`, but the more language has its bindings the better! Therefore if you feel like implementing bindings with `astilectron` in some other language feel free to reach out to me to get some more info and finally to get your repo listed here. + +Also I'm far from being an expert in Node.JS therefore if you see anything that seems wrong in `astilectron` feel free to create an issue or even better contribute through a PR! + +You know you want to! :D + +# Cheers to + +[thrust](https://github.com/breach/thrust) which is awesome but unfortunately not maintained anymore. It inspired this project. diff --git a/astilectron-deps/vendor/astilectron/src/client.js b/astilectron-deps/vendor/astilectron/src/client.js new file mode 100644 index 0000000..68fb7e6 --- /dev/null +++ b/astilectron-deps/vendor/astilectron/src/client.js @@ -0,0 +1,27 @@ +'use strict' + +const net = require('net'); +const url = require('url'); + +// Client can read/write messages from a TCP server +class Client { + // init initializes the Client + init() { + var u = url.parse("tcp://" + process.argv[2], false, false) + this.socket = new net.Socket() + this.socket.connect(u.port, u.hostname, function() {}); + this.socket.on('close', function() { + process.exit() + }) + return this + } + + // write writes an event to the server + write(targetID, eventName, payload) { + var data = {name: eventName, targetID: targetID} + if (typeof payload != "undefined") Object.assign(data, payload) + this.socket.write(JSON.stringify(data) + "\n") + } +} + +module.exports = new Client() diff --git a/astilectron-deps/vendor/astilectron/src/consts.js b/astilectron-deps/vendor/astilectron/src/consts.js new file mode 100644 index 0000000..cab1aec --- /dev/null +++ b/astilectron-deps/vendor/astilectron/src/consts.js @@ -0,0 +1,69 @@ +'use strict' + +module.exports = { + eventNames: { + appEventReady: "app.event.ready", + displayEventAdded: "display.event.added", + displayEventMetricsChanged: "display.event.metrics.changed", + displayEventRemoved: "display.event.removed", + ipcWindowMessage: "ipc.window.message", + menuCmdCreate: "menu.cmd.create", + menuCmdDestroy: "menu.cmd.destroy", + menuEventCreated: "menu.event.created", + menuEventDestroyed: "menu.event.destroyed", + menuItemCmdSetChecked: "menu.item.cmd.set.checked", + menuItemCmdSetEnabled: "menu.item.cmd.set.enabled", + menuItemCmdSetLabel: "menu.item.cmd.set.label", + menuItemCmdSetVisible: "menu.item.cmd.set.visible", + menuItemEventCheckedSet: "menu.item.event.checked.set", + menuItemEventClicked: "menu.item.event.clicked", + menuItemEventEnabledSet: "menu.item.event.enabled.set", + menuItemEventLabelSet: "menu.item.event.label.set", + menuItemEventVisibleSet: "menu.item.event.visible.set", + subMenuCmdAppend: "sub.menu.cmd.append", + subMenuCmdClosePopup: "sub.menu.cmd.close.popup", + subMenuCmdInsert: "sub.menu.cmd.insert", + subMenuCmdPopup: "sub.menu.cmd.popup", + subMenuEventAppended: "sub.menu.event.appended", + subMenuEventClosedPopup: "sub.menu.event.closed.popup", + subMenuEventInserted: "sub.menu.event.inserted", + subMenuEventPoppedUp: "sub.menu.event.popped.up", + trayCmdCreate: "tray.cmd.create", + trayCmdDestroy: "tray.cmd.destroy", + trayEventCreated: "tray.event.created", + trayEventDestroyed: "tray.event.destroyed", + windowCmdBlur: "window.cmd.blur", + windowCmdCenter: "window.cmd.center", + windowCmdClose: "window.cmd.close", + windowCmdCreate: "window.cmd.create", + windowCmdDestroy: "window.cmd.destroy", + windowCmdFocus: "window.cmd.focus", + windowCmdHide: "window.cmd.hide", + windowCmdMaximize: "window.cmd.maximize", + windowCmdMessage: "window.cmd.message", + windowCmdMinimize: "window.cmd.minimize", + windowCmdMove: "window.cmd.move", + windowCmdResize: "window.cmd.resize", + windowCmdRestore: "window.cmd.restore", + windowCmdShow: "window.cmd.show", + windowCmdUnmaximize: "window.cmd.unmaximize", + windowCmdWebContentsCloseDevTools: "window.cmd.web.contents.close.dev.tools", + windowCmdWebContentsOpenDevTools: "window.cmd.web.contents.open.dev.tools", + windowEventBlur: "window.event.blur", + windowEventClosed: "window.event.closed", + windowEventDidFinishLoad: "window.event.did.finish.load", + windowEventFocus: "window.event.focus", + windowEventHide: "window.event.hide", + windowEventMaximize: "window.event.maximize", + windowEventMessage: "window.event.message", + windowEventMinimize: "window.event.minimize", + windowEventMove: "window.event.move", + windowEventReadyToShow: "window.event.ready.to.show", + windowEventResize: "window.event.resize", + windowEventRestore: "window.event.restore", + windowEventShow: "window.event.show", + windowEventUnmaximize: "window.event.unmaximize", + windowEventUnresponsive: "window.event.unresponsive", + }, + mainTargetID: 'main' +} diff --git a/astilectron-deps/vendor/electron-v1.6.5.zip b/astilectron-deps/vendor/electron-v1.6.5.zip new file mode 100644 index 0000000..b81d15f Binary files /dev/null and b/astilectron-deps/vendor/electron-v1.6.5.zip differ diff --git a/astilectron-deps/vendor/electron/LICENSE b/astilectron-deps/vendor/electron/LICENSE new file mode 100644 index 0000000..38f215c --- /dev/null +++ b/astilectron-deps/vendor/electron/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2013-2017 GitHub Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/astilectron-deps/vendor/electron/LICENSES.chromium.html b/astilectron-deps/vendor/electron/LICENSES.chromium.html new file mode 100644 index 0000000..16b7e55 --- /dev/null +++ b/astilectron-deps/vendor/electron/LICENSES.chromium.html @@ -0,0 +1,33911 @@ + + + + +Credits + + + +Credits +Print +
+
+Accessibility Audit library, from Accessibility Developer Tools +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Almost Native Graphics Layer Engine +show license +homepage +
+
// Copyright (C) 2002-2013 The ANGLE Project Authors. 
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions
+// are met:
+//
+//     Redistributions of source code must retain the above copyright
+//     notice, this list of conditions and the following disclaimer.
+//
+//     Redistributions in binary form must reproduce the above 
+//     copyright notice, this list of conditions and the following
+//     disclaimer in the documentation and/or other materials provided
+//     with the distribution.
+//
+//     Neither the name of TransGaming Inc., Google Inc., 3DLabs Inc.
+//     Ltd., nor the names of their contributors may be used to endorse
+//     or promote products derived from this software without specific
+//     prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+// COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+// POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+American Fuzzy Lop +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Android +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Android Crazy Linker +show license +homepage +
+
// Copyright 2014 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+ * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+ * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+
+
+ +
+Android Explicit Synchronization +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Android Open Source Project - App Compat Library +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Android Open Source Project - Settings App +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Android bionic libc +show license +homepage +
+
   Copyright (c) 2014, Linaro Limited
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the Linaro nor the
+         names of its contributors may be used to endorse or promote products
+         derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+   strchr - find a character in a string
+
+   Copyright (c) 2014, ARM Limited
+   All rights Reserved.
+   Copyright (c) 2014, Linaro Ltd.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the company nor the names of its contributors
+         may be used to endorse or promote products derived from this
+         software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+ Copyright (c) 1993 John Brezak
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in the
+    documentation and/or other materials provided with the distribution.
+ 3. The name of the author may be used to endorse or promote products
+    derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR `AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+====================================================
+Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
+
+Developed at SunPro, a Sun Microsystems, Inc. business.
+Permission to use, copy, modify, and distribute this
+software is freely granted, provided that this notice
+is preserved.
+
+-------------------------------------------------------------------
+
+Based on the UCB version with the ID appearing below.
+This is ANSIish only when "multibyte character == plain character".
+
+Copyright (c) 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the project nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2004, 2005, 2008  Internet Systems Consortium, Inc. ("ISC")
+Copyright (C) 1995-1999, 2001, 2003  Internet Software Consortium.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2004, 2005, 2008  Internet Systems Consortium, Inc. ("ISC")
+Copyright (C) 1997-2001  Internet Software Consortium.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2006 The Android Open Source Project
+
+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 (C) 2006 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2008 The Android Open Source Project
+
+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 (C) 2008 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2008 The Android Open Source Project
+All rights reserved.
+Copyright (c) 2013-2014, NVIDIA Corporation.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2009 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2010 The Android Open Source Project
+
+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 (C) 2010 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2010 The Android Open Source Project
+Copyright (c) 2008 ARM Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the company may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Android adaptation and tweak by Jim Huang <jserv@0xlab.org>.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2011 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2012 The Android Open Source Project
+
+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 (C) 2012 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2013 The Android Open Source Project
+
+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 (C) 2013 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2013 The Android Open Source Project
+All rights reserved.
+Copyright (c) 2013-2014 NVIDIA Corporation.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2013 The Android Open Source Project
+Copyright (c) 2014, NVIDIA CORPORATION.  All rights reserved.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2014 The Android Open Source Project
+
+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 (C) 2014 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (C) 2015 The Android Open Source Project
+
+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 (C) 2015 The Android Open Source Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in
+   the documentation and/or other materials provided with the
+   distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1980, 1983, 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+   This product includes software developed by the University of
+   California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+
+Portions Copyright (c) 1993 by Digital Equipment Corporation.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies, and that
+the name of Digital Equipment Corporation not be used in advertising or
+publicity pertaining to distribution of the document or software without
+specific, written prior permission.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1982, 1986, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1982, 1986, 1993
+   The Regents of the University of California.  All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1987, 1989
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1989
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Portions Copyright (c) 1993 by Digital Equipment Corporation.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies, and that
+the name of Digital Equipment Corporation not be used in advertising or
+publicity pertaining to distribution of the document or software without
+specific, written prior permission.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1983, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985 Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985, 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Portions Copyright (c) 1993 by Digital Equipment Corporation.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies, and that
+the name of Digital Equipment Corporation not be used in advertising or
+publicity pertaining to distribution of the document or software without
+specific, written prior permission.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985, 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1985, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1987 Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1987, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1987, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1988 Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1988 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software written by Ken Arnold and
+published in UNIX Review, Vol. 6, No. 8.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms are permitted
+provided that the above copyright notice and this paragraph are
+duplicated in all such forms and that any documentation,
+advertising materials, and other materials related to such
+distribution and use acknowledge that the software was developed
+by the University of California, Berkeley. The name of the
+University may not be used to endorse or promote products derived
+from this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989 The Regents of the University of California.
+All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Roger L. Snyder.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1989, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990 The Regents of the University of California.
+All rights reserved.
+
+This code is derived from locore.s.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990 The Regents of the University of California.
+All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Chris Torek.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990 The Regents of the University of California.
+All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+William Jolitz.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Chris Torek.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Donn Seeley at UUNET Technologies, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Donn Seeley at UUNET Technologies, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993
+   The Regents of the University of California.  All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1990, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Chris Torek.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1991 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1991, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1991, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Berkeley Software Design, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1991, 1993
+   The Regents of the University of California.  All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+This code is derived from software contributed to Berkeley by
+Hugh Smith at The University of Guelph.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1991, 1993, 1995,
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Havard Eidnes.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992 Henry Spencer.
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Henry Spencer of the University of Toronto.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992 The Regents of the University of California.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Ralph Campbell.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Ralph Campbell. This file is derived from the MIPS RISC
+Architecture book by Gerry Kane.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+
+This software was developed by the Computer Systems Engineering group
+at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
+contributed to Berkeley.
+
+All advertising materials mentioning features or use of this software
+must display the following acknowledgement:
+   This product includes software developed by the University of
+   California, Lawrence Berkeley Laboratory.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+   This product includes software developed by the University of
+   California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993
+   The Regents of the University of California.  All rights reserved.
+(c) UNIX System Laboratories, Inc.
+All or some portions of this file are derived from material licensed
+to the University of California by American Telephone and Telegraph
+Co. or Unix System Laboratories, Inc. and are reproduced herein with
+the permission of UNIX System Laboratories, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993, 1994
+   The Regents of the University of California.  All rights reserved.
+
+This code is derived from software contributed to Berkeley by
+Henry Spencer.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1992, 1993, 1994 Henry Spencer.
+
+This code is derived from software contributed to Berkeley by
+Henry Spencer.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+   This product includes software developed by the University of
+   California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1993 Martin Birgmeier
+All rights reserved.
+
+You may redistribute unmodified or modified versions of this source
+code provided that the above copyright notice and this and the
+following conditions are retained.
+
+This software is provided ``as is'', and comes with no warranties
+of any kind. I shall in no event be liable for anything that happens
+to anyone/anything when using this software.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1994 SigmaSoft, Th. Lockert <tholo@sigmasoft.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1996 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
+ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
+CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1996, David Mazieres <dm@uun.org>
+Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+Copyright (c) 2013, Markus Friedl <markus@openbsd.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1996-1998, 2008 Theo de Raadt
+Copyright (c) 1997, 2008-2009 Todd C. Miller
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997 Mark Brinicombe
+Copyright (c) 2010 Android Open Source Project.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+   This product includes software developed by Mark Brinicombe
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997 Niklas Hallqvist.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code was contributed to The NetBSD Foundation by Klaus Klein.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+       This product includes software developed by the NetBSD
+       Foundation, Inc. and its contributors.
+4. Neither the name of The NetBSD Foundation nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Luke Mewburn.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997, 1998, 1999, 2004 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Luke Mewburn; and by Jason R. Thorpe.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+       This product includes software developed by the NetBSD
+       Foundation, Inc. and its contributors.
+4. Neither the name of The NetBSD Foundation nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1997, 2005 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1998 Softweyr LLC.  All rights reserved.
+
+strtok_r, from Berkeley strtok
+Oct 13, 1998 by Wes Peters <wes@softweyr.com>
+
+Copyright (c) 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notices, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notices, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY SOFTWEYR LLC, THE REGENTS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL SOFTWEYR LLC, THE
+REGENTS, OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1998 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Klaus Klein.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+       This product includes software developed by the NetBSD
+       Foundation, Inc. and its contributors.
+4. Neither the name of The NetBSD Foundation nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 1999
+   David E. O'Brien
+Copyright (c) 1988, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2000 Ben Harris.
+Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the project nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2000 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Atsushi Onoe.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+   This product includes software developed by the NetBSD
+   Foundation, Inc. and its contributors.
+4. Neither the name of The NetBSD Foundation nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2000 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Dieter Baron and Thomas Klausner.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2001 Wasabi Systems, Inc.
+All rights reserved.
+
+Written by Frank van der Linden for Wasabi Systems, Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+     This product includes software developed for the NetBSD Project by
+     Wasabi Systems, Inc.
+4. The name of Wasabi Systems, Inc. may not be used to endorse
+   or promote products derived from this software without specific prior
+   written permission.
+
+THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2001-2002 Opsycon AB  (www.opsycon.se / www.opsycon.com)
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of Opsycon AB nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 Daniel Hartmeier
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+   - Redistributions of source code must retain the above copyright
+     notice, this list of conditions and the following disclaimer.
+   - Redistributions in binary form must reproduce the above
+     copyright notice, this list of conditions and the following
+     disclaimer in the documentation and/or other materials provided
+     with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 Marc Espie.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE OPENBSD PROJECT AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OPENBSD
+PROJECT OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Christos Zoulas.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 Tim J. Robbins
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 Tim J. Robbins.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Sponsored in part by the Defense Advanced Research Projects
+Agency (DARPA) and Air Force Research Laboratory, Air Force
+Materiel Command, USAF, under agreement number F39502-99-1-0512.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002, 2003 Tim J. Robbins.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002-2004 Tim J. Robbins
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2002-2004 Tim J. Robbins.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2003 Constantin S. Svintsoff <kostik@iclub.nsu.ru>
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The names of the authors may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2003 David Schultz <das@FreeBSD.ORG>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2003 Networks Associates Technology, Inc.
+All rights reserved.
+
+Portions of this software were developed for the FreeBSD Project by
+Jacques A. Vidrine, Safeport Network Services, and Network
+Associates Laboratories, the Security Research Division of Network
+Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035
+("CBOSS"), as part of the DARPA CHATS research program.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2003 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Sponsored in part by the Defense Advanced Research Projects
+Agency (DARPA) and Air Force Research Laboratory, Air Force
+Materiel Command, USAF, under agreement number F39502-99-1-0512.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Christos Zoulas.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+       This product includes software developed by the NetBSD
+       Foundation, Inc. and its contributors.
+4. Neither the name of The NetBSD Foundation nor the names of its
+   contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1995,1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1995-1999 by Internet Software Consortium
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1995-1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1996,1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1996-1999 by Internet Software Consortium
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1996-1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1997,1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC")
+Portions Copyright (c) 1996-1999 by Internet Software Consortium.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2004, 2005 David Schultz <das@FreeBSD.ORG>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2005 Tim J. Robbins.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2005 by Internet Systems Consortium, Inc. ("ISC")
+Copyright (c) 1995-1999 by Internet Software Consortium
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2007 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2007-2008  Michael G Schwern
+
+This software originally derived from Paul Sheer's pivotal_gmtime_r.c.
+
+The MIT License:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2007-2008  Michael G Schwern
+
+This software originally derived from Paul Sheer's pivotal_gmtime_r.c.
+
+The MIT License:
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+Origin: http://code.google.com/p/y2038
+Modified for Bionic by the Android Open Source Project
+
+-------------------------------------------------------------------
+
+Copyright (c) 2008  Android Open Source Project (query id randomization)
+Copyright (c) 1985, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2008 Otto Moerbeek <otto@drijf.net>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2008 Todd C. Miller <millert@openbsd.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2008, Damien Miller <djm@openbsd.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2009 David Schultz <das@FreeBSD.org>
+All rights reserved.
+
+Copyright (c) 2011 The FreeBSD Foundation
+All rights reserved.
+Portions of this software were developed by David Chisnall
+under sponsorship from the FreeBSD Foundation.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2009 David Schultz <das@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2009 The NetBSD Foundation, Inc.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Roy Marples.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2010 MIPS Technologies, Inc.
+
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+     * Redistributions of source code must retain the above copyright
+       notice, this list of conditions and the following disclaimer.
+     * Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer
+       in the documentation and/or other materials provided with
+       the distribution.
+     * Neither the name of MIPS Technologies Inc. nor the names of its
+       contributors may be used to endorse or promote products derived
+       from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2010, 2011, 2012, 2013 Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2010, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 David Chisnall
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 Ed Schouten <ed@FreeBSD.org>
+                   David Chisnall <theraven@FreeBSD.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 Martin Pieuchot <mpi@openbsd.org>
+Copyright (c) 2009 Ted Unangst
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011 The Android Open Source Project
+Copyright (c) 2008 ARM Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the company may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011, 2012, 2013 Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2011, VMware, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the VMware, Inc. nor the names of its contributors
+      may be used to endorse or promote products derived from this software
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL VMWARE, INC. OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2012, Linaro Limited
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the Linaro nor the
+         names of its contributors may be used to endorse or promote products
+         derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2012, Linaro Limited
+   All rights reserved.
+   Copyright (c) 2014, NVIDIA Corporation.  All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the Linaro nor the
+         names of its contributors may be used to endorse or promote products
+         derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2012-2015
+     MIPS Technologies, Inc., California.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2013
+     MIPS Technologies, Inc., California.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2013 ARM Ltd
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the company may not be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY ARM LTD ``AS IS'' AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL ARM LTD BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2013 Antoine Jacoutot <ajacoutot@openbsd.org>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2013 The NetBSD Foundation, Inc.
+All rights reserved.
+
+This code is derived from software contributed to The NetBSD Foundation
+by Christos Zoulas.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2014
+     Imagination Technologies Limited.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+   contributors may be used to endorse or promote products derived from
+   this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY IMAGINATION TECHNOLOGIES LIMITED ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL IMAGINATION TECHNOLOGIES LIMITED BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2014 Theo de Raadt <deraadt@openbsd.org>
+Copyright (c) 2014 Bob Beck <beck@obtuse.com>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Emulation of getentropy(2) as documented at:
+http://www.openbsd.org/cgi-bin/man.cgi/OpenBSD-current/man2/getentropy.2
+
+-------------------------------------------------------------------
+
+Copyright (c) 2014, Intel Corporation
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+    * this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+    * this list of conditions and the following disclaimer in the documentation
+    * and/or other materials provided with the distribution.
+
+    * Neither the name of Intel Corporation nor the names of its contributors
+    * may be used to endorse or promote products derived from this software
+    * without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c) 2014, Linaro Limited
+   All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+       * Redistributions of source code must retain the above copyright
+         notice, this list of conditions and the following disclaimer.
+       * Redistributions in binary form must reproduce the above copyright
+         notice, this list of conditions and the following disclaimer in the
+         documentation and/or other materials provided with the distribution.
+       * Neither the name of the Linaro nor the
+         names of its contributors may be used to endorse or promote products
+         derived from this software without specific prior written permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+   HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c)1999 Citrus Project,
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c)1999, 2000, 2001 Citrus Project,
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c)2001 Citrus Project,
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright (c)2003 Citrus Project,
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
+Copyright 2008 Damien Miller <djm@openbsd.org>
+All rights reserved.
+
+Theo de Raadt <deraadt@openbsd.org> came up with the idea of using
+such a mathematical system to generate more random (yet non-repeating)
+ids to solve the resolver/named problem.  But Niels designed the
+actual system based on the constraints.
+
+Later modified by Damien Miller to wrap the LCG output in a 15-bit
+permutation generator based on a Luby-Rackoff block cipher. This
+ensures the output is non-repeating and preserves the MSB twiddle
+trick, but makes it more resistant to LCG prediction.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Copyright 2008  Android Open Source Project (source port randomization)
+Copyright (c) 1985, 1989, 1993
+   The Regents of the University of California.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. All advertising materials mentioning features or use of this software
+   must display the following acknowledgement:
+    This product includes software developed by the University of
+    California, Berkeley and its contributors.
+4. Neither the name of the University nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+Portions Copyright (C) 2004, 2005, 2008, 2009  Internet Systems Consortium, Inc. ("ISC")
+Portions Copyright (C) 1996-2003  Internet Software Consortium.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+Portions Copyright (c) 1993 by Digital Equipment Corporation.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies, and that
+the name of Digital Equipment Corporation not be used in advertising or
+publicity pertaining to distribution of the document or software without
+specific, written prior permission.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
+CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
+ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+-------------------------------------------------------------------
+
+Portions Copyright (c) 1995 by International Business Machines, Inc.
+
+International Business Machines, Inc. (hereinafter called IBM) grants
+permission under its copyrights to use, copy, modify, and distribute this
+Software with or without fee, provided that the above copyright notice and
+all paragraphs of this notice appear in all copies, and that the name of IBM
+not be used in connection with the marketing of any product incorporating
+the Software or modifications thereof, without specific, written prior
+permission.
+
+To the extent it has a right to do so, IBM grants an immunity from suit
+under its patents, if any, for the use, sale or manufacture of products to
+the extent that such products are used for performing Domain Name System
+dynamic updates in TCP/IP networks by means of the Software.  No immunity is
+granted for any product per se or for any other function of any product.
+
+THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE.  IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL,
+DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN
+IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+-------------------------------------------------------------------
+
+Portions Copyright(C) 1995, Jason Downs.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 1999 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998, 2000 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998-2000 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 1998-2001 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+The author of this software is David M. Gay.
+
+Copyright (C) 2000 by Lucent Technologies
+All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and
+its documentation for any purpose and without fee is hereby
+granted, provided that the above copyright notice appear in all
+copies and that both that the copyright notice and this
+permission notice and warranty disclaimer appear in supporting
+documentation, and that the name of Lucent or any of its entities
+not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.
+
+LUCENT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+IN NO EVENT SHALL LUCENT OR ANY OF ITS ENTITIES BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+-------------------------------------------------------------------
+
+memchr - find a character in a memory zone
+
+Copyright (c) 2014, ARM Limited
+All rights Reserved.
+Copyright (c) 2014, Linaro Ltd.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of the company nor the names of its contributors
+      may be used to endorse or promote products derived from this
+      software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------
+
+
+
+
+ +
+Apple sample code +show license +homepage +
+
Disclaimer: IMPORTANT:  This Apple software is supplied to you by Apple
+Inc. ("Apple") in consideration of your agreement to the following
+terms, and your use, installation, modification or redistribution of
+this Apple software constitutes acceptance of these terms.  If you do
+not agree with these terms, please do not use, install, modify or
+redistribute this Apple software.
+
+In consideration of your agreement to abide by the following terms, and
+subject to these terms, Apple grants you a personal, non-exclusive
+license, under Apple's copyrights in this original Apple software (the
+"Apple Software"), to use, reproduce, modify and redistribute the Apple
+Software, with or without modifications, in source and/or binary forms;
+provided that if you redistribute the Apple Software in its entirety and
+without modifications, you must retain this notice and the following
+text and disclaimers in all such redistributions of the Apple Software.
+Neither the name, trademarks, service marks or logos of Apple Inc. may
+be used to endorse or promote products derived from the Apple Software
+without specific prior written permission from Apple.  Except as
+expressly stated in this notice, no other rights or licenses, express or
+implied, are granted by Apple herein, including but not limited to any
+patent rights that may be infringed by your derivative works or by other
+works in which the Apple Software may be incorporated.
+
+The Apple Software is provided by Apple on an "AS IS" basis.  APPLE
+MAKES NO WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION
+THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND
+OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
+
+IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL
+OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION,
+MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED
+AND WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE),
+STRICT LIABILITY OR OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (C) 2009 Apple Inc. All Rights Reserved.
+
+
+ +
+AsyncTask +show license +homepage +
+
Notice for all the files in this folder.
+------------------------------------------------------------
+
+
+   
+   Copyright (c) 2005-2008, The Android Open Source Project
+
+   Licensed under the Apache License, Version 2.0 (the "License"); you may not
+   use this file except in compliance with the License.
+ 
+   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.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2011 Google Inc. All Rights Reserved.
+
+   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.
+
+
+
+
+ +
+BSDiff +show license +homepage +
+
Copyright 2003-2005 Colin Percival
+All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted providing that the following conditions 
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Blackmagic DeckLink SDK - Mac +show license +homepage +
+
Extracted from mac/include/DeckLinkAPI.h:
+
+** Copyright (c) 2014 Blackmagic Design
+**
+** Permission is hereby granted, free of charge, to any person or organization
+** obtaining a copy of the software and accompanying documentation covered by
+** this license (the "Software") to use, reproduce, display, distribute,
+** execute, and transmit the Software, and to prepare derivative works of the
+** Software, and to permit third-parties to whom the Software is furnished to
+** do so, all subject to the following:
+** 
+** The copyright notices in the Software and this entire statement, including
+** the above license grant, this restriction and the following disclaimer,
+** must be included in all copies of the Software, in whole or in part, and
+** all derivative works of the Software, unless such copies or derivative
+** works are solely in the form of machine-executable object code generated by
+** a source language processor.
+** 
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+** DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+Braille Translation Library +show license +homepage +
+
(Copied from src/liblouis/liblouis.h.in)
+
+/* liblouis Braille Translation and Back-Translation Library
+
+   Based on the Linux screenreader BRLTTY, copyright (C) 1999-2006 by
+   The BRLTTY Team
+
+   Copyright (C) 2004, 2005, 2006, 2009 ViewPlus Technologies, Inc.
+   www.viewplus.com and JJB Software, Inc. www.jjb-software.com
+
+   liblouis is free software: you can redistribute it and/or modify it
+   under the terms of the GNU Lesser General Public License as
+   published by the Free Software Foundation, either version 3 of the
+   License, or (at your option) any later version.
+
+   liblouis is distributed in the hope that it will be useful, but
+   WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with this program. If not, see
+   <http://www.gnu.org/licenses/>.
+
+   Maintained by John J. Boyer john.boyer@abilitiessoft.com
+   */
+
+
+
+
+ +
+Breakpad, An open-source multi-platform crash reporting system +show license +homepage +
+
Copyright (c) 2006, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2011, Daniel Stenberg, <daniel@haxx.se>.
+
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
+
+Copyright (c) 1999 Apple Computer, Inc. All rights reserved.
+
+@APPLE_LICENSE_HEADER_START@
+
+This file contains Original Code and/or Modifications of Original Code
+as defined in and that are subject to the Apple Public Source License
+Version 2.0 (the 'License'). You may not use this file except in
+compliance with the License. Please obtain a copy of the License at
+http://www.opensource.apple.com/apsl/ and read it before using this
+file.
+
+The Original Code and all software distributed under the License are
+distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
+INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
+Please see the License for the specific language governing rights and
+limitations under the License.
+
+@APPLE_LICENSE_HEADER_END@
+
+
+Copyright 2007-2008 Google Inc.
+
+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.
+
+
+
+ +
+Brotli +show license +homepage +
+
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+
+ +
+Chrome Custom Tabs - Example and Usage +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+
+
+ +
+ChromeVox +show license +homepage +
+
// Copyright 2013 Google Inc.
+//
+// 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.
+
+
+
+ +
+Chromium OS system API +show license +homepage +
+
// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Closure compiler +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Cocoa extension code from Camino +show license +homepage +
+
/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+
+ +
+Compact Encoding Detection +show license +homepage +
+
// Copyright (c) 2010 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Compact Language Detection 2 +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Compact Language Detector +show license +homepage +
+
Copyright 2016 Google Inc.  All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2016, Google Inc.
+
+   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.
+
+
+
+ +
+Compact Language Detector v3 +show license +homepage +
+
Copyright 2016 Google Inc.  All rights reserved.
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2016, Google Inc.
+
+   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.
+
+
+
+ +
+Crashpad +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Darwin +show license +homepage +
+
APPLE PUBLIC SOURCE LICENSE Version 2.0 -  August 6, 2003
+
+Please read this License carefully before downloading this software.  By
+downloading or using this software, you are agreeing to be bound by the terms of
+this License.  If you do not or cannot agree to the terms of this License,
+please do not download or use the software.
+
+Apple Note:  In January 2007, Apple changed its corporate name from "Apple
+Computer, Inc." to "Apple Inc."  This change has been reflected below and
+copyright years updated, but no other changes have been made to the APSL 2.0.
+
+1.	General; Definitions.  This License applies to any program or other work
+which Apple Inc. ("Apple") makes publicly available and which contains a notice
+placed by Apple identifying such program or work as "Original Code" and stating
+that it is subject to the terms of this Apple Public Source License version 2.0
+("License").  As used in this License:
+
+1.1	 "Applicable Patent Rights" mean:  (a) in the case where Apple is the
+grantor of rights, (i) claims of patents that are now or hereafter acquired,
+owned by or assigned to Apple and (ii) that cover subject matter contained in
+the Original Code, but only to the extent necessary to use, reproduce and/or
+distribute the Original Code without infringement; and (b) in the case where You
+are the grantor of rights, (i) claims of patents that are now or hereafter
+acquired, owned by or assigned to You and (ii) that cover subject matter in Your
+Modifications, taken alone or in combination with Original Code.
+
+1.2	"Contributor" means any person or entity that creates or contributes to the
+creation of Modifications.
+
+1.3	 "Covered Code" means the Original Code, Modifications, the combination of
+Original Code and any Modifications, and/or any respective portions thereof.
+
+1.4	"Externally Deploy" means: (a) to sublicense, distribute or otherwise make
+Covered Code available, directly or indirectly, to anyone other than You; and/or
+(b) to use Covered Code, alone or as part of a Larger Work, in any way to
+provide a service, including but not limited to delivery of content, through
+electronic communication with a client other than You.
+
+1.5	"Larger Work" means a work which combines Covered Code or portions thereof
+with code not governed by the terms of this License.
+
+1.6	"Modifications" mean any addition to, deletion from, and/or change to, the
+substance and/or structure of the Original Code, any previous Modifications, the
+combination of Original Code and any previous Modifications, and/or any
+respective portions thereof.  When code is released as a series of files, a
+Modification is:  (a) any addition to or deletion from the contents of a file
+containing Covered Code; and/or (b) any new file or other representation of
+computer program statements that contains any part of Covered Code.
+
+1.7	"Original Code" means (a) the Source Code of a program or other work as
+originally made available by Apple under this License, including the Source Code
+of any updates or upgrades to such programs or works made available by Apple
+under this License, and that has been expressly identified by Apple as such in
+the header file(s) of such work; and (b) the object code compiled from such
+Source Code and originally made available by Apple under this License
+
+1.8	"Source Code" means the human readable form of a program or other work that
+is suitable for making modifications to it, including all modules it contains,
+plus any associated interface definition files, scripts used to control
+compilation and installation of an executable (object code).
+
+1.9	"You" or "Your" means an individual or a legal entity exercising rights
+under this License.  For legal entities, "You" or "Your" includes any entity
+which controls, is controlled by, or is under common control with, You, where
+"control" means (a) the power, direct or indirect, to cause the direction or
+management of such entity, whether by contract or otherwise, or (b) ownership of
+fifty percent (50%) or more of the outstanding shares or beneficial ownership of
+such entity.
+
+2.	Permitted Uses; Conditions & Restrictions.   Subject to the terms and
+conditions of this License, Apple hereby grants You, effective on the date You
+accept this License and download the Original Code, a world-wide, royalty-free,
+non-exclusive license, to the extent of Apple's Applicable Patent Rights and
+copyrights covering the Original Code, to do the following:
+
+2.1	Unmodified Code.  You may use, reproduce, display, perform, internally
+distribute within Your organization, and Externally Deploy verbatim, unmodified
+copies of the Original Code, for commercial or non-commercial purposes, provided
+that in each instance:
+
+(a)	You must retain and reproduce in all copies of Original Code the copyright
+and other proprietary notices and disclaimers of Apple as they appear in the
+Original Code, and keep intact all notices in the Original Code that refer to
+this License; and
+
+(b) 	You must include a copy of this License with every copy of Source Code of
+Covered Code and documentation You distribute or Externally Deploy, and You may
+not offer or impose any terms on such Source Code that alter or restrict this
+License or the recipients' rights hereunder, except as permitted under Section
+6.
+
+2.2	Modified Code.  You may modify Covered Code and use, reproduce, display,
+perform, internally distribute within Your organization, and Externally Deploy
+Your Modifications and Covered Code, for commercial or non-commercial purposes,
+provided that in each instance You also meet all of these conditions:
+
+(a)	You must satisfy all the conditions of Section 2.1 with respect to the
+Source Code of the Covered Code;
+
+(b)	You must duplicate, to the extent it does not already exist, the notice in
+Exhibit A in each file of the Source Code of all Your Modifications, and cause
+the modified files to carry prominent notices stating that You changed the files
+and the date of any change; and
+
+(c)	If You Externally Deploy Your Modifications, You must make Source Code of
+all Your Externally Deployed Modifications either available to those to whom You
+have Externally Deployed Your Modifications, or publicly available.  Source Code
+of Your Externally Deployed Modifications must be released under the terms set
+forth in this License, including the license grants set forth in Section 3
+below, for as long as you Externally Deploy the Covered Code or twelve (12)
+months from the date of initial External Deployment, whichever is longer. You
+should preferably distribute the Source Code of Your Externally Deployed
+Modifications electronically (e.g. download from a web site).
+
+2.3	Distribution of Executable Versions.  In addition, if You Externally Deploy
+Covered Code (Original Code and/or Modifications) in object code, executable
+form only, You must include a prominent notice, in the code itself as well as in
+related documentation, stating that Source Code of the Covered Code is available
+under the terms of this License with information on how and where to obtain such
+Source Code.
+
+2.4	Third Party Rights.  You expressly acknowledge and agree that although
+Apple and each Contributor grants the licenses to their respective portions of
+the Covered Code set forth herein, no assurances are provided by Apple or any
+Contributor that the Covered Code does not infringe the patent or other
+intellectual property rights of any other entity. Apple and each Contributor
+disclaim any liability to You for claims brought by any other entity based on
+infringement of intellectual property rights or otherwise. As a condition to
+exercising the rights and licenses granted hereunder, You hereby assume sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow You to
+distribute the Covered Code, it is Your responsibility to acquire that license
+before distributing the Covered Code.
+
+3.	Your Grants.  In consideration of, and as a condition to, the licenses
+granted to You under this License, You hereby grant to any person or entity
+receiving or distributing Covered Code under this License a non-exclusive,
+royalty-free, perpetual, irrevocable license, under Your Applicable Patent
+Rights and other intellectual property rights (other than patent) owned or
+controlled by You, to use, reproduce, display, perform, modify, sublicense,
+distribute and Externally Deploy Your Modifications of the same scope and extent
+as Apple's licenses under Sections 2.1 and 2.2 above.
+
+4.	Larger Works.  You may create a Larger Work by combining Covered Code with
+other code not governed by the terms of this License and distribute the Larger
+Work as a single product.  In each such instance, You must make sure the
+requirements of this License are fulfilled for the Covered Code or any portion
+thereof.
+
+5.	Limitations on Patent License.   Except as expressly stated in Section 2, no
+other patent rights, express or implied, are granted by Apple herein. 
+Modifications and/or Larger Works may require additional patent licenses from
+Apple which Apple may grant in its sole discretion.
+
+6.	Additional Terms.  You may choose to offer, and to charge a fee for,
+warranty, support, indemnity or liability obligations and/or other rights
+consistent with the scope of the license granted herein ("Additional Terms") to
+one or more recipients of Covered Code. However, You may do so only on Your own
+behalf and as Your sole responsibility, and not on behalf of Apple or any
+Contributor. You must obtain the recipient's agreement that any such Additional
+Terms are offered by You alone, and You hereby agree to indemnify, defend and
+hold Apple and every Contributor harmless for any liability incurred by or
+claims asserted against Apple or such Contributor by reason of any such
+Additional Terms.
+
+7.	Versions of the License.  Apple may publish revised and/or new versions of
+this License from time to time.  Each version will be given a distinguishing
+version number.  Once Original Code has been published under a particular
+version of this License, You may continue to use it under the terms of that
+version. You may also choose to use such Original Code under the terms of any
+subsequent version of this License published by Apple.  No one other than Apple
+has the right to modify the terms applicable to Covered Code created under this
+License.
+
+8.	NO WARRANTY OR SUPPORT.  The Covered Code may contain in whole or in part
+pre-release, untested, or not fully tested works.  The Covered Code may contain
+errors that could cause failures or loss of data, and may be incomplete or
+contain inaccuracies.  You expressly acknowledge and agree that use of the
+Covered Code, or any portion thereof, is at Your sole and entire risk.  THE
+COVERED CODE IS PROVIDED "AS IS" AND WITHOUT WARRANTY, UPGRADES OR SUPPORT OF
+ANY KIND AND APPLE AND APPLE'S LICENSOR(S) (COLLECTIVELY REFERRED TO AS "APPLE"
+FOR THE PURPOSES OF SECTIONS 8 AND 9) AND ALL CONTRIBUTORS EXPRESSLY DISCLAIM
+ALL WARRANTIES AND/OR CONDITIONS, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES AND/OR CONDITIONS OF MERCHANTABILITY, OF SATISFACTORY
+QUALITY, OF FITNESS FOR A PARTICULAR PURPOSE, OF ACCURACY, OF QUIET ENJOYMENT,
+AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  APPLE AND EACH CONTRIBUTOR DOES NOT
+WARRANT AGAINST INTERFERENCE WITH YOUR ENJOYMENT OF THE COVERED CODE, THAT THE
+FUNCTIONS CONTAINED IN THE COVERED CODE WILL MEET YOUR REQUIREMENTS, THAT THE
+OPERATION OF THE COVERED CODE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT
+DEFECTS IN THE COVERED CODE WILL BE CORRECTED.  NO ORAL OR WRITTEN INFORMATION
+OR ADVICE GIVEN BY APPLE, AN APPLE AUTHORIZED REPRESENTATIVE OR ANY CONTRIBUTOR
+SHALL CREATE A WARRANTY.  You acknowledge that the Covered Code is not intended
+for use in the operation of nuclear facilities, aircraft navigation,
+communication systems, or air traffic control machines in which case the failure
+of the Covered Code could lead to death, personal injury, or severe physical or
+environmental damage.
+
+9.	LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
+SHALL APPLE OR ANY CONTRIBUTOR BE LIABLE FOR ANY INCIDENTAL, SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES ARISING OUT OF OR RELATING TO THIS LICENSE OR YOUR USE
+OR INABILITY TO USE THE COVERED CODE, OR ANY PORTION THEREOF, WHETHER UNDER A
+THEORY OF CONTRACT, WARRANTY, TORT (INCLUDING NEGLIGENCE), PRODUCTS LIABILITY OR
+OTHERWISE, EVEN IF APPLE OR SUCH CONTRIBUTOR HAS BEEN ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES AND NOTWITHSTANDING THE FAILURE OF ESSENTIAL PURPOSE OF ANY
+REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OF LIABILITY OF
+INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS LIMITATION MAY NOT APPLY TO YOU. In
+no event shall Apple's total liability to You for all damages (other than as may
+be required by applicable law) under this License exceed the amount of fifty
+dollars ($50.00).
+
+10.	Trademarks.  This License does not grant any rights to use the trademarks
+or trade names  "Apple", "Mac", "Mac OS", "QuickTime", "QuickTime Streaming
+Server" or any other trademarks, service marks, logos or trade names belonging
+to Apple (collectively "Apple Marks") or to any trademark, service mark, logo or
+trade name belonging to any Contributor.  You agree not to use any Apple Marks
+in or as part of the name of products derived from the Original Code or to
+endorse or promote products derived from the Original Code other than as
+expressly permitted by and in strict compliance at all times with Apple's third
+party trademark usage guidelines which are posted at
+http://www.apple.com/legal/guidelinesfor3rdparties.html.
+
+11.	Ownership. Subject to the licenses granted under this License, each
+Contributor retains all rights, title and interest in and to any Modifications
+made by such Contributor.  Apple retains all rights, title and interest in and
+to the Original Code and any Modifications made by or on behalf of Apple ("Apple
+Modifications"), and such Apple Modifications will not be automatically subject
+to this License.  Apple may, at its sole discretion, choose to license such
+Apple Modifications under this License, or on different terms from those
+contained in this License or may choose not to license them at all.
+
+12.	Termination.
+
+12.1	Termination.  This License and the rights granted hereunder will
+terminate:
+
+(a)	automatically without notice from Apple if You fail to comply with any
+term(s) of this License and fail to cure such breach within 30 days of becoming
+aware of such breach; (b)	immediately in the event of the circumstances
+described in Section 13.5(b); or (c)	automatically without notice from Apple if
+You, at any time during the term of this License, commence an action for patent
+infringement against Apple; provided that Apple did not first commence an action
+for patent infringement against You in that instance.
+
+12.2	Effect of Termination.  Upon termination, You agree to immediately stop
+any further use, reproduction, modification, sublicensing and distribution of
+the Covered Code.  All sublicenses to the Covered Code which have been properly
+granted prior to termination shall survive any termination of this License. 
+Provisions which, by their nature, should remain in effect beyond the
+termination of this License shall survive, including but not limited to Sections
+3, 5, 8, 9, 10, 11, 12.2 and 13.  No party will be liable to any other for
+compensation, indemnity or damages of any sort solely as a result of terminating
+this License in accordance with its terms, and termination of this License will
+be without prejudice to any other right or remedy of any party.
+
+13. 	Miscellaneous.
+
+13.1	Government End Users.   The Covered Code is a "commercial item" as defined
+in FAR 2.101.  Government software and technical data rights in the Covered Code
+include only those rights customarily provided to the public as defined in this
+License. This customary commercial license in technical data and software is
+provided in accordance with FAR 12.211 (Technical Data) and 12.212 (Computer
+Software) and, for Department of Defense purchases, DFAR 252.227-7015 (Technical
+Data -- Commercial Items) and 227.7202-3 (Rights in Commercial Computer Software
+or Computer Software Documentation).  Accordingly, all U.S. Government End Users
+acquire Covered Code with only those rights set forth herein.
+
+13.2	Relationship of Parties.  This License will not be construed as creating
+an agency, partnership, joint venture or any other form of legal association
+between or among You, Apple or any Contributor, and You will not represent to
+the contrary, whether expressly, by implication, appearance or otherwise.
+
+13.3	Independent Development.   Nothing in this License will impair Apple's
+right to acquire, license, develop, have others develop for it, market and/or
+distribute technology or products that perform the same or similar functions as,
+or otherwise compete with, Modifications, Larger Works, technology or products
+that You may develop, produce, market or distribute.
+
+13.4	Waiver; Construction.  Failure by Apple or any Contributor to enforce any
+provision of this License will not be deemed a waiver of future enforcement of
+that or any other provision.  Any law or regulation which provides that the
+language of a contract shall be construed against the drafter will not apply to
+this License.
+
+13.5	Severability.  (a) If for any reason a court of competent jurisdiction
+finds any provision of this License, or portion thereof, to be unenforceable,
+that provision of the License will be enforced to the maximum extent permissible
+so as to effect the economic benefits and intent of the parties, and the
+remainder of this License will continue in full force and effect.  (b)
+Notwithstanding the foregoing, if applicable law prohibits or restricts You from
+fully and/or specifically complying with Sections 2 and/or 3 or prevents the
+enforceability of either of those Sections, this License will immediately
+terminate and You must immediately discontinue any use of the Covered Code and
+destroy all copies of it that are in your possession or control.
+
+13.6	Dispute Resolution.  Any litigation or other dispute resolution between
+You and Apple relating to this License shall take place in the Northern District
+of California, and You and Apple hereby consent to the personal jurisdiction of,
+and venue in, the state and federal courts within that District with respect to
+this License. The application of the United Nations Convention on Contracts for
+the International Sale of Goods is expressly excluded.
+
+13.7	Entire Agreement; Governing Law.  This License constitutes the entire
+agreement between the parties with respect to the subject matter hereof.  This
+License shall be governed by the laws of the United States and the State of
+California, except that body of California law concerning conflicts of law.
+
+Where You are located in the province of Quebec, Canada, the following clause
+applies:  The parties hereby confirm that they have requested that this License
+and all related documents be drafted in English.  Les parties ont exigé que le
+présent contrat et tous les documents connexes soient rédigés en anglais.
+
+EXHIBIT A.
+
+"Portions Copyright (c) 1999-2007 Apple Inc.  All Rights Reserved.
+
+This file contains Original Code and/or Modifications of Original Code as
+defined in and that are subject to the Apple Public Source License Version 2.0
+(the 'License').  You may not use this file except in compliance with the
+License.  Please obtain a copy of the License at
+http://www.opensource.apple.com/apsl/ and read it before using this file.
+
+The Original Code and all software distributed under the License are distributed
+on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
+AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION,
+ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
+ENJOYMENT OR NON-INFRINGEMENT.  Please see the License for the specific language
+governing rights and limitations under the License." 
+
+
+
+ +
+David M. Gay's floating point routines +show license +homepage +
+
/****************************************************************
+ *
+ * The author of this software is David M. Gay.
+ *
+ * Copyright (c) 1991, 2000, 2001 by Lucent Technologies.
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose without fee is hereby granted, provided that this entire notice
+ * is included in all copies of any software which is or includes a copy
+ * or modification of this software and in all copies of the supporting
+ * documentation for such software.
+ *
+ * THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+ * WARRANTY.  IN PARTICULAR, NEITHER THE AUTHOR NOR LUCENT MAKES ANY
+ * REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+ * OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+ *
+ ***************************************************************/
+
+
+
+ +
+Error Prone +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Expat XML Parser +show license +homepage +
+
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
+                               and Clark Cooper
+Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006 Expat maintainers.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+FlatBuffers +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2014 Google Inc.
+
+   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.
+
+
+
+ +
+Flot Javascript/JQuery library for creating graphs +show license +homepage +
+
Copyright (c) 2007-2013 IOLA and Ole Laursen
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+FreeType +show license +homepage +
+
                    The FreeType Project LICENSE
+                    ----------------------------
+
+                            2006-Jan-27
+
+                    Copyright 1996-2002, 2006 by
+          David Turner, Robert Wilhelm, and Werner Lemberg
+
+
+
+Introduction
+============
+
+  The FreeType  Project is distributed in  several archive packages;
+  some of them may contain, in addition to the FreeType font engine,
+  various tools and  contributions which rely on, or  relate to, the
+  FreeType Project.
+
+  This  license applies  to all  files found  in such  packages, and
+  which do not  fall under their own explicit  license.  The license
+  affects  thus  the  FreeType   font  engine,  the  test  programs,
+  documentation and makefiles, at the very least.
+
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
+  (Independent JPEG  Group) licenses, which  all encourage inclusion
+  and  use of  free  software in  commercial  and freeware  products
+  alike.  As a consequence, its main points are that:
+
+    o We don't promise that this software works. However, we will be
+      interested in any kind of bug reports. (`as is' distribution)
+
+    o You can  use this software for whatever you  want, in parts or
+      full form, without having to pay us. (`royalty-free' usage)
+
+    o You may not pretend that  you wrote this software.  If you use
+      it, or  only parts of it,  in a program,  you must acknowledge
+      somewhere  in  your  documentation  that  you  have  used  the
+      FreeType code. (`credits')
+
+  We  specifically  permit  and  encourage  the  inclusion  of  this
+  software, with  or without modifications,  in commercial products.
+  We  disclaim  all warranties  covering  The  FreeType Project  and
+  assume no liability related to The FreeType Project.
+
+
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a
+  credit/disclaimer to use in compliance with this license.  We thus
+  encourage you to use the following text:
+
+   """
+    Portions of this software are copyright © <year> The FreeType
+    Project (www.freetype.org).  All rights reserved.
+   """
+
+  Please replace <year> with the value from the FreeType version you
+  actually use.
+
+
+Legal Terms
+===========
+
+0. Definitions
+--------------
+
+  Throughout this license,  the terms `package', `FreeType Project',
+  and  `FreeType  archive' refer  to  the  set  of files  originally
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,
+  beta or final release.
+
+  `You' refers to  the licensee, or person using  the project, where
+  `using' is a generic term including compiling the project's source
+  code as  well as linking it  to form a  `program' or `executable'.
+  This  program is  referred to  as  `a program  using the  FreeType
+  engine'.
+
+  This  license applies  to all  files distributed  in  the original
+  FreeType  Project,   including  all  source   code,  binaries  and
+  documentation,  unless  otherwise  stated   in  the  file  in  its
+  original, unmodified form as  distributed in the original archive.
+  If you are  unsure whether or not a particular  file is covered by
+  this license, you must contact us to verify this.
+
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
+  specified below.
+
+1. No Warranty
+--------------
+
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
+  USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+-----------------
+
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and
+  irrevocable right  and license to use,  execute, perform, compile,
+  display,  copy,   create  derivative  works   of,  distribute  and
+  sublicense the  FreeType Project (in  both source and  object code
+  forms)  and  derivative works  thereof  for  any  purpose; and  to
+  authorize others  to exercise  some or all  of the  rights granted
+  herein, subject to the following conditions:
+
+    o Redistribution of  source code  must retain this  license file
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to
+      the original  files must be clearly  indicated in accompanying
+      documentation.   The  copyright   notices  of  the  unaltered,
+      original  files must  be  preserved in  all  copies of  source
+      files.
+
+    o Redistribution in binary form must provide a  disclaimer  that
+      states  that  the software is based in part of the work of the
+      FreeType Team,  in  the  distribution  documentation.  We also
+      encourage you to put an URL to the FreeType web page  in  your
+      documentation, though this isn't mandatory.
+
+  These conditions  apply to any  software derived from or  based on
+  the FreeType Project,  not just the unmodified files.   If you use
+  our work, you  must acknowledge us.  However, no  fee need be paid
+  to us.
+
+3. Advertising
+--------------
+
+  Neither the  FreeType authors and  contributors nor you  shall use
+  the name of the  other for commercial, advertising, or promotional
+  purposes without specific prior written permission.
+
+  We suggest,  but do not require, that  you use one or  more of the
+  following phrases to refer  to this software in your documentation
+  or advertising  materials: `FreeType Project',  `FreeType Engine',
+  `FreeType library', or `FreeType Distribution'.
+
+  As  you have  not signed  this license,  you are  not  required to
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted
+  material, only  this license, or  another one contracted  with the
+  authors, grants you  the right to use, distribute,  and modify it.
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType
+  Project, you indicate that you understand and accept all the terms
+  of this license.
+
+4. Contacts
+-----------
+
+  There are two mailing lists related to FreeType:
+
+    o freetype@nongnu.org
+
+      Discusses general use and applications of FreeType, as well as
+      future and  wanted additions to the  library and distribution.
+      If  you are looking  for support,  start in  this list  if you
+      haven't found anything to help you in the documentation.
+
+    o freetype-devel@nongnu.org
+
+      Discusses bugs,  as well  as engine internals,  design issues,
+      specific licenses, porting, etc.
+
+  Our home page can be found at
+
+    http://www.freetype.org
+
+
+--- end of FTL.TXT ---
+
+
+
+ +
+GifPlayer Animated GIF Library +show license +homepage +
+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Google Cache Invalidation API +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Google Input Tools +show license +homepage +
+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2013 Google Inc.
+
+   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.
+
+
+ +
+Google Toolbox for Mac +show license +homepage +
+
See src/COPYING
+
+
+
+ +
+Google VR SDK +show license +homepage +
+
   Copyright (c) 2015, Google Inc.
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+
+   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.
+
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+====================
+Open Source Licenses
+====================
+
+This software may use portions of the following libraries subject to the accompanying licenses:
+
+****************************
+chromium_audio
+****************************
+// Copyright 2014 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+curl
+****************************
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1996 - 2014, Daniel Stenberg, <daniel@haxx.se>.
+
+All rights reserved.
+
+Permission to use, copy, modify, and distribute this software for any purpose
+with or without fee is hereby granted, provided that the above copyright
+notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN
+NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
+OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
+
+****************************
+dynamic_annotations
+****************************
+Copyright (c) 2008-2009, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+eigen3
+****************************
+Eigen is primarily MPL2 licensed. See COPYING.MPL2 and these links:
+  http://www.mozilla.org/MPL/2.0/
+  http://www.mozilla.org/MPL/2.0/FAQ.html
+
+Some files contain third-party code under BSD or LGPL licenses, whence
+the other COPYING.* files here.
+
+All the LGPL code is either LGPL 2.1-only, or LGPL 2.1-or-later.
+For this reason, the COPYING.LGPL file contains the LGPL 2.1 text.
+
+If you want to guarantee that the Eigen code that you are #including
+is licensed under the MPL2 and possibly more permissive licenses (like
+BSD), #define this preprocessor symbol: EIGEN_MPL2_ONLY
+For example, with most compilers, you could add this to your project
+      CXXFLAGS: -DEIGEN_MPL2_ONLY
+This will cause a compilation error to be generated if you #include
+any code that is LGPL licensed.
+
+----------------------------------------------------------------------
+Following applies to:
+./test/mapstaticmethods.cpp
+./test/schur_real.cpp
+./test/prec_inverse_4x4.cpp
+./test/smallvectors.cpp
+./test/redux.cpp
+./test/special_numbers.cpp
+./test/adjoint.cpp
+./test/resize.cpp
+./test/mixingtypes.cpp
+./test/product_trmv.cpp
+./test/sparse_solvers.cpp
+./test/cholesky.cpp
+./test/geo_quaternion.cpp
+./test/miscmatrices.cpp
+./test/stddeque.cpp
+./test/integer_types.cpp
+./test/product_large.cpp
+./test/eigensolver_generic.cpp
+./test/householder.cpp
+./test/geo_orthomethods.cpp
+./test/array_for_matrix.cpp
+./test/sparseLM.cpp
+./test/upperbidiagonalization.cpp
+./test/nomalloc.cpp
+./test/packetmath.cpp
+./test/jacobisvd.cpp
+./test/geo_transformations.cpp
+./test/swap.cpp
+./test/eigensolver_selfadjoint.cpp
+./test/inverse.cpp
+./test/product_selfadjoint.cpp
+./test/product_trsolve.cpp
+./test/product_extra.cpp
+./test/sparse_solver.h
+./test/mapstride.cpp
+./test/mapped_matrix.cpp
+./test/geo_eulerangles.cpp
+./test/eigen2support.cpp
+./test/denseLM.cpp
+./test/stdvector.cpp
+./test/nesting_ops.cpp
+./test/sparse_permutations.cpp
+./test/zerosized.cpp
+./test/exceptions.cpp
+./test/vectorwiseop.cpp
+./test/cwiseop.cpp
+./test/basicstuff.cpp
+./test/product_trmm.cpp
+./test/linearstructure.cpp
+./test/sparse_product.cpp
+./test/stdvector_overload.cpp
+./test/stable_norm.cpp
+./test/umeyama.cpp
+./test/unalignedcount.cpp
+./test/triangular.cpp
+./test/product_mmtr.cpp
+./test/sparse_basic.cpp
+./test/sparse_vector.cpp
+./test/meta.cpp
+./test/real_qz.cpp
+./test/ref.cpp
+./test/eigensolver_complex.cpp
+./test/cholmod_support.cpp
+./test/conjugate_gradient.cpp
+./test/sparse.h
+./test/simplicial_cholesky.cpp
+./test/bicgstab.cpp
+./test/dynalloc.cpp
+./test/product_notemporary.cpp
+./test/geo_hyperplane.cpp
+./test/lu.cpp
+./test/qr.cpp
+./test/hessenberg.cpp
+./test/sizeof.cpp
+./test/main.h
+./test/selfadjoint.cpp
+./test/permutationmatrices.cpp
+./test/superlu_support.cpp
+./test/qtvector.cpp
+./test/geo_homogeneous.cpp
+./test/determinant.cpp
+./test/array_reverse.cpp
+./test/unalignedassert.cpp
+./test/stdlist.cpp
+./test/product_symm.cpp
+./test/corners.cpp
+./test/dontalign.cpp
+./test/visitor.cpp
+./test/geo_alignedbox.cpp
+./test/diagonalmatrices.cpp
+./test/product_small.cpp
+./test/eigensolver_generalized_real.cpp
+./test/umfpack_support.cpp
+./test/first_aligned.cpp
+./test/qr_fullpivoting.cpp
+./test/array_replicate.cpp
+./test/geo_parametrizedline.cpp
+./test/eigen2/eigen2_unalignedassert.cpp
+./test/eigen2/eigen2_prec_inverse_4x4.cpp
+./test/eigen2/eigen2_alignedbox.cpp
+./test/eigen2/eigen2_sparse_product.cpp
+./test/eigen2/eigen2_meta.cpp
+./test/eigen2/eigen2_nomalloc.cpp
+./test/eigen2/eigen2_visitor.cpp
+./test/eigen2/eigen2_packetmath.cpp
+./test/eigen2/eigen2_svd.cpp
+./test/eigen2/eigen2_mixingtypes.cpp
+./test/eigen2/eigen2_qr.cpp
+./test/eigen2/eigen2_cwiseop.cpp
+./test/eigen2/eigen2_geometry_with_eigen2_prefix.cpp
+./test/eigen2/eigen2_smallvectors.cpp
+./test/eigen2/eigen2_commainitializer.cpp
+./test/eigen2/eigen2_sparse_solvers.cpp
+./test/eigen2/eigen2_hyperplane.cpp
+./test/eigen2/eigen2_eigensolver.cpp
+./test/eigen2/eigen2_linearstructure.cpp
+./test/eigen2/eigen2_sizeof.cpp
+./test/eigen2/eigen2_parametrizedline.cpp
+./test/eigen2/eigen2_lu.cpp
+./test/eigen2/eigen2_adjoint.cpp
+./test/eigen2/eigen2_geometry.cpp
+./test/eigen2/eigen2_stdvector.cpp
+./test/eigen2/eigen2_newstdvector.cpp
+./test/eigen2/eigen2_submatrices.cpp
+./test/eigen2/sparse.h
+./test/eigen2/eigen2_swap.cpp
+./test/eigen2/eigen2_triangular.cpp
+./test/eigen2/eigen2_basicstuff.cpp
+./test/eigen2/gsl_helper.h
+./test/eigen2/eigen2_dynalloc.cpp
+./test/eigen2/eigen2_array.cpp
+./test/eigen2/eigen2_map.cpp
+./test/eigen2/main.h
+./test/eigen2/eigen2_miscmatrices.cpp
+./test/eigen2/eigen2_product_large.cpp
+./test/eigen2/eigen2_first_aligned.cpp
+./test/eigen2/eigen2_cholesky.cpp
+./test/eigen2/eigen2_determinant.cpp
+./test/eigen2/eigen2_sum.cpp
+./test/eigen2/eigen2_inverse.cpp
+./test/eigen2/eigen2_regression.cpp
+./test/eigen2/eigen2_product_small.cpp
+./test/eigen2/eigen2_qtvector.cpp
+./test/eigen2/eigen2_sparse_vector.cpp
+./test/eigen2/product.h
+./test/eigen2/eigen2_sparse_basic.cpp
+./test/eigen2/eigen2_bug_132.cpp
+./test/array.cpp
+./test/product_syrk.cpp
+./test/commainitializer.cpp
+./test/conservative_resize.cpp
+./test/qr_colpivoting.cpp
+./test/nullary.cpp
+./test/bandmatrix.cpp
+./test/pastix_support.cpp
+./test/product.h
+./test/block.cpp
+./test/vectorization_logic.cpp
+./test/jacobi.cpp
+./test/diagonal.cpp
+./test/schur_complex.cpp
+./test/sizeoverflow.cpp
+./bench/BenchTimer.h
+./bench/benchFFT.cpp
+./bench/eig33.cpp
+./bench/spbench/spbenchsolver.h
+./bench/spbench/spbenchstyle.h
+./lapack/complex_double.cpp
+./lapack/cholesky.cpp
+./lapack/lapack_common.h
+./lapack/eigenvalues.cpp
+./lapack/single.cpp
+./lapack/lu.cpp
+./lapack/complex_single.cpp
+./lapack/double.cpp
+./demos/mix_eigen_and_c/binary_library.cpp
+./demos/mix_eigen_and_c/binary_library.h
+./demos/mix_eigen_and_c/example.c
+./demos/mandelbrot/mandelbrot.cpp
+./demos/mandelbrot/mandelbrot.h
+./demos/opengl/icosphere.cpp
+./demos/opengl/icosphere.h
+./demos/opengl/camera.cpp
+./demos/opengl/quaternion_demo.h
+./demos/opengl/camera.h
+./demos/opengl/trackball.h
+./demos/opengl/gpuhelper.h
+./demos/opengl/trackball.cpp
+./demos/opengl/gpuhelper.cpp
+./demos/opengl/quaternion_demo.cpp
+./debug/gdb/printers.py
+./unsupported/test/minres.cpp
+./unsupported/test/openglsupport.cpp
+./unsupported/test/jacobisvd.cpp
+./unsupported/test/dgmres.cpp
+./unsupported/test/matrix_square_root.cpp
+./unsupported/test/bdcsvd.cpp
+./unsupported/test/matrix_exponential.cpp
+./unsupported/test/forward_adolc.cpp
+./unsupported/test/polynomialsolver.cpp
+./unsupported/test/matrix_function.cpp
+./unsupported/test/sparse_extra.cpp
+./unsupported/test/matrix_functions.h
+./unsupported/test/svd_common.h
+./unsupported/test/FFTW.cpp
+./unsupported/test/alignedvector3.cpp
+./unsupported/test/autodiff.cpp
+./unsupported/test/gmres.cpp
+./unsupported/test/BVH.cpp
+./unsupported/test/levenberg_marquardt.cpp
+./unsupported/test/matrix_power.cpp
+./unsupported/test/kronecker_product.cpp
+./unsupported/test/splines.cpp
+./unsupported/test/polynomialutils.cpp
+./unsupported/bench/bench_svd.cpp
+./unsupported/Eigen/IterativeSolvers
+./unsupported/Eigen/src/IterativeSolvers/DGMRES.h
+./unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h
+./unsupported/Eigen/src/IterativeSolvers/GMRES.h
+./unsupported/Eigen/src/IterativeSolvers/IncompleteCholesky.h
+./unsupported/Eigen/src/IterativeSolvers/Scaling.h
+./unsupported/Eigen/src/IterativeSolvers/MINRES.h
+./unsupported/Eigen/src/SparseExtra/RandomSetter.h
+./unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h
+./unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h
+./unsupported/Eigen/src/SparseExtra/MarketIO.h
+./unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h
+./unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h
+./unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h
+./unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h
+./unsupported/Eigen/src/BVH/BVAlgorithms.h
+./unsupported/Eigen/src/BVH/KdBVH.h
+./unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h
+./unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h
+./unsupported/Eigen/src/AutoDiff/AutoDiffVector.h
+./unsupported/Eigen/src/Splines/Spline.h
+./unsupported/Eigen/src/Splines/SplineFitting.h
+./unsupported/Eigen/src/Splines/SplineFwd.h
+./unsupported/Eigen/src/SVD/JacobiSVD.h
+./unsupported/Eigen/src/SVD/BDCSVD.h
+./unsupported/Eigen/src/SVD/SVDBase.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h
+./unsupported/Eigen/src/MatrixFunctions/StemFunction.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixPower.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h
+./unsupported/Eigen/src/MatrixFunctions/MatrixFunctionAtomic.h
+./unsupported/Eigen/src/MoreVectorization/MathFunctions.h
+./unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h
+./unsupported/Eigen/src/FFT/ei_fftw_impl.h
+./unsupported/Eigen/src/FFT/ei_kissfft_impl.h
+./unsupported/Eigen/src/Polynomials/PolynomialSolver.h
+./unsupported/Eigen/src/Polynomials/Companion.h
+./unsupported/Eigen/src/Polynomials/PolynomialUtils.h
+./unsupported/Eigen/src/NumericalDiff/NumericalDiff.h
+./unsupported/Eigen/src/Skyline/SkylineProduct.h
+./unsupported/Eigen/src/Skyline/SkylineMatrixBase.h
+./unsupported/Eigen/src/Skyline/SkylineStorage.h
+./unsupported/Eigen/src/Skyline/SkylineUtil.h
+./unsupported/Eigen/src/Skyline/SkylineInplaceLU.h
+./unsupported/Eigen/src/Skyline/SkylineMatrix.h
+./unsupported/Eigen/SparseExtra
+./unsupported/Eigen/AdolcForward
+./unsupported/Eigen/KroneckerProduct
+./unsupported/Eigen/NonLinearOptimization
+./unsupported/Eigen/BVH
+./unsupported/Eigen/OpenGLSupport
+./unsupported/Eigen/ArpackSupport
+./unsupported/Eigen/AutoDiff
+./unsupported/Eigen/Splines
+./unsupported/Eigen/MPRealSupport
+./unsupported/Eigen/MatrixFunctions
+./unsupported/Eigen/MoreVectorization
+./unsupported/Eigen/LevenbergMarquardt
+./unsupported/Eigen/AlignedVector3
+./unsupported/Eigen/FFT
+./unsupported/Eigen/Polynomials
+./unsupported/Eigen/NumericalDiff
+./unsupported/Eigen/Skyline
+./COPYING.README
+./COPYING.README
+./LICENSE
+./LICENSE
+./LICENSE
+./Eigen/Eigen2Support
+./Eigen/src/Eigen2Support/VectorBlock.h
+./Eigen/src/Eigen2Support/Cwise.h
+./Eigen/src/Eigen2Support/Minor.h
+./Eigen/src/Eigen2Support/Lazy.h
+./Eigen/src/Eigen2Support/Memory.h
+./Eigen/src/Eigen2Support/MathFunctions.h
+./Eigen/src/Eigen2Support/Geometry/AlignedBox.h
+./Eigen/src/Eigen2Support/Geometry/Hyperplane.h
+./Eigen/src/Eigen2Support/Geometry/Quaternion.h
+./Eigen/src/Eigen2Support/Geometry/Rotation2D.h
+./Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h
+./Eigen/src/Eigen2Support/Geometry/RotationBase.h
+./Eigen/src/Eigen2Support/Geometry/Translation.h
+./Eigen/src/Eigen2Support/Geometry/Scaling.h
+./Eigen/src/Eigen2Support/Geometry/AngleAxis.h
+./Eigen/src/Eigen2Support/Geometry/Transform.h
+./Eigen/src/Eigen2Support/TriangularSolver.h
+./Eigen/src/Eigen2Support/LU.h
+./Eigen/src/Eigen2Support/QR.h
+./Eigen/src/Eigen2Support/SVD.h
+./Eigen/src/Eigen2Support/Meta.h
+./Eigen/src/Eigen2Support/Block.h
+./Eigen/src/Eigen2Support/Macros.h
+./Eigen/src/Eigen2Support/LeastSquares.h
+./Eigen/src/Eigen2Support/CwiseOperators.h
+./Eigen/src/Jacobi/Jacobi.h
+./Eigen/src/misc/Kernel.h
+./Eigen/src/misc/SparseSolve.h
+./Eigen/src/misc/Solve.h
+./Eigen/src/misc/Image.h
+./Eigen/src/SparseCore/SparseColEtree.h
+./Eigen/src/SparseCore/SparseTranspose.h
+./Eigen/src/SparseCore/SparseUtil.h
+./Eigen/src/SparseCore/SparseCwiseBinaryOp.h
+./Eigen/src/SparseCore/SparseDiagonalProduct.h
+./Eigen/src/SparseCore/SparseProduct.h
+./Eigen/src/SparseCore/SparseDot.h
+./Eigen/src/SparseCore/SparseCwiseUnaryOp.h
+./Eigen/src/SparseCore/SparseSparseProductWithPruning.h
+./Eigen/src/SparseCore/SparseBlock.h
+./Eigen/src/SparseCore/SparseDenseProduct.h
+./Eigen/src/SparseCore/CompressedStorage.h
+./Eigen/src/SparseCore/SparseMatrixBase.h
+./Eigen/src/SparseCore/MappedSparseMatrix.h
+./Eigen/src/SparseCore/SparseTriangularView.h
+./Eigen/src/SparseCore/SparseView.h
+./Eigen/src/SparseCore/SparseFuzzy.h
+./Eigen/src/SparseCore/TriangularSolver.h
+./Eigen/src/SparseCore/SparseSelfAdjointView.h
+./Eigen/src/SparseCore/SparseMatrix.h
+./Eigen/src/SparseCore/SparseVector.h
+./Eigen/src/SparseCore/AmbiVector.h
+./Eigen/src/SparseCore/ConservativeSparseSparseProduct.h
+./Eigen/src/SparseCore/SparseRedux.h
+./Eigen/src/SparseCore/SparsePermutation.h
+./Eigen/src/Eigenvalues/RealSchur.h
+./Eigen/src/Eigenvalues/ComplexEigenSolver.h
+./Eigen/src/Eigenvalues/GeneralizedEigenSolver.h
+./Eigen/src/Eigenvalues/ComplexSchur.h
+./Eigen/src/Eigenvalues/RealQZ.h
+./Eigen/src/Eigenvalues/EigenSolver.h
+./Eigen/src/Eigenvalues/HessenbergDecomposition.h
+./Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h
+./Eigen/src/Eigenvalues/Tridiagonalization.h
+./Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h
+./Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h
+./Eigen/src/SuperLUSupport/SuperLUSupport.h
+./Eigen/src/StlSupport/StdDeque.h
+./Eigen/src/StlSupport/StdVector.h
+./Eigen/src/StlSupport/StdList.h
+./Eigen/src/StlSupport/details.h
+./Eigen/src/SparseQR/SparseQR.h
+./Eigen/src/LU/Inverse.h
+./Eigen/src/LU/arch/Inverse_SSE.h
+./Eigen/src/LU/Determinant.h
+./Eigen/src/LU/PartialPivLU.h
+./Eigen/src/LU/FullPivLU.h
+./Eigen/src/UmfPackSupport/UmfPackSupport.h
+./Eigen/src/OrderingMethods/Ordering.h
+./Eigen/src/OrderingMethods/Eigen_Colamd.h
+./Eigen/src/QR/HouseholderQR.h
+./Eigen/src/QR/ColPivHouseholderQR.h
+./Eigen/src/QR/FullPivHouseholderQR.h
+./Eigen/src/SVD/JacobiSVD.h
+./Eigen/src/SVD/UpperBidiagonalization.h
+./Eigen/src/Geometry/OrthoMethods.h
+./Eigen/src/Geometry/AlignedBox.h
+./Eigen/src/Geometry/Hyperplane.h
+./Eigen/src/Geometry/Quaternion.h
+./Eigen/src/Geometry/EulerAngles.h
+./Eigen/src/Geometry/Rotation2D.h
+./Eigen/src/Geometry/ParametrizedLine.h
+./Eigen/src/Geometry/RotationBase.h
+./Eigen/src/Geometry/arch/Geometry_SSE.h
+./Eigen/src/Geometry/Umeyama.h
+./Eigen/src/Geometry/Homogeneous.h
+./Eigen/src/Geometry/Translation.h
+./Eigen/src/Geometry/Scaling.h
+./Eigen/src/Geometry/AngleAxis.h
+./Eigen/src/Geometry/Transform.h
+./Eigen/src/plugins/BlockMethods.h
+./Eigen/src/plugins/CommonCwiseUnaryOps.h
+./Eigen/src/plugins/CommonCwiseBinaryOps.h
+./Eigen/src/plugins/MatrixCwiseUnaryOps.h
+./Eigen/src/plugins/MatrixCwiseBinaryOps.h
+./Eigen/src/Householder/Householder.h
+./Eigen/src/Householder/HouseholderSequence.h
+./Eigen/src/Householder/BlockHouseholder.h
+./Eigen/src/Core/VectorBlock.h
+./Eigen/src/Core/Matrix.h
+./Eigen/src/Core/Ref.h
+./Eigen/src/Core/SelfAdjointView.h
+./Eigen/src/Core/MathFunctions.h
+./Eigen/src/Core/GlobalFunctions.h
+./Eigen/src/Core/MapBase.h
+./Eigen/src/Core/EigenBase.h
+./Eigen/src/Core/GenericPacketMath.h
+./Eigen/src/Core/NestByValue.h
+./Eigen/src/Core/CwiseUnaryOp.h
+./Eigen/src/Core/SolveTriangular.h
+./Eigen/src/Core/Fuzzy.h
+./Eigen/src/Core/Visitor.h
+./Eigen/src/Core/Map.h
+./Eigen/src/Core/NoAlias.h
+./Eigen/src/Core/Diagonal.h
+./Eigen/src/Core/StableNorm.h
+./Eigen/src/Core/CoreIterators.h
+./Eigen/src/Core/products/Parallelizer.h
+./Eigen/src/Core/products/SelfadjointMatrixVector.h
+./Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h
+./Eigen/src/Core/products/TriangularSolverMatrix.h
+./Eigen/src/Core/products/GeneralMatrixMatrix.h
+./Eigen/src/Core/products/SelfadjointProduct.h
+./Eigen/src/Core/products/CoeffBasedProduct.h
+./Eigen/src/Core/products/TriangularMatrixVector.h
+./Eigen/src/Core/products/SelfadjointMatrixMatrix.h
+./Eigen/src/Core/products/TriangularSolverVector.h
+./Eigen/src/Core/products/SelfadjointRank2Update.h
+./Eigen/src/Core/products/GeneralBlockPanelKernel.h
+./Eigen/src/Core/products/GeneralMatrixVector.h
+./Eigen/src/Core/products/TriangularMatrixMatrix.h
+./Eigen/src/Core/Reverse.h
+./Eigen/src/Core/BooleanRedux.h
+./Eigen/src/Core/Replicate.h
+./Eigen/src/Core/arch/AltiVec/PacketMath.h
+./Eigen/src/Core/arch/AltiVec/Complex.h
+./Eigen/src/Core/arch/SSE/PacketMath.h
+./Eigen/src/Core/arch/SSE/Complex.h
+./Eigen/src/Core/arch/SSE/MathFunctions.h
+./Eigen/src/Core/arch/NEON/PacketMath.h
+./Eigen/src/Core/arch/NEON/Complex.h
+./Eigen/src/Core/arch/Default/Settings.h
+./Eigen/src/Core/CwiseUnaryView.h
+./Eigen/src/Core/Array.h
+./Eigen/src/Core/ArrayWrapper.h
+./Eigen/src/Core/Swap.h
+./Eigen/src/Core/Transpositions.h
+./Eigen/src/Core/Random.h
+./Eigen/src/Core/IO.h
+./Eigen/src/Core/SelfCwiseBinaryOp.h
+./Eigen/src/Core/VectorwiseOp.h
+./Eigen/src/Core/Select.h
+./Eigen/src/Core/ArrayBase.h
+./Eigen/src/Core/DenseCoeffsBase.h
+./Eigen/src/Core/DiagonalProduct.h
+./Eigen/src/Core/Assign.h
+./Eigen/src/Core/Redux.h
+./Eigen/src/Core/ForceAlignedAccess.h
+./Eigen/src/Core/BandMatrix.h
+./Eigen/src/Core/PlainObjectBase.h
+./Eigen/src/Core/DenseBase.h
+./Eigen/src/Core/Flagged.h
+./Eigen/src/Core/CwiseBinaryOp.h
+./Eigen/src/Core/ProductBase.h
+./Eigen/src/Core/TriangularMatrix.h
+./Eigen/src/Core/Transpose.h
+./Eigen/src/Core/DiagonalMatrix.h
+./Eigen/src/Core/Dot.h
+./Eigen/src/Core/Functors.h
+./Eigen/src/Core/PermutationMatrix.h
+./Eigen/src/Core/NumTraits.h
+./Eigen/src/Core/MatrixBase.h
+./Eigen/src/Core/DenseStorage.h
+./Eigen/src/Core/util/Memory.h
+./Eigen/src/Core/util/StaticAssert.h
+./Eigen/src/Core/util/BlasUtil.h
+./Eigen/src/Core/util/MatrixMapper.h
+./Eigen/src/Core/util/XprHelper.h
+./Eigen/src/Core/util/ForwardDeclarations.h
+./Eigen/src/Core/util/Meta.h
+./Eigen/src/Core/util/Macros.h
+./Eigen/src/Core/util/Constants.h
+./Eigen/src/Core/CwiseNullaryOp.h
+./Eigen/src/Core/Block.h
+./Eigen/src/Core/GeneralProduct.h
+./Eigen/src/Core/CommaInitializer.h
+./Eigen/src/Core/ReturnByValue.h
+./Eigen/src/Core/Stride.h
+./Eigen/src/SPQRSupport/SuiteSparseQRSupport.h
+./Eigen/src/SparseLU/SparseLU_column_dfs.h
+./Eigen/src/SparseLU/SparseLU_panel_dfs.h
+./Eigen/src/SparseLU/SparseLU_relax_snode.h
+./Eigen/src/SparseLU/SparseLU_panel_bmod.h
+./Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h
+./Eigen/src/SparseLU/SparseLU_Utils.h
+./Eigen/src/SparseLU/SparseLU_gemm_kernel.h
+./Eigen/src/SparseLU/SparseLU_kernel_bmod.h
+./Eigen/src/SparseLU/SparseLU_pivotL.h
+./Eigen/src/SparseLU/SparseLU_Memory.h
+./Eigen/src/SparseLU/SparseLU_heap_relax_snode.h
+./Eigen/src/SparseLU/SparseLUImpl.h
+./Eigen/src/SparseLU/SparseLU_copy_to_ucol.h
+./Eigen/src/SparseLU/SparseLU_Structs.h
+./Eigen/src/SparseLU/SparseLU.h
+./Eigen/src/SparseLU/SparseLU_column_bmod.h
+./Eigen/src/SparseLU/SparseLU_pruneL.h
+./Eigen/src/IterativeLinearSolvers/IncompleteLUT.h
+./Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h
+./Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h
+./Eigen/src/IterativeLinearSolvers/ConjugateGradient.h
+./Eigen/src/IterativeLinearSolvers/BiCGSTAB.h
+./Eigen/src/SparseCholesky/SimplicialCholesky.h
+./Eigen/src/Cholesky/LDLT.h
+./Eigen/src/Cholesky/LLT.h
+./Eigen/src/CholmodSupport/CholmodSupport.h
+./Eigen/src/PaStiXSupport/PaStiXSupport.h
+./Eigen/src/MetisSupport/MetisSupport.h
+./Eigen/StdVector
+./Eigen/Core
+./Eigen/SparseLU
+./Eigen/StdList
+./Eigen/StdDeque
+./Eigen/SparseCholesky
+./scripts/relicense.py
+./scripts/relicense.py
+./blas/BandTriangularSolver.h
+./blas/PackedTriangularMatrixVector.h
+./blas/complex_double.cpp
+./blas/level2_real_impl.h
+./blas/level1_cplx_impl.h
+./blas/level1_impl.h
+./blas/level1_real_impl.h
+./blas/level3_impl.h
+./blas/single.cpp
+./blas/level2_cplx_impl.h
+./blas/PackedSelfadjointProduct.h
+./blas/Rank2Update.h
+./blas/complex_single.cpp
+./blas/PackedTriangularSolverVector.h
+./blas/double.cpp
+./blas/common.h
+./blas/level2_impl.h
+./blas/GeneralRank1Update.h
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
+
+----------------------------------------------------------------------
+Following applies to:
+./doc/UsingIntelMKL.dox
+./doc/UsingIntelMKL.dox
+./Eigen/src/Eigenvalues/ComplexSchur_MKL.h
+./Eigen/src/Eigenvalues/ComplexSchur_MKL.h
+./Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h
+./Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h
+./Eigen/src/Eigenvalues/RealSchur_MKL.h
+./Eigen/src/Eigenvalues/RealSchur_MKL.h
+./Eigen/src/LU/arch/Inverse_SSE.h
+./Eigen/src/LU/arch/Inverse_SSE.h
+./Eigen/src/LU/PartialPivLU_MKL.h
+./Eigen/src/LU/PartialPivLU_MKL.h
+./Eigen/src/QR/HouseholderQR_MKL.h
+./Eigen/src/QR/HouseholderQR_MKL.h
+./Eigen/src/QR/ColPivHouseholderQR_MKL.h
+./Eigen/src/QR/ColPivHouseholderQR_MKL.h
+./Eigen/src/SVD/JacobiSVD_MKL.h
+./Eigen/src/SVD/JacobiSVD_MKL.h
+./Eigen/src/PardisoSupport/PardisoSupport.h
+./Eigen/src/PardisoSupport/PardisoSupport.h
+./Eigen/src/Core/Assign_MKL.h
+./Eigen/src/Core/Assign_MKL.h
+./Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h
+./Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h
+./Eigen/src/Core/products/GeneralMatrixVector_MKL.h
+./Eigen/src/Core/products/GeneralMatrixVector_MKL.h
+./Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h
+./Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h
+./Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h
+./Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h
+./Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h
+./Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h
+./Eigen/src/Core/products/TriangularMatrixVector_MKL.h
+./Eigen/src/Core/products/TriangularMatrixVector_MKL.h
+./Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h
+./Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h
+./Eigen/src/Core/products/TriangularSolverMatrix_MKL.h
+./Eigen/src/Core/products/TriangularSolverMatrix_MKL.h
+./Eigen/src/Core/util/MKL_support.h
+./Eigen/src/Core/util/MKL_support.h
+./Eigen/src/Cholesky/LLT_MKL.h
+./Eigen/src/Cholesky/LLT_MKL.h
+
+/*
+ Copyright (c) 2011, Intel Corporation. All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.  *
+   Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.  * Neither the name of Intel Corporation nor the
+   names of its contributors may be used to endorse or promote
+   products derived from this software without specific prior written
+   permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+----------------------------------------------------------------------
+Following applies to:
+  everything under ./bench/btl
+
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds
+of works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal,
+family, or household purposes, or (2) anything designed or sold for
+incorporation into a dwelling.  In determining whether a product is a
+consumer product, doubtful cases shall be resolved in favor of
+coverage.  For a particular product received by a particular user,
+"normally used" refers to a typical or common use of that class of
+product, regardless of the status of the particular user or of the way
+in which the particular user actually uses, or expects or is expected
+to use, the product.  A product is a consumer product regardless of
+whether the product has substantial commercial, industrial or
+non-consumer uses, unless such uses represent the only significant
+mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to
+install and execute modified versions of a covered work in that User
+Product from a modified version of its Corresponding Source.  The
+information must suffice to ensure that the continued functioning of
+the modified object code is in no case prevented or interfered with
+solely because modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include
+a requirement to continue to provide support service, warranty, or
+updates for a work that has been modified or installed by the
+recipient, or for the User Product in which it has been modified or
+installed.  Access to a network may be denied when the modification
+itself materially and adversely affects the operation of the network
+or violates the rules and protocols for communication across the
+network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material
+you add to a covered work, you may (if authorized by the copyright
+holders of that material) supplement the terms of this License with
+terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions
+    of it) with contractual assumptions of liability to the recipient,
+    for any liability that these contractual assumptions directly
+    impose on those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement
+or otherwise) that contradict the conditions of this License, they do
+not excuse you from the conditions of this License.  If you cannot
+convey a covered work so as to satisfy simultaneously your obligations
+under this License and any other pertinent obligations, then as a
+consequence you may not convey it at all.  For example, if you agree
+to terms that obligate you to collect a royalty for further conveying
+from those to whom you convey the Program, the only way you could
+satisfy both those terms and this License would be to refrain entirely
+from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU General Public License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT
+WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
+CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
+AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR
+DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM
+(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED
+INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF
+THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
+OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these
+terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it
+    does.>
+    Copyright (C) <year> <name of author>
+
+    This program is free software: you can redistribute it and/or
+    modify it under the terms of the GNU General Public License as
+    published by the Free Software Foundation, either version 3 of the
+    License, or (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see
+    <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program> Copyright (C) <year> <name of author> This program comes
+    with ABSOLUTELY NO WARRANTY; for details type `show w'.  This is
+    free software, and you are welcome to redistribute it under
+    certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the
+appropriate parts of the General Public License.  Of course, your
+program's commands might be different; for a GUI interface, you would
+use an "about box".
+
+  You should also get your employer (if you work as a programmer) or
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  For more information on this, and how to apply and follow
+the GNU GPL, see <http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your
+program into proprietary programs.  If your program is a subroutine
+library, you may consider it more useful to permit linking proprietary
+applications with the library.  If this is what you want to do, use
+the GNU Lesser General Public License instead of this License.  But
+first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
+
+
+----------------------------------------------------------------------
+Following applies to:
+./test/metis_support.cpp
+./test/sparselu.cpp
+./unsupported/test/mpreal/mpreal.h
+./unsupported/Eigen/src/IterativeSolvers/IterationController.h
+./unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h
+./unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h
+./Eigen/src/OrderingMethods/Amd.h
+./Eigen/src/SparseCholesky/SimplicialCholesky_impl.h
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+
+  This version of the GNU Lesser General Public License incorporates
+the terms and conditions of version 3 of the GNU General Public
+License, supplemented by the additional permissions listed below.
+
+  0. Additional Definitions.
+
+  As used herein, "this License" refers to version 3 of the GNU Lesser
+General Public License, and the "GNU GPL" refers to version 3 of the
+GNU General Public License.
+
+  "The Library" refers to a covered work governed by this License,
+other than an Application or a Combined Work as defined below.
+
+  An "Application" is any work that makes use of an interface provided
+by the Library, but which is not otherwise based on the Library.
+Defining a subclass of a class defined by the Library is deemed a mode
+of using an interface provided by the Library.
+
+  A "Combined Work" is a work produced by combining or linking an
+Application with the Library.  The particular version of the Library
+with which the Combined Work was made is also called the "Linked
+Version".
+
+  The "Minimal Corresponding Source" for a Combined Work means the
+Corresponding Source for the Combined Work, excluding any source code
+for portions of the Combined Work that, considered in isolation, are
+based on the Application, and not on the Linked Version.
+
+  The "Corresponding Application Code" for a Combined Work means the
+object code and/or source code for the Application, including any data
+and utility programs needed for reproducing the Combined Work from the
+Application, but excluding the System Libraries of the Combined Work.
+
+  1. Exception to Section 3 of the GNU GPL.
+
+  You may convey a covered work under sections 3 and 4 of this License
+without being bound by section 3 of the GNU GPL.
+
+  2. Conveying Modified Versions.
+
+  If you modify a copy of the Library, and, in your modifications, a
+facility refers to a function or data to be supplied by an Application
+that uses the facility (other than as an argument passed when the
+facility is invoked), then you may convey a copy of the modified
+version:
+
+   a) under this License, provided that you make a good faith effort to
+   ensure that, in the event an Application does not supply the
+   function or data, the facility still operates, and performs
+   whatever part of its purpose remains meaningful, or
+
+   b) under the GNU GPL, with none of the additional permissions of
+   this License applicable to that copy.
+
+  3. Object Code Incorporating Material from Library Header Files.
+
+  The object code form of an Application may incorporate material from
+a header file that is part of the Library.  You may convey such object
+code under terms of your choice, provided that, if the incorporated
+material is not limited to numerical parameters, data structure
+layouts and accessors, or small macros, inline functions and templates
+(ten or fewer lines in length), you do both of the following:
+
+   a) Give prominent notice with each copy of the object code that the
+   Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the object code with a copy of the GNU GPL and this
+   license document.
+
+  4. Combined Works.
+
+  You may convey a Combined Work under terms of your choice that,
+taken together, effectively do not restrict modification of the
+portions of the Library contained in the Combined Work and reverse
+engineering for debugging such modifications, if you also do each of
+the following:
+
+   a) Give prominent notice with each copy of the Combined Work that
+   the Library is used in it and that the Library and its use are
+   covered by this License.
+
+   b) Accompany the Combined Work with a copy of the GNU GPL and this
+   license document.
+
+   c) For a Combined Work that displays copyright notices during
+   execution, include the copyright notice for the Library among
+   these notices, as well as a reference directing the user to the
+   copies of the GNU GPL and this license document.
+
+   d) Do one of the following:
+
+       0) Convey the Minimal Corresponding Source under the terms of
+       this License, and the Corresponding Application Code in a form
+       suitable for, and under terms that permit, the user to
+       recombine or relink the Application with a modified version of
+       the Linked Version to produce a modified Combined Work, in the
+       manner specified by section 6 of the GNU GPL for conveying
+       Corresponding Source.
+
+       1) Use a suitable shared library mechanism for linking with the
+       Library.  A suitable mechanism is one that (a) uses at run time
+       a copy of the Library already present on the user's computer
+       system, and (b) will operate properly with a modified version
+       of the Library that is interface-compatible with the Linked
+       Version.
+
+   e) Provide Installation Information, but only if you would otherwise
+   be required to provide such information under section 6 of the
+   GNU GPL, and only to the extent that such information is
+   necessary to install and execute a modified version of the
+   Combined Work produced by recombining or relinking the
+   Application with a modified version of the Linked Version. (If
+   you use option 4d0, the Installation Information must accompany
+   the Minimal Corresponding Source and Corresponding Application
+   Code. If you use option 4d1, you must provide the Installation
+   Information in the manner specified by section 6 of the GNU GPL
+   for conveying Corresponding Source.)
+
+  5. Combined Libraries.
+
+  You may place library facilities that are a work based on the
+Library side by side in a single library together with other library
+facilities that are not Applications and are not covered by this
+License, and convey such a combined library under terms of your
+choice, if you do both of the following:
+
+   a) Accompany the combined library with a copy of the same work based
+   on the Library, uncombined with any other library facilities,
+   conveyed under the terms of this License.
+
+   b) Give prominent notice with the combined library that part of it
+   is a work based on the Library, and explaining where to find the
+   accompanying uncombined form of the same work.
+
+  6. Revised Versions of the GNU Lesser General Public License.
+
+  The Free Software Foundation may publish revised and/or new versions
+of the GNU Lesser General Public License from time to time. Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.
+
+  Each version is given a distinguishing version number. If the
+Library as you received it specifies that a certain numbered version
+of the GNU Lesser General Public License "or any later version"
+applies to it, you have the option of following the terms and
+conditions either of that published version or of any later version
+published by the Free Software Foundation. If the Library as you
+received it does not specify a version number of the GNU Lesser
+General Public License, you may choose any version of the GNU Lesser
+General Public License ever published by the Free Software Foundation.
+
+  If the Library as you received it specifies that a proxy can decide
+whether future versions of the GNU Lesser General Public License shall
+apply, that proxy's public statement of acceptance of any version is
+permanent authorization for you to choose that version for the
+Library.
+
+
+----------------------------------------------------------------------
+Following applies to:
+./unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h
+./unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h
+./unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h
+./unsupported/Eigen/src/LevenbergMarquardt/LMpar.h
+./unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h
+
+Minpack Copyright Notice (1999) University of Chicago.  All rights
+reserved
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions of source code must retain the above
+copyright notice, this list of conditions and the following
+disclaimer.
+
+2. Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following
+disclaimer in the documentation and/or other materials
+provided with the distribution.
+
+3. The end-user documentation included with the
+redistribution, if any, must include the following
+acknowledgment:
+
+   "This product includes software developed by the
+   University of Chicago, as Operator of Argonne National
+   Laboratory.
+
+Alternately, this acknowledgment may appear in the software
+itself, if and wherever such third-party acknowledgments
+normally appear.
+
+4. WARRANTY DISCLAIMER. THE SOFTWARE IS SUPPLIED "AS IS"
+WITHOUT WARRANTY OF ANY KIND. THE COPYRIGHT HOLDER, THE
+UNITED STATES, THE UNITED STATES DEPARTMENT OF ENERGY, AND
+THEIR EMPLOYEES: (1) DISCLAIM ANY WARRANTIES, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE
+OR NON-INFRINGEMENT, (2) DO NOT ASSUME ANY LEGAL LIABILITY
+OR RESPONSIBILITY FOR THE ACCURACY, COMPLETENESS, OR
+USEFULNESS OF THE SOFTWARE, (3) DO NOT REPRESENT THAT USE OF
+THE SOFTWARE WOULD NOT INFRINGE PRIVATELY OWNED RIGHTS, (4)
+DO NOT WARRANT THAT THE SOFTWARE WILL FUNCTION
+UNINTERRUPTED, THAT IT IS ERROR-FREE OR THAT ANY ERRORS WILL
+BE CORRECTED.
+
+5. LIMITATION OF LIABILITY. IN NO EVENT WILL THE COPYRIGHT
+HOLDER, THE UNITED STATES, THE UNITED STATES DEPARTMENT OF
+ENERGY, OR THEIR EMPLOYEES: BE LIABLE FOR ANY INDIRECT,
+INCIDENTAL, CONSEQUENTIAL, SPECIAL OR PUNITIVE DAMAGES OF
+ANY KIND OR NATURE, INCLUDING BUT NOT LIMITED TO LOSS OF
+PROFITS OR LOSS OF DATA, FOR ANY REASON WHATSOEVER, WHETHER
+SUCH LIABILITY IS ASSERTED ON THE BASIS OF CONTRACT, TORT
+(INCLUDING NEGLIGENCE OR STRICT LIABILITY), OR OTHERWISE,
+EVEN IF ANY OF SAID PARTIES HAS BEEN WARNED OF THE
+POSSIBILITY OF SUCH LOSS OR DAMAGES.
+
+
+****************************
+freetype2
+****************************
+FreeType
+
+Quoth http://freetype.sourceforge.net/license.html:
+
+FreeType comes with two licenses from which you can choose the one
+which fits your needs best.
+
+   * The FreeType License is the most commonly used one.
+    It is a BSD-style license with a credit clause (and thus not
+    compatible with the GPL).
+
+  * The GNU General Public License (GPL).
+    For all projects which use the GPL also or which need a license
+    compatible to the GPL.
+
+FTL.TXT:
+---
+
+                    The FreeType Project LICENSE
+                    ----------------------------
+
+                            2006-Jan-27
+
+                    Copyright 1996-2002, 2006 by
+          David Turner, Robert Wilhelm, and Werner Lemberg
+
+
+
+Introduction
+============
+
+  The FreeType  Project is distributed in  several archive packages;
+  some of them may contain, in addition to the FreeType font engine,
+  various tools and  contributions which rely on, or  relate to, the
+  FreeType Project.
+
+  This  license applies  to all  files found  in such  packages, and
+  which do not  fall under their own explicit  license.  The license
+  affects  thus  the  FreeType   font  engine,  the  test  programs,
+  documentation and makefiles, at the very least.
+
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
+  (Independent JPEG  Group) licenses, which  all encourage inclusion
+  and  use of  free  software in  commercial  and freeware  products
+  alike.  As a consequence, its main points are that:
+
+    o We don't promise that this software works. However, we will be
+      interested in any kind of bug reports. (`as is' distribution)
+
+    o You can  use this software for whatever you  want, in parts or
+      full form, without having to pay us. (`royalty-free' usage)
+
+    o You may not pretend that  you wrote this software.  If you use
+      it, or  only parts of it,  in a program,  you must acknowledge
+      somewhere  in  your  documentation  that  you  have  used  the
+      FreeType code. (`credits')
+
+  We  specifically  permit  and  encourage  the  inclusion  of  this
+  software, with  or without modifications,  in commercial products.
+  We  disclaim  all warranties  covering  The  FreeType Project  and
+  assume no liability related to The FreeType Project.
+
+
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a
+  credit/disclaimer to use in compliance with this license.  We thus
+  encourage you to use the following text:
+
+   """
+    Portions of this software are copyright (C) <year> The FreeType
+    Project (www.freetype.org).  All rights reserved.
+   """
+
+  Please replace <year> with the value from the FreeType version you
+  actually use.
+
+
+Legal Terms
+===========
+
+0. Definitions
+--------------
+
+  Throughout this license,  the terms `package', `FreeType Project',
+  and  `FreeType  archive' refer  to  the  set  of files  originally
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,
+  beta or final release.
+
+  `You' refers to  the licensee, or person using  the project, where
+  `using' is a generic term including compiling the project's source
+  code as  well as linking it  to form a  `program' or `executable'.
+  This  program is  referred to  as  `a program  using the  FreeType
+  engine'.
+
+  This  license applies  to all  files distributed  in  the original
+  FreeType  Project,   including  all  source   code,  binaries  and
+  documentation,  unless  otherwise  stated   in  the  file  in  its
+  original, unmodified form as  distributed in the original archive.
+  If you are  unsure whether or not a particular  file is covered by
+  this license, you must contact us to verify this.
+
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
+  specified below.
+
+1. No Warranty
+--------------
+
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
+  USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+-----------------
+
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and
+  irrevocable right  and license to use,  execute, perform, compile,
+  display,  copy,   create  derivative  works   of,  distribute  and
+  sublicense the  FreeType Project (in  both source and  object code
+  forms)  and  derivative works  thereof  for  any  purpose; and  to
+  authorize others  to exercise  some or all  of the  rights granted
+  herein, subject to the following conditions:
+
+    o Redistribution of  source code  must retain this  license file
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to
+      the original  files must be clearly  indicated in accompanying
+      documentation.   The  copyright   notices  of  the  unaltered,
+      original  files must  be  preserved in  all  copies of  source
+      files.
+
+    o Redistribution in binary form must provide a  disclaimer  that
+      states  that  the software is based in part of the work of the
+      FreeType Team,  in  the  distribution  documentation.  We also
+      encourage you to put an URL to the FreeType web page  in  your
+      documentation, though this isn't mandatory.
+
+  These conditions  apply to any  software derived from or  based on
+  the FreeType Project,  not just the unmodified files.   If you use
+  our work, you  must acknowledge us.  However, no  fee need be paid
+  to us.
+
+3. Advertising
+--------------
+
+  Neither the  FreeType authors and  contributors nor you  shall use
+  the name of the  other for commercial, advertising, or promotional
+  purposes without specific prior written permission.
+
+  We suggest,  but do not require, that  you use one or  more of the
+  following phrases to refer  to this software in your documentation
+  or advertising  materials: `FreeType Project',  `FreeType Engine',
+  `FreeType library', or `FreeType Distribution'.
+
+  As  you have  not signed  this license,  you are  not  required to
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted
+  material, only  this license, or  another one contracted  with the
+  authors, grants you  the right to use, distribute,  and modify it.
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType
+  Project, you indicate that you understand and accept all the terms
+  of this license.
+
+4. Contacts
+-----------
+
+  There are two mailing lists related to FreeType:
+
+    o freetype@nongnu.org
+
+      Discusses general use and applications of FreeType, as well as
+      future and  wanted additions to the  library and distribution.
+      If  you are looking  for support,  start in  this list  if you
+      haven't found anything to help you in the documentation.
+
+    o freetype-devel@nongnu.org
+
+      Discusses bugs,  as well  as engine internals,  design issues,
+      specific licenses, porting, etc.
+
+  Our home page can be found at
+
+    http://www.freetype.org
+
+
+--- end of FTL.TXT ---
+
+
+****************************
+GL
+****************************
+Mesa Component Licenses
+
+Component         Location               Primary Author      License
+----------------------------------------------------------------------------
+Main Mesa code    src/mesa/              Brian Paul          Mesa (MIT)
+
+Device drivers    src/mesa/drivers/*     See drivers         See drivers
+
+Ext headers       include/GL/glext.h     SGI                 SGI Free B
+                  include/GL/glxext.h
+
+GLUT              src/glut/              Mark Kilgard        Mark's copyright
+
+GLEW              src/glew-1.13.0        Nigel Stewart       Modified BSD
+
+Mesa GLU library  src/glu/mesa/          Brian Paul          GNU-LGPL
+
+SGI GLU library   src/glu/sgi/           SGI                 SGI Free B
+
+demo programs     progs/demos/           various             see source files
+
+X demos           progs/xdemos/          Brian Paul          see source files
+
+SGI demos         progs/samples/         SGI                 SGI copyright
+
+RedBook demos     progs/redbook/         SGI                 SGI copyright
+
+---------------------
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+----------------------------
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Alan Hourihane not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Alan Hourihane makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+----------------------------------------------------------------------
+
+
+      GNU LIBRARY GENERAL PUBLIC LICENSE
+           Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+          Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+      GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+          NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+         END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+---------------------
+
+The OpenGL Extension Wrangler Library
+Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
+Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
+Copyright (C) 2002, Lev Povalahev
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+* The name of the author may be used to endorse or promote products
+  derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+gradle
+****************************
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+------------------------------------------------------------------------------
+License for the slf4j package
+------------------------------------------------------------------------------
+SLF4J License
+
+Copyright (c) 2004-2007 QOS.ch
+All rights reserved.
+
+Permission is hereby granted, free  of charge, to any person obtaining
+a  copy  of this  software  and  associated  documentation files  (the
+"Software"), to  deal in  the Software without  restriction, including
+without limitation  the rights to  use, copy, modify,  merge, publish,
+distribute,  sublicense, and/or sell  copies of  the Software,  and to
+permit persons to whom the Software  is furnished to do so, subject to
+the following conditions:
+
+The  above  copyright  notice  and  this permission  notice  shall  be
+included in all copies or substantial portions of the Software.
+
+THE  SOFTWARE IS  PROVIDED  "AS  IS", WITHOUT  WARRANTY  OF ANY  KIND,
+EXPRESS OR  IMPLIED, INCLUDING  BUT NOT LIMITED  TO THE  WARRANTIES OF
+MERCHANTABILITY,    FITNESS    FOR    A   PARTICULAR    PURPOSE    AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE,  ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+These terms are identical to those of the MIT License, also called the X License or the X11 License,
+which is a simple, permissive non-copyleft free software license. It is deemed compatible with virtually
+all types of licenses, commercial or otherwise. In particular, the Free Software Foundation has declared it
+compatible with GNU GPL. It is also known to be approved by the Apache Software Foundation as compatible
+with Apache Software License.
+
+
+------------------------------------------------------------------------------
+License for the JUnit package
+------------------------------------------------------------------------------
+THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
+LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
+CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
+
+1. DEFINITIONS
+
+"Contribution" means:
+
+a) in the case of the initial Contributor, the initial code and
+documentation distributed under this Agreement, and
+
+b) in the case of each subsequent Contributor:
+
+i) changes to the Program, and
+
+ii) additions to the Program;
+
+where such changes and/or additions to the Program originate from and are
+distributed by that particular Contributor. A Contribution 'originates' from a
+Contributor if it was added to the Program by such Contributor itself or anyone
+acting on such Contributor's behalf. Contributions do not include additions to
+the Program which: (i) are separate modules of software distributed in
+conjunction with the Program under their own license agreement, and (ii) are not
+derivative works of the Program.
+
+"Contributor" means any person or entity that distributes the Program.
+
+"Licensed Patents " mean patent claims licensable by a Contributor which are
+necessarily infringed by the use or sale of its Contribution alone or when
+combined with the Program.
+
+"Program" means the Contributions distributed in accordance with this Agreement.
+
+"Recipient" means anyone who receives the Program under this Agreement,
+including all Contributors.
+
+2. GRANT OF RIGHTS
+
+a) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free copyright license to
+reproduce, prepare derivative works of, publicly display, publicly perform,
+distribute and sublicense the Contribution of such Contributor, if any, and such
+derivative works, in source code and object code form.
+
+b) Subject to the terms of this Agreement, each Contributor hereby grants
+Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
+Patents to make, use, sell, offer to sell, import and otherwise transfer the
+Contribution of such Contributor, if any, in source code and object code form.
+This patent license shall apply to the combination of the Contribution and the
+Program if, at the time the Contribution is added by the Contributor, such
+addition of the Contribution causes such combination to be covered by the
+Licensed Patents. The patent license shall not apply to any other combinations
+which include the Contribution. No hardware per se is licensed hereunder.
+
+c) Recipient understands that although each Contributor grants the licenses
+to its Contributions set forth herein, no assurances are provided by any
+Contributor that the Program does not infringe the patent or other intellectual
+property rights of any other entity. Each Contributor disclaims any liability to
+Recipient for claims brought by any other entity based on infringement of
+intellectual property rights or otherwise. As a condition to exercising the
+rights and licenses granted hereunder, each Recipient hereby assumes sole
+responsibility to secure any other intellectual property rights needed, if any.
+For example, if a third party patent license is required to allow Recipient to
+distribute the Program, it is Recipient's responsibility to acquire that license
+before distributing the Program.
+
+d) Each Contributor represents that to its knowledge it has sufficient
+copyright rights in its Contribution, if any, to grant the copyright license set
+forth in this Agreement.
+
+3. REQUIREMENTS
+
+A Contributor may choose to distribute the Program in object code form under its
+own license agreement, provided that:
+
+a) it complies with the terms and conditions of this Agreement; and
+
+b) its license agreement:
+
+i) effectively disclaims on behalf of all Contributors all warranties and
+conditions, express and implied, including warranties or conditions of title and
+non-infringement, and implied warranties or conditions of merchantability and
+fitness for a particular purpose;
+
+ii) effectively excludes on behalf of all Contributors all liability for
+damages, including direct, indirect, special, incidental and consequential
+damages, such as lost profits;
+
+iii) states that any provisions which differ from this Agreement are offered
+by that Contributor alone and not by any other party; and
+
+iv) states that source code for the Program is available from such
+Contributor, and informs licensees how to obtain it in a reasonable manner on or
+through a medium customarily used for software exchange.
+
+When the Program is made available in source code form:
+
+a) it must be made available under this Agreement; and
+
+b) a copy of this Agreement must be included with each copy of the Program.
+
+Contributors may not remove or alter any copyright notices contained within the
+Program.
+
+Each Contributor must identify itself as the originator of its Contribution, if
+any, in a manner that reasonably allows subsequent Recipients to identify the
+originator of the Contribution.
+
+4. COMMERCIAL DISTRIBUTION
+
+Commercial distributors of software may accept certain responsibilities with
+respect to end users, business partners and the like. While this license is
+intended to facilitate the commercial use of the Program, the Contributor who
+includes the Program in a commercial product offering should do so in a manner
+which does not create potential liability for other Contributors. Therefore, if
+a Contributor includes the Program in a commercial product offering, such
+Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
+every other Contributor ("Indemnified Contributor") against any losses, damages
+and costs (collectively "Losses") arising from claims, lawsuits and other legal
+actions brought by a third party against the Indemnified Contributor to the
+extent caused by the acts or omissions of such Commercial Contributor in
+connection with its distribution of the Program in a commercial product
+offering. The obligations in this section do not apply to any claims or Losses
+relating to any actual or alleged intellectual property infringement. In order
+to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
+Contributor in writing of such claim, and b) allow the Commercial Contributor to
+control, and cooperate with the Commercial Contributor in, the defense and any
+related settlement negotiations. The Indemnified Contributor may participate in
+any such claim at its own expense.
+
+For example, a Contributor might include the Program in a commercial product
+offering, Product X. That Contributor is then a Commercial Contributor. If that
+Commercial Contributor then makes performance claims, or offers warranties
+related to Product X, those performance claims and warranties are such
+Commercial Contributor's responsibility alone. Under this section, the
+Commercial Contributor would have to defend claims against the other
+Contributors related to those performance claims and warranties, and if a court
+requires any other Contributor to pay any damages as a result, the Commercial
+Contributor must pay those damages.
+
+5. NO WARRANTY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
+IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
+NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
+Recipient is solely responsible for determining the appropriateness of using and
+distributing the Program and assumes all risks associated with its exercise of
+rights under this Agreement, including but not limited to the risks and costs of
+program errors, compliance with applicable laws, damage to or loss of data,
+programs or equipment, and unavailability or interruption of operations.
+
+6. DISCLAIMER OF LIABILITY
+
+EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
+CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
+PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
+GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
+
+7. GENERAL
+
+If any provision of this Agreement is invalid or unenforceable under applicable
+law, it shall not affect the validity or enforceability of the remainder of the
+terms of this Agreement, and without further action by the parties hereto, such
+provision shall be reformed to the minimum extent necessary to make such
+provision valid and enforceable.
+
+If Recipient institutes patent litigation against a Contributor with respect to
+a patent applicable to software (including a cross-claim or counterclaim in a
+lawsuit), then any patent licenses granted by that Contributor to such Recipient
+under this Agreement shall terminate as of the date such litigation is filed. In
+addition, if Recipient institutes patent litigation against any entity
+(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
+itself (excluding combinations of the Program with other software or hardware)
+infringes such Recipient's patent(s), then such Recipient's rights granted under
+Section 2(b) shall terminate as of the date such litigation is filed.
+
+All Recipient's rights under this Agreement shall terminate if it fails to
+comply with any of the material terms or conditions of this Agreement and does
+not cure such failure in a reasonable period of time after becoming aware of
+such noncompliance. If all Recipient's rights under this Agreement terminate,
+Recipient agrees to cease use and distribution of the Program as soon as
+reasonably practicable. However, Recipient's obligations under this Agreement
+and any licenses granted by Recipient relating to the Program shall continue and
+survive.
+
+Everyone is permitted to copy and distribute copies of this Agreement, but in
+order to avoid inconsistency the Agreement is copyrighted and may only be
+modified in the following manner. The Agreement Steward reserves the right to
+publish new versions (including revisions) of this Agreement from time to time.
+No one other than the Agreement Steward has the right to modify this Agreement.
+IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
+as the Agreement Steward to a suitable separate entity. Each new version of the
+Agreement will be given a distinguishing version number. The Program (including
+Contributions) may always be distributed subject to the version of the Agreement
+under which it was received. In addition, after a new version of the Agreement
+is published, Contributor may elect to distribute the Program (including its
+Contributions) under the new version. Except as expressly stated in Sections
+2(a) and 2(b) above, Recipient receives no rights or licenses to the
+intellectual property of any Contributor under this Agreement, whether
+expressly, by implication, estoppel or otherwise. All rights in the Program not
+expressly granted under this Agreement are reserved.
+
+This Agreement is governed by the laws of the State of New York and the
+intellectual property laws of the United States of America. No party to this
+Agreement will bring a legal action under this Agreement more than one year
+after the cause of action arose. Each party waives its rights to a jury trial in
+any resulting litigation.
+
+------------------------------------------------------------------------------
+License for the JCIFS package
+------------------------------------------------------------------------------
+JCIFS License
+
+          GNU LESSER GENERAL PUBLIC LICENSE
+               Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+          GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+             END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+****************************
+icu
+****************************
+ICU
+
+There are two licenses here:
+- ICU license
+- Unicode Terms of Use
+------------------------------------------------------------------------------
+ICU License - ICU 1.8.1 and later
+From http://source.icu-project.org/repos/icu/icu/trunk/license.html
+X License (old version). For license pedigree see the
+ICU FAQ at http://icu-project.org/userguide/icufaq.html
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2006 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+provided that the above copyright notice(s) and this permission notice appear
+in all copies of the Software and that both the above copyright notice(s) and
+this permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
+LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
+DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+
+------------------------------------------------------------------------------
+Unicode Terms of Use, from http://www.unicode.org/copyright.html
+
+    For the general privacy policy governing access to this site, see the
+Unicode Privacy Policy. For trademark usage, see the Unicode Consortium
+Trademarks and Logo Policy.
+    Notice to End User: Terms of Use
+    Carefully read the following legal agreement ("Agreement"). Use or copying
+of the software and/or codes provided with this agreement (The "Software")
+constitutes your acceptance of these terms
+
+       1. Unicode Copyright.
+             1. Copyright  1991-2007 Unicode, Inc. All rights reserved.
+             2. Certain documents and files on this website contain a legend
+indicating that "Modification is permitted." Any person is hereby authorized,
+without fee, to modify such documents and files to create derivative works
+conforming to the Unicode Standard, subject to Terms and Conditions herein.
+             3. Any person is hereby authorized, without fee, to view, use,
+reproduce, and distribute all documents and files solely for informational
+purposes in the creation of products supporting the Unicode Standard, subject
+to the Terms and Conditions herein.
+             4. Further specifications of rights and restrictions pertaining
+to the use of the particular set of data files known as the "Unicode Character
+Database" can be found in Exhibit 1.
+             5. Each version of the Unicode Standard has further specifications
+of rights and restrictions of use. For the book editions, these are found on
+the back of the title page. For the online edition, certain files (such as the
+PDF files for book chapters and code charts) carry specific restrictions. All
+other files are covered under these general Terms of Use.  To request a
+permission to reproduce any part of the Unicode Standard, please contact the
+Unicode Consortium.
+             6. No license is granted to "mirror" the Unicode website where a
+fee is charged for access to the "mirror" site.
+             7. Modification is not permitted with respect to this document.
+All copies of this document must be verbatim.
+       2. Restricted Rights Legend. Any technical data or software which is
+licensed to the United States of America, its agencies and/or instrumentalities
+under this Agreement is commercial technical data or commercial computer
+software developed exclusively at private expense as defined in FAR 2.101, or
+DFARS 252.227-7014 (June 1995), as applicable. For technical data, use,
+duplication, or disclosure by the Government is subject to restrictions as set
+forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995)
+and this Agreement. For Software, in accordance with FAR 12-212 or
+DFARS 227-7202, as applicable, use, duplication or disclosure by the Government
+is subject to the restrictions set forth in this Agreement.
+       3. Warranties and Disclaimers.
+             1. This publication and/or website may include technical or
+typographical errors or other inaccuracies . Changes are periodically added to
+the information herein; these changes will be incorporated in new editions of
+the publication and/or website. Unicode may make improvements and/or changes
+in the product(s) and/or program(s) described in this publication and/or
+website at any time.
+             2. If this file has been purchased on magnetic or optical media
+from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange
+of the defective media within ninety (90) days of original purchase.
+             3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR
+SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS,
+IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN
+THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR
+LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE.
+       4. Waiver of Damages. In no event shall Unicode or its licensors be
+liable for any special, incidental, indirect or consequential damages of any
+kind, or any damages whatsoever, whether or not Unicode was advised of the
+possibility of the damage, including, without limitation, those resulting from
+the following: loss of use, data or profits, in connection with the use,
+modification or distribution of this information or its derivatives.
+       5. Trademarks.
+             1. Unicode and the Unicode logo are registered trademarks of
+Unicode, Inc.
+             2. This site contains product names and corporate names of other
+companies. All product names and company names and logos mentioned herein are
+the trademarks or registered trademarks of their respective owners. Other
+products and corporate names mentioned herein which are trademarks of a third
+party are used only for explanation and for the owners' benefit and with no
+intent to infringe.
+             3. Use of third party products or information referred to herein
+is at the user\x{2019}s risk.
+       6. Miscellaneous.
+             1. Jurisdiction and Venue. This server is operated from a location
+in the State of California, United States of America. Unicode makes no
+representation that the materials are appropriate for use in other locations.
+If you access this server from other locations, you are responsible for
+compliance with local laws. This Agreement, all use of this site and any
+claims and damages resulting from use of this site are governed solely by the
+laws of the State of California without regard to any principles which would
+apply the laws of a different jurisdiction. The user agrees that any disputes
+regarding this site shall be resolved solely in the courts located in Santa
+Clara County, California. The user agrees said courts have personal
+jurisdiction and agree to waive any right to transfer the dispute to any other
+forum.
+             2. Modification by Unicode Unicode shall have the right to modify
+this Agreement at any time by posting it to this site. The user may not assign
+any part of this Agreement without Unicode\x{2019}s prior written consent.
+             3. Taxes. The user agrees to pay any taxes arising from access to
+this website or use of the information herein, except for those based on
+Unicode\x{2019}s net income.
+             4. Severability.  If any provision of this Agreement is declared
+invalid or unenforceable, the remaining provisions of this Agreement shall
+remain in effect.
+             5. Entire Agreement. This Agreement constitutes the entire
+agreement between the parties.
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+    Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
+published in the Unicode Standard or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/.
+
+    NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
+("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
+AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF
+YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA
+FILES OR SOFTWARE.
+
+    COPYRIGHT AND PERMISSION NOTICE
+
+    Copyright  1991-2007 Unicode, Inc. All rights reserved. Distributed under
+the Terms of Use in http://www.unicode.org/copyright.html.
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+copy of the Unicode data files and any associated documentation (the "Data
+Files") or Unicode software and any associated documentation (the "Software")
+to deal in the Data Files or Software without restriction, including without
+limitation the rights to use, copy, modify, merge, publish, distribute, and/or
+sell copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that (a) the above
+copyright notice(s) and this permission notice appear with all copies of the
+Data Files or Software, (b) both the above copyright notice(s) and this
+permission notice appear in associated documentation, and (c) there is clear
+notice in each modified Data File or in the Software as well as in the
+documentation associated with the Data File(s) or Software that the data or
+software has been modified.
+
+    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+    Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written authorization
+of the copyright holder.
+
+    Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
+registered in some jurisdictions. All other trademarks and registered
+trademarks mentioned herein are the property of their respective owners.
+
+
+****************************
+icu
+****************************
+ICU
+
+There are two licenses here:
+- ICU license
+- Unicode Terms of Use
+------------------------------------------------------------------------------
+ICU License - ICU 1.8.1 and later
+From http://source.icu-project.org/repos/icu/icu/trunk/license.html
+X License (old version). For license pedigree see the
+ICU FAQ at http://icu-project.org/userguide/icufaq.html
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2006 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, and/or sell copies of the
+Software, and to permit persons to whom the Software is furnished to do so,
+provided that the above copyright notice(s) and this permission notice appear
+in all copies of the Software and that both the above copyright notice(s) and
+this permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE
+LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY
+DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder shall not
+be used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the property of their respective owners.
+
+------------------------------------------------------------------------------
+Unicode Terms of Use, from http://www.unicode.org/copyright.html
+
+    For the general privacy policy governing access to this site, see the
+Unicode Privacy Policy. For trademark usage, see the Unicode Consortium
+Trademarks and Logo Policy.
+    Notice to End User: Terms of Use
+    Carefully read the following legal agreement ("Agreement"). Use or copying
+of the software and/or codes provided with this agreement (The "Software")
+constitutes your acceptance of these terms
+
+       1. Unicode Copyright.
+             1. Copyright  1991-2007 Unicode, Inc. All rights reserved.
+             2. Certain documents and files on this website contain a legend
+indicating that "Modification is permitted." Any person is hereby authorized,
+without fee, to modify such documents and files to create derivative works
+conforming to the Unicode Standard, subject to Terms and Conditions herein.
+             3. Any person is hereby authorized, without fee, to view, use,
+reproduce, and distribute all documents and files solely for informational
+purposes in the creation of products supporting the Unicode Standard, subject
+to the Terms and Conditions herein.
+             4. Further specifications of rights and restrictions pertaining
+to the use of the particular set of data files known as the "Unicode Character
+Database" can be found in Exhibit 1.
+             5. Each version of the Unicode Standard has further specifications
+of rights and restrictions of use. For the book editions, these are found on
+the back of the title page. For the online edition, certain files (such as the
+PDF files for book chapters and code charts) carry specific restrictions. All
+other files are covered under these general Terms of Use.  To request a
+permission to reproduce any part of the Unicode Standard, please contact the
+Unicode Consortium.
+             6. No license is granted to "mirror" the Unicode website where a
+fee is charged for access to the "mirror" site.
+             7. Modification is not permitted with respect to this document.
+All copies of this document must be verbatim.
+       2. Restricted Rights Legend. Any technical data or software which is
+licensed to the United States of America, its agencies and/or instrumentalities
+under this Agreement is commercial technical data or commercial computer
+software developed exclusively at private expense as defined in FAR 2.101, or
+DFARS 252.227-7014 (June 1995), as applicable. For technical data, use,
+duplication, or disclosure by the Government is subject to restrictions as set
+forth in DFARS 202.227-7015 Technical Data, Commercial and Items (Nov 1995)
+and this Agreement. For Software, in accordance with FAR 12-212 or
+DFARS 227-7202, as applicable, use, duplication or disclosure by the Government
+is subject to the restrictions set forth in this Agreement.
+       3. Warranties and Disclaimers.
+             1. This publication and/or website may include technical or
+typographical errors or other inaccuracies . Changes are periodically added to
+the information herein; these changes will be incorporated in new editions of
+the publication and/or website. Unicode may make improvements and/or changes
+in the product(s) and/or program(s) described in this publication and/or
+website at any time.
+             2. If this file has been purchased on magnetic or optical media
+from Unicode, Inc. the sole and exclusive remedy for any claim will be exchange
+of the defective media within ninety (90) days of original purchase.
+             3. EXCEPT AS PROVIDED IN SECTION C.2, THIS PUBLICATION AND/OR
+SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS,
+IMPLIED, OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
+UNICODE AND ITS LICENSORS ASSUME NO RESPONSIBILITY FOR ERRORS OR OMISSIONS IN
+THIS PUBLICATION AND/OR SOFTWARE OR OTHER DOCUMENTS WHICH ARE REFERENCED BY OR
+LINKED TO THIS PUBLICATION OR THE UNICODE WEBSITE.
+       4. Waiver of Damages. In no event shall Unicode or its licensors be
+liable for any special, incidental, indirect or consequential damages of any
+kind, or any damages whatsoever, whether or not Unicode was advised of the
+possibility of the damage, including, without limitation, those resulting from
+the following: loss of use, data or profits, in connection with the use,
+modification or distribution of this information or its derivatives.
+       5. Trademarks.
+             1. Unicode and the Unicode logo are registered trademarks of
+Unicode, Inc.
+             2. This site contains product names and corporate names of other
+companies. All product names and company names and logos mentioned herein are
+the trademarks or registered trademarks of their respective owners. Other
+products and corporate names mentioned herein which are trademarks of a third
+party are used only for explanation and for the owners' benefit and with no
+intent to infringe.
+             3. Use of third party products or information referred to herein
+is at the user\x{2019}s risk.
+       6. Miscellaneous.
+             1. Jurisdiction and Venue. This server is operated from a location
+in the State of California, United States of America. Unicode makes no
+representation that the materials are appropriate for use in other locations.
+If you access this server from other locations, you are responsible for
+compliance with local laws. This Agreement, all use of this site and any
+claims and damages resulting from use of this site are governed solely by the
+laws of the State of California without regard to any principles which would
+apply the laws of a different jurisdiction. The user agrees that any disputes
+regarding this site shall be resolved solely in the courts located in Santa
+Clara County, California. The user agrees said courts have personal
+jurisdiction and agree to waive any right to transfer the dispute to any other
+forum.
+             2. Modification by Unicode Unicode shall have the right to modify
+this Agreement at any time by posting it to this site. The user may not assign
+any part of this Agreement without Unicode\x{2019}s prior written consent.
+             3. Taxes. The user agrees to pay any taxes arising from access to
+this website or use of the information herein, except for those based on
+Unicode\x{2019}s net income.
+             4. Severability.  If any provision of this Agreement is declared
+invalid or unenforceable, the remaining provisions of this Agreement shall
+remain in effect.
+             5. Entire Agreement. This Agreement constitutes the entire
+agreement between the parties.
+
+EXHIBIT 1
+UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
+
+    Unicode Data Files include all data files under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/ . Unicode Software includes any source code
+published in the Unicode Standard or under the directories
+http://www.unicode.org/Public/, http://www.unicode.org/reports/, and
+http://www.unicode.org/cldr/data/.
+
+    NOTICE TO USER: Carefully read the following legal agreement. BY
+DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES
+("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND
+AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF
+YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA
+FILES OR SOFTWARE.
+
+    COPYRIGHT AND PERMISSION NOTICE
+
+    Copyright  1991-2007 Unicode, Inc. All rights reserved. Distributed under
+the Terms of Use in http://www.unicode.org/copyright.html.
+
+    Permission is hereby granted, free of charge, to any person obtaining a
+copy of the Unicode data files and any associated documentation (the "Data
+Files") or Unicode software and any associated documentation (the "Software")
+to deal in the Data Files or Software without restriction, including without
+limitation the rights to use, copy, modify, merge, publish, distribute, and/or
+sell copies of the Data Files or Software, and to permit persons to whom the
+Data Files or Software are furnished to do so, provided that (a) the above
+copyright notice(s) and this permission notice appear with all copies of the
+Data Files or Software, (b) both the above copyright notice(s) and this
+permission notice appear in associated documentation, and (c) there is clear
+notice in each modified Data File or in the Software as well as in the
+documentation associated with the Data File(s) or Software that the data or
+software has been modified.
+
+    THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD
+PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN
+THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE DATA FILES OR
+SOFTWARE.
+
+    Except as contained in this notice, the name of a copyright holder shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in these Data Files or Software without prior written authorization
+of the copyright holder.
+
+    Unicode and the Unicode logo are trademarks of Unicode, Inc., and may be
+registered in some jurisdictions. All other trademarks and registered
+trademarks mentioned herein are the property of their respective owners.
+
+
+****************************
+java/android_libs/exoplayer
+****************************
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+****************************
+java/android_libs/protobuf_nano
+****************************
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+
+****************************
+javascript/jquery_ui
+****************************
+The MIT License (MIT)
+
+Copyright (c) 2015 jQuery Foundation and other contributors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+****************************
+javascript/jquery/v2_0_1
+****************************
+Copyright 2013 jQuery Foundation and other contributors
+http://jquery.com/
+
+https://github.com/jquery/jquery/blob/master/MIT-LICENSE.txt
+https://github.com/jquery/sizzle/blob/master/LICENSE
+
+jQuery and Sizzle are released under MIT Licence.
+
+The text is provided below.
+
+MIT License
+----
+
+Copyright 2013 jQuery Foundation and other contributors
+http://jquery.com/
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+****************************
+javascript/tracing_framework
+****************************
+Copyright 2012, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+java_src/android_libs/exoplayer
+****************************
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+****************************
+java_src/android_libs/protobuf_nano/v2
+****************************
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+
+****************************
+jpeg
+****************************
+(extracted from src/README)
+
+LEGAL ISSUES
+============
+
+In plain English:
+
+1. We don't promise that this software works.  (But if you find any bugs,
+   please let us know!)
+2. You can use this software for whatever you want.  You don't have to pay us.
+3. You may not pretend that you wrote this software.  If you use it in a
+   program, you must acknowledge somewhere in your documentation that
+   you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it.  (See the file
+ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltconfig, ltmain.sh).  Another support script, install-sh, is copyright
+by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by
+patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot
+legally be used without obtaining one or more licenses.  For this reason,
+support for arithmetic coding has been removed from the free JPEG software.
+(Since arithmetic coding provides only a marginal gain over the unpatented
+Huffman mode, it is unlikely that very many implementations will support it.)
+So far as we are aware, there are no patent restrictions on the remaining
+code.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+
+****************************
+libogg
+****************************
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+****************************
+libunwind
+****************************
+Copyright (c) 2002 Hewlett-Packard Co.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+****************************
+libvorbis
+****************************
+Copyright (c) 2002-2008 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+libxcb
+****************************
+Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett.
+All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated
+documentation files (the "Software"), to deal in the
+Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute,
+sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall
+be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
+KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
+PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the names of the authors
+or their institutions shall not be used in advertising or
+otherwise to promote the sale, use or other dealings in this
+Software without prior written authorization from the
+authors.
+
+
+****************************
+libxml
+****************************
+Libxml2, an XML C Parser
+
+Except where otherwise noted in the source code (e.g. the files hash.c,
+list.c and the trio files, which are covered by a similar licence but
+with different Copyright notices) all the files are:
+
+ Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+--------------------------------------------------------------------
+
+Copyright (C) 2000,2012 Bjorn Reese and Daniel Veillard.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+Author: breese@users.sourceforge.net
+
+(taken from hash.c)
+
+--------------------------------------------------------------------
+
+ Copyright (C) 2000 Gary Pennington and Daniel Veillard.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+Author: Gary.Pennington@uk.sun.com
+
+(taken from list.c)
+
+--------------------------------------------------------------------
+
+Copyright (C) 1998 Bjorn Reese and Daniel Stenberg.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+(taken from trio.h and trio.c)
+
+--------------------------------------------------------------------
+
+Copyright (C) 2001 Bjorn Reese <breese@users.sourceforge.net>
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+(taken from triodef.h, trionan.h, and trionan.c)
+
+--------------------------------------------------------------------
+
+Copyright (C) 2000 Bjorn Reese and Daniel Stenberg.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+(taken from triop.h)
+
+--------------------------------------------------------------------
+
+Copyright (C) 2001 Bjorn Reese and Daniel Stenberg.
+
+Permission to use, copy, modify, and distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
+MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE AUTHORS AND
+CONTRIBUTORS ACCEPT NO RESPONSIBILITY IN ANY CONCEIVABLE MANNER.
+
+(taken from triostr.h and triostr.c)
+
+*************************************************************************
+
+http://ctrio.sourceforge.net/
+
+*************************************************************************
+
+
+****************************
+lodepng
+****************************
+LodePNG
+
+Copyright (c) 2005-2013 Lode Vandevenne
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+    1. The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+
+    2. Altered source versions must be plainly marked as such, and must not be
+    misrepresented as being the original software.
+
+    3. This notice may not be removed or altered from any source
+    distribution.
+
+
+****************************
+minizip
+****************************
+zlib
+
+(extracted from README, except for match.S)
+
+Copyright notice:
+
+ (C) 1995-2004 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+
+(extracted from match.S, for match.S only)
+
+ Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com>
+
+ This software is provided 'as-is', without any express or implied
+ warranty.  In no event will the author be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+    misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+
+
+****************************
+mongoose
+****************************
+Copyright (c) 2004-2013 Sergey Lyubka
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+****************************
+objective_c/gtm_session_fetcher
+****************************
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+****************************
+openctm
+****************************
+Copyright (c) 2009-2010 Marcus Geelnard
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+    1. The origin of this software must not be misrepresented; you must not
+    claim that you wrote the original software. If you use this software
+    in a product, an acknowledgment in the product documentation would be
+    appreciated but is not required.
+
+    2. Altered source versions must be plainly marked as such, and must not
+    be misrepresented as being the original software.
+
+    3. This notice may not be removed or altered from any source
+    distribution.
+
+
+****************************
+OpenCV
+****************************
+IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+
+By downloading, copying, installing or using the software you agree to this license.
+If you do not agree to this license, do not download, install,
+copy or use the software.
+
+
+                       Intel License Agreement
+               For Open Source Computer Vision Library
+
+Copyright (C) 2000, 2001, Intel Corporation, all rights reserved.
+Copyright (C) 2013, OpenCV Foundation, all rights reserved.
+Third party copyrights are property of their respective owners.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+  * Redistribution's of source code must retain the above copyright notice,
+    this list of conditions and the following disclaimer.
+
+  * Redistribution's in binary form must reproduce the above copyright notice,
+    this list of conditions and the following disclaimer in the documentation
+    and/or other materials provided with the distribution.
+
+  * The name of Intel Corporation may not be used to endorse or promote products
+    derived from this software without specific prior written permission.
+
+This software is provided by the copyright holders and contributors "as is" and
+any express or implied warranties, including, but not limited to, the implied
+warranties of merchantability and fitness for a particular purpose are disclaimed.
+In no event shall the Intel Corporation or contributors be liable for any direct,
+indirect, incidental, special, exemplary, or consequential damages
+(including, but not limited to, procurement of substitute goods or services;
+loss of use, data, or profits; or business interruption) however caused
+and on any theory of liability, whether in contract, strict liability,
+or tort (including negligence or otherwise) arising in any way out of
+the use of this software, even if advised of the possibility of such damage.
+
+****************************
+openssl
+****************************
+BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Some files from Intel are under yet another license, which is also included
+underneath.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+Some files from Intel carry the following license:
+
+# Copyright (c) 2012, Intel Corporation
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# *  Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# *  Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# *  Neither the name of the Intel Corporation nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+openssl/boringssl
+****************************
+BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Some files from Intel are under yet another license, which is also included
+underneath.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ *
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ *
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+Some files from Intel carry the following license:
+
+# Copyright (c) 2012, Intel Corporation
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# *  Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# *  Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# *  Neither the name of the Intel Corporation nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+pcre
+****************************
+PCRE LICENCE
+------------
+
+PCRE is a library of functions to support regular expressions whose syntax
+and semantics are as close as possible to those of the Perl 5 language.
+
+Release 8 of PCRE is distributed under the terms of the "BSD" licence, as
+specified below. The documentation for PCRE, supplied in the "doc"
+directory, is distributed under the same terms as the software itself. The data
+in the testdata directory is not copyrighted and is in the public domain.
+
+The basic library functions are written in C and are freestanding. Also
+included in the distribution is a set of C++ wrapper functions, and a
+just-in-time compiler that can be used to optimize pattern matching. These
+are both optional features that can be omitted when the library is built.
+
+
+THE BASIC LIBRARY FUNCTIONS
+---------------------------
+
+Written by:       Philip Hazel
+Email local part: ph10
+Email domain:     cam.ac.uk
+
+University of Cambridge Computing Service,
+Cambridge, England.
+
+Copyright (c) 1997-2015 University of Cambridge
+All rights reserved.
+
+
+PCRE JUST-IN-TIME COMPILATION SUPPORT
+-------------------------------------
+
+Written by:       Zoltan Herczeg
+Email local part: hzmester
+Emain domain:     freemail.hu
+
+Copyright(c) 2010-2015 Zoltan Herczeg
+All rights reserved.
+
+
+STACK-LESS JUST-IN-TIME COMPILER
+--------------------------------
+
+Written by:       Zoltan Herczeg
+Email local part: hzmester
+Emain domain:     freemail.hu
+
+Copyright(c) 2009-2015 Zoltan Herczeg
+All rights reserved.
+
+
+THE C++ WRAPPER FUNCTIONS
+-------------------------
+
+Contributed by:   Google Inc.
+
+Copyright (c) 2007-2012, Google Inc.
+All rights reserved.
+
+
+THE "BSD" LICENCE
+-----------------
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+
+    * Redistributions in binary form must reproduce the above copyright
+      notice, this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the name of the University of Cambridge nor the name of Google
+      Inc. nor the names of their contributors may be used to endorse or
+      promote products derived from this software without specific prior
+      written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+End
+
+
+****************************
+pffft
+****************************
+Copyright (c) 2013  Julien Pommier ( pommier@modartt.com )
+
+Based on original fortran 77 code from FFTPACKv4 from NETLIB,
+authored by Dr Paul Swarztrauber of NCAR, in 1985.
+
+As confirmed by the NCAR fftpack software curators, the following
+FFTPACKv5 license applies to FFTPACKv4 sources. My changes are
+released under the same terms.
+
+FFTPACK license:
+
+http://www.cisl.ucar.edu/css/software/fftpack5/ftpk.html
+
+Copyright (c) 2004 the University Corporation for Atmospheric
+Research ("UCAR"). All rights reserved. Developed by NCAR's
+Computational and Information Systems Laboratory, UCAR,
+www.cisl.ucar.edu.
+
+Redistribution and use of the Software in source and binary forms,
+with or without modification, is permitted provided that the
+following conditions are met:
+
+- Neither the names of NCAR's Computational and Information Systems
+Laboratory, the University Corporation for Atmospheric Research,
+nor the names of its sponsors or contributors may be used to
+endorse or promote products derived from this Software without
+specific prior written permission.
+
+- Redistributions of source code must retain the above copyright
+notices, this list of conditions, and the disclaimer below.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions, and the disclaimer below in the
+documentation and/or other materials provided with the
+distribution.
+
+THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+
+****************************
+png
+****************************
+libpng
+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+libpng versions 1.2.6, August 15, 2004, through 1.2.27, April 29, 2008, are
+Copyright (c) 2004, 2006-2008 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.2.5
+with the following individual added to the list of Contributing Authors
+
+   Cosmin Truta
+
+libpng versions 1.0.7, July 1, 2000, through 1.2.5 - October 3, 2002, are
+Copyright (c) 2000-2002 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-1.0.6
+with the following individuals added to the list of Contributing Authors
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Gilles Vollant
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998, 1999 Glenn Randers-Pehrson, and are
+distributed according to the same disclaimer and license as libpng-0.96,
+with the following individuals added to the list of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996, 1997 Andreas Dilger
+Distributed according to the same disclaimer and license as libpng-0.88,
+with the following individuals added to the list of Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+1. The origin of this source code must not be misrepresented.
+
+2. Altered versions must be plainly marked as such and must not
+   be misrepresented as being the original source.
+
+3. This Copyright notice may not be removed or altered from any
+   source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+
+A "png_get_copyright" function is available, for convenient use in "about"
+boxes and the like:
+
+   printf("%s",png_get_copyright(NULL));
+
+Also, the PNG logo (in PNG format, of course) is supplied in the
+files "pngbar.png" and "pngbar.jpg (88x31) and "pngnow.png" (98x31).
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is a
+certification mark of the Open Source Initiative.
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+April 29, 2008
+
+
+****************************
+protobuf
+****************************
+Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+
+****************************
+re2
+****************************
+// Copyright (c) 2009 The RE2 Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+stblib
+****************************
+        License for STBLIB - A collection of public-domain single-file C/C++
+        libraries, primarily aimed at game developers.
+
+The compilation and test files are licensed under the MIT license, but the
+single-file libraries themselves are in the public domain (free for use and
+modification for any purpose without legal friction).
+
+The MIT License (MIT)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+
+
+****************************
+stl
+****************************
+SGI STL
+
+The STL portion of GNU libstdc++ that is used with gcc3 and gcc4 is licensed
+under the GPL, with the following exception:
+
+# As a special exception, you may use this file as part of a free software
+# library without restriction.  Specifically, if other files instantiate
+# templates or use macros or inline functions from this file, or you compile
+# this file and link it with other files to produce an executable, this
+# file does not by itself cause the resulting executable to be covered by
+# the GNU General Public License.  This exception does not however
+# invalidate any other reasons why the executable file might be covered by
+# the GNU General Public License.
+
+
+
+****************************
+tinyxml
+****************************
+TinyXml is released under the zlib license:
+
+This software is provided 'as-is', without any express or implied
+warranty. In no event will the authors be held liable for any
+damages arising from the use of this software.
+
+Permission is granted to anyone to use this software for any
+purpose, including commercial applications, and to alter it and
+redistribute it freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must
+not claim that you wrote the original software. If you use this
+software in a product, an acknowledgment in the product documentation
+would be appreciated but is not required.
+
+2. Altered source versions must be plainly marked as such, and
+must not be misrepresented as being the original software.
+
+3. This notice may not be removed or altered from any source
+distribution.
+
+
+
+****************************
+tz
+****************************
+With a few exceptions, all files in the tz code and data (including
+this one) are in the public domain.  The exceptions are tzcode's
+date.c, newstrftime.3, and strftime.c, which contain material derived
+from BSD and which use the BSD 3-clause license.
+
+
+****************************
+utf
+****************************
+UTF-8 Library
+
+The authors of this software are Rob Pike and Ken Thompson.
+             Copyright (c) 1998-2002 by Lucent Technologies.
+Permission to use, copy, modify, and distribute this software for any
+purpose without fee is hereby granted, provided that this entire notice
+is included in all copies of any software which is or includes a copy
+or modification of this software and in all copies of the supporting
+documentation for such software.
+THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED
+WARRANTY.  IN PARTICULAR, NEITHER THE AUTHORS NOR LUCENT TECHNOLOGIES MAKE ANY
+REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY
+OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE.
+
+
+****************************
+xmpmeta
+****************************
+xmpmeta. A fast XMP metadata parsing and writing library.
+Copyright 2016 Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+* Neither the name of Google Inc. nor the names of its contributors may be
+  used to endorse or promote products derived from this software without
+  specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+****************************
+Xorg
+****************************
+The following is the 'standard copyright' agreed upon by most contributors,
+and is currently the canonical license preferred by the X.Org Foundation.
+This is a slight variant of the common MIT license form published by the
+Open Source Initiative at http://www.opensource.org/licenses/mit-license.php
+
+Copyright holders of new code should use this license statement where
+possible, and insert their name to this list.  Please sort by surname
+for people, and by the full name for other entities (e.g.  Juliusz
+Chroboczek sorts before Intel Corporation sorts before Daniel Stone).
+
+See each individual source file or directory for the license that applies
+to that file.
+
+Copyright (C) 2003-2006,2008 Jamey Sharp, Josh Triplett
+Copyright © 2009 Red Hat, Inc.
+Copyright 1990-1992,1999,2000,2004,2009,2010 Oracle and/or its affiliates.
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+ ----------------------------------------------------------------------
+
+The following licenses are 'legacy' - usually MIT/X11 licenses with the name
+of the copyright holder(s) in the license statement:
+
+Copyright 1984-1994, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall not be
+used in advertising or otherwise to promote the sale, use or other dealings
+in this Software without prior written authorization from The Open Group.
+
+X Window System is a trademark of The Open Group.
+
+    ----------------------------------------
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium
+Copyright 2000 The XFree86 Project, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from the X Consortium.
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+Digital Equipment Corporation
+
+Portions Copyright 1990, 1991 by Tektronix, Inc.
+
+Permission to use, copy, modify and distribute this documentation for
+any purpose and without fee is hereby granted, provided that the above
+copyright notice appears in all copies and that both that copyright notice
+and this permission notice appear in all copies, and that the names of
+Digital and Tektronix not be used in in advertising or publicity pertaining
+to this documentation without specific, written prior permission.
+Digital and Tektronix makes no representations about the suitability
+of this documentation for any purpose.
+It is provided ``as is'' without express or implied warranty.
+
+    ----------------------------------------
+
+Copyright (c) 1999-2000  Free Software Foundation, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+FREE SOFTWARE FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
+IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the Free Software Foundation
+shall not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization from the
+Free Software Foundation.
+
+    ----------------------------------------
+
+Code and supporting documentation (c) Copyright 1990 1991 Tektronix, Inc.
+  All Rights Reserved
+
+This file is a component of an X Window System-specific implementation
+of Xcms based on the TekColor Color Management System.  TekColor is a
+trademark of Tektronix, Inc.  The term "TekHVC" designates a particular
+color space that is the subject of U.S. Patent No. 4,985,853 (equivalent
+foreign patents pending).  Permission is hereby granted to use, copy,
+modify, sell, and otherwise distribute this software and its
+documentation for any purpose and without fee, provided that:
+
+1. This copyright, permission, and disclaimer notice is reproduced in
+   all copies of this software and any modification thereof and in
+   supporting documentation;
+2. Any color-handling application which displays TekHVC color
+   cooordinates identifies these as TekHVC color coordinates in any
+   interface that displays these coordinates and in any associated
+   documentation;
+3. The term "TekHVC" is always used, and is only used, in association
+   with the mathematical derivations of the TekHVC Color Space,
+   including those provided in this file and any equivalent pathways and
+   mathematical derivations, regardless of digital (e.g., floating point
+   or integer) representation.
+
+Tektronix makes no representation about the suitability of this software
+for any purpose.  It is provided "as is" and with all faults.
+
+TEKTRONIX DISCLAIMS ALL WARRANTIES APPLICABLE TO THIS SOFTWARE,
+INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE.  IN NO EVENT SHALL TEKTRONIX BE LIABLE FOR ANY
+SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA, OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR THE PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+(c) Copyright 1995 FUJITSU LIMITED
+This is source code modified by FUJITSU LIMITED under the Joint
+Development Agreement for the CDE/Motif PST.
+
+    ----------------------------------------
+
+Copyright 1992 by Oki Technosystems Laboratory, Inc.
+Copyright 1992 by Fuji Xerox Co., Ltd.
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Oki Technosystems
+Laboratory and Fuji Xerox not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+Oki Technosystems Laboratory and Fuji Xerox make no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+OKI TECHNOSYSTEMS LABORATORY AND FUJI XEROX DISCLAIM ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OKI TECHNOSYSTEMS
+LABORATORY AND FUJI XEROX BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1990, 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+FUJITSU LIMITED makes no representations about the suitability of
+this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+
+Copyright (c) 1995 David E. Wexelblat.  All rights reserved
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL DAVID E. WEXELBLAT BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of David E. Wexelblat shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from David E. Wexelblat.
+
+    ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name OMRON not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  OMRON makes no representations
+about the suitability of this software for any purpose.  It is provided
+"as is" without express or implied warranty.
+
+OMRON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL OMRON BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1985, 1986, 1987, 1988, 1989, 1990, 1991 by
+Digital Equipment Corporation
+
+Portions Copyright 1990, 1991 by Tektronix, Inc
+
+Rewritten for X.org by Chris Lee <clee@freedesktop.org>
+
+Permission to use, copy, modify, distribute, and sell this documentation
+for any purpose and without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+Chris Lee makes no representations about the suitability for any purpose
+of the information in this document.  It is provided \`\`as-is'' without
+express or implied warranty.
+
+    ----------------------------------------
+
+Copyright 1993 by Digital Equipment Corporation, Maynard, Massachusetts,
+Copyright 1994 by FUJITSU LIMITED
+Copyright 1994 by Sony Corporation
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the names of Digital, FUJITSU
+LIMITED and Sony Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.
+
+DIGITAL, FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL DIGITAL, FUJITSU LIMITED
+AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+
+Copyright 1991 by the Open Software Foundation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Open Software Foundation
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  Open Software
+Foundation makes no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OPEN SOFTWARE FOUNDATION DISCLAIMS ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1990, 1991, 1992,1993, 1994 by FUJITSU LIMITED
+Copyright 1993, 1994                  by Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and
+its documentation for any purpose is hereby granted without fee, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of FUJITSU LIMITED and Sony Corporation
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  FUJITSU LIMITED and
+Sony Corporation makes no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+FUJITSU LIMITED AND SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL FUJITSU LIMITED OR SONY CORPORATION BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
+NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE
+USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright (c) 1993, 1995 by Silicon Graphics Computer Systems, Inc.
+
+Permission to use, copy, modify, and distribute this
+software and its documentation for any purpose and without
+fee is hereby granted, provided that the above copyright
+notice appear in all copies and that both that copyright
+notice and this permission notice appear in supporting
+documentation, and that the name of Silicon Graphics not be
+used in advertising or publicity pertaining to distribution
+of the software without specific prior written permission.
+Silicon Graphics makes no representation about the suitability
+of this software for any purpose. It is provided "as is"
+without any express or implied warranty.
+
+SILICON GRAPHICS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL SILICON
+GRAPHICS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION  WITH
+THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1991, 1992, 1993, 1994 by FUJITSU LIMITED
+Copyright 1993 by Digital Equipment Corporation
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of FUJITSU LIMITED and
+Digital Equipment Corporation not be used in advertising or publicity
+pertaining to distribution of the software without specific, written
+prior permission.  FUJITSU LIMITED and Digital Equipment Corporation
+makes no representations about the suitability of this software for
+any purpose.  It is provided "as is" without express or implied
+warranty.
+
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+FUJITSU LIMITED AND DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR
+ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1992, 1993 by FUJITSU LIMITED
+Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+Copyright 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED,
+Fujitsu Open Systems Solutions, Inc. and Sony Corporation  not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+FUJITSU LIMITED, Fujitsu Open Systems Solutions, Inc. and
+Sony Corporation make no representations about the suitability of
+this software for any purpose.  It is provided "as is" without
+express or implied warranty.
+
+FUJITSU LIMITED, FUJITSU OPEN SYSTEMS SOLUTIONS, INC. AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
+IN NO EVENT SHALL FUJITSU OPEN SYSTEMS SOLUTIONS, INC., FUJITSU LIMITED
+AND SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1987, 1988, 1990, 1993 by Digital Equipment Corporation,
+Maynard, Massachusetts,
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1993 by SunSoft, Inc.
+Copyright 1999-2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the names of SunSoft, Inc. and
+Bruno Haible not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior
+permission.  SunSoft, Inc. and Bruno Haible make no representations
+about the suitability of this software for any purpose.  It is
+provided "as is" without express or implied warranty.
+
+SunSoft Inc. AND Bruno Haible DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL SunSoft, Inc. OR Bruno Haible BE LIABLE
+FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the TOSHIBA Corp.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of Open Software Foundation and TOSHIBA
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  Open Software
+Foundation and TOSHIBA make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OPEN SOFTWARE FOUNDATION AND TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO
+THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS, IN NO EVENT SHALL OPEN SOFTWARE FOUNDATIONN OR TOSHIBA BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca.,
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Wyse not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+WYSE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+    ----------------------------------------
+
+
+Copyright 1991 by the Open Software Foundation
+Copyright 1993, 1994 by the Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of Open Software Foundation and
+Sony Corporation not be used in advertising or publicity pertaining to
+distribution of the software without specific, written prior permission.
+Open Software Foundation and Sony Corporation make no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+OPEN SOFTWARE FOUNDATION AND SONY CORPORATION DISCLAIM ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL OPEN
+SOFTWARE FOUNDATIONN OR SONY CORPORATION BE LIABLE FOR ANY SPECIAL,
+INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1992, 1993 by FUJITSU LIMITED
+Copyright 1993 by Fujitsu Open Systems Solutions, Inc.
+
+Permission to use, copy, modify, distribute and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of FUJITSU LIMITED and
+Fujitsu Open Systems Solutions, Inc. not be used in advertising or
+publicity pertaining to distribution of the software without specific,
+written prior permission.
+FUJITSU LIMITED and Fujitsu Open Systems Solutions, Inc. makes no
+representations about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJITSU LIMITED AND FUJITSU OPEN SYSTEMS SOLUTIONS, INC. DISCLAIMS ALL
+WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJITSU OPEN SYSTEMS
+SOLUTIONS, INC. AND FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT
+OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
+OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1993, 1994 by Sony Corporation
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Sony Corporation
+not be used in advertising or publicity pertaining to distribution
+of the software without specific, written prior permission.
+Sony Corporation makes no representations about the suitability of
+this software for any purpose. It is provided "as is" without
+express or implied warranty.
+
+SONY CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL SONY CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1986, 1998  The Open Group
+Copyright (c) 2000  The XFree86 Project, Inc.
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+X CONSORTIUM OR THE XFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of the X Consortium or of the
+XFree86 Project shall not be used in advertising or otherwise to promote the
+sale, use or other dealings in this Software without prior written
+authorization from the X Consortium and the XFree86 Project.
+
+    ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+                     and Nippon Telegraph and Telephone Corporation
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, NTT, and
+Open Software Foundation not be used in advertising or publicity
+pertaining to distribution of the software without specific,
+written prior permission. OMRON, NTT Software, NTT, and Open Software
+Foundation make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OMRON, NTT SOFTWARE, NTT, AND OPEN SOFTWARE FOUNDATION
+DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+SHALL OMRON, NTT SOFTWARE, NTT, OR OPEN SOFTWARE FOUNDATION BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
+Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
+
+                        All Rights Reserved
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name Digital not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
+USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+
+Copyright 1991, 1992 by Fuji Xerox Co., Ltd.
+Copyright 1992, 1993, 1994 by FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Fuji Xerox,
+FUJITSU LIMITED not be used in advertising or publicity pertaining
+to distribution of the software without specific, written prior
+permission. Fuji Xerox, FUJITSU LIMITED make no representations
+about the suitability of this software for any purpose.
+It is provided "as is" without express or implied warranty.
+
+FUJI XEROX, FUJITSU LIMITED DISCLAIM ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL FUJI XEROX,
+FUJITSU LIMITED BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
+DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 2006 Josh Triplett
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+    ----------------------------------------
+
+(c) Copyright 1996 by Sebastien Marineau and Holger Veit
+      <marineau@genie.uottawa.ca>
+                     <Holger.Veit@gmd.de>
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+HOLGER VEIT  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
+OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+Except as contained in this notice, the name of Sebastien Marineau or Holger Veit
+shall not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Holger Veit or
+Sebastien Marineau.
+
+    ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+                     and Nippon Telegraph and Telephone Corporation
+Copyright 1991 by the Open Software Foundation
+Copyright 1993 by the TOSHIBA Corp.
+Copyright 1993, 1994 by Sony Corporation
+Copyright 1993, 1994 by the FUJITSU LIMITED
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, NTT, Open
+Software Foundation, and Sony Corporation not be used in advertising
+or publicity pertaining to distribution of the software without specific,
+written prior permission. OMRON, NTT Software, NTT, Open Software
+Foundation, and Sony Corporation  make no representations about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, AND SONY
+CORPORATION DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT
+SHALL OMRON, NTT SOFTWARE, NTT, OPEN SOFTWARE FOUNDATION, OR SONY
+CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
+IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 2000 by Bruno Haible
+
+Permission to use, copy, modify, distribute, and sell this software
+and its documentation for any purpose is hereby granted without fee,
+provided that the above copyright notice appear in all copies and
+that both that copyright notice and this permission notice appear
+in supporting documentation, and that the name of Bruno Haible not
+be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.  Bruno Haible
+makes no representations about the suitability of this software for
+any purpose.  It is provided "as is" without express or implied
+warranty.
+
+Bruno Haible DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
+NO EVENT SHALL Bruno Haible BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
+OR PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright © 2003 Keith Packard
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of Keith Packard not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  Keith Packard makes no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+KEITH PACKARD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL KEITH PACKARD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+    ----------------------------------------
+
+Copyright (c) 2007-2009, Troy D. Hanson
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+    ----------------------------------------
+
+Copyright 1992, 1993 by TOSHIBA Corp.
+
+Permission to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted, provided
+that the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of TOSHIBA not be used in advertising
+or publicity pertaining to distribution of the software without specific,
+written prior permission. TOSHIBA make no representations about the
+suitability of this software for any purpose.  It is provided "as is"
+without express or implied warranty.
+
+TOSHIBA DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+TOSHIBA BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+
+    ----------------------------------------
+
+Copyright IBM Corporation 1993
+
+All Rights Reserved
+
+License to use, copy, modify, and distribute this software and its
+documentation for any purpose and without fee is hereby granted,
+provided that the above copyright notice appear in all copies and that
+both that copyright notice and this permission notice appear in
+supporting documentation, and that the name of IBM not be
+used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission.
+
+IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
+IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
+ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
+SOFTWARE.
+
+    ----------------------------------------
+
+Copyright 1990, 1991 by OMRON Corporation, NTT Software Corporation,
+                     and Nippon Telegraph and Telephone Corporation
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the names of OMRON, NTT Software, and NTT
+not be used in advertising or publicity pertaining to distribution of the
+software without specific, written prior permission. OMRON, NTT Software,
+and NTT make no representations about the suitability of this
+software for any purpose.  It is provided "as is" without express or
+implied warranty.
+
+OMRON, NTT SOFTWARE, AND NTT, DISCLAIM ALL WARRANTIES WITH REGARD
+TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS, IN NO EVENT SHALL OMRON, NTT SOFTWARE, OR NTT, BE
+LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+
+****************************
+zlib
+****************************
+(extracted from README, except for match.S)
+
+Copyright notice:
+
+ (C) 1995-2013 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+If you use the zlib library in a product, we would appreciate *not* receiving
+lengthy legal documents to sign.  The sources are provided for free but without
+warranty of any kind.  The library has been entirely written by Jean-loup
+Gailly and Mark Adler; it does not include third-party code.
+
+If you redistribute modified sources, we would appreciate that you include in
+the file ChangeLog history information documenting your changes.  Please read
+the FAQ for more information on the distribution of modified source versions.
+
+(extracted from match.S, for match.S only)
+
+Copyright (C) 1998, 2007 Brian Raiter <breadbox@muppetlabs.com>
+
+This software is provided 'as-is', without any express or implied
+warranty.  In no event will the author be held liable for any damages
+arising from the use of this software.
+
+Permission is granted to anyone to use this software for any purpose,
+including commercial applications, and to alter it and redistribute it
+freely, subject to the following restrictions:
+
+1. The origin of this software must not be misrepresented; you must not
+  claim that you wrote the original software. If you use this software
+  in a product, an acknowledgment in the product documentation would be
+  appreciated but is not required.
+2. Altered source versions must be plainly marked as such, and must not be
+  misrepresented as being the original software.
+3. This notice may not be removed or altered from any source distribution.
+
+
+****************************
+googleurl
+****************************
+Copyright 2007, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+
+The file url_parse.cc is based on nsURLParsers.cc from Mozilla. This file is
+licensed separately as follows:
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (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.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+The Original Code is mozilla.org code.
+
+The Initial Developer of the Original Code is
+Netscape Communications Corporation.
+Portions created by the Initial Developer are Copyright (C) 1998
+the Initial Developer. All Rights Reserved.
+
+Contributor(s):
+  Darin Fisher (original author)
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+
+-------------------------------------------------------------------------------
+
+The file icu_utf.cc is from IBM. This file is licensed separately as follows:
+
+ICU License - ICU 1.8.1 and later
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2009 International Business Machines Corporation and others
+
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+
+****************************
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+****************************
+jsoncpp
+****************************
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+The author (Baptiste Lepilleur) explicitly disclaims copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
+released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+
+****************************
+libwebp
+****************************
+Copyright (c) 2010, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Google fork of Khronos reference front-end for GLSL and ESSL +show license +homepage +
+
Copyright (c) 2015-2016 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+   https://www.khronos.org/registry/
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+
+
+ +
+Hardware Composer Plus +show license +homepage +
+
// Copyright 2014 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Headless Android Heap Analyzer +show license +homepage +
+
perflib, guava:
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+================================================================================
+trove4j:
+
+This library is free software; you can redistribute it and/or modify it under
+the terms of the GNU Lesser General Public License as published by the Free
+Software Foundation; either version 2.1 of the License, or (at your option) any
+later version. This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
+for more details. You should have received a copy of the GNU Lesser General
+Public License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Two classes (HashFunctions and PrimeFinder) included in Trove are licensed
+under the following terms:
+
+Copyright (c) 1999 CERN - European Organization for Nuclear Research.
+Permission to use, copy, modify, distribute and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that the
+above copyright notice appear in all copies and that both that copyright notice
+and this permission notice appear in supporting documentation. CERN makes no
+representations about the suitability of this software for any purpose. It is
+provided "as is" without expressed or implied warranty.
+
+
+
+
+ +
+IAccessible2 COM interfaces for accessibility +show license +homepage +
+
/*************************************************************************
+ *
+ *  IAccessible2 IDL Specification 
+ * 
+ *  Copyright (c) 2007, 2010 Linux Foundation 
+ *  Copyright (c) 2006 IBM Corporation 
+ *  Copyright (c) 2000, 2006 Sun Microsystems, Inc. 
+ *  All rights reserved. 
+ *   
+ *   
+ *  Redistribution and use in source and binary forms, with or without 
+ *  modification, are permitted provided that the following conditions 
+ *  are met: 
+ *   
+ *   1. Redistributions of source code must retain the above copyright 
+ *      notice, this list of conditions and the following disclaimer. 
+ *   
+ *   2. Redistributions in binary form must reproduce the above 
+ *      copyright notice, this list of conditions and the following 
+ *      disclaimer in the documentation and/or other materials 
+ *      provided with the distribution. 
+ *
+ *   3. Neither the name of the Linux Foundation nor the names of its 
+ *      contributors may be used to endorse or promote products 
+ *      derived from this software without specific prior written 
+ *      permission. 
+ *   
+ *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ *  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+ *  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+ *  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+ *  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 
+ *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+ *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
+ *  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+ *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
+ *  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 
+ *  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
+ *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 
+ *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ *   
+ *  This BSD License conforms to the Open Source Initiative "Simplified 
+ *  BSD License" as published at: 
+ *  http://www.opensource.org/licenses/bsd-license.php 
+ *   
+ *  IAccessible2 is a trademark of the Linux Foundation. The IAccessible2 
+ *  mark may be used in accordance with the Linux Foundation Trademark 
+ *  Policy to indicate compliance with the IAccessible2 specification. 
+ * 
+ ************************************************************************/ 
+
+
+
+ +
+ISimpleDOM COM interfaces for accessibility +show license +homepage +
+
/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is mozilla.org code.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2002
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+
+ +
+International Phone Number Library +show license +homepage +
+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+
+
+ +
+Khronos header files +show license +homepage +
+
Copyright (c) 2007-2010 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+
+SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
+
+Copyright (C) 1992 Silicon Graphics, Inc. All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice including the dates of first publication and either
+this permission notice or a reference to http://oss.sgi.com/projects/FreeB/
+shall be included in all copies or substantial portions of the Software. 
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL SILICON
+GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Silicon Graphics, Inc. shall
+not be used in advertising or otherwise to promote the sale, use or other
+dealings in this Software without prior written authorization from Silicon
+Graphics, Inc.
+
+
+
+ +
+LCOV - the LTP GCOV extension +show license +homepage +
+
		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+
+
+ +
+LZMA SDK +show license +homepage +
+
LZMA SDK is placed in the public domain.
+
+
+
+ +
+LeakCanary +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+ +
+LevelDB: A Fast Persistent Key-Value Store +show license +homepage +
+
Copyright (c) 2011 The LevelDB Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Material Text Accessibility iOS +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+MediaController android sample. +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Mozilla Personal Security Manager +show license +homepage +
+
/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Netscape security libraries.
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+
+ +
+NSBezierPath additions from Sean Patrick O'Brien +show license +homepage +
+
Copyright 2008 MolokoCacao
+All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted providing that the following conditions 
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+NVidia Control X Extension Library +show license +homepage +
+
/*
+ * Copyright (c) 2008 NVIDIA, Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+
+ +
+Netscape Portable Runtime (NSPR) +show license +homepage +
+
/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (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.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Netscape Portable Runtime (NSPR).
+ *
+ * The Initial Developer of the Original Code is
+ * Netscape Communications Corporation.
+ * Portions created by the Initial Developer are Copyright (C) 1998-2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+
+
+ +
+Network Security Services (NSS) +show license +homepage +
+
NSS is available under the Mozilla Public License, version 2, a copy of which
+is below.
+
+Note on GPL Compatibility
+-------------------------
+
+The MPL 2, section 3.3, permits you to combine NSS with code under the GNU
+General Public License (GPL) version 2, or any later version of that
+license, to make a Larger Work, and distribute the result under the GPL.
+The only condition is that you must also make NSS, and any changes you
+have made to it, available to recipients under the terms of the MPL 2 also.
+
+Anyone who receives the combined code from you does not have to continue
+to dual licence in this way, and may, if they wish, distribute under the
+terms of either of the two licences - either the MPL alone or the GPL
+alone. However, we discourage people from distributing copies of NSS under
+the GPL alone, because it means that any improvements they make cannot be
+reincorporated into the main version of NSS. There is never a need to do
+this for license compatibility reasons.
+
+Note on LGPL Compatibility
+--------------------------
+
+The above also applies to combining MPLed code in a single library with
+code under the GNU Lesser General Public License (LGPL) version 2.1, or
+any later version of that license. If the LGPLed code and the MPLed code
+are not in the same library, then the copyleft coverage of the two
+licences does not overlap, so no issues arise.
+
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+    means each individual or legal entity that creates, contributes to
+    the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+    means the combination of the Contributions of others (if any) used
+    by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+    means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+    means Source Code Form to which the initial Contributor has attached
+    the notice in Exhibit A, the Executable Form of such Source Code
+    Form, and Modifications of such Source Code Form, in each case
+    including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+    means
+
+    (a) that the initial Contributor has attached the notice described
+        in Exhibit B to the Covered Software; or
+
+    (b) that the Covered Software was made available under the terms of
+        version 1.1 or earlier of the License, but not also under the
+        terms of a Secondary License.
+
+1.6. "Executable Form"
+    means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+    means a work that combines Covered Software with other material, in 
+    a separate file or files, that is not Covered Software.
+
+1.8. "License"
+    means this document.
+
+1.9. "Licensable"
+    means having the right to grant, to the maximum extent possible,
+    whether at the time of the initial grant or subsequently, any and
+    all of the rights conveyed by this License.
+
+1.10. "Modifications"
+    means any of the following:
+
+    (a) any file in Source Code Form that results from an addition to,
+        deletion from, or modification of the contents of Covered
+        Software; or
+
+    (b) any new file in Source Code Form that contains any Covered
+        Software.
+
+1.11. "Patent Claims" of a Contributor
+    means any patent claim(s), including without limitation, method,
+    process, and apparatus claims, in any patent Licensable by such
+    Contributor that would be infringed, but for the grant of the
+    License, by the making, using, selling, offering for sale, having
+    made, import, or transfer of either its Contributions or its
+    Contributor Version.
+
+1.12. "Secondary License"
+    means either the GNU General Public License, Version 2.0, the GNU
+    Lesser General Public License, Version 2.1, the GNU Affero General
+    Public License, Version 3.0, or any later versions of those
+    licenses.
+
+1.13. "Source Code Form"
+    means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+    means an individual or a legal entity exercising rights under this
+    License. For legal entities, "You" includes any entity that
+    controls, is controlled by, or is under common control with You. For
+    purposes of this definition, "control" means (a) the power, direct
+    or indirect, to cause the direction or management of such entity,
+    whether by contract or otherwise, or (b) ownership of more than
+    fifty percent (50%) of the outstanding shares or beneficial
+    ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+    Licensable by such Contributor to use, reproduce, make available,
+    modify, display, perform, distribute, and otherwise exploit its
+    Contributions, either on an unmodified basis, with Modifications, or
+    as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+    for sale, have made, import, and otherwise transfer either its
+    Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+    or
+
+(b) for infringements caused by: (i) Your and any other third party's
+    modifications of Covered Software, or (ii) the combination of its
+    Contributions with other software (except as part of its Contributor
+    Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+    its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+    Form, as described in Section 3.1, and You must inform recipients of
+    the Executable Form how they can obtain a copy of such Source Code
+    Form by reasonable means in a timely manner, at a charge no more
+    than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+    License, or sublicense it under different terms, provided that the
+    license for the Executable Form does not attempt to limit or alter
+    the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+*                                                                      *
+*  6. Disclaimer of Warranty                                           *
+*  -------------------------                                           *
+*                                                                      *
+*  Covered Software is provided under this License on an "as is"       *
+*  basis, without warranty of any kind, either expressed, implied, or  *
+*  statutory, including, without limitation, warranties that the       *
+*  Covered Software is free of defects, merchantable, fit for a        *
+*  particular purpose or non-infringing. The entire risk as to the     *
+*  quality and performance of the Covered Software is with You.        *
+*  Should any Covered Software prove defective in any respect, You     *
+*  (not any Contributor) assume the cost of any necessary servicing,   *
+*  repair, or correction. This disclaimer of warranty constitutes an   *
+*  essential part of this License. No use of any Covered Software is   *
+*  authorized under this License except under this disclaimer.         *
+*                                                                      *
+************************************************************************
+
+************************************************************************
+*                                                                      *
+*  7. Limitation of Liability                                          *
+*  --------------------------                                          *
+*                                                                      *
+*  Under no circumstances and under no legal theory, whether tort      *
+*  (including negligence), contract, or otherwise, shall any           *
+*  Contributor, or anyone who distributes Covered Software as          *
+*  permitted above, be liable to You for any direct, indirect,         *
+*  special, incidental, or consequential damages of any character      *
+*  including, without limitation, damages for lost profits, loss of    *
+*  goodwill, work stoppage, computer failure or malfunction, or any    *
+*  and all other commercial damages or losses, even if such party      *
+*  shall have been informed of the possibility of such damages. This   *
+*  limitation of liability shall not apply to liability for death or   *
+*  personal injury resulting from such party's negligence to the       *
+*  extent applicable law prohibits such limitation. Some               *
+*  jurisdictions do not allow the exclusion or limitation of           *
+*  incidental or consequential damages, so this exclusion and          *
+*  limitation may not apply to You.                                    *
+*                                                                      *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+  This Source Code Form is subject to the terms of the Mozilla Public
+  License, v. 2.0. If a copy of the MPL was not distributed with this
+  file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+  This Source Code Form is "Incompatible With Secondary Licenses", as
+  defined by the Mozilla Public License, v. 2.0.
+
+
+
+ +
+OTS (OpenType Sanitizer) +show license +homepage +
+
// Copyright (c) 2009 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+OpenH264 +show license +homepage +
+
Copyright (c) 2013, Cisco Systems
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ +
+OpenMAX DL +show license +homepage +
+
Use of this source code is governed by a BSD-style license that can be
+found in the LICENSE file in the root of the source tree. All
+contributing project authors may be found in the AUTHORS file in the
+root of the source tree.
+
+The files were originally licensed by ARM Limited.
+
+The following files:
+
+    * dl/api/omxtypes.h
+    * dl/sp/api/omxSP.h
+
+are licensed by Khronos:
+
+Copyright © 2005-2008 The Khronos Group Inc. All Rights Reserved. 
+
+These materials are protected by copyright laws and contain material 
+proprietary to the Khronos Group, Inc.  You may use these materials 
+for implementing Khronos specifications, without altering or removing 
+any trademark, copyright or other notice from the specification.
+
+Khronos Group makes no, and expressly disclaims any, representations 
+or warranties, express or implied, regarding these materials, including, 
+without limitation, any implied warranties of merchantability or fitness 
+for a particular purpose or non-infringement of any intellectual property. 
+Khronos Group makes no, and expressly disclaims any, warranties, express 
+or implied, regarding the correctness, accuracy, completeness, timeliness, 
+and reliability of these materials. 
+
+Under no circumstances will the Khronos Group, or any of its Promoters, 
+Contributors or Members or their respective partners, officers, directors, 
+employees, agents or representatives be liable for any damages, whether 
+direct, indirect, special or consequential damages for lost revenues, 
+lost profits, or otherwise, arising from or in connection with these 
+materials.
+
+Khronos and OpenMAX are trademarks of the Khronos Group Inc. 
+
+
+
+ +
+PDFium +show license +homepage +
+
// Copyright 2014 PDFium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+PLY (Python Lex-Yacc) +show license +homepage +
+
PLY (Python Lex-Yacc)                   Version 3.4
+
+Copyright (C) 2001-2011,
+David M. Beazley (Dabeaz LLC)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.  
+* Redistributions in binary form must reproduce the above copyright notice, 
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.  
+* Neither the name of the David Beazley or Dabeaz LLC may be used to
+  endorse or promote products derived from this software without
+  specific prior written permission. 
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+ +
+Paul Hsieh's SuperFastHash +show license +homepage +
+
Paul Hsieh OLD BSD license
+
+Copyright (c) 2010, Paul Hsieh
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright notice, this
+  list of conditions and the following disclaimer in the documentation and/or
+  other materials provided with the distribution.
+* Neither my name, Paul Hsieh, nor the names of any other contributors to the
+  code use may not be used to endorse or promote products derived from this
+  software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Polymer +show license +homepage +
+
// Copyright (c) 2012 The Polymer Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Protocol Buffers +show license +homepage +
+
This license applies to all parts of Protocol Buffers except the following:
+
+  - Atomicops support for generic gcc, located in
+    src/google/protobuf/stubs/atomicops_internals_generic_gcc.h.
+    This file is copyrighted by Red Hat Inc.
+
+  - Atomicops support for AIX/POWER, located in
+    src/google/protobuf/stubs/atomicops_internals_power.h.
+    This file is copyrighted by Bloomberg Finance LP.
+
+Copyright 2014, Google Inc.  All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Code generated by the Protocol Buffer compiler is owned by the owner
+of the input file used when generating it.  This code is not
+standalone and requires a support library to be linked with it.  This
+support library is itself covered by the above license.
+
+
+
+ +
+Quick Color Management System +show license +homepage +
+
qcms
+Copyright (C) 2009 Mozilla Corporation
+Copyright (C) 1998-2007 Marti Maria
+
+Permission is hereby granted, free of charge, to any person obtaining 
+a copy of this software and associated documentation files (the "Software"), 
+to deal in the Software without restriction, including without limitation 
+the rights to use, copy, modify, merge, publish, distribute, sublicense, 
+and/or sell copies of the Software, and to permit persons to whom the Software 
+is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in 
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO 
+THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+SMHasher +show license +homepage +
+
All MurmurHash source files are placed in the public domain.
+
+The license below applies to all other code in SMHasher:
+
+Copyright (c) 2011 Google, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+
+ +
+SPIR-V Tools +show license +homepage +
+
Copyright (c) 2015-2016 The Khronos Group Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and/or associated documentation files (the
+"Materials"), to deal in the Materials without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Materials, and to
+permit persons to whom the Materials are furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Materials.
+
+MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS
+KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS
+SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT
+   https://www.khronos.org/registry/
+
+THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
+
+
+
+ +
+Shaderc +show license +homepage +
+
                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+Skia +show license +homepage +
+
// Copyright (c) 2011 Google Inc. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+--------------------------------------------------------------------------------
+
+
+
+ +
+Snappy: A fast compressor/decompressor +show license +homepage +
+
Copyright 2011, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Speech Dispatcher +show license +homepage +
+
		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+                       51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+
+
+
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+
+
+
+
+
+ +
+Strongtalk +show license +homepage +
+
Copyright (c) 1994-2006 Sun Microsystems Inc.
+All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+- Redistribution in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Sun Microsystems or the names of contributors may
+be used to endorse or promote products derived from this software without
+specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Sudden Motion Sensor library +show license +homepage +
+
SMSLib Sudden Motion Sensor Access Library
+Copyright (c) 2010 Suitable Systems
+All rights reserved.
+
+Developed by: Daniel Griscom
+              Suitable Systems
+              http://www.suitable.com
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the
+"Software"), to deal with the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+- Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimers.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimers in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the names of Suitable Systems nor the names of its
+contributors may be used to endorse or promote products derived from
+this Software without specific prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR
+ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE.
+
+For more information about SMSLib, see
+   <http://www.suitable.com/tools/smslib.html>
+or contact
+   Daniel Griscom
+   Suitable Systems
+   1 Centre Street, Suite 204
+   Wakefield, MA 01880
+   (781) 665-0053
+
+
+
+ +
+The USB ID Repository +show license +homepage +
+
Copyright (c) 2012, Linux USB Project
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+o Redistributions of source code must retain the above copyright notice,
+  this list of conditions and the following disclaimer.
+
+o Redistributions in binary form must reproduce the above copyright
+  notice, this list of conditions and the following disclaimer in the
+  documentation and/or other materials provided with the distribution.
+
+o Neither the name of the Linux USB Project nor the names of its
+  contributors may be used to endorse or promote products derived from
+  this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+The library to input, validate, and display addresses. +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+V8 JavaScript Engine +show license +homepage +
+
This license applies to all parts of V8 that are not externally
+maintained libraries.  The externally maintained libraries used by V8
+are:
+
+  - PCRE test suite, located in
+    test/mjsunit/third_party/regexp-pcre/regexp-pcre.js.  This is based on the
+    test suite from PCRE-7.3, which is copyrighted by the University
+    of Cambridge and Google, Inc.  The copyright notice and license
+    are embedded in regexp-pcre.js.
+
+  - Layout tests, located in test/mjsunit/third_party/object-keys.  These are
+    based on layout tests from webkit.org which are copyrighted by
+    Apple Computer, Inc. and released under a 3-clause BSD license.
+
+  - Strongtalk assembler, the basis of the files assembler-arm-inl.h,
+    assembler-arm.cc, assembler-arm.h, assembler-ia32-inl.h,
+    assembler-ia32.cc, assembler-ia32.h, assembler-x64-inl.h,
+    assembler-x64.cc, assembler-x64.h, assembler-mips-inl.h,
+    assembler-mips.cc, assembler-mips.h, assembler.cc and assembler.h.
+    This code is copyrighted by Sun Microsystems Inc. and released
+    under a 3-clause BSD license.
+
+  - Valgrind client API header, located at third_party/valgrind/valgrind.h
+    This is release under the BSD license.
+
+These libraries have their own licenses; we recommend you read them,
+as their terms may differ from the terms below.
+
+Further license information can be found in LICENSE files located in 
+sub-directories.
+
+Copyright 2014, the V8 project authors. All rights reserved.
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+      copyright notice, this list of conditions and the following
+      disclaimer in the documentation and/or other materials provided
+      with the distribution.
+    * Neither the name of Google Inc. nor the names of its
+      contributors may be used to endorse or promote products derived
+      from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Vulkan API headers +show license +homepage +
+
+Copyright (C) 2015 Valve Corporation
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+
+Copyright (C) 2016 Valve Corporation
+Copyright (C) 2016 Google Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+
+
+stb_trutype.h:
+stb_truetype.h - v1.07 - public domain
+authored from 2009-2015 by Sean Barrett / RAD Game Tools
+
+LICENSE
+
+This software is in the public domain. Where that dedication is not
+recognized, you are granted a perpetual, irrevocable license to copy,
+distribute, and modify this file as you see fit.
+
+
+
+glm:
+///////////////////////////////////////////////////////////////////////////////////
+/// OpenGL Mathematics (glm.g-truc.net)
+///
+/// Copyright (c) 2005 - 2014 G-Truc Creation (www.g-truc.net)
+/// Permission is hereby granted, free of charge, to any person obtaining a copy
+/// of this software and associated documentation files (the "Software"), to deal
+/// in the Software without restriction, including without limitation the rights
+/// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+/// copies of the Software, and to permit persons to whom the Software is
+/// furnished to do so, subject to the following conditions:
+/// 
+/// The above copyright notice and this permission notice shall be included in
+/// all copies or substantial portions of the Software.
+/// 
+/// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+/// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+/// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+/// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+/// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+/// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+/// THE SOFTWARE.
+///
+
+
+
+
+ +
+WDS +show license +homepage +
+
                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+
+ +
+Web Animations JS +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+WebKit +show license +homepage +
+
(WebKit doesn't distribute an explicit license.  This LICENSE is derived from
+license text in the source.)
+
+Copyright (c) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007 Alexander Kellett, Alexey Proskuryakov, Alex Mathews, Allan
+Sandfeld Jensen, Alp Toker, Anders Carlsson, Andrew Wellington, Antti
+Koivisto, Apple Inc., Arthur Langereis, Baron Schwartz, Bjoern Graf,
+Brent Fulgham, Cameron Zwarich, Charles Samuels, Christian Dywan,
+Collabora Ltd., Cyrus Patel, Daniel Molkentin, Dave Maclachlan, David
+Smith, Dawit Alemayehu, Dirk Mueller, Dirk Schulze, Don Gibson, Enrico
+Ros, Eric Seidel, Frederik Holljen, Frerich Raabe, Friedmann Kleint,
+George Staikos, Google Inc., Graham Dennis, Harri Porten, Henry Mason,
+Hiroyuki Ikezoe, Holger Hans Peter Freyther, IBM, James G. Speth, Jan
+Alonzo, Jean-Loup Gailly, John Reis, Jonas Witt, Jon Shier, Jonas
+Witt, Julien Chaffraix, Justin Haygood, Kevin Ollivier, Kevin Watters,
+Kimmo Kinnunen, Kouhei Sutou, Krzysztof Kowalczyk, Lars Knoll, Luca
+Bruno, Maks Orlovich, Malte Starostik, Mark Adler, Martin Jones,
+Marvin Decker, Matt Lilek, Michael Emmel, Mitz Pettel, mozilla.org,
+Netscape Communications Corporation, Nicholas Shanks, Nikolas
+Zimmermann, Nokia, Oliver Hunt, Opened Hand, Paul Johnston, Peter
+Kelly, Pioneer Research Center USA, Rich Moore, Rob Buis, Robin Dunn,
+Ronald Tschalär, Samuel Weinig, Simon Hausmann, Staikos Computing
+Services Inc., Stefan Schimanski, Symantec Corporation, The Dojo
+Foundation, The Karbon Developers, Thomas Boyer, Tim Copperfield,
+Tobias Anton, Torben Weis, Trolltech, University of Cambridge, Vaclav
+Slavik, Waldo Bastian, Xan Lopez, Zack Rusin
+
+The terms and conditions vary from file to file, but are one of:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+
+*OR*
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the
+   distribution.
+3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+   its contributors may be used to endorse or promote products derived
+   from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+                       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+                  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+
+
+ +
+WebM container parser and writer. +show license +homepage +
+
Copyright (c) 2010, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+ +
+WebP image encoder/decoder +show license +homepage +
+
Copyright (c) 2010, Google Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Additional IP Rights Grant (Patents)
+------------------------------------
+
+"These implementations" means the copyrightable works that implement the WebM
+codecs distributed by Google as part of the WebM Project.
+
+Google hereby grants to you a perpetual, worldwide, non-exclusive, no-charge,
+royalty-free, irrevocable (except as stated in this section) patent license to
+make, have made, use, offer to sell, sell, import, transfer, and otherwise
+run, modify and propagate the contents of these implementations of WebM, where
+such license applies only to those patent claims, both currently owned by
+Google and acquired in the future, licensable by Google that are necessarily
+infringed by these implementations of WebM. This grant does not include claims
+that would be infringed only as a consequence of further modification of these
+implementations. If you or your agent or exclusive licensee institute or order
+or agree to the institution of patent litigation or any other patent
+enforcement activity against any entity (including a cross-claim or
+counterclaim in a lawsuit) alleging that any of these implementations of WebM
+or any code incorporated within any of these implementations of WebM
+constitute direct or contributory patent infringement, or inducement of
+patent infringement, then any patent rights granted to you under this License
+for these implementations of WebM shall terminate as of the date such
+litigation is filed.
+
+
+
+ +
+WebRTC +show license +homepage +
+
Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+WebRTC +show license +homepage +
+
Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+Windows Template Library (WTL) +show license +homepage +
+
Microsoft Permissive License (Ms-PL)
+Published: October 12, 2006
+
+
+This license governs use of the accompanying software. If you use the software,
+you accept this license. If you do not accept the license, do not use the
+software.
+
+
+1. Definitions
+
+The terms "reproduce," "reproduction," "derivative works," and "distribution"
+have the same meaning here as under U.S. copyright law.
+
+A "contribution" is the original software, or any additions or changes to the
+software.
+
+A "contributor" is any person that distributes its contribution under this
+license.
+
+"Licensed patents" are a contributor’s patent claims that read directly on its
+contribution.
+
+
+2. Grant of Rights
+
+(A) Copyright Grant- Subject to the terms of this license, including the
+license conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free copyright license to reproduce its
+contribution, prepare derivative works of its contribution, and distribute its
+contribution or any derivative works that you create.
+
+(B) Patent Grant- Subject to the terms of this license, including the license
+conditions and limitations in section 3, each contributor grants you a
+non-exclusive, worldwide, royalty-free license under its licensed patents to
+make, have made, use, sell, offer for sale, import, and/or otherwise dispose of
+its contribution in the software or derivative works of the contribution in the
+software.
+
+
+3. Conditions and Limitations
+
+(A) No Trademark License- This license does not grant you rights to use any
+contributors’ name, logo, or trademarks.
+
+(B) If you bring a patent claim against any contributor over patents that you
+claim are infringed by the software, your patent license from such contributor
+to the software ends automatically.
+
+(C) If you distribute any portion of the software, you must retain all
+copyright, patent, trademark, and attribution notices that are present in the
+software.
+
+(D) If you distribute any portion of the software in source code form, you may
+do so only under this license by including a complete copy of this license with
+your distribution. If you distribute any portion of the software in compiled or
+object code form, you may only do so under a license that complies with this
+license.
+
+(E) The software is licensed "as-is." You bear the risk of using it. The
+contributors give no express warranties, guarantees or conditions. You may have
+additional consumer rights under your local laws which this license cannot
+change. To the extent permitted under your local laws, the contributors exclude
+the implied warranties of merchantability, fitness for a particular purpose and
+non-infringement.
+
+
+
+ +
+XZ Utils +show license +homepage +
+
See http://src.chromium.org/viewvc/chrome/trunk/deps/third_party/xz/COPYING
+
+
+
+ +
+blimp_fonts +show license +homepage +
+
Fonts under Apache License Version 2.0 license:
+
+The font files below are in the font_bundle/marshmallow subdirectory.
+
+AndroidClock.ttf
+AndroidClock_Highlight.ttf
+AndroidClock_Solid.ttf
+Clockopia.ttf
+ComingSoon.ttf
+DroidSansFallback.ttf
+DroidSansFallbackFull.ttf
+DroidSansMono.ttf
+MTLc3m.ttf
+MTLmr3m.ttf
+NotoColorEmoji.ttf
+NotoKufiArabic-Bold.ttf
+NotoKufiArabic-Regular.ttf
+NotoNaskhArabic-Bold.ttf
+NotoNaskhArabic-Regular.ttf
+NotoNaskhArabicUI-Bold.ttf
+NotoNaskhArabicUI-Regular.ttf
+NotoSansArmenian-Bold.ttf
+NotoSansArmenian-Regular.ttf
+NotoSansAvestan-Regular.ttf
+NotoSansBalinese-Regular.ttf
+NotoSansBamum-Regular.ttf
+NotoSansBatak-Regular.ttf
+NotoSansBengali-Bold.ttf
+NotoSansBengali-Regular.ttf
+NotoSansBengaliUI-Bold.ttf
+NotoSansBengaliUI-Regular.ttf
+NotoSans-BoldItalic.ttf
+NotoSans-Bold.ttf
+NotoSansBrahmi-Regular.ttf
+NotoSansBuginese-Regular.ttf
+NotoSansBuhid-Regular.ttf
+NotoSansCanadianAboriginal-Regular.ttf
+NotoSansCarian-Regular.ttf
+NotoSansCham-Bold.ttf
+NotoSansCham-Regular.ttf
+NotoSansCherokee-Regular.ttf
+NotoSansCoptic-Regular.ttf
+NotoSansCuneiform-Regular.ttf
+NotoSansCypriot-Regular.ttf
+NotoSansDeseret-Regular.ttf
+NotoSansDevanagari-Bold.ttf
+NotoSansDevanagari-Regular.ttf
+NotoSansDevanagariUI-Bold.ttf
+NotoSansDevanagariUI-Regular.ttf
+NotoSansEgyptianHieroglyphs-Regular.ttf
+NotoSansEthiopic-Bold.ttf
+NotoSansEthiopic-Regular.ttf
+NotoSansGeorgian-Bold.ttf
+NotoSansGeorgian-Regular.ttf
+NotoSansGlagolitic-Regular.ttf
+NotoSansGothic-Regular.ttf
+NotoSansGujarati-Bold.ttf
+NotoSansGujarati-Regular.ttf
+NotoSansGujaratiUI-Bold.ttf
+NotoSansGujaratiUI-Regular.ttf
+NotoSansGurmukhi-Bold.ttf
+NotoSansGurmukhi-Regular.ttf
+NotoSansGurmukhiUI-Bold.ttf
+NotoSansGurmukhiUI-Regular.ttf
+NotoSansHanunoo-Regular.ttf
+NotoSansHebrew-Bold.ttf
+NotoSansHebrew-Regular.ttf
+NotoSansImperialAramaic-Regular.ttf
+NotoSansInscriptionalPahlavi-Regular.ttf
+NotoSansInscriptionalParthian-Regular.ttf
+NotoSans-Italic.ttf
+NotoSansJavanese-Regular.ttf
+NotoSansKaithi-Regular.ttf
+NotoSansKannada-Bold.ttf
+NotoSansKannada-Regular.ttf
+NotoSansKannadaUI-Bold.ttf
+NotoSansKannadaUI-Regular.ttf
+NotoSansKayahLi-Regular.ttf
+NotoSansKharoshthi-Regular.ttf
+NotoSansKhmer-Bold.ttf
+NotoSansKhmer-Regular.ttf
+NotoSansKhmerUI-Bold.ttf
+NotoSansKhmerUI-Regular.ttf
+NotoSansLao-Bold.ttf
+NotoSansLao-Regular.ttf
+NotoSansLaoUI-Bold.ttf
+NotoSansLaoUI-Regular.ttf
+NotoSansLepcha-Regular.ttf
+NotoSansLimbu-Regular.ttf
+NotoSansLinearB-Regular.ttf
+NotoSansLisu-Regular.ttf
+NotoSansLycian-Regular.ttf
+NotoSansLydian-Regular.ttf
+NotoSansMalayalam-Bold.ttf
+NotoSansMalayalam-Regular.ttf
+NotoSansMalayalamUI-Bold.ttf
+NotoSansMalayalamUI-Regular.ttf
+NotoSansMandaic-Regular.ttf
+NotoSansMeeteiMayek-Regular.ttf
+NotoSansMongolian-Regular.ttf
+NotoSansMyanmar-Bold.ttf
+NotoSansMyanmar-Regular.ttf
+NotoSansMyanmarUI-Bold.ttf
+NotoSansMyanmarUI-Regular.ttf
+NotoSansNewTaiLue-Regular.ttf
+NotoSansNKo-Regular.ttf
+NotoSansOgham-Regular.ttf
+NotoSansOlChiki-Regular.ttf
+NotoSansOldItalic-Regular.ttf
+NotoSansOldPersian-Regular.ttf
+NotoSansOldSouthArabian-Regular.ttf
+NotoSansOldTurkic-Regular.ttf
+NotoSansOriya-Bold.ttf
+NotoSansOriya-Regular.ttf
+NotoSansOriyaUI-Bold.ttf
+NotoSansOriyaUI-Regular.ttf
+NotoSansOsmanya-Regular.ttf
+NotoSansPhagsPa-Regular.ttf
+NotoSansPhoenician-Regular.ttf
+NotoSans-Regular.ttf
+NotoSansRejang-Regular.ttf
+NotoSansRunic-Regular.ttf
+NotoSansSamaritan-Regular.ttf
+NotoSansSaurashtra-Regular.ttf
+NotoSansShavian-Regular.ttf
+NotoSansSinhala-Bold.ttf
+NotoSansSinhala-Regular.ttf
+NotoSansSundanese-Regular.ttf
+NotoSansSylotiNagri-Regular.ttf
+NotoSansSymbols-Regular-Subsetted.ttf
+NotoSansSymbols-Regular.ttf
+NotoSansSyriacEastern-Regular.ttf
+NotoSansSyriacEstrangela-Regular.ttf
+NotoSansSyriacWestern-Regular.ttf
+NotoSansTagalog-Regular.ttf
+NotoSansTagbanwa-Regular.ttf
+NotoSansTaiLe-Regular.ttf
+NotoSansTaiTham-Regular.ttf
+NotoSansTaiViet-Regular.ttf
+NotoSansTamil-Bold.ttf
+NotoSansTamil-Regular.ttf
+NotoSansTamilUI-Bold.ttf
+NotoSansTamilUI-Regular.ttf
+NotoSansTelugu-Bold.ttf
+NotoSansTelugu-Regular.ttf
+NotoSansTeluguUI-Bold.ttf
+NotoSansTeluguUI-Regular.ttf
+NotoSansThaana-Bold.ttf
+NotoSansThaana-Regular.ttf
+NotoSansThai-Bold.ttf
+NotoSansThai-Regular.ttf
+NotoSansThaiUI-Bold.ttf
+NotoSansThaiUI-Regular.ttf
+NotoSansTibetan-Regular.ttf
+NotoSansTifinagh-Regular.ttf
+NotoSansUgaritic-Regular.ttf
+NotoSansUI-BoldItalic.ttf
+NotoSansUI-Bold.ttf
+NotoSansUI-Italic.ttf
+NotoSansUI-Regular.ttf
+NotoSansVai-Regular.ttf
+NotoSansYi-Regular.ttf
+NotoSerifArmenian-Bold.ttf
+NotoSerifArmenian-Regular.ttf
+NotoSerif-BoldItalic.ttf
+NotoSerif-Bold.ttf
+NotoSerifGeorgian-Bold.ttf
+NotoSerifGeorgian-Regular.ttf
+NotoSerif-Italic.ttf
+NotoSerifKhmer-Bold.ttf
+NotoSerifKhmer-Regular.ttf
+NotoSerifLao-Bold.ttf
+NotoSerifLao-Regular.ttf
+NotoSerif-Regular.ttf
+NotoSerifThai-Bold.ttf
+NotoSerifThai-Regular.ttf
+Roboto-BlackItalic.ttf
+Roboto-Black.ttf
+Roboto-BoldItalic.ttf
+Roboto-Bold.ttf
+RobotoCondensed-BoldItalic.ttf
+RobotoCondensed-Bold.ttf
+RobotoCondensed-Italic.ttf
+RobotoCondensed-LightItalic.ttf
+RobotoCondensed-Light.ttf
+RobotoCondensed-Regular.ttf
+Roboto-Italic.ttf
+Roboto-LightItalic.ttf
+Roboto-Light.ttf
+Roboto-MediumItalic.ttf
+Roboto-Medium.ttf
+Roboto-Regular.ttf
+Roboto-ThinItalic.ttf
+Roboto-Thin.ttf
+
+The font files below are in the font_bundle/kitkat subdirectory.
+
+AndroidClock_Highlight.ttf
+AndroidClock_Solid.ttf
+AndroidClock.ttf
+AndroidEmoji.ttf
+Clockopia.ttf
+DroidKufi-Bold.ttf
+DroidKufi-Regular.ttf
+DroidNaskh-Bold.ttf
+DroidNaskh-Regular.ttf
+DroidNaskhUI-Regular.ttf
+DroidSansArabic.ttf
+DroidSansArmenian.ttf
+DroidSans-Bold.ttf
+DroidSansEthiopic-Bold.ttf
+DroidSansEthiopic-Regular.ttf
+DroidSansFallbackFull.ttf
+DroidSansFallbackLegacy.ttf
+DroidSansFallback.ttf
+DroidSansGeorgian.ttf
+DroidSansHebrew-Bold.ttf
+DroidSansHebrew-Regular.ttf
+DroidSansJapanese.ttf
+DroidSansMono.ttf
+DroidSans.ttf
+DroidSerif-BoldItalic.ttf
+DroidSerif-Bold.ttf
+DroidSerif-Italic.ttf
+DroidSerif-Regular.ttf
+fallback_fonts.xml
+MTLc3m.ttf
+MTLmr3m.ttf
+NotoColorEmoji.ttf
+NotoSansBengali-Bold.ttf
+NotoSansBengali-Regular.ttf
+NotoSansBengaliUI-Bold.ttf
+NotoSansBengaliUI-Regular.ttf
+NotoSansDevanagari-Bold.ttf
+NotoSansDevanagari-Regular.ttf
+NotoSansDevanagariUI-Bold.ttf
+NotoSansDevanagariUI-Regular.ttf
+NotoSansKannada-Bold.ttf
+NotoSansKannada-Regular.ttf
+NotoSansKannadaUI-Bold.ttf
+NotoSansKannadaUI-Regular.ttf
+NotoSansKhmer-Bold.ttf
+NotoSansKhmer-Regular.ttf
+NotoSansKhmerUI-Bold.ttf
+NotoSansKhmerUI-Regular.ttf
+NotoSansLao-Bold.ttf
+NotoSansLao-Regular.ttf
+NotoSansLaoUI-Bold.ttf
+NotoSansLaoUI-Regular.ttf
+NotoSansMalayalam-Bold.ttf
+NotoSansMalayalam-Regular.ttf
+NotoSansMalayalamUI-Bold.ttf
+NotoSansMalayalamUI-Regular.ttf
+NotoSansSymbols-Regular.ttf
+NotoSansTamil-Bold.ttf
+NotoSansTamil-Regular.ttf
+NotoSansTamilUI-Bold.ttf
+NotoSansTamilUI-Regular.ttf
+NotoSansTelugu-Bold.ttf
+NotoSansTelugu-Regular.ttf
+NotoSansTeluguUI-Bold.ttf
+NotoSansTeluguUI-Regular.ttf
+NotoSansThai-Bold.ttf
+NotoSansThai-Regular.ttf
+NotoSansThaiUI-Bold.ttf
+NotoSansThaiUI-Regular.ttf
+Roboto-BoldItalic.ttf
+Roboto-Bold.ttf
+RobotoCondensed-BoldItalic.ttf
+RobotoCondensed-Bold.ttf
+RobotoCondensed-Italic.ttf
+RobotoCondensed-Regular.ttf
+Roboto-Italic.ttf
+Roboto-LightItalic.ttf
+Roboto-Light.ttf
+Roboto-Regular.ttf
+Roboto-ThinItalic.ttf
+Roboto-Thin.ttf
+
+
+Fonts under SIL Open Font License, Version 1.1:
+(Full license in LICENSE.OFL)
+
+The font files below are in the font_bundle/marshmallow subdirectory.
+NotoSansJP-Regular.otf
+NotoSansJP-Regular-Subsetted.otf
+NotoSansKR-Regular.otf
+NotoSansSC-Regular.otf
+NotoSansTC-Regular.otf
+
+
+Copyright (c) 2011 by Ralph du Carrois, with Reserved Font Name 'Carrois'
+This Font Software is licensed under the SIL Open Font License, Version 1.1
+(Full license in LICENSE.OFL)
+The font files below are in the font_bundle/marshmallow subdirectory.
+CarroisGothicSC-Regular.ttf
+
+
+Copyright (c) 2010, Pablo Impallari (www.impallari.com|impallari@gmail.com),
+Copyright (c) 2010, Igino Marini. (www.ikern.com|mail@iginomarini.com),
+with Reserved Font Name Dancing Script.
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+(Full license in LICENSE.OFL)
+
+The font files below are in the font_bundle/marshmallow subdirectory.
+DancingScript-Bold.ttf
+DancingScript-Regular.ttf
+CutiveMono.ttf
+
+
+Copyright (c) 2010, NHN Corporation (http://www.nhncorp.com),
+  (http://hangeul.naver.com/font)
+with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+(Full license in LICENSE.OFL)
+
+The files below are in the font_bundle/marshmallow subdirectory.
+NanumGothicBold.ttf
+NanumGothic.ttf
+
+
+Copyright (c) 2010, NHN Corporation (http://www.nhncorp.com),
+  (http://hangeul.naver.com/font)
+with Reserved Font Name Nanum, Naver Nanum, NanumGothic, Naver NanumGothic, NanumMyeongjo, Naver NanumMyeongjo, NanumBrush, Naver NanumBrush, NanumPen, Naver NanumPen, Naver NanumGothicEco, NanumGothicEco, Naver NanumMyeongjoEco, NanumMyeongjoEco, Naver NanumGothicLight, NanumGothicLight
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+The files below are in the font_bundle/kitkat subdirectory.
+NanumGothicBold.ttf
+NanumGothic.ttf
+
+
+Copyright SIL International, all rights reserved
+Reserved names: "Padauk"
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+The files below are in the font_bundle/kitkat subdirectory.
+Padauk-bookbold.ttf
+Padauk-book.ttf
+
+
+
+ +
+blink HTMLTokenizer +show license +homepage +
+
Copyright (C) 2008 Apple Inc. All Rights Reserved.
+Copyright (C) 2009 Torch Mobile, Inc. http://www.torchmobile.com/
+Copyright (C) 2010 Google, Inc. All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+ *
+THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+boringssl +show license +homepage +
+
BoringSSL is a fork of OpenSSL. As such, large parts of it fall under OpenSSL
+licensing. Files that are completely new have a Google copyright and an ISC
+license. This license is reproduced at the bottom of this file.
+
+Contributors to BoringSSL are required to follow the CLA rules for Chromium:
+https://cla.developers.google.com/clas
+
+Some files from Intel are under yet another license, which is also included
+underneath.
+
+The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the
+OpenSSL License and the original SSLeay license apply to the toolkit. See below
+for the actual license texts. Actually both licenses are BSD-style Open Source
+licenses. In case of any license issues related to OpenSSL please contact
+openssl-core@openssl.org.
+
+The following are Google-internal bug numbers where explicit permission from
+some authors is recorded for use of their work. (This is purely for our own
+record keeping.)
+  27287199
+  27287880
+  27287883
+
+  OpenSSL License
+  ---------------
+
+/* ====================================================================
+ * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer. 
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in
+ *    the documentation and/or other materials provided with the
+ *    distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this
+ *    software must display the following acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
+ *
+ * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
+ *    endorse or promote products derived from this software without
+ *    prior written permission. For written permission, please contact
+ *    openssl-core@openssl.org.
+ *
+ * 5. Products derived from this software may not be called "OpenSSL"
+ *    nor may "OpenSSL" appear in their names without prior written
+ *    permission of the OpenSSL Project.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ *    acknowledgment:
+ *    "This product includes software developed by the OpenSSL Project
+ *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * ====================================================================
+ *
+ * This product includes cryptographic software written by Eric Young
+ * (eay@cryptsoft.com).  This product includes software written by Tim
+ * Hudson (tjh@cryptsoft.com).
+ *
+ */
+
+ Original SSLeay License
+ -----------------------
+
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
+ * All rights reserved.
+ *
+ * This package is an SSL implementation written
+ * by Eric Young (eay@cryptsoft.com).
+ * The implementation was written so as to conform with Netscapes SSL.
+ * 
+ * This library is free for commercial and non-commercial use as long as
+ * the following conditions are aheared to.  The following conditions
+ * apply to all code found in this distribution, be it the RC4, RSA,
+ * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
+ * included with this distribution is covered by the same copyright terms
+ * except that the holder is Tim Hudson (tjh@cryptsoft.com).
+ * 
+ * Copyright remains Eric Young's, and as such any Copyright notices in
+ * the code are not to be removed.
+ * If this package is used in a product, Eric Young should be given attribution
+ * as the author of the parts of the library used.
+ * This can be in the form of a textual message at program startup or
+ * in documentation (online or textual) provided with the package.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *    "This product includes cryptographic software written by
+ *     Eric Young (eay@cryptsoft.com)"
+ *    The word 'cryptographic' can be left out if the rouines from the library
+ *    being used are not cryptographic related :-).
+ * 4. If you include any Windows specific code (or a derivative thereof) from 
+ *    the apps directory (application code) you must include an acknowledgement:
+ *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
+ * 
+ * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * 
+ * The licence and distribution terms for any publically available version or
+ * derivative of this code cannot be changed.  i.e. this code cannot simply be
+ * copied and put under another distribution licence
+ * [including the GNU Public Licence.]
+ */
+
+
+ISC license used for completely new code in BoringSSL:
+
+/* Copyright (c) 2015, Google Inc.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
+
+
+Some files from Intel carry the following license:
+
+# Copyright (c) 2012, Intel Corporation
+#
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# *  Redistributions of source code must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+# *  Redistributions in binary form must reproduce the above copyright
+#    notice, this list of conditions and the following disclaimer in the
+#    documentation and/or other materials provided with the
+#    distribution.
+#
+# *  Neither the name of the Intel Corporation nor the names of its
+#    contributors may be used to endorse or promote products derived from
+#    this software without specific prior written permission.
+#
+#
+# THIS SOFTWARE IS PROVIDED BY INTEL CORPORATION ""AS IS"" AND ANY
+# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL CORPORATION OR
+# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+bsdiff +show license +homepage +
+
BSD Protection License
+February 2002
+
+Preamble
+--------
+
+The Berkeley Software Distribution ("BSD") license has proven very effective
+over the years at allowing for a wide spread of work throughout both
+commercial and non-commercial products.  For programmers whose primary
+intention is to improve the general quality of available software, it is
+arguable that there is no better license than the BSD license, as it
+permits improvements to be used wherever they will help, without idealogical
+or metallic constraint.
+
+This is of particular value to those who produce reference implementations
+of proposed standards: The case of TCP/IP clearly illustrates that freely
+and universally available implementations leads the rapid acceptance of
+standards -- often even being used instead of a de jure standard (eg, OSI
+network models).
+
+With the rapid proliferation of software licensed under the GNU General
+Public License, however, the continued success of this role is called into
+question.  Given that the inclusion of a few lines of "GPL-tainted" work
+into a larger body of work will result in restricted distribution -- and
+given that further work will likely build upon the "tainted" portions,
+making them difficult to remove at a future date -- there are inevitable
+circumstances where authors would, in order to protect their goal of
+providing for the widespread usage of their work, wish to guard against
+such "GPL-taint".
+
+In addition, one can imagine that companies which operate by producing and
+selling (possibly closed-source) code would wish to protect themselves
+against the rise of a GPL-licensed competitor.  While under existing
+licenses this would mean not releasing their code under any form of open
+license, if a license existed under which they could incorporate any
+improvements back into their own (commercial) products then they might be
+far more willing to provide for non-closed distribution.
+
+For the above reasons, we put forth this "BSD Protection License": A
+license designed to retain the freedom granted by the BSD license to use
+licensed works in a wide variety of settings, both non-commercial and
+commercial, while protecting the work from having future contributors
+restrict that freedom.
+
+The precise terms and conditions for copying, distribution, and
+modification follow.
+
+BSD PROTECTION LICENSE
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION, AND MODIFICATION
+----------------------------------------------------------------
+
+0. Definitions.
+   a) "Program", below, refers to any program or work distributed under
+      the terms of this license.
+   b) A "work based on the Program", below, refers to either the Program
+      or any derivative work under copyright law.
+   c) "Modification", below, refers to the act of creating derivative works.
+   d) "You", below, refers to each licensee.
+
+1. Scope.
+   This license governs the copying, distribution, and modification of the
+   Program.  Other activities are outside the scope of this license; The
+   act of running the Program is not restricted, and the output from the
+   Program is covered only if its contents constitute a work based on the
+   Program.
+
+2. Verbatim copies.
+   You may copy and distribute verbatim copies of the Program as you
+   receive it, in any medium, provided that you conspicuously and
+   appropriately publish on each copy an appropriate copyright notice; keep
+   intact all the notices that refer to this License and to the absence of
+   any warranty; and give any other recipients of the Program a copy of this
+   License along with the Program.
+
+3. Modification and redistribution under closed license.
+   You may modify your copy or copies of the Program, and distribute
+   the resulting derivative works, provided that you meet the
+   following conditions:
+   a) The copyright notice and disclaimer on the Program must be reproduced
+      and included in the source code, documentation, and/or other materials
+      provided in a manner in which such notices are normally distributed.
+   b) The derivative work must be clearly identified as such, in order that
+      it may not be confused with the original work.
+   c) The license under which the derivative work is distributed must
+      expressly prohibit the distribution of further derivative works.
+
+4. Modification and redistribution under open license.
+   You may modify your copy or copies of the Program, and distribute
+   the resulting derivative works, provided that you meet the
+   following conditions:
+   a) The copyright notice and disclaimer on the Program must be reproduced
+      and included in the source code, documentation, and/or other materials
+      provided in a manner in which such notices are normally distributed.
+   b) You must clearly indicate the nature and date of any changes made
+      to the Program.  The full details need not necessarily be included in
+      the individual modified files, provided that each modified file is
+      clearly marked as such and instructions are included on where the
+      full details of the modifications may be found.
+   c) You must cause any work that you distribute or publish, that in whole
+      or in part contains or is derived from the Program or any part
+      thereof, to be licensed as a whole at no charge to all third
+      parties under the terms of this License.
+
+5. Implied acceptance.
+   You may not copy or distribute the Program or any derivative works except
+   as expressly provided under this license.  Consequently, any such action
+   will be taken as implied acceptance of the terms of this license.
+
+6. NO WARRANTY.
+   THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+   AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
+   THE COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+   REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE FOR ANY DIRECT,
+   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING, BUT
+   NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+   USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+   TORT, EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+   POSSIBILITY OF SUCH DAMAGES.
+
+
+
+ +
+bspatch +show license +homepage +
+
Copyright 2003,2004 Colin Percival
+All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted providing that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
+IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+chromite +show license +homepage +
+
// Copyright (c) 2006-2009 The Chromium OS Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+d3 +show license +homepage +
+
Copyright (c) 2010-2014, Michael Bostock
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+* Redistributions of source code must retain the above copyright notice, this
+  list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright notice,
+  this list of conditions and the following disclaimer in the documentation
+  and/or other materials provided with the distribution.
+
+* The name Michael Bostock may not be used to endorse or promote products
+  derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL MICHAEL BOSTOCK BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+divsufsort +show license +homepage +
+
The MIT License (MIT)
+
+Copyright (c) 2003 Yuta Mori All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+ +
+dom-distiller-js +show license +homepage +
+
Copyright 2014 The Chromium Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+   * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+   * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+   * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+Parts of the following directories are available under Apache v2.0
+
+src/de
+Copyright (c) 2009-2011 Christian Kohlschütter
+
+third_party/gwt_exporter
+Copyright 2007 Timepedia.org
+
+third_party/gwt-2.5.1
+Copyright 2008 Google
+
+java/org/chromium/distiller/dev
+Copyright 2008 Google
+
+Apache License
+
+Version 2.0, January 2004
+
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
+
+You must give any other recipients of the Work or Derivative Works a copy of this License; and
+You must cause any modified files to carry prominent notices stating that You changed the files; and
+You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
+If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. 
+
+You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
+5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+
+
+ +
+drawElements Quality Program +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2014 The Android Open Source Project
+
+   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.
+
+
+
+ +
+dynamic annotations +show license +homepage +
+
/* Copyright (c) 2008-2009, Google Inc.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *     * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ---
+ * Author: Kostya Serebryany
+ */
+
+
+
+ +
+etc1 +show license +homepage +
+
/*
+ * Copyright (C) 2009 The Android Open Source Project
+ *
+ * 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.
+ */
+
+
+ +
+ffmpeg +show license +homepage +
+
# License
+
+Most files in FFmpeg are under the GNU Lesser General Public License version 2.1
+or later (LGPL v2.1+). Read the file `COPYING.LGPLv2.1` for details. Some other
+files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to
+FFmpeg.
+
+Some optional parts of FFmpeg are licensed under the GNU General Public License
+version 2 or later (GPL v2+). See the file `COPYING.GPLv2` for details. None of
+these parts are used by default, you have to explicitly pass `--enable-gpl` to
+configure to activate them. In this case, FFmpeg's license changes to GPL v2+.
+
+Specifically, the GPL parts of FFmpeg are:
+
+- libpostproc
+- optional x86 optimization in the files
+    - `libavcodec/x86/flac_dsp_gpl.asm`
+    - `libavcodec/x86/idct_mmx.c`
+    - `libavfilter/x86/vf_removegrain.asm`
+- the X11 grabber in `libavdevice/x11grab.c`
+- the following building and testing tools
+    - `compat/solaris/make_sunver.pl`
+    - `doc/t2h.pm`
+    - `doc/texi2pod.pl`
+    - `libswresample/swresample-test.c`
+    - `tests/checkasm/*`
+    - `tests/tiny_ssim.c`
+- the following filters in libavfilter:
+    - `f_ebur128.c`
+    - `vf_blackframe.c`
+    - `vf_boxblur.c`
+    - `vf_colormatrix.c`
+    - `vf_cover_rect.c`
+    - `vf_cropdetect.c`
+    - `vf_delogo.c`
+    - `vf_eq.c`
+    - `vf_find_rect.c`
+    - `vf_fspp.c`
+    - `vf_geq.c`
+    - `vf_histeq.c`
+    - `vf_hqdn3d.c`
+    - `vf_interlace.c`
+    - `vf_kerndeint.c`
+    - `vf_mcdeint.c`
+    - `vf_mpdecimate.c`
+    - `vf_owdenoise.c`
+    - `vf_perspective.c`
+    - `vf_phase.c`
+    - `vf_pp.c`
+    - `vf_pp7.c`
+    - `vf_pullup.c`
+    - `vf_repeatfields.c`
+    - `vf_sab.c`
+    - `vf_smartblur.c`
+    - `vf_spp.c`
+    - `vf_stereo3d.c`
+    - `vf_super2xsai.c`
+    - `vf_tinterlace.c`
+    - `vf_uspp.c`
+    - `vsrc_mptestsrc.c`
+
+Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then
+the configure parameter `--enable-version3` will activate this licensing option
+for you. Read the file `COPYING.LGPLv3` or, if you have enabled GPL parts,
+`COPYING.GPLv3` to learn the exact legal terms that apply in this case.
+
+There are a handful of files under other licensing terms, namely:
+
+* The files `libavcodec/jfdctfst.c`, `libavcodec/jfdctint_template.c` and
+  `libavcodec/jrevdct.c` are taken from libjpeg, see the top of the files for
+  licensing details. Specifically note that you must credit the IJG in the
+  documentation accompanying your program if you only distribute executables.
+  You must also indicate any changes including additions and deletions to
+  those three files in the documentation.
+* `tests/reference.pnm` is under the expat license.
+
+
+## External libraries
+
+FFmpeg can be combined with a number of external libraries, which sometimes
+affect the licensing of binaries resulting from the combination.
+
+### Compatible libraries
+
+The following libraries are under GPL:
+- frei0r
+- libcdio
+- librubberband
+- libvidstab
+- libx264
+- libx265
+- libxavs
+- libxvid
+
+When combining them with FFmpeg, FFmpeg needs to be licensed as GPL as well by
+passing `--enable-gpl` to configure.
+
+The OpenCORE and VisualOn libraries are under the Apache License 2.0. That
+license is incompatible with the LGPL v2.1 and the GPL v2, but not with
+version 3 of those licenses. So to combine these libraries with FFmpeg, the
+license version needs to be upgraded by passing `--enable-version3` to configure.
+
+### Incompatible libraries
+
+There are certain libraries you can combine with FFmpeg whose licenses are not
+compatible with the GPL and/or the LGPL. If you wish to enable these
+libraries, even in circumstances that their license may be incompatible, pass
+`--enable-nonfree` to configure. But note that if you enable any of these
+libraries the resulting binary will be under a complex license mix that is
+more restrictive than the LGPL and that may result in additional obligations.
+It is possible that these restrictions cause the resulting binary to be
+unredistributable.
+
+The Fraunhofer FDK AAC and OpenSSL libraries are under licenses which are
+incompatible with the GPLv2 and v3. To the best of our knowledge, they are
+compatible with the LGPL.
+
+The NVENC library, while its header file is licensed under the compatible MIT
+license, requires a proprietary binary blob at run time, and is deemed to be
+incompatible with the GPL. We are not certain if it is compatible with the
+LGPL, but we require `--enable-nonfree` even with LGPL configurations in case
+it is not.
+
+
+********************************************************************************
+
+libavcodec/arm/vp8dsp_armv6.S
+
+VP8 ARMv6 optimisations
+
+Copyright (c) 2010 Google Inc.
+Copyright (c) 2010 Rob Clark <rob@ti.com>
+Copyright (c) 2011 Mans Rullgard <mans@mansr.com>
+
+This file is part of FFmpeg.
+
+FFmpeg is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+FFmpeg is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with FFmpeg; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+This code was partially ported from libvpx, which uses this license:
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+
+* Neither the name of Google nor the names of its contributors may
+be used to endorse or promote products derived from this software
+without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+********************************************************************************
+
+libavformat/oggparsespeex.c
+
+Copyright (C) 2008  Reimar Döffinger
+
+      Permission is hereby granted, free of charge, to any person
+      obtaining a copy of this software and associated documentation
+      files (the "Software"), to deal in the Software without
+      restriction, including without limitation the rights to use, copy,
+      modify, merge, publish, distribute, sublicense, and/or sell copies
+      of the Software, and to permit persons to whom the Software is
+      furnished to do so, subject to the following conditions:
+
+      The above copyright notice and this permission notice shall be
+      included in all copies or substantial portions of the Software.
+
+      THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+      EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+      MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+      NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+      HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+      WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+      OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+      DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libavcodec/x86/xvididct.asm
+
+XVID MPEG-4 VIDEO CODEC
+
+ Conversion from gcc syntax to x264asm syntax with modifications
+ by Christophe Gisquet <christophe.gisquet@gmail.com>
+
+ ===========     SSE2 inverse discrete cosine transform     ===========
+
+ Copyright(C) 2003 Pascal Massimino <skal@planet-d.net>
+
+ Conversion to gcc syntax with modifications
+ by Alexander Strange <astrange@ithinksw.com>
+
+ Originally from dct/x86_asm/fdct_sse2_skal.asm in Xvid.
+
+ Vertical pass is an implementation of the scheme:
+  Loeffler C., Ligtenberg A., and Moschytz C.S.:
+  Practical Fast 1D DCT Algorithm with Eleven Multiplications,
+  Proc. ICASSP 1989, 988-991.
+
+ Horizontal pass is a double 4x4 vector/matrix multiplication,
+ (see also Intel's Application Note 922:
+  http://developer.intel.com/vtune/cbts/strmsimd/922down.htm
+  Copyright (C) 1999 Intel Corporation)
+
+ More details at http://skal.planet-d.net/coding/dct.html
+
+ =======     MMX and XMM forward discrete cosine transform     =======
+
+ Copyright(C) 2001 Peter Ross <pross@xvid.org>
+
+ Originally provided by Intel at AP-922
+ http://developer.intel.com/vtune/cbts/strmsimd/922down.htm
+ (See more app notes at http://developer.intel.com/vtune/cbts/strmsimd/appnotes.htm)
+ but in a limited edition.
+ New macro implements a column part for precise iDCT
+ The routine precision now satisfies IEEE standard 1180-1990.
+
+ Copyright(C) 2000-2001 Peter Gubanov <peter@elecard.net.ru>
+ Rounding trick Copyright(C) 2000 Michel Lespinasse <walken@zoy.org>
+
+ http://www.elecard.com/peter/idct.html
+ http://www.linuxvideo.org/mpeg2dec/
+
+ These examples contain code fragments for first stage iDCT 8x8
+ (for rows) and first stage DCT 8x8 (for columns)
+
+ conversion to gcc syntax by Michael Niedermayer
+
+ ======================================================================
+
+ This file is part of FFmpeg.
+
+ FFmpeg is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ FFmpeg is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with FFmpeg; if not, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libavcodec/arm/jrevdct_arm.S
+
+C-like prototype :
+        void j_rev_dct_arm(DCTBLOCK data)
+
+   With DCTBLOCK being a pointer to an array of 64 'signed shorts'
+
+   Copyright (c) 2001 Lionel Ulmer (lionel.ulmer@free.fr / bbrox@bbrox.org)
+
+   Permission is hereby granted, free of charge, to any person obtaining a copy
+   of this software and associated documentation files (the "Software"), to deal
+   in the Software without restriction, including without limitation the rights
+   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+   copies of the Software, and to permit persons to whom the Software is
+   furnished to do so, subject to the following conditions:
+
+   The above copyright notice and this permission notice shall be included in
+   all copies or substantial portions of the Software.
+
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+   COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+   IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+   CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libswresample/version.h
+
+Version macros.
+
+This file is part of libswresample
+
+libswresample is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+libswresample is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with libswresample; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libavcodec/faandct.c
+
+Floating point AAN DCT
+this implementation is based upon the IJG integer AAN DCT (see jfdctfst.c)
+
+Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
+Copyright (c) 2003 Roman Shaposhnik
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+********************************************************************************
+
+libavformat/oggparsetheora.c
+
+Copyright (C) 2005  Matthieu CASTET, Alex Beregszaszi
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+libswresample/swresample.h
+
+Copyright (C) 2011-2013 Michael Niedermayer (michaelni@gmx.at)
+
+This file is part of libswresample
+
+libswresample is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+libswresample is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with libswresample; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+
+********************************************************************************
+
+libavcodec/jfdctfst.c
+libavcodec/jfdctint_template.c
+libavcodec/jrevdct.c
+
+This file is part of the Independent JPEG Group's software.
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and
+you, its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1994-1996, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to
+these conditions:
+(1) If any part of the source code for this software is distributed, then
+this README file must be included, with this copyright and no-warranty
+notice unaltered; and any additions, deletions, or changes to the original
+files must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work
+of the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG
+code, not just to the unmodified library.  If you use our work, you ought
+to acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company
+name in advertising or publicity relating to this software or products
+derived from it.  This software may be referred to only as "the Independent
+JPEG Group's software".
+
+We specifically permit and encourage the use of this software as the basis
+of commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+********************************************************************************
+
+libavcodec/fft_fixed_32.c
+libavcodec/fft_init_table.c
+libavcodec/fft_table.h
+libavcodec/mdct_fixed_32.c
+libavcodec/mips/aacdec_mips.c
+libavcodec/mips/aacdec_mips.h
+libavcodec/mips/aacpsdsp_mips.c
+libavcodec/mips/aacsbr_mips.c
+libavcodec/mips/aacsbr_mips.h
+libavcodec/mips/amrwbdec_mips.h
+libavcodec/mips/compute_antialias_fixed.h
+libavcodec/mips/compute_antialias_float.h
+libavcodec/mips/lsp_mips.h
+libavcodec/mips/sbrdsp_mips.c
+libavutil/fixed_dsp.c
+libavutil/fixed_dsp.h
+libavutil/mips/float_dsp_mips.c
+libavutil/mips/libm_mips.h
+libavutil/softfloat_tables.h
+
+Copyright (c) 2012
+MIPS Technologies, Inc., California.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+3. Neither the name of the MIPS Technologies, Inc., nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE MIPS TECHNOLOGIES, INC. ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE MIPS TECHNOLOGIES, INC. BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+Authors:
+Branimir Vasic   (bvasic@mips.com)
+Darko Laus       (darko@mips.com)
+Djordje Pesut    (djordje@mips.com)
+Goran Cordasic   (goran@mips.com)
+Nedeljko Babic   (nedeljko.babic imgtec com)
+Mirjana Vulin    (mvulin@mips.com)
+Stanislav Ocovaj (socovaj@mips.com)
+Zoran Lukic      (zoranl@mips.com)
+
+********************************************************************************
+
+libavformat/oggdec.c
+libavformat/oggdec.h
+libavformat/oggparseogm.c
+libavformat/oggparsevorbis.c
+
+Copyright (C) 2005  Michael Ahlberg, Måns Rullgård
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+********************************************************************************
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+ +
+fips181 +show license +homepage +
+
Copyright (c) 1999, 2000, 2001, 2002
+Adel I. Mirzazhanov. All rights reserved
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+ 
+     1.Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer. 
+     2.Redistributions in binary form must reproduce the above copyright
+       notice, this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution. 
+     3.The name of the author may not be used to endorse or promote products
+       derived from this software without specific prior written permission. 
+ 		  
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR  ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING,  BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN  NO  EVENT  SHALL THE AUTHOR BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO,  PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES;  LOSS OF USE,  DATA,  OR  PROFITS;  OR BUSINESS
+INTERRUPTION)  HOWEVER  CAUSED  AND  ON  ANY  THEORY OF LIABILITY,
+WHETHER  IN  CONTRACT,   STRICT   LIABILITY,  OR  TORT  (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+		  
+
+
+ +
+flac +show license +homepage +
+
Copyright (C) 2000-2009  Josh Coalson
+Copyright (C) 2011-2014  Xiph.Org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+fontconfig +show license +homepage +
+
fontconfig/COPYING
+
+Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard
+Copyright © 2005 Patrick Lam
+Copyright © 2009 Roozbeh Pournader
+Copyright © 2008,2009 Red Hat, Inc.
+Copyright © 2008 Danilo Šegan
+Copyright © 2012 Google, Inc.
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of the author(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  The authors make no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
+
+
+
+ +
+gRPC, an RPC library and framework +show license +homepage +
+
Copyright 2015, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+google-glog's symbolization library +show license +homepage +
+
// Copyright (c) 2006, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+google-jstemplate +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+harfbuzz-ng +show license +homepage +
+
HarfBuzz is licensed under the so-called "Old MIT" license.  Details follow.
+For parts of HarfBuzz that are licensed under different licenses see individual
+files names COPYING in subdirectories where applicable.
+
+Copyright © 2010,2011,2012  Google, Inc.
+Copyright © 2012  Mozilla Foundation
+Copyright © 2011  Codethink Limited
+Copyright © 2008,2010  Nokia Corporation and/or its subsidiary(-ies)
+Copyright © 2009  Keith Stribley
+Copyright © 2009  Martin Hosken and SIL International
+Copyright © 2007  Chris Wilson
+Copyright © 2006  Behdad Esfahbod
+Copyright © 2005  David Turner
+Copyright © 2004,2007,2008,2009,2010  Red Hat, Inc.
+Copyright © 1998-2004  David Turner and Werner Lemberg
+
+For full copyright notices consult the individual files in the package.
+
+
+Permission is hereby granted, without written agreement and without
+license or royalty fees, to use, copy, modify, and distribute this
+software and its documentation for any purpose, provided that the
+above copyright notice and the following two paragraphs appear in
+all copies of this software.
+
+IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
+DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
+ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
+IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
+
+THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
+ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
+PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+
+
+ +
+hunspell +show license +homepage +
+
GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
+
+The contents of this software may be used under the terms of
+the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
+see COPYING.LGPL) or (excepting the LGPLed GNU gettext library in the
+intl/ directory) the Mozilla Public License Version 1.1 or later
+(the "MPL", see COPYING.MPL).
+
+Software distributed under these licenses is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
+for the specific language governing rights and limitations under the licenses.
+
+
+
+ +
+iccjpeg +show license +homepage +
+
(Copied from the README.)
+
+--------------------------------------------------------------------------------
+
+LICENSE extracted from IJG's jpeg distribution:
+-----------------------------------------------
+
+In plain English:
+
+1. We don't promise that this software works.  (But if you find any bugs,
+   please let us know!)
+2. You can use this software for whatever you want.  You don't have to pay us.
+3. You may not pretend that you wrote this software.  If you use it in a
+   program, you must acknowledge somewhere in your documentation that
+   you've used the IJG code.
+
+In legalese:
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+
+
+ +
+icu +show license +homepage +
+
COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later)
+
+Copyright © 1991-2016 Unicode, Inc. All rights reserved.
+Distributed under the Terms of Use in http://www.unicode.org/copyright.html
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Unicode data files and any associated documentation
+(the "Data Files") or Unicode software and any associated documentation
+(the "Software") to deal in the Data Files or Software
+without restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, and/or sell copies of
+the Data Files or Software, and to permit persons to whom the Data Files
+or Software are furnished to do so, provided that either
+(a) this copyright and permission notice appear with all copies
+of the Data Files or Software, or
+(b) this copyright and permission notice appear in associated
+Documentation.
+
+THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
+ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT OF THIRD PARTY RIGHTS.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
+NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
+DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THE DATA FILES OR SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale,
+use or other dealings in these Data Files or Software without prior
+written authorization of the copyright holder.
+
+---------------------
+
+Third-Party Software Licenses
+
+This section contains third-party software notices and/or additional
+terms for licensed third-party software components included within ICU
+libraries.
+
+1. ICU License - ICU 1.8.1 to ICU 57.1
+
+COPYRIGHT AND PERMISSION NOTICE
+
+Copyright (c) 1995-2016 International Business Machines Corporation and others
+All rights reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, and/or sell copies of the Software, and to permit persons
+to whom the Software is furnished to do so, provided that the above
+copyright notice(s) and this permission notice appear in all copies of
+the Software and that both the above copyright notice(s) and this
+permission notice appear in supporting documentation.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
+HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY
+SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER
+RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
+CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+Except as contained in this notice, the name of a copyright holder
+shall not be used in advertising or otherwise to promote the sale, use
+or other dealings in this Software without prior written authorization
+of the copyright holder.
+
+All trademarks and registered trademarks mentioned herein are the
+property of their respective owners.
+
+2. Chinese/Japanese Word Break Dictionary Data (cjdict.txt)
+
+ #     The Google Chrome software developed by Google is licensed under
+ # the BSD license. Other software included in this distribution is
+ # provided under other licenses, as set forth below.
+ #
+ #  The BSD License
+ #  http://opensource.org/licenses/bsd-license.php
+ #  Copyright (C) 2006-2008, Google Inc.
+ #
+ #  All rights reserved.
+ #
+ #  Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are met:
+ #
+ #  Redistributions of source code must retain the above copyright notice,
+ # this list of conditions and the following disclaimer.
+ #  Redistributions in binary form must reproduce the above
+ # copyright notice, this list of conditions and the following
+ # disclaimer in the documentation and/or other materials provided with
+ # the distribution.
+ #  Neither the name of  Google Inc. nor the names of its
+ # contributors may be used to endorse or promote products derived from
+ # this software without specific prior written permission.
+ #
+ #
+ #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ # CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+ # BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ # LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ # NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ #
+ #
+ #  The word list in cjdict.txt are generated by combining three word lists
+ # listed below with further processing for compound word breaking. The
+ # frequency is generated with an iterative training against Google web
+ # corpora.
+ #
+ #  * Libtabe (Chinese)
+ #    - https://sourceforge.net/project/?group_id=1519
+ #    - Its license terms and conditions are shown below.
+ #
+ #  * IPADIC (Japanese)
+ #    - http://chasen.aist-nara.ac.jp/chasen/distribution.html
+ #    - Its license terms and conditions are shown below.
+ #
+ #  ---------COPYING.libtabe ---- BEGIN--------------------
+ #
+ #  /*
+ #   * Copyrighy (c) 1999 TaBE Project.
+ #   * Copyright (c) 1999 Pai-Hsiang Hsiao.
+ #   * All rights reserved.
+ #   *
+ #   * Redistribution and use in source and binary forms, with or without
+ #   * modification, are permitted provided that the following conditions
+ #   * are met:
+ #   *
+ #   * . Redistributions of source code must retain the above copyright
+ #   *   notice, this list of conditions and the following disclaimer.
+ #   * . Redistributions in binary form must reproduce the above copyright
+ #   *   notice, this list of conditions and the following disclaimer in
+ #   *   the documentation and/or other materials provided with the
+ #   *   distribution.
+ #   * . Neither the name of the TaBE Project nor the names of its
+ #   *   contributors may be used to endorse or promote products derived
+ #   *   from this software without specific prior written permission.
+ #   *
+ #   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ #   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ #   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ #   * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ #   * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ #   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ #   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ #   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ #   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ #   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ #   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ #   * OF THE POSSIBILITY OF SUCH DAMAGE.
+ #   */
+ #
+ #  /*
+ #   * Copyright (c) 1999 Computer Systems and Communication Lab,
+ #   *                    Institute of Information Science, Academia
+ #       *                    Sinica. All rights reserved.
+ #   *
+ #   * Redistribution and use in source and binary forms, with or without
+ #   * modification, are permitted provided that the following conditions
+ #   * are met:
+ #   *
+ #   * . Redistributions of source code must retain the above copyright
+ #   *   notice, this list of conditions and the following disclaimer.
+ #   * . Redistributions in binary form must reproduce the above copyright
+ #   *   notice, this list of conditions and the following disclaimer in
+ #   *   the documentation and/or other materials provided with the
+ #   *   distribution.
+ #   * . Neither the name of the Computer Systems and Communication Lab
+ #   *   nor the names of its contributors may be used to endorse or
+ #   *   promote products derived from this software without specific
+ #   *   prior written permission.
+ #   *
+ #   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ #   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ #   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ #   * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ #   * REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ #   * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ #   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ #   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ #   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ #   * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ #   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ #   * OF THE POSSIBILITY OF SUCH DAMAGE.
+ #   */
+ #
+ #  Copyright 1996 Chih-Hao Tsai @ Beckman Institute,
+ #      University of Illinois
+ #  c-tsai4@uiuc.edu  http://casper.beckman.uiuc.edu/~c-tsai4
+ #
+ #  ---------------COPYING.libtabe-----END--------------------------------
+ #
+ #
+ #  ---------------COPYING.ipadic-----BEGIN-------------------------------
+ #
+ #  Copyright 2000, 2001, 2002, 2003 Nara Institute of Science
+ #  and Technology.  All Rights Reserved.
+ #
+ #  Use, reproduction, and distribution of this software is permitted.
+ #  Any copy of this software, whether in its original form or modified,
+ #  must include both the above copyright notice and the following
+ #  paragraphs.
+ #
+ #  Nara Institute of Science and Technology (NAIST),
+ #  the copyright holders, disclaims all warranties with regard to this
+ #  software, including all implied warranties of merchantability and
+ #  fitness, in no event shall NAIST be liable for
+ #  any special, indirect or consequential damages or any damages
+ #  whatsoever resulting from loss of use, data or profits, whether in an
+ #  action of contract, negligence or other tortuous action, arising out
+ #  of or in connection with the use or performance of this software.
+ #
+ #  A large portion of the dictionary entries
+ #  originate from ICOT Free Software.  The following conditions for ICOT
+ #  Free Software applies to the current dictionary as well.
+ #
+ #  Each User may also freely distribute the Program, whether in its
+ #  original form or modified, to any third party or parties, PROVIDED
+ #  that the provisions of Section 3 ("NO WARRANTY") will ALWAYS appear
+ #  on, or be attached to, the Program, which is distributed substantially
+ #  in the same form as set out herein and that such intended
+ #  distribution, if actually made, will neither violate or otherwise
+ #  contravene any of the laws and regulations of the countries having
+ #  jurisdiction over the User or the intended distribution itself.
+ #
+ #  NO WARRANTY
+ #
+ #  The program was produced on an experimental basis in the course of the
+ #  research and development conducted during the project and is provided
+ #  to users as so produced on an experimental basis.  Accordingly, the
+ #  program is provided without any warranty whatsoever, whether express,
+ #  implied, statutory or otherwise.  The term "warranty" used herein
+ #  includes, but is not limited to, any warranty of the quality,
+ #  performance, merchantability and fitness for a particular purpose of
+ #  the program and the nonexistence of any infringement or violation of
+ #  any right of any third party.
+ #
+ #  Each user of the program will agree and understand, and be deemed to
+ #  have agreed and understood, that there is no warranty whatsoever for
+ #  the program and, accordingly, the entire risk arising from or
+ #  otherwise connected with the program is assumed by the user.
+ #
+ #  Therefore, neither ICOT, the copyright holder, or any other
+ #  organization that participated in or was otherwise related to the
+ #  development of the program and their respective officials, directors,
+ #  officers and other employees shall be held liable for any and all
+ #  damages, including, without limitation, general, special, incidental
+ #  and consequential damages, arising out of or otherwise in connection
+ #  with the use or inability to use the program or any product, material
+ #  or result produced or otherwise obtained by using the program,
+ #  regardless of whether they have been advised of, or otherwise had
+ #  knowledge of, the possibility of such damages at any time during the
+ #  project or thereafter.  Each user will be deemed to have agreed to the
+ #  foregoing by his or her commencement of use of the program.  The term
+ #  "use" as used herein includes, but is not limited to, the use,
+ #  modification, copying and distribution of the program and the
+ #  production of secondary products from the program.
+ #
+ #  In the case where the program, whether in its original form or
+ #  modified, was distributed or delivered to or received by a user from
+ #  any person, organization or entity other than ICOT, unless it makes or
+ #  grants independently of ICOT any specific warranty to the user in
+ #  writing, such person, organization or entity, will also be exempted
+ #  from and not be held liable to the user for any such damages as noted
+ #  above as far as the program is concerned.
+ #
+ #  ---------------COPYING.ipadic-----END----------------------------------
+
+3. Lao Word Break Dictionary Data (laodict.txt)
+
+ #  Copyright (c) 2013 International Business Machines Corporation
+ #  and others. All Rights Reserved.
+ #
+ # Project: http://code.google.com/p/lao-dictionary/
+ # Dictionary: http://lao-dictionary.googlecode.com/git/Lao-Dictionary.txt
+ # License: http://lao-dictionary.googlecode.com/git/Lao-Dictionary-LICENSE.txt
+ #              (copied below)
+ #
+ #  This file is derived from the above dictionary, with slight
+ #  modifications.
+ #  ----------------------------------------------------------------------
+ #  Copyright (C) 2013 Brian Eugene Wilson, Robert Martin Campbell.
+ #  All rights reserved.
+ #
+ #  Redistribution and use in source and binary forms, with or without
+ #  modification,
+ #  are permitted provided that the following conditions are met:
+ #
+ #
+ # Redistributions of source code must retain the above copyright notice, this
+ #  list of conditions and the following disclaimer. Redistributions in
+ #  binary form must reproduce the above copyright notice, this list of
+ #  conditions and the following disclaimer in the documentation and/or
+ #  other materials provided with the distribution.
+ #
+ #
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ # INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ # STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ # OF THE POSSIBILITY OF SUCH DAMAGE.
+ #  --------------------------------------------------------------------------
+
+4. Burmese Word Break Dictionary Data (burmesedict.txt)
+
+ #  Copyright (c) 2014 International Business Machines Corporation
+ #  and others. All Rights Reserved.
+ #
+ #  This list is part of a project hosted at:
+ #    github.com/kanyawtech/myanmar-karen-word-lists
+ #
+ #  --------------------------------------------------------------------------
+ #  Copyright (c) 2013, LeRoy Benjamin Sharon
+ #  All rights reserved.
+ #
+ #  Redistribution and use in source and binary forms, with or without
+ #  modification, are permitted provided that the following conditions
+ #  are met: Redistributions of source code must retain the above
+ #  copyright notice, this list of conditions and the following
+ #  disclaimer.  Redistributions in binary form must reproduce the
+ #  above copyright notice, this list of conditions and the following
+ #  disclaimer in the documentation and/or other materials provided
+ #  with the distribution.
+ #
+ #    Neither the name Myanmar Karen Word Lists, nor the names of its
+ #    contributors may be used to endorse or promote products derived
+ #    from this software without specific prior written permission.
+ #
+ #  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+ #  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ #  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ #  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ #  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
+ #  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ #  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ #  TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ #  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ #  ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
+ #  TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
+ #  THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ #  SUCH DAMAGE.
+ #  --------------------------------------------------------------------------
+
+5. Time Zone Database
+
+  ICU uses the public domain data and code derived from Time Zone
+Database for its time zone support. The ownership of the TZ database
+is explained in BCP 175: Procedure for Maintaining the Time Zone
+Database section 7.
+
+ # 7.  Database Ownership
+ #
+ #    The TZ database itself is not an IETF Contribution or an IETF
+ #    document.  Rather it is a pre-existing and regularly updated work
+ #    that is in the public domain, and is intended to remain in the
+ #    public domain.  Therefore, BCPs 78 [RFC5378] and 79 [RFC3979] do
+ #    not apply to the TZ Database or contributions that individuals make
+ #    to it.  Should any claims be made and substantiated against the TZ
+ #    Database, the organization that is providing the IANA
+ #    Considerations defined in this RFC, under the memorandum of
+ #    understanding with the IETF, currently ICANN, may act in accordance
+ #    with all competent court orders.  No ownership claims will be made
+ #    by ICANN or the IETF Trust on the database or the code.  Any person
+ #    making a contribution to the database or code waives all rights to
+ #    future claims in that contribution or in the TZ Database.
+
+
+
+ +
+inspector protocol +show license +homepage +
+
// Copyright 2016 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+jsoncpp +show license +homepage +
+
The JsonCpp library's source code, including accompanying documentation, 
+tests and demonstration applications, are licensed under the following
+conditions...
+
+The author (Baptiste Lepilleur) explicitly disclaims copyright in all 
+jurisdictions which recognize such a disclaimer. In such jurisdictions, 
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur, and is
+released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this 
+software may choose to accept it either as 1) Public Domain, 2) under the 
+conditions of the MIT License (see below), or 3) under the terms of dual 
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+   http://en.wikipedia.org/wiki/MIT_License
+   
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+
+
+ +
+libFuzzer +show license +homepage +
+
==============================================================================
+LLVM Release License
+==============================================================================
+University of Illinois/NCSA
+Open Source License
+
+Copyright (c) 2003-2015 University of Illinois at Urbana-Champaign.
+All rights reserved.
+
+Developed by:
+
+    LLVM Team
+
+    University of Illinois at Urbana-Champaign
+
+    http://llvm.org
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal with
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimers.
+
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimers in the
+      documentation and/or other materials provided with the distribution.
+
+    * Neither the names of the LLVM Team, University of Illinois at
+      Urbana-Champaign, nor the names of its contributors may be used to
+      endorse or promote products derived from this Software without specific
+      prior written permission.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE
+SOFTWARE.
+
+==============================================================================
+Copyrights and Licenses for Third Party Software Distributed with LLVM:
+==============================================================================
+The LLVM software contains code written by third parties.  Such software will
+have its own individual LICENSE.TXT file in the directory in which it appears.
+This file will describe the copyrights, license, and restrictions which apply
+to that code.
+
+The disclaimer of warranty in the University of Illinois Open Source License
+applies to all code in the LLVM Distribution, and nothing in any of the
+other licenses gives permission to use the names of the LLVM Team or the
+University of Illinois to endorse or promote products derived from this
+Software.
+
+The following pieces of software have additional or alternate copyrights,
+licenses, and/or restrictions:
+
+Program             Directory
+-------             ---------
+Autoconf            llvm/autoconf
+                    llvm/projects/ModuleMaker/autoconf
+Google Test         llvm/utils/unittest/googletest
+OpenBSD regex       llvm/lib/Support/{reg*, COPYRIGHT.regex}
+pyyaml tests        llvm/test/YAMLParser/{*.data, LICENSE.TXT}
+ARM contributions   llvm/lib/Target/ARM/LICENSE.TXT
+md5 contributions   llvm/lib/Support/MD5.cpp llvm/include/llvm/Support/MD5.h
+
+
+
+ +
+libevent +show license +homepage +
+
Libevent is available for use under the following license, commonly known
+as the 3-clause (or "modified") BSD license:
+
+==============================
+Copyright (c) 2000-2007 Niels Provos <provos@citi.umich.edu>
+Copyright (c) 2007-2010 Niels Provos and Nick Mathewson
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+3. The name of the author may not be used to endorse or promote products
+   derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+==============================
+
+Portions of Libevent are based on works by others, also made available by
+them under the three-clause BSD license above.  The copyright notices are
+available in the corresponding source files; the license is as above.  Here's
+a list:
+
+log.c:
+   Copyright (c) 2000 Dug Song <dugsong@monkey.org>
+   Copyright (c) 1993 The Regents of the University of California.
+
+strlcpy.c:
+   Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
+
+win32.c:
+   Copyright (c) 2003 Michael A. Davis <mike@datanerds.net>
+
+evport.c:
+   Copyright (c) 2007 Sun Microsystems
+
+min_heap.h:
+   Copyright (c) 2006 Maxim Yegorushkin <maxim.yegorushkin@gmail.com>
+
+tree.h:
+   Copyright 2002 Niels Provos <provos@citi.umich.edu>
+
+
+
+ +
+libjingle +show license +homepage +
+
Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+libjpeg +show license +homepage +
+
(Copied from the README.)
+
+--------------------------------------------------------------------------------
+
+The authors make NO WARRANTY or representation, either express or implied,
+with respect to this software, its quality, accuracy, merchantability, or
+fitness for a particular purpose.  This software is provided "AS IS", and you,
+its user, assume the entire risk as to its quality and accuracy.
+
+This software is copyright (C) 1991-1998, Thomas G. Lane.
+All Rights Reserved except as specified below.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+software (or portions thereof) for any purpose, without fee, subject to these
+conditions:
+(1) If any part of the source code for this software is distributed, then this
+README file must be included, with this copyright and no-warranty notice
+unaltered; and any additions, deletions, or changes to the original files
+must be clearly indicated in accompanying documentation.
+(2) If only executable code is distributed, then the accompanying
+documentation must state that "this software is based in part on the work of
+the Independent JPEG Group".
+(3) Permission for use of this software is granted only if the user accepts
+full responsibility for any undesirable consequences; the authors accept
+NO LIABILITY for damages of any kind.
+
+These conditions apply to any software derived from or based on the IJG code,
+not just to the unmodified library.  If you use our work, you ought to
+acknowledge us.
+
+Permission is NOT granted for the use of any IJG author's name or company name
+in advertising or publicity relating to this software or products derived from
+it.  This software may be referred to only as "the Independent JPEG Group's
+software".
+
+We specifically permit and encourage the use of this software as the basis of
+commercial products, provided that all warranty or liability claims are
+assumed by the product vendor.
+
+
+ansi2knr.c is included in this distribution by permission of L. Peter Deutsch,
+sole proprietor of its copyright holder, Aladdin Enterprises of Menlo Park, CA.
+ansi2knr.c is NOT covered by the above copyright and conditions, but instead
+by the usual distribution terms of the Free Software Foundation; principally,
+that you must include source code if you redistribute it.  (See the file
+ansi2knr.c for full details.)  However, since ansi2knr.c is not needed as part
+of any program generated from the IJG code, this does not limit you more than
+the foregoing paragraphs do.
+
+The Unix configuration script "configure" was produced with GNU Autoconf.
+It is copyright by the Free Software Foundation but is freely distributable.
+The same holds for its supporting scripts (config.guess, config.sub,
+ltconfig, ltmain.sh).  Another support script, install-sh, is copyright
+by M.I.T. but is also freely distributable.
+
+It appears that the arithmetic coding option of the JPEG spec is covered by
+patents owned by IBM, AT&T, and Mitsubishi.  Hence arithmetic coding cannot
+legally be used without obtaining one or more licenses.  For this reason,
+support for arithmetic coding has been removed from the free JPEG software.
+(Since arithmetic coding provides only a marginal gain over the unpatented
+Huffman mode, it is unlikely that very many implementations will support it.)
+So far as we are aware, there are no patent restrictions on the remaining
+code.
+
+The IJG distribution formerly included code to read and write GIF files.
+To avoid entanglement with the Unisys LZW patent, GIF reading support has
+been removed altogether, and the GIF writer has been simplified to produce
+"uncompressed GIFs".  This technique does not use the LZW algorithm; the
+resulting GIF files are larger than usual, but are readable by all standard
+GIF decoders.
+
+We are required to state that
+    "The Graphics Interchange Format(c) is the Copyright property of
+    CompuServe Incorporated.  GIF(sm) is a Service Mark property of
+    CompuServe Incorporated."
+
+--------------------------------------------------------------------------------
+
+jconfig.h is distributed under the MPL 1.1/GPL 2.0/LGPL 2.1 tri-license.
+
+jmorecfg.h contains modifications, which are distributed under the Netscape
+Public License.
+
+
+
+ +
+libjpeg-turbo +show license +homepage +
+
libjpeg-turbo Licenses
+======================
+
+libjpeg-turbo is covered by three compatible BSD-style open source licenses:
+
+- The IJG (Independent JPEG Group) License, which is listed in
+  [README.ijg](README.ijg)
+
+  This license applies to the libjpeg API library and associated programs
+  (any code inherited from libjpeg, and any modifications to that code.)
+
+- The Modified (3-clause) BSD License, which is listed in
+  [turbojpeg.c](turbojpeg.c)
+
+  This license covers the TurboJPEG API library and associated programs.
+
+- The zlib License, which is listed in [simd/jsimdext.inc](simd/jsimdext.inc)
+
+  This license is a subset of the other two, and it covers the libjpeg-turbo
+  SIMD extensions.
+
+
+Complying with the libjpeg-turbo Licenses
+=========================================
+
+This section provides a roll-up of the libjpeg-turbo licensing terms, to the
+best of our understanding.
+
+1.  If you are distributing a modified version of the libjpeg-turbo source,
+    then:
+
+    1.  You cannot alter or remove any existing copyright or license notices
+        from the source.
+
+        **Origin**
+        - Clause 1 of the IJG License
+        - Clause 1 of the Modified BSD License
+        - Clauses 1 and 3 of the zlib License
+
+    2.  You must add your own copyright notice to the header of each source
+        file you modified, so others can tell that you modified that file (if
+        there is not an existing copyright header in that file, then you can
+        simply add a notice stating that you modified the file.)
+
+        **Origin**
+        - Clause 1 of the IJG License
+        - Clause 2 of the zlib License
+
+    3.  You must include the IJG README file, and you must not alter any of the
+        copyright or license text in that file.
+
+        **Origin**
+        - Clause 1 of the IJG License
+
+2.  If you are distributing only libjpeg-turbo binaries without the source, or
+    if you are distributing an application that statically links with
+    libjpeg-turbo, then:
+
+    1.  Your product documentation must include a message stating:
+
+        This software is based in part on the work of the Independent JPEG
+        Group.
+
+        **Origin**
+        - Clause 2 of the IJG license
+
+    2.  If your binary distribution includes or uses the TurboJPEG API, then
+        your product documentation must include the text of the Modified BSD
+        License.
+
+        **Origin**
+        - Clause 2 of the Modified BSD License
+
+3.  You cannot use the name of the IJG or The libjpeg-turbo Project or the
+    contributors thereof in advertising, publicity, etc.
+
+    **Origin**
+    - IJG License
+    - Clause 3 of the Modified BSD License
+
+4.  The IJG and The libjpeg-turbo Project do not warrant libjpeg-turbo to be
+    free of defects, nor do we accept any liability for undesirable
+    consequences resulting from your use of the software.
+
+    **Origin**
+    - IJG License
+    - Modified BSD License
+    - zlib License
+
+
+
+ +
+libpng +show license +homepage +
+
+This copy of the libpng notices is provided for your convenience.  In case of
+any discrepancy between this copy and the notices in the file png.h that is
+included in the libpng distribution, the latter shall prevail.
+
+COPYRIGHT NOTICE, DISCLAIMER, and LICENSE:
+
+If you modify libpng you may insert additional notices immediately following
+this sentence.
+
+Using custom versions of pnglibconf.h and pngprefix.h for Chrome.
+
+This code is released under the libpng license.
+
+libpng versions 1.0.7, July 1, 2000 through 1.6.22, May 26, 2016 are
+Copyright (c) 2000-2002, 2004, 2006-2016 Glenn Randers-Pehrson, are
+derived from libpng-1.0.6, and are distributed according to the same
+disclaimer and license as libpng-1.0.6 with the following individuals
+added to the list of Contributing Authors:
+
+   Simon-Pierre Cadieux
+   Eric S. Raymond
+   Mans Rullgard
+   Cosmin Truta
+   Gilles Vollant
+   James Yu
+
+and with the following additions to the disclaimer:
+
+   There is no warranty against interference with your enjoyment of the
+   library or against infringement.  There is no warranty that our
+   efforts or the library will fulfill any of your particular purposes
+   or needs.  This library is provided with all faults, and the entire
+   risk of satisfactory quality, performance, accuracy, and effort is with
+   the user.
+
+Some files in the "contrib" directory and some configure-generated
+files that are distributed with libpng have other copyright owners and
+are released under other open source licenses.
+
+libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are
+Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from
+libpng-0.96, and are distributed according to the same disclaimer and
+license as libpng-0.96, with the following individuals added to the list
+of Contributing Authors:
+
+   Tom Lane
+   Glenn Randers-Pehrson
+   Willem van Schaik
+
+libpng versions 0.89, June 1996, through 0.96, May 1997, are
+Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88,
+and are distributed according to the same disclaimer and license as
+libpng-0.88, with the following individuals added to the list of
+Contributing Authors:
+
+   John Bowler
+   Kevin Bracey
+   Sam Bushell
+   Magnus Holmgren
+   Greg Roelofs
+   Tom Tanner
+
+Some files in the "scripts" directory have other copyright owners
+but are released under this license.
+
+libpng versions 0.5, May 1995, through 0.88, January 1996, are
+Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc.
+
+For the purposes of this copyright and license, "Contributing Authors"
+is defined as the following set of individuals:
+
+   Andreas Dilger
+   Dave Martindale
+   Guy Eric Schalnat
+   Paul Schmidt
+   Tim Wegner
+
+The PNG Reference Library is supplied "AS IS".  The Contributing Authors
+and Group 42, Inc. disclaim all warranties, expressed or implied,
+including, without limitation, the warranties of merchantability and of
+fitness for any purpose.  The Contributing Authors and Group 42, Inc.
+assume no liability for direct, indirect, incidental, special, exemplary,
+or consequential damages, which may result from the use of the PNG
+Reference Library, even if advised of the possibility of such damage.
+
+Permission is hereby granted to use, copy, modify, and distribute this
+source code, or portions hereof, for any purpose, without fee, subject
+to the following restrictions:
+
+  1. The origin of this source code must not be misrepresented.
+
+  2. Altered versions must be plainly marked as such and must not
+     be misrepresented as being the original source.
+
+  3. This Copyright notice may not be removed or altered from any
+     source or altered source distribution.
+
+The Contributing Authors and Group 42, Inc. specifically permit, without
+fee, and encourage the use of this source code as a component to
+supporting the PNG file format in commercial products.  If you use this
+source code in a product, acknowledgment is not required but would be
+appreciated.
+
+END OF COPYRIGHT NOTICE, DISCLAIMER, and LICENSE.
+
+TRADEMARK:
+
+The name "libpng" has not been registered by the Copyright owner
+as a trademark in any jurisdiction.  However, because libpng has
+been distributed and maintained world-wide, continually since 1995,
+the Copyright owner claims "common-law trademark protection" in any
+jurisdiction where common-law trademark is recognized.
+
+OSI CERTIFICATION:
+
+Libpng is OSI Certified Open Source Software.  OSI Certified Open Source is
+a certification mark of the Open Source Initiative. OSI has not addressed
+the additional disclaimers inserted at version 1.0.7.
+
+EXPORT CONTROL:
+
+The Copyright owner believes that the Export Control Classification
+Number (ECCN) for libpng is EAR99, which means not subject to export
+controls or International Traffic in Arms Regulations (ITAR) because
+it is open source, publicly available software, that does not contain
+any encryption software.  See the EAR, paragraphs 734.3(b)(3) and
+734.7(b).
+
+Glenn Randers-Pehrson
+glennrp at users.sourceforge.net
+May 26, 2016
+
+
+
+ +
+libsecret +show license +homepage +
+
                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+ +
+libsrtp +show license +homepage +
+
/*
+ *	
+ * Copyright (c) 2001-2006 Cisco Systems, Inc.
+ * All rights reserved.
+ * 
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * 
+ *   Redistributions in binary form must reproduce the above
+ *   copyright notice, this list of conditions and the following
+ *   disclaimer in the documentation and/or other materials provided
+ *   with the distribution.
+ * 
+ *   Neither the name of the Cisco Systems, Inc. nor the names of its
+ *   contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+ * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+
+
+ +
+libudev +show license +homepage +
+
                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+ +
+libusbx +show license +homepage +
+
		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+
+
+ +
+libva +show license +homepage +
+
    Permission is hereby granted, free of charge, to any person obtaining a
+    copy of this software and associated documentation files (the
+    "Software"), to deal in the Software without restriction, including
+    without limitation the rights to use, copy, modify, merge, publish,
+    distribute, sub license, and/or sell copies of the Software, and to
+    permit persons to whom the Software is furnished to do so, subject to
+    the following conditions:
+
+    The above copyright notice and this permission notice (including the
+    next paragraph) shall be included in all copies or substantial portions
+    of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+    OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
+    IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
+    ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+    TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+    SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+libvpx +show license +homepage +
+
Copyright (c) 2010, The WebM Project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google, nor the WebM Project, nor the names
+    of its contributors may be used to endorse or promote products
+    derived from this software without specific prior written
+    permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+
+ +
+libxml +show license +homepage +
+
Except where otherwise noted in the source code (e.g. the files hash.c,
+list.c and the trio files, which are covered by a similar licence but
+with different Copyright notices) all the files are:
+
+ Copyright (C) 1998-2012 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+
+
+ +
+libxslt +show license +homepage +
+
Licence for libxslt except libexslt
+----------------------------------------------------------------------
+ Copyright (C) 2001-2002 Daniel Veillard.  All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+DANIEL VEILLARD BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of Daniel Veillard shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
+
+----------------------------------------------------------------------
+
+Licence for libexslt
+----------------------------------------------------------------------
+ Copyright (C) 2001-2002 Thomas Broyer, Charlie Bozeman and Daniel Veillard.
+ All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is fur-
+nished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
+NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON-
+NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of the authors shall not
+be used in advertising or otherwise to promote the sale, use or other deal-
+ings in this Software without prior written authorization from him.
+----------------------------------------------------------------------
+
+
+
+ +
+libyuv +show license +homepage +
+
Copyright 2011 The LibYuv Project Authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+linux-syscall-support +show license +homepage +
+
// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+logilab +show license +homepage +
+
		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
+
+
+
+ +
+mach_override +show license +homepage +
+
Copyright (c) 2003-2012 Jonathan 'Wolf' Rentzsch: http://rentzsch.com
+Some rights reserved: http://opensource.org/licenses/mit
+
+mach_override includes a copy of libudis86, licensed as follows:
+
+Copyright (c) 2002-2009 Vivek Thampi
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, 
+are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice, 
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice, 
+      this list of conditions and the following disclaimer in the documentation 
+      and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR 
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+mesa +show license +homepage +
+
The default Mesa license is as follows:
+
+Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+Some parts of Mesa are copyrighted under the GNU LGPL.  See the
+Mesa/docs/COPYRIGHT file for details.
+
+The following is the standard GNU copyright file.
+----------------------------------------------------------------------
+
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+
+		  GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License").  Each licensee is
+addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    c) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    d) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+     Appendix: How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+
+ +
+minigbm +show license +homepage +
+
// Copyright 2014 The Chromium OS Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+modp base64 decoder +show license +homepage +
+
 * MODP_B64 - High performance base64 encoder/decoder
+ * Version 1.3 -- 17-Mar-2006
+ * http://modp.com/release/base64
+ *
+ * Copyright (c) 2005, 2006  Nick Galbreath -- nickg [at] modp [dot] com
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ *   Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ *
+ *   Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ *
+ *   Neither the name of the modp.com nor the names of its
+ *   contributors may be used to endorse or promote products derived from
+ *   this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+mt19937ar +show license +homepage +
+
   A C-program for MT19937, with initialization improved 2002/1/26.
+   Coded by Takuji Nishimura and Makoto Matsumoto.
+
+   Before using, initialize the state by using init_genrand(seed)  
+   or init_by_array(init_key, key_length).
+
+   Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura,
+   All rights reserved.                          
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+     1. Redistributions of source code must retain the above copyright
+        notice, this list of conditions and the following disclaimer.
+
+     2. Redistributions in binary form must reproduce the above copyright
+        notice, this list of conditions and the following disclaimer in the
+        documentation and/or other materials provided with the distribution.
+
+     3. The names of its contributors may not be used to endorse or promote 
+        products derived from this software without specific prior written 
+        permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+   A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+   PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+   LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+native client +show license +homepage +
+
Copyright 2008, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+newlib-extras +show license +homepage +
+
                        README for newlib-2.0.0 release
+           (mostly cribbed from the README in the gdb-4.13 release)
+
+This is `newlib', a simple ANSI C library, math library, and collection
+of board support packages.
+
+The newlib and libgloss subdirectories are a collection of software from
+several sources, each wi6h their own copyright and license.  See the file
+COPYING.NEWLIB for details.  The rest of the release tree is under either
+the GNU GPL or LGPL licenses.
+
+THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+
+
+Unpacking and Installation -- quick overview
+==========================
+
+When you unpack the newlib-2.0.0.tar.gz file, you'll find a directory
+called `newlib-2.0.0', which contains:
+
+COPYING          config/          install-sh*      mpw-configure
+COPYING.LIB      config-ml.in     libgloss/        mpw-install
+COPYING.NEWLIB   config.guess*    mkinstalldirs*   newlib/
+CYGNUS           config.sub*      move-if-change*  symlink-tree*
+ChangeLog        configure*       mpw-README       texinfo/
+Makefile.in      configure.in     mpw-build.in
+README           etc/             mpw-config.in
+
+To build NEWLIB, you must follow the instructions in the section entitled
+"Compiling NEWLIB".
+
+This will configure and build all the libraries and crt0 (if one exists).
+If `configure' can't determine your host system type, specify one as its
+argument, e.g., sun4 or sun4sol2.  NEWLIB is most often used in cross
+environments.
+
+NOTE THAT YOU MUST HAVE ALREADY BUILT AND INSTALLED GCC and BINUTILS.
+
+
+More Documentation
+==================
+
+   Newlib documentation is available on the net via:
+   http://sourceware.org/newlib/docs.html
+
+   All the documentation for NEWLIB comes as part of the machine-readable
+distribution.  The documentation is written in Texinfo format, which is
+a documentation system that uses a single source file to produce both
+on-line information and a printed manual.  You can use one of the Info
+formatting commands to create the on-line version of the documentation
+and TeX (or `texi2roff') to typeset the printed version.
+
+   If you want to format these Info files yourself, you need one of the
+Info formatting programs, such as `texinfo-format-buffer' or `makeinfo'.
+
+   If you want to typeset and print copies of this manual, you need TeX,
+a program to print its DVI output files, and `texinfo.tex', the Texinfo
+definitions file.
+
+   TeX is a typesetting program; it does not print files directly, but
+produces output files called DVI files.  To print a typeset document,
+you need a program to print DVI files.  If your system has TeX
+installed, chances are it has such a program.  The precise command to
+use depends on your system; `lpr -d' is common; another (for PostScript
+devices) is `dvips'.  The DVI print command may require a file name
+without any extension or a `.dvi' extension.
+
+   TeX also requires a macro definitions file called `texinfo.tex'. 
+This file tells TeX how to typeset a document written in Texinfo
+format.  On its own, TeX cannot read, much less typeset a Texinfo file.
+`texinfo.tex' is distributed with NEWLIB and is located in the
+`newlib-VERSION-NUMBER/texinfo' directory.
+
+
+
+Compiling NEWLIB
+================
+
+   To compile NEWLIB, you must build it in a directory separate from
+the source directory.  If you want to run NEWLIB versions for several host 
+or target machines, you need a different `newlib' compiled for each combination
+of host and target.  `configure' is designed to make this easy by allowing 
+you to generate each configuration in a separate subdirectory.
+If your `make' program handles the `VPATH' feature correctly (like GNU `make')
+running `make' in each of these directories builds the `newlib' libraries
+specified there.
+
+   To build `newlib' in a specific directory, run `configure' with the
+`--srcdir' option to specify where to find the source. (You also need
+to specify a path to find `configure' itself from your working
+directory.  If the path to `configure' would be the same as the
+argument to `--srcdir', you can leave out the `--srcdir' option; it
+will be assumed.)
+
+   For example, with version 2.0.0, you can build NEWLIB in a separate
+directory for a Sun 4 cross m68k-aout environment like this:
+
+     cd newlib-2.0.0
+     mkdir ../newlib-m68k-aout
+     cd ../newlib-m68k-aout
+     ../newlib-2.0.0/configure --host=sun4 --target=m68k-aout
+     make
+
+   When `configure' builds a configuration using a remote source
+directory, it creates a tree for the binaries with the same structure
+(and using the same names) as the tree under the source directory.  In
+the example, you'd find the Sun 4 library `libiberty.a' in the
+directory `newlib-m68k-aout/libiberty', and NEWLIB itself in
+`newlib-m68k-aout/newlib'.
+
+   When you run `make' to build a program or library, you must run it
+in a configured directory--whatever directory you were in when you
+called `configure' (or one of its subdirectories).
+
+   The `Makefile' that `configure' generates in each source directory
+also runs recursively.  If you type `make' in a source directory such
+as `newlib-2.0.0' (or in a separate configured directory configured with
+`--srcdir=PATH/newlib-2.0.0'), you will build all the required libraries.
+
+   When you have multiple hosts or targets configured in separate
+directories, you can run `make' on them in parallel (for example, if
+they are NFS-mounted on each of the hosts); they will not interfere
+with each other.
+
+
+Specifying names for hosts and targets
+======================================
+
+   The specifications used for hosts and targets in the `configure'
+script are based on a three-part naming scheme, but some short
+predefined aliases are also supported.  The full naming scheme encodes
+three pieces of information in the following pattern:
+
+     ARCHITECTURE-VENDOR-OS
+
+   For example, you can use the alias `sun4' as a HOST argument or in a
+`--target=TARGET' option.  The equivalent full name is
+`sparc-sun-sunos4'.
+
+   The `configure' script accompanying NEWLIB does not provide any query
+facility to list all supported host and target names or aliases. 
+`configure' calls the Bourne shell script `config.sub' to map
+abbreviations to full names; you can read the script, if you wish, or
+you can use it to test your guesses on abbreviations--for example:
+
+     % sh config.sub sun4
+     sparc-sun-sunos4.1.1
+     % sh config.sub sun3
+     m68k-sun-sunos4.1.1
+     % sh config.sub decstation
+     mips-dec-ultrix4.2
+     % sh config.sub hp300bsd
+     m68k-hp-bsd
+     % sh config.sub i386v
+     i386-pc-sysv
+     % sh config.sub i786v
+     Invalid configuration `i786v': machine `i786v' not recognized
+
+The Build, Host and Target Concepts in newlib
+=============================================
+
+The build, host and target concepts are defined for gcc as follows:
+
+build: the platform on which gcc is built.
+host: the platform on which gcc is run.
+target: the platform for which gcc generates code.
+
+Since newlib is a library, the target concept does not apply to it, and the
+build, host, and target options given to the top-level configure script must
+be changed for newlib's use.
+
+The options are shifted according to these correspondences:
+
+gcc's build platform has no equivalent in newlib.
+gcc's host platform is newlib's build platform.
+gcc's target platform is newlib's host platform.
+and as mentioned before, newlib has no concept of target.
+
+`configure' options
+===================
+
+   Here is a summary of the `configure' options and arguments that are
+most often useful for building NEWLIB.  `configure' also has several other
+options not listed here.
+
+     configure [--help]
+               [--prefix=DIR]
+               [--srcdir=PATH]
+               [--target=TARGET] HOST
+
+You may introduce options with a single `-' rather than `--' if you
+prefer; but you may abbreviate option names if you use `--'.
+
+`--help'
+     Display a quick summary of how to invoke `configure'.
+
+`--prefix=DIR'
+     Configure the source to install programs and files in directory
+     `DIR'.
+
+`--exec-prefix=DIR'
+     Configure the source to install host-dependent files in directory
+     `DIR'.
+
+`--srcdir=PATH'
+     *Warning: using this option requires GNU `make', or another `make'
+     that compatibly implements the `VPATH' feature.
+     Use this option to make configurations in directories separate
+     from the NEWLIB source directories.  Among other things, you can use
+     this to build (or maintain) several configurations simultaneously,
+     in separate directories.  `configure' writes configuration
+     specific files in the current directory, but arranges for them to
+     use the source in the directory PATH.  `configure' will create
+     directories under the working directory in parallel to the source
+     directories below PATH.
+
+`--norecursion'
+     Configure only the directory level where `configure' is executed;
+     do not propagate configuration to subdirectories.
+
+`--target=TARGET'
+     Configure NEWLIB for running on the specified TARGET.
+
+     There is no convenient way to generate a list of all available
+     targets.
+
+`HOST ...'
+     Configure NEWLIB to be built using a cross compiler running on
+     the specified HOST.
+
+     There is no convenient way to generate a list of all available
+     hosts.
+
+To fit diverse usage models, NEWLIB supports a group of configuration
+options so that library features can be turned on/off according to
+target system's requirements.
+
+One feature can be enabled by specifying `--enable-FEATURE=yes' or
+`--enable-FEATURE'.  Or it can be disable by `--enable-FEATURE=no' or
+`--disable-FEATURE'.
+
+`--enable-newlib-io-pos-args'
+     Enable printf-family positional arg support.
+     Disabled by default, but some hosts enable it in configure.host.
+
+`--enable-newlib-io-c99-formats'
+     Enable C99 support in IO functions like printf/scanf.
+     Disabled by default, but some hosts enable it in configure.host.
+
+`--enable-newlib-register-fini'
+     Enable finalization function registration using atexit.
+     Disabled by default.
+
+`--enable-newlib-io-long-long'
+     Enable long long type support in IO functions like printf/scanf.
+     Disabled by default, but many hosts enable it in configure.host.
+
+`--enable-newlib-io-long-double'
+     Enable long double type support in IO functions printf/scanf.
+     Disabled by default, but some hosts enable it in configure.host.
+
+`--enable-newlib-mb'
+     Enable multibyte support.
+     Disabled by default.
+
+`--enable-newlib-iconv-encodings'
+     Enable specific comma-separated list of bidirectional iconv
+     encodings to be built-in.
+     Disabled by default.
+
+`--enable-newlib-iconv-from-encodings'
+     Enable specific comma-separated list of \"from\" iconv encodings
+     to be built-in.
+     Disabled by default.
+
+`--enable-newlib-iconv-to-encodings'
+     Enable specific comma-separated list of \"to\" iconv encodings
+     to be built-in.
+     Disabled by default.
+
+`--enable-newlib-iconv-external-ccs'
+     Enable capabilities to load external CCS files for iconv.
+     Disabled by default.
+
+`--disable-newlib-atexit-dynamic-alloc'
+     Disable dynamic allocation of atexit entries.
+     Most hosts and targets have it enabled in configure.host.
+
+`--enable-newlib-reent-small'
+     Enable small reentrant struct support.
+     Disabled by default.
+
+`--disable-newlib-fvwrite-in-streamio'
+     NEWLIB implements the vector buffer mechanism to support stream IO
+     buffering required by C standard.  This feature is possibly
+     unnecessary for embedded systems which won't change file buffering
+     with functions like `setbuf' or `setvbuf'.  The buffering mechanism
+     still acts as default for STDIN/STDOUT/STDERR even if this option
+     is specified.
+     Enabled by default.
+
+`--disable-newlib-fseek-optimization'
+     Disable fseek optimization.  It can decrease code size of application
+     calling `fseek`.
+     Enabled by default.
+
+`--disable-newlib-wide-orient'
+     C99 states that each stream has an orientation, wide or byte.  This
+     feature is possibly unnecessary for embedded systems which only do
+     byte input/output operations on stream.  It can decrease code size
+     by disable the feature.
+     Enabled by default.
+
+`--enable-newlib-nano-malloc'
+     NEWLIB has two implementations of malloc family's functions, one in
+     `mallocr.c' and the other one in `nano-mallocr.c'.  This options
+     enables the nano-malloc implementation, which is for small systems
+     with very limited memory.  Note that this implementation does not
+     support `--enable-malloc-debugging' any more.
+     Disabled by default.
+
+`--disable-newlib-unbuf-stream-opt'
+     NEWLIB does optimization when `fprintf to write only unbuffered unix
+     file'.  It creates a temorary buffer to do the optimization that
+     increases stack consumption by about `BUFSIZ' bytes.  This option
+     disables the optimization and saves size of text and stack.
+     Enabled by default.
+
+`--enable-multilib'
+     Build many library versions.
+     Enabled by default.
+
+`--enable-target-optspace'
+     Optimize for space.
+     Disabled by default.
+
+`--enable-malloc-debugging'
+     Indicate malloc debugging requested.
+     Disabled by default.
+
+`--enable-newlib-multithread'
+     Enable support for multiple threads.
+     Enabled by default.
+
+`--enable-newlib-iconv'
+     Enable iconv library support.
+     Disabled by default.
+
+`--enable-newlib-elix-level'
+     Supply desired elix library level (1-4).  Please refer to HOWTO for
+     more information about this option.
+     Set to level 0 by default.
+
+`--disable-newlib-io-float'
+     Disable printf/scanf family float support.
+     Enabled by default.
+
+`--disable-newlib-supplied-syscalls'
+     Disable newlib from supplying syscalls.
+     Enabled by default.
+
+`--enable-lite-exit'
+     Enable lite exit, a size-reduced implementation of exit that doesn't
+     invoke clean-up functions such as _fini or global destructors.
+     Disabled by default.
+
+Running the Testsuite
+=====================
+
+To run newlib's testsuite, you'll need a site.exp in your home
+directory which points dejagnu to the proper baseboards directory and
+the proper exp file for your target.
+
+Before running make check-target-newlib, set the DEJAGNU environment
+variable to point to ~/site.exp.
+
+Here is a sample site.exp:
+
+# Make sure we look in the right place for the board description files.
+if ![info exists boards_dir] {
+    set boards_dir {}
+}
+lappend boards_dir "your dejagnu/baseboards here"
+
+verbose "Global Config File: target_triplet is $target_triplet" 2
+
+global target_list
+case "$target_triplet" in {
+
+    { "mips-*elf*" } {
+	set target_list "mips-sim"
+    }
+
+    default {
+	set target_list { "unix" }
+    }
+}
+
+mips-sim refers to an exp file in the baseboards directory.  You'll
+need to add the other targets you're testing to the case statement.
+
+Now type make check-target-newlib in the top-level build directory to
+run the testsuite.
+
+Shared newlib
+=============
+
+newlib uses libtool when it is being compiled natively (with
+--target=i[34567]86-pc-linux-gnu) on an i[34567]86-pc-linux-gnu
+host. This allows newlib to be compiled as a shared library.
+
+To configure newlib, do the following from your build directory:
+
+$(source_dir)/src/configure --with-newlib --prefix=$(install_dir)
+
+configure will recognize that host == target ==
+i[34567]86-pc-linux-gnu, so it will tell newlib to compile itself using
+libtool. By default, libtool will build shared and static versions of
+newlib.
+
+To compile a program against shared newlib, do the following (where
+target_install_dir = $(install_dir)/i[34567]86-pc-linux-gnu):
+
+gcc -nostdlib $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm -lgcc
+
+To run the program, make sure that $(target_install_dir)/lib is listed
+in the LD_LIBRARY_PATH environment variable.
+
+To create a static binary linked against newlib, do the following:
+
+gcc -nostdlib -static $(target_install_dir)/lib/crt0.o progname.c -I $(target_install_dir)/include -L $(target_install_dir)/lib -lc -lm
+
+libtool can be instructed to produce only static libraries. To build
+newlib as a static library only, do the following from your build
+directory:
+
+$(source_dir)/src/configure --with-newlib --prefix=$(install_dir) --disable-shared
+
+Regenerating Configuration Files
+================================
+
+At times you will need to make changes to configure.in and Makefile.am files.
+This will mean that configure and Makefile.in files will need to be
+regenerated.
+
+At the top level of newlib is the file: acinclude.m4.  This file contains
+the definition of the NEWLIB_CONFIGURE macro which is used by all configure.in
+files in newlib.  You will notice that each directory in newlib containing
+a configure.in file also contains an aclocal.m4 file.  This file is
+generated by issuing: aclocal -I${relative_path_to_toplevel_newlib_dir}
+-I${relative_path_to_toplevel_src_dir}
+The first relative directory is to access acinclude.m4.  The second relative
+directory is to access libtool information in the top-level src directory.
+
+For example, to regenerate aclocal.m4 in newlib/libc/machine/arm:
+
+  aclocal -I ../../.. -I ../../../..
+
+Note that if the top level acinclude.m4 is altered, every aclocal.m4 file 
+in newlib should be regenerated.
+
+If the aclocal.m4 file is regenerated due to a change in acinclude.m4 or
+if a configure.in file is modified, the corresponding configure file in the 
+directory must be regenerated using autoconf.  No parameters are necessary.
+In the previous example, we would issue:
+
+  autoconf
+
+from the newlib/libc/machine/arm directory.
+
+If you have regenerated a configure file or if you have modified a Makefile.am
+file, you will need to regenerate the appropriate Makefile.in file(s).
+For newlib, automake is a bit trickier.  First of all, all Makefile.in
+files in newlib (and libgloss) are generated using the --cygnus option
+of automake.  
+
+Makefile.in files are generated from the nearest directory up the chain
+which contains a configure.in file.  In most cases, this is the same
+directory containing configure.in, but there are exceptions.
+For example, the newlib/libc directory has a number of
+subdirectories that do not contain their own configure.in files (e.g. stdio).
+For these directories, you must issue the automake command from newlib/libc
+which is the nearest parent directory that contains a configure.in.
+When you issue the automake command, you specify the subdirectory for
+the Makefile.in you are regenerating.  For example:
+
+   automake --cygnus stdio/Makefile stdlib/Makefile
+
+Note how multiple Makefile.in files can be created in the same step.  You
+would not specify machine/Makefile or sys/Makefile in the previous example
+because both of these subdirectories contain their own configure.in files.
+One would change to each of these subdirectories and in turn issue:
+
+   automake --cygnus Makefile
+
+Let's say you create a new machine directory XXXX off of newlib/libc/machine.
+After creating a new configure.in and Makefile.am file, you would issue:
+
+   aclocal -I ../../..
+   autoconf
+   automake --cygnus Makefile
+
+from newlib/libc/machine/XXXX
+
+It is strongly advised that you use an adequate version of autotools.
+For this latest release, the following were used: autoconf 2.68, aclocal 1.11.6, and 
+automake 1.11.6.
+
+Reporting Bugs
+==============
+
+The correct address for reporting bugs found in NEWLIB is
+"newlib@sourceware.org".  Please email all bug reports to that
+address.  Please include the NEWLIB version number (e.g., newlib-2.0.0),
+and how you configured it (e.g., "sun4 host and m68k-aout target").
+Since NEWLIB supports many different configurations, it is important
+that you be precise about this.
+
+Archives of the newlib mailing list are on-line, see
+	http://sourceware.org/ml/newlib/
+
+
+
+ +
+open-vcdiff +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2008 The open-vcdiff Authors. All Rights Reserved.
+
+   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.
+
+
+
+ +
+opus +show license +homepage +
+
Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
+
+
+
+ +
+pyelftools +show license +homepage +
+
pyelftools is in the public domain (see below if you need more details).
+
+pyelftools uses the construct library for structured parsing of a binary
+stream. construct is packaged in pyelftools/construct - see its LICENSE
+file for the license.
+
+-------------------------------------------------------------------------------
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <http://unlicense.org/>
+
+
+
+
+ +
+pylint +show license +homepage +
+
		    GNU GENERAL PUBLIC LICENSE
+		       Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+	51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+		    GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+			    NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+
+	    How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
+
+
+
+ +
+re2 - an efficient, principled regular expression library +show license +homepage +
+
// Copyright (c) 2009 The RE2 Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//    * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//    * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//    * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+requirejs +show license +homepage +
+
Copyright jQuery Foundation and other contributors, https://jquery.org/
+
+This software consists of voluntary contributions made by many
+individuals. For exact contribution history, see the revision history
+available at https://github.com/requirejs/requirejs
+
+The following license applies to all parts of this software except as
+documented below:
+
+====
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+====
+
+Copyright and related rights for sample code are waived via CC0. Sample
+code is defined as all source code displayed within the prose of the
+documentation.
+
+CC0: http://creativecommons.org/publicdomain/zero/1.0/
+
+====
+
+Files located in the node_modules directory, and certain utilities used
+to build or test the software in the test and dist directories, are
+externally maintained libraries used by this software which have their own
+licenses; we recommend you read them, as their terms may differ from the
+terms above.
+
+
+
+ +
+sfntly +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright 2011 Google Inc. All Rights Reserved.
+
+   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.
+
+
+
+
+ +
+simplejson +show license +homepage +
+
Copyright (c) 2006 Bob Ippolito
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+
+
+
+ +
+sqlite +show license +homepage +
+
The author disclaims copyright to this source code.  In place of
+a legal notice, here is a blessing:
+
+   May you do good and not evil.
+   May you find forgiveness for yourself and forgive others.
+   May you share freely, never taking more than you give.
+
+
+
+ +
+tcmalloc +show license +homepage +
+
// Copyright (c) 2005, Google Inc.
+// All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+tlslite +show license +homepage +
+
+TLS Lite includes code from different sources. All code is either dedicated to
+the public domain by its authors, or available under a BSD-style license. In
+particular:
+
+- 
+
+Code written by Trevor Perrin, Kees Bos, Sam Rushing, Dimitris Moraitis,
+Marcelo Fernandez, Martin von Loewis, Dave Baggett, and Yngve Pettersen is 
+available under the following terms:
+
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or distribute
+this software, either in source code form or as a compiled binary, for any
+purpose, commercial or non-commercial, and by any means.
+
+In jurisdictions that recognize copyright laws, the author or authors of this
+software dedicate any and all copyright interest in the software to the public
+domain. We make this dedication for the benefit of the public at large and to
+the detriment of our heirs and successors. We intend this dedication to be an
+overt act of relinquishment in perpetuity of all present and future rights to
+this software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+-
+
+Code written by Bram Cohen (rijndael.py) was dedicated to the public domain by
+its author. See rijndael.py for details.
+
+-
+
+Code written by Google is available under the following terms:
+
+Copyright (c) 2008, The Chromium Authors 
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+ * Neither the name of the Google Inc. nor the names of its contributors may
+   be used to endorse or promote products derived from this software without
+   specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+url_parse +show license +homepage +
+
Copyright 2007, Google Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+    * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+    * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+-------------------------------------------------------------------------------
+
+The file url_parse.cc is based on nsURLParsers.cc from Mozilla. This file is
+licensed separately as follows:
+
+The contents of this file are subject to the Mozilla Public License Version
+1.1 (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.mozilla.org/MPL/
+
+Software distributed under the License is distributed on an "AS IS" basis,
+WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+for the specific language governing rights and limitations under the
+License.
+
+The Original Code is mozilla.org code.
+
+The Initial Developer of the Original Code is
+Netscape Communications Corporation.
+Portions created by the Initial Developer are Copyright (C) 1998
+the Initial Developer. All Rights Reserved.
+
+Contributor(s):
+  Darin Fisher (original author)
+
+Alternatively, the contents of this file may be used under the terms of
+either the GNU General Public License Version 2 or later (the "GPL"), or
+the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+in which case the provisions of the GPL or the LGPL are applicable instead
+of those above. If you wish to allow use of your version of this file only
+under the terms of either the GPL or the LGPL, and not to allow others to
+use your version of this file under the terms of the MPL, indicate your
+decision by deleting the provisions above and replace them with the notice
+and other provisions required by the GPL or the LGPL. If you do not delete
+the provisions above, a recipient may use your version of this file under
+the terms of any one of the MPL, the GPL or the LGPL.
+
+
+
+ +
+usrsctp +show license +homepage +
+
(Copied from the COPYRIGHT file of
+https://code.google.com/p/sctp-refimpl/source/browse/trunk/COPYRIGHT)
+--------------------------------------------------------------------------------
+
+Copyright (c) 2001, 2002 Cisco Systems, Inc.
+Copyright (c) 2002-12 Randall R. Stewart
+Copyright (c) 2002-12 Michael Tuexen
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+   notice, this list of conditions and the following disclaimer in the
+   documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
+
+
+ +
+v4l-utils +show license +homepage +
+
+		  GNU LESSER GENERAL PUBLIC LICENSE
+		       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     51 Franklin Street, Suite 500, Boston, MA  02110-1335  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+			    Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations
+below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+^L
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it
+becomes a de-facto standard.  To achieve this, non-free programs must
+be allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+^L
+		  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control
+compilation and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+^L
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+^L
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at least
+    three years, to give the same user the materials specified in
+    Subsection 6a, above, for a charge no more than the cost of
+    performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+^L
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+^L
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply, and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License
+may add an explicit geographical distribution limitation excluding those
+countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+^L
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+			    NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+		     END OF TERMS AND CONDITIONS
+^L
+	   How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms
+of the ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.
+It is safest to attach them to the start of each source file to most
+effectively convey the exclusion of warranty; and each file should
+have at least the "copyright" line and a pointer to where the full
+notice is found.
+
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or
+your school, if any, to sign a "copyright disclaimer" for the library,
+if necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James
+  Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
+
+
+
+ +
+valgrind +show license +homepage +
+
   Notice that the following BSD-style license applies to the Valgrind header
+   files used by Chromium (valgrind.h and memcheck.h). However, the rest of
+   Valgrind is licensed under the terms of the GNU General Public License,
+   version 2, unless otherwise indicated.
+
+   ----------------------------------------------------------------
+
+   Copyright (C) 2000-2008 Julian Seward.  All rights reserved.
+
+   Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions
+   are met:
+
+   1. Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+
+   2. The origin of this software must not be misrepresented; you must 
+      not claim that you wrote the original software.  If you use this 
+      software in a product, an acknowledgment in the product 
+      documentation would be appreciated but is not required.
+
+   3. Altered source versions must be plainly marked as such, and must
+      not be misrepresented as being the original software.
+
+   4. The name of the author may not be used to endorse or promote 
+      products derived from this software without specific prior written 
+      permission.
+
+   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+   OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+   ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+
+ +
+wayland +show license +homepage +
+
Copyright © 2008-2012 Kristian Høgsberg
+Copyright © 2010-2012 Intel Corporation
+Copyright © 2011 Benjamin Franzke
+Copyright © 2012 Collabora, Ltd.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+---
+
+The above is the version of the MIT "Expat" License used by X.org:
+
+    http://cgit.freedesktop.org/xorg/xserver/tree/COPYING
+
+
+
+ +
+wayland-protocols +show license +homepage +
+
Copyright © 2008-2013 Kristian Høgsberg
+Copyright © 2010-2013 Intel Corporation
+Copyright © 2013      Rafael Antognolli
+Copyright © 2013      Jasper St. Pierre
+Copyright © 2014      Jonas Ådahl
+Copyright © 2014      Jason Ekstrand
+Copyright © 2014-2015 Collabora, Ltd.
+Copyright © 2015      Red Hat Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a
+copy of this software and associated documentation files (the "Software"),
+to deal in the Software without restriction, including without limitation
+the rights to use, copy, modify, merge, publish, distribute, sublicense,
+and/or sell copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice (including the next
+paragraph) shall be included in all copies or substantial portions of the
+Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+
+---
+
+The above is the version of the MIT "Expat" License used by X.org:
+
+    http://cgit.freedesktop.org/xorg/xserver/tree/COPYING
+
+
+
+ +
+woff2 +show license +homepage +
+
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+   1. Definitions.
+
+      "License" shall mean the terms and conditions for use, reproduction,
+      and distribution as defined by Sections 1 through 9 of this document.
+
+      "Licensor" shall mean the copyright owner or entity authorized by
+      the copyright owner that is granting the License.
+
+      "Legal Entity" shall mean the union of the acting entity and all
+      other entities that control, are controlled by, or are under common
+      control with that entity. For the purposes of this definition,
+      "control" means (i) the power, direct or indirect, to cause the
+      direction or management of such entity, whether by contract or
+      otherwise, or (ii) ownership of fifty percent (50%) or more of the
+      outstanding shares, or (iii) beneficial ownership of such entity.
+
+      "You" (or "Your") shall mean an individual or Legal Entity
+      exercising permissions granted by this License.
+
+      "Source" form shall mean the preferred form for making modifications,
+      including but not limited to software source code, documentation
+      source, and configuration files.
+
+      "Object" form shall mean any form resulting from mechanical
+      transformation or translation of a Source form, including but
+      not limited to compiled object code, generated documentation,
+      and conversions to other media types.
+
+      "Work" shall mean the work of authorship, whether in Source or
+      Object form, made available under the License, as indicated by a
+      copyright notice that is included in or attached to the work
+      (an example is provided in the Appendix below).
+
+      "Derivative Works" shall mean any work, whether in Source or Object
+      form, that is based on (or derived from) the Work and for which the
+      editorial revisions, annotations, elaborations, or other modifications
+      represent, as a whole, an original work of authorship. For the purposes
+      of this License, Derivative Works shall not include works that remain
+      separable from, or merely link (or bind by name) to the interfaces of,
+      the Work and Derivative Works thereof.
+
+      "Contribution" shall mean any work of authorship, including
+      the original version of the Work and any modifications or additions
+      to that Work or Derivative Works thereof, that is intentionally
+      submitted to Licensor for inclusion in the Work by the copyright owner
+      or by an individual or Legal Entity authorized to submit on behalf of
+      the copyright owner. For the purposes of this definition, "submitted"
+      means any form of electronic, verbal, or written communication sent
+      to the Licensor or its representatives, including but not limited to
+      communication on electronic mailing lists, source code control systems,
+      and issue tracking systems that are managed by, or on behalf of, the
+      Licensor for the purpose of discussing and improving the Work, but
+      excluding communication that is conspicuously marked or otherwise
+      designated in writing by the copyright owner as "Not a Contribution."
+
+      "Contributor" shall mean Licensor and any individual or Legal Entity
+      on behalf of whom a Contribution has been received by Licensor and
+      subsequently incorporated within the Work.
+
+   2. Grant of Copyright License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      copyright license to reproduce, prepare Derivative Works of,
+      publicly display, publicly perform, sublicense, and distribute the
+      Work and such Derivative Works in Source or Object form.
+
+   3. Grant of Patent License. Subject to the terms and conditions of
+      this License, each Contributor hereby grants to You a perpetual,
+      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+      (except as stated in this section) patent license to make, have made,
+      use, offer to sell, sell, import, and otherwise transfer the Work,
+      where such license applies only to those patent claims licensable
+      by such Contributor that are necessarily infringed by their
+      Contribution(s) alone or by combination of their Contribution(s)
+      with the Work to which such Contribution(s) was submitted. If You
+      institute patent litigation against any entity (including a
+      cross-claim or counterclaim in a lawsuit) alleging that the Work
+      or a Contribution incorporated within the Work constitutes direct
+      or contributory patent infringement, then any patent licenses
+      granted to You under this License for that Work shall terminate
+      as of the date such litigation is filed.
+
+   4. Redistribution. You may reproduce and distribute copies of the
+      Work or Derivative Works thereof in any medium, with or without
+      modifications, and in Source or Object form, provided that You
+      meet the following conditions:
+
+      (a) You must give any other recipients of the Work or
+          Derivative Works a copy of this License; and
+
+      (b) You must cause any modified files to carry prominent notices
+          stating that You changed the files; and
+
+      (c) You must retain, in the Source form of any Derivative Works
+          that You distribute, all copyright, patent, trademark, and
+          attribution notices from the Source form of the Work,
+          excluding those notices that do not pertain to any part of
+          the Derivative Works; and
+
+      (d) If the Work includes a "NOTICE" text file as part of its
+          distribution, then any Derivative Works that You distribute must
+          include a readable copy of the attribution notices contained
+          within such NOTICE file, excluding those notices that do not
+          pertain to any part of the Derivative Works, in at least one
+          of the following places: within a NOTICE text file distributed
+          as part of the Derivative Works; within the Source form or
+          documentation, if provided along with the Derivative Works; or,
+          within a display generated by the Derivative Works, if and
+          wherever such third-party notices normally appear. The contents
+          of the NOTICE file are for informational purposes only and
+          do not modify the License. You may add Your own attribution
+          notices within Derivative Works that You distribute, alongside
+          or as an addendum to the NOTICE text from the Work, provided
+          that such additional attribution notices cannot be construed
+          as modifying the License.
+
+      You may add Your own copyright statement to Your modifications and
+      may provide additional or different license terms and conditions
+      for use, reproduction, or distribution of Your modifications, or
+      for any such Derivative Works as a whole, provided Your use,
+      reproduction, and distribution of the Work otherwise complies with
+      the conditions stated in this License.
+
+   5. Submission of Contributions. Unless You explicitly state otherwise,
+      any Contribution intentionally submitted for inclusion in the Work
+      by You to the Licensor shall be under the terms and conditions of
+      this License, without any additional terms or conditions.
+      Notwithstanding the above, nothing herein shall supersede or modify
+      the terms of any separate license agreement you may have executed
+      with Licensor regarding such Contributions.
+
+   6. Trademarks. This License does not grant permission to use the trade
+      names, trademarks, service marks, or product names of the Licensor,
+      except as required for reasonable and customary use in describing the
+      origin of the Work and reproducing the content of the NOTICE file.
+
+   7. Disclaimer of Warranty. Unless required by applicable law or
+      agreed to in writing, Licensor provides the Work (and each
+      Contributor provides its Contributions) on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+      implied, including, without limitation, any warranties or conditions
+      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+      PARTICULAR PURPOSE. You are solely responsible for determining the
+      appropriateness of using or redistributing the Work and assume any
+      risks associated with Your exercise of permissions under this License.
+
+   8. Limitation of Liability. In no event and under no legal theory,
+      whether in tort (including negligence), contract, or otherwise,
+      unless required by applicable law (such as deliberate and grossly
+      negligent acts) or agreed to in writing, shall any Contributor be
+      liable to You for damages, including any direct, indirect, special,
+      incidental, or consequential damages of any character arising as a
+      result of this License or out of the use or inability to use the
+      Work (including but not limited to damages for loss of goodwill,
+      work stoppage, computer failure or malfunction, or any and all
+      other commercial damages or losses), even if such Contributor
+      has been advised of the possibility of such damages.
+
+   9. Accepting Warranty or Additional Liability. While redistributing
+      the Work or Derivative Works thereof, You may choose to offer,
+      and charge a fee for, acceptance of support, warranty, indemnity,
+      or other liability obligations and/or rights consistent with this
+      License. However, in accepting such obligations, You may act only
+      on Your own behalf and on Your sole responsibility, not on behalf
+      of any other Contributor, and only if You agree to indemnify,
+      defend, and hold each Contributor harmless for any liability
+      incurred by, or claims asserted against, such Contributor by reason
+      of your accepting any such warranty or additional liability.
+
+   END OF TERMS AND CONDITIONS
+
+   APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+   Copyright [yyyy] [name of copyright owner]
+
+   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.
+
+
+
+ +
+x86inc +show license +homepage +
+
;*****************************************************************************
+;* x86inc.asm
+;*****************************************************************************
+;* Copyright (C) 2005-2011 x264 project
+;*
+;* Authors: Loren Merritt <lorenm@u.washington.edu>
+;*          Anton Mitrofanov <BugMaster@narod.ru>
+;*          Jason Garrett-Glaser <darkshikari@gmail.com>
+;*
+;* Permission to use, copy, modify, and/or distribute this software for any
+;* purpose with or without fee is hereby granted, provided that the above
+;* copyright notice and this permission notice appear in all copies.
+;*
+;* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+;* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+;* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+;* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+;* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+;* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+;* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+;*****************************************************************************
+
+; This is a header file for the x264ASM assembly language, which uses
+; NASM/YASM syntax combined with a large number of macros to provide easy
+; abstraction between different calling conventions (x86_32, win64, linux64).
+; It also has various other useful features to simplify writing the kind of
+; DSP functions that are most often used in x264.
+
+; Unlike the rest of x264, this file is available under an ISC license, as it
+; has significant usefulness outside of x264 and we want it to be available
+; to the largest audience possible.  Of course, if you modify it for your own
+; purposes to add a new feature, we strongly encourage contributing a patch
+; as this feature might be useful for others as well.  Send patches or ideas
+; to x264-devel@videolan.org .
+
+
+
+ +
+xdg-mime +show license +homepage +
+
Licensed under the Academic Free License version 2.0 (below)
+Or under the following terms:
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the
+Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+Boston, MA 02111-1307, USA.
+
+
+--------------------------------------------------------------------------------
+Academic Free License v. 2.0
+--------------------------------------------------------------------------------
+
+This Academic Free License (the "License") applies to any original work of
+authorship (the "Original Work") whose owner (the "Licensor") has placed the
+following notice immediately following the copyright notice for the Original
+Work:
+
+Licensed under the Academic Free License version 2.0
+1) Grant of Copyright License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license to do the
+following:
+
+a) to reproduce the Original Work in copies;
+b) to prepare derivative works ("Derivative Works") based upon the Original
+   Work;
+c) to distribute copies of the Original Work and Derivative Works to the
+   public;
+d) to perform the Original Work publicly; and
+e) to display the Original Work publicly.
+
+2) Grant of Patent License. Licensor hereby grants You a world-wide,
+royalty-free, non-exclusive, perpetual, sublicenseable license, under patent
+claims owned or controlled by the Licensor that are embodied in the Original
+Work as furnished by the Licensor, to make, use, sell and offer for sale the
+Original Work and Derivative Works.
+
+3) Grant of Source Code License. The term "Source Code" means the preferred
+form of the Original Work for making modifications to it and all available
+documentation describing how to modify the Original Work. Licensor hereby
+agrees to provide a machine-readable copy of the Source Code of the Original
+Work along with each copy of the Original Work that Licensor distributes.
+Licensor reserves the right to satisfy this obligation by placing a
+machine-readable copy of the Source Code in an information repository
+reasonably calculated to permit inexpensive and convenient access by You for as
+long as Licensor continues to distribute the Original Work, and by publishing
+the address of that information repository in a notice immediately following
+the copyright notice that applies to the Original Work.
+
+4) Exclusions From License Grant. Neither the names of Licensor, nor the names
+of any contributors to the Original Work, nor any of their trademarks or
+service marks, may be used to endorse or promote products derived from this
+Original Work without express prior written permission of the Licensor. Nothing
+in this License shall be deemed to grant any rights to trademarks, copyrights,
+patents, trade secrets or any other intellectual property of Licensor except as
+expressly stated herein. No patent license is granted to make, use, sell or
+offer to sell embodiments of any patent claims other than the licensed claims
+defined in Section 2. No right is granted to the trademarks of Licensor even if
+such marks are included in the Original Work. Nothing in this License shall be
+interpreted to prohibit Licensor from licensing under different terms from this
+License any Original Work that Licensor otherwise would have a right to
+license.
+
+5) This section intentionally omitted.
+
+6) Attribution Rights. You must retain, in the Source Code of any Derivative
+Works that You create, all copyright, patent or trademark notices from the
+Source Code of the Original Work, as well as any notices of licensing and any
+descriptive text identified therein as an "Attribution Notice." You must cause
+the Source Code for any Derivative Works that You create to carry a prominent
+Attribution Notice reasonably calculated to inform recipients that You have
+modified the Original Work.
+
+7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that
+the copyright in and to the Original Work and the patent rights granted herein
+by Licensor are owned by the Licensor or are sublicensed to You under the terms
+of this License with the permission of the contributor(s) of those copyrights
+and patent rights. Except as expressly stated in the immediately proceeding
+sentence, the Original Work is provided under this License on an "AS IS" BASIS
+and WITHOUT WARRANTY, either express or implied, including, without limitation,
+the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU.
+This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No
+license to Original Work is granted hereunder except under this disclaimer.
+
+8) Limitation of Liability. Under no circumstances and under no legal theory,
+whether in tort (including negligence), contract, or otherwise, shall the
+Licensor be liable to any person for any direct, indirect, special, incidental,
+or consequential damages of any character arising as a result of this License
+or the use of the Original Work including, without limitation, damages for loss
+of goodwill, work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses. This limitation of liability shall not
+apply to liability for death or personal injury resulting from Licensor's
+negligence to the extent applicable law prohibits such limitation. Some
+jurisdictions do not allow the exclusion or limitation of incidental or
+consequential damages, so this exclusion and limitation may not apply to You.
+
+9) Acceptance and Termination. If You distribute copies of the Original Work or
+a Derivative Work, You must make a reasonable effort under the circumstances to
+obtain the express assent of recipients to the terms of this License. Nothing
+else but this License (or another written agreement between Licensor and You)
+grants You permission to create Derivative Works based upon the Original Work
+or to exercise any of the rights granted in Section 1 herein, and any attempt
+to do so except under the terms of this License (or another written agreement
+between Licensor and You) is expressly prohibited by U.S. copyright law, the
+equivalent laws of other countries, and by international treaty. Therefore, by
+exercising any of the rights granted to You in Section 1 herein, You indicate
+Your acceptance of this License and all of its terms and conditions.
+
+10) Termination for Patent Action. This License shall terminate automatically
+and You may no longer exercise any of the rights granted to You by this License
+as of the date You commence an action, including a cross-claim or counterclaim,
+for patent infringement (i) against Licensor with respect to a patent
+applicable to software or (ii) against any entity with respect to a patent
+applicable to the Original Work (but excluding combinations of the Original
+Work with other software or hardware).
+
+11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this
+License may be brought only in the courts of a jurisdiction wherein the
+Licensor resides or in which Licensor conducts its primary business, and under
+the laws of that jurisdiction excluding its conflict-of-law provisions. The
+application of the United Nations Convention on Contracts for the International
+Sale of Goods is expressly excluded. Any use of the Original Work outside the
+scope of this License or after its termination shall be subject to the
+requirements and penalties of the U.S. Copyright Act, 17 U.S.C. 101 et seq.,
+the equivalent laws of other countries, and international treaty. This section
+shall survive the termination of this License.
+
+12) Attorneys Fees. In any action to enforce the terms of this License or
+seeking damages relating thereto, the prevailing party shall be entitled to
+recover its costs and expenses, including, without limitation, reasonable
+attorneys' fees and costs incurred in connection with such action, including
+any appeal of such action. This section shall survive the termination of this
+License.
+
+13) Miscellaneous. This License represents the complete agreement concerning
+the subject matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent necessary to
+make it enforceable.
+
+14) Definition of "You" in This License. "You" throughout this License, whether
+in upper or lower case, means an individual or a legal entity exercising rights
+under, and complying with all of the terms of, this License. For legal
+entities, "You" includes any entity that controls, is controlled by, or is
+under common control with you. For purposes of this definition, "control" means
+(i) the power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty percent
+(50%) or more of the outstanding shares, or (iii) beneficial ownership of such
+entity.
+
+15) Right to Use. You may use the Original Work in all ways not otherwise
+restricted or conditioned by this License or by law, and Licensor promises not
+to interfere with or be responsible for such uses by You.
+
+This license is Copyright (C) 2003 Lawrence E. Rosen. All rights reserved.
+Permission is hereby granted to copy and distribute this license without
+modification. This license may not be modified without the express written
+permission of its copyright owner.
+
+
+
+ +
+xdg-user-dirs +show license +homepage +
+
  Copyright (c) 2007 Red Hat, inc
+
+  Permission is hereby granted, free of charge, to any person
+  obtaining a copy of this software and associated documentation files
+  (the "Software"), to deal in the Software without restriction,
+  including without limitation the rights to use, copy, modify, merge,
+  publish, distribute, sublicense, and/or sell copies of the Software,
+  and to permit persons to whom the Software is furnished to do so,
+  subject to the following conditions: 
+
+  The above copyright notice and this permission notice shall be
+  included in all copies or substantial portions of the Software. 
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+  ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+  SOFTWARE.
+
+
+
+ +
+xdg-utils +show license +homepage +
+
#
+#   Permission is hereby granted, free of charge, to any person obtaining a
+#   copy of this software and associated documentation files (the "Software"),
+#   to deal in the Software without restriction, including without limitation
+#   the rights to use, copy, modify, merge, publish, distribute, sublicense,
+#   and/or sell copies of the Software, and to permit persons to whom the
+#   Software is furnished to do so, subject to the following conditions:
+#
+#   The above copyright notice and this permission notice shall be included
+#   in all copies or substantial portions of the Software.
+#
+#   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+#   OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+#   THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+#   OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+#   ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+#   OTHER DEALINGS IN THE SOFTWARE.
+
+
+
+ +
+yasm +show license +homepage +
+
Yasm is Copyright (c) 2001-2010 Peter Johnson and other Yasm developers.
+
+Yasm developers and/or contributors include:
+  Peter Johnson
+  Michael Urman
+  Brian Gladman (Visual Studio build files, other fixes)
+  Stanislav Karchebny (options parser)
+  Mathieu Monnier (SSE4 instruction patches, NASM preprocessor additions)
+  Anonymous "NASM64" developer (NASM preprocessor fixes)
+  Stephen Polkowski (x86 instruction patches)
+  Henryk Richter (Mach-O object format)
+  Ben Skeggs (patches, bug reports)
+  Alexei Svitkine (GAS preprocessor)
+  Samuel Thibault (TASM parser and frontend)
+
+-----------------------------------
+Yasm licensing overview and summary
+-----------------------------------
+
+Note: This document does not provide legal advice nor is it the actual
+license of any part of Yasm.  See the individual licenses for complete
+details.  Consult a lawyer for legal advice.
+
+The primary license of Yasm is the 2-clause BSD license.  Please use this
+license if you plan on submitting code to the project.
+
+Yasm has absolutely no warranty; not even for merchantibility or fitness
+for a particular purpose.
+
+-------
+Libyasm
+-------
+Libyasm is 2-clause or 3-clause BSD licensed, with the exception of
+bitvect, which is triple-licensed under the Artistic license, GPL, and
+LGPL.  Libyasm is thus GPL and LGPL compatible.  In addition, this also
+means that libyasm is free for binary-only distribution as long as the
+terms of the 3-clause BSD license and Artistic license (as it applies to
+bitvect) are fulfilled.
+
+-------
+Modules
+-------
+The modules are 2-clause or 3-clause BSD licensed.
+
+---------
+Frontends
+---------
+The frontends are 2-clause BSD licensed.
+
+-------------
+License Texts
+-------------
+The full text of all licenses are provided in separate files in the source
+distribution.  Each source file may include the entire license (in the case
+of the BSD and Artistic licenses), or may reference the GPL or LGPL license
+file.
+
+BSD.txt - 2-clause and 3-clause BSD licenses
+Artistic.txt - Artistic license
+GNU_GPL-2.0 - GNU General Public License
+GNU_LGPL-2.0 - GNU Library General Public License
+
+
+
+ +
+zlib +show license +homepage +
+
/* zlib.h -- interface of the 'zlib' general purpose compression library
+  version 1.2.4, March 14th, 2010
+
+  Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly
+  Mark Adler
+
+*/
+
+mozzconf.h is distributed under the MPL 1.1/GPL 2.0/LGPL 2.1 tri-license.
+
+
+
+ +
+ + + diff --git a/astilectron-deps/vendor/electron/blink_image_resources_200_percent.pak b/astilectron-deps/vendor/electron/blink_image_resources_200_percent.pak new file mode 100644 index 0000000..e8d2e7a Binary files /dev/null and b/astilectron-deps/vendor/electron/blink_image_resources_200_percent.pak differ diff --git a/astilectron-deps/vendor/electron/content_resources_200_percent.pak b/astilectron-deps/vendor/electron/content_resources_200_percent.pak new file mode 100644 index 0000000..85cf8b5 Binary files /dev/null and b/astilectron-deps/vendor/electron/content_resources_200_percent.pak differ diff --git a/astilectron-deps/vendor/electron/content_shell.pak b/astilectron-deps/vendor/electron/content_shell.pak new file mode 100644 index 0000000..7b7dbb5 Binary files /dev/null and b/astilectron-deps/vendor/electron/content_shell.pak differ diff --git a/astilectron-deps/vendor/electron/electron b/astilectron-deps/vendor/electron/electron new file mode 100755 index 0000000..8ca8adc Binary files /dev/null and b/astilectron-deps/vendor/electron/electron differ diff --git a/astilectron-deps/vendor/electron/icudtl.dat b/astilectron-deps/vendor/electron/icudtl.dat new file mode 100644 index 0000000..9782827 Binary files /dev/null and b/astilectron-deps/vendor/electron/icudtl.dat differ diff --git a/astilectron-deps/vendor/electron/libffmpeg.so b/astilectron-deps/vendor/electron/libffmpeg.so new file mode 100644 index 0000000..b06b535 Binary files /dev/null and b/astilectron-deps/vendor/electron/libffmpeg.so differ diff --git a/astilectron-deps/vendor/electron/libnode.so b/astilectron-deps/vendor/electron/libnode.so new file mode 100755 index 0000000..982ab6f Binary files /dev/null and b/astilectron-deps/vendor/electron/libnode.so differ diff --git a/astilectron-deps/vendor/electron/locales/am.pak b/astilectron-deps/vendor/electron/locales/am.pak new file mode 100644 index 0000000..dc273dd Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/am.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ar.pak b/astilectron-deps/vendor/electron/locales/ar.pak new file mode 100644 index 0000000..aeb579c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ar.pak differ diff --git a/astilectron-deps/vendor/electron/locales/bg.pak b/astilectron-deps/vendor/electron/locales/bg.pak new file mode 100644 index 0000000..6363904 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/bg.pak differ diff --git a/astilectron-deps/vendor/electron/locales/bn.pak b/astilectron-deps/vendor/electron/locales/bn.pak new file mode 100644 index 0000000..23d3d40 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/bn.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ca.pak b/astilectron-deps/vendor/electron/locales/ca.pak new file mode 100644 index 0000000..6d8f30b Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ca.pak differ diff --git a/astilectron-deps/vendor/electron/locales/cs.pak b/astilectron-deps/vendor/electron/locales/cs.pak new file mode 100644 index 0000000..8876788 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/cs.pak differ diff --git a/astilectron-deps/vendor/electron/locales/da.pak b/astilectron-deps/vendor/electron/locales/da.pak new file mode 100644 index 0000000..6ede407 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/da.pak differ diff --git a/astilectron-deps/vendor/electron/locales/de.pak b/astilectron-deps/vendor/electron/locales/de.pak new file mode 100644 index 0000000..c566d9a Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/de.pak differ diff --git a/astilectron-deps/vendor/electron/locales/el.pak b/astilectron-deps/vendor/electron/locales/el.pak new file mode 100644 index 0000000..30fa67c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/el.pak differ diff --git a/astilectron-deps/vendor/electron/locales/en-GB.pak b/astilectron-deps/vendor/electron/locales/en-GB.pak new file mode 100644 index 0000000..ed374d3 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/en-GB.pak differ diff --git a/astilectron-deps/vendor/electron/locales/en-US.pak b/astilectron-deps/vendor/electron/locales/en-US.pak new file mode 100644 index 0000000..450d08a Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/en-US.pak differ diff --git a/astilectron-deps/vendor/electron/locales/es-419.pak b/astilectron-deps/vendor/electron/locales/es-419.pak new file mode 100644 index 0000000..73c38ee Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/es-419.pak differ diff --git a/astilectron-deps/vendor/electron/locales/es.pak b/astilectron-deps/vendor/electron/locales/es.pak new file mode 100644 index 0000000..e8898e9 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/es.pak differ diff --git a/astilectron-deps/vendor/electron/locales/et.pak b/astilectron-deps/vendor/electron/locales/et.pak new file mode 100644 index 0000000..5edf9eb Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/et.pak differ diff --git a/astilectron-deps/vendor/electron/locales/fa.pak b/astilectron-deps/vendor/electron/locales/fa.pak new file mode 100644 index 0000000..b798efc Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/fa.pak differ diff --git a/astilectron-deps/vendor/electron/locales/fake-bidi.pak b/astilectron-deps/vendor/electron/locales/fake-bidi.pak new file mode 100644 index 0000000..69bbe3b Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/fake-bidi.pak differ diff --git a/astilectron-deps/vendor/electron/locales/fi.pak b/astilectron-deps/vendor/electron/locales/fi.pak new file mode 100644 index 0000000..3da5849 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/fi.pak differ diff --git a/astilectron-deps/vendor/electron/locales/fil.pak b/astilectron-deps/vendor/electron/locales/fil.pak new file mode 100644 index 0000000..2cefa12 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/fil.pak differ diff --git a/astilectron-deps/vendor/electron/locales/fr.pak b/astilectron-deps/vendor/electron/locales/fr.pak new file mode 100644 index 0000000..841a39a Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/fr.pak differ diff --git a/astilectron-deps/vendor/electron/locales/gu.pak b/astilectron-deps/vendor/electron/locales/gu.pak new file mode 100644 index 0000000..2a869bb Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/gu.pak differ diff --git a/astilectron-deps/vendor/electron/locales/he.pak b/astilectron-deps/vendor/electron/locales/he.pak new file mode 100644 index 0000000..56858cb Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/he.pak differ diff --git a/astilectron-deps/vendor/electron/locales/hi.pak b/astilectron-deps/vendor/electron/locales/hi.pak new file mode 100644 index 0000000..8c019fe Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/hi.pak differ diff --git a/astilectron-deps/vendor/electron/locales/hr.pak b/astilectron-deps/vendor/electron/locales/hr.pak new file mode 100644 index 0000000..a32af55 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/hr.pak differ diff --git a/astilectron-deps/vendor/electron/locales/hu.pak b/astilectron-deps/vendor/electron/locales/hu.pak new file mode 100644 index 0000000..4aa911b Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/hu.pak differ diff --git a/astilectron-deps/vendor/electron/locales/id.pak b/astilectron-deps/vendor/electron/locales/id.pak new file mode 100644 index 0000000..42788d5 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/id.pak differ diff --git a/astilectron-deps/vendor/electron/locales/it.pak b/astilectron-deps/vendor/electron/locales/it.pak new file mode 100644 index 0000000..a8a6e2d Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/it.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ja.pak b/astilectron-deps/vendor/electron/locales/ja.pak new file mode 100644 index 0000000..a3ae664 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ja.pak differ diff --git a/astilectron-deps/vendor/electron/locales/kn.pak b/astilectron-deps/vendor/electron/locales/kn.pak new file mode 100644 index 0000000..4d7e72c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/kn.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ko.pak b/astilectron-deps/vendor/electron/locales/ko.pak new file mode 100644 index 0000000..3c11854 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ko.pak differ diff --git a/astilectron-deps/vendor/electron/locales/lt.pak b/astilectron-deps/vendor/electron/locales/lt.pak new file mode 100644 index 0000000..385a238 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/lt.pak differ diff --git a/astilectron-deps/vendor/electron/locales/lv.pak b/astilectron-deps/vendor/electron/locales/lv.pak new file mode 100644 index 0000000..4752ab5 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/lv.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ml.pak b/astilectron-deps/vendor/electron/locales/ml.pak new file mode 100644 index 0000000..dc8e2a8 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ml.pak differ diff --git a/astilectron-deps/vendor/electron/locales/mr.pak b/astilectron-deps/vendor/electron/locales/mr.pak new file mode 100644 index 0000000..18cb9e2 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/mr.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ms.pak b/astilectron-deps/vendor/electron/locales/ms.pak new file mode 100644 index 0000000..766da71 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ms.pak differ diff --git a/astilectron-deps/vendor/electron/locales/nb.pak b/astilectron-deps/vendor/electron/locales/nb.pak new file mode 100644 index 0000000..347c31c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/nb.pak differ diff --git a/astilectron-deps/vendor/electron/locales/nl.pak b/astilectron-deps/vendor/electron/locales/nl.pak new file mode 100644 index 0000000..928a802 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/nl.pak differ diff --git a/astilectron-deps/vendor/electron/locales/pl.pak b/astilectron-deps/vendor/electron/locales/pl.pak new file mode 100644 index 0000000..72662af Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/pl.pak differ diff --git a/astilectron-deps/vendor/electron/locales/pt-BR.pak b/astilectron-deps/vendor/electron/locales/pt-BR.pak new file mode 100644 index 0000000..f6ac34a Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/pt-BR.pak differ diff --git a/astilectron-deps/vendor/electron/locales/pt-PT.pak b/astilectron-deps/vendor/electron/locales/pt-PT.pak new file mode 100644 index 0000000..e2db43c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/pt-PT.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ro.pak b/astilectron-deps/vendor/electron/locales/ro.pak new file mode 100644 index 0000000..61e96bb Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ro.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ru.pak b/astilectron-deps/vendor/electron/locales/ru.pak new file mode 100644 index 0000000..8bcccfd Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ru.pak differ diff --git a/astilectron-deps/vendor/electron/locales/sk.pak b/astilectron-deps/vendor/electron/locales/sk.pak new file mode 100644 index 0000000..12a827f Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/sk.pak differ diff --git a/astilectron-deps/vendor/electron/locales/sl.pak b/astilectron-deps/vendor/electron/locales/sl.pak new file mode 100644 index 0000000..9256ebb Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/sl.pak differ diff --git a/astilectron-deps/vendor/electron/locales/sr.pak b/astilectron-deps/vendor/electron/locales/sr.pak new file mode 100644 index 0000000..25cc103 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/sr.pak differ diff --git a/astilectron-deps/vendor/electron/locales/sv.pak b/astilectron-deps/vendor/electron/locales/sv.pak new file mode 100644 index 0000000..185ebb2 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/sv.pak differ diff --git a/astilectron-deps/vendor/electron/locales/sw.pak b/astilectron-deps/vendor/electron/locales/sw.pak new file mode 100644 index 0000000..ff8ca70 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/sw.pak differ diff --git a/astilectron-deps/vendor/electron/locales/ta.pak b/astilectron-deps/vendor/electron/locales/ta.pak new file mode 100644 index 0000000..e98e27c Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/ta.pak differ diff --git a/astilectron-deps/vendor/electron/locales/te.pak b/astilectron-deps/vendor/electron/locales/te.pak new file mode 100644 index 0000000..1ba347b Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/te.pak differ diff --git a/astilectron-deps/vendor/electron/locales/th.pak b/astilectron-deps/vendor/electron/locales/th.pak new file mode 100644 index 0000000..52de588 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/th.pak differ diff --git a/astilectron-deps/vendor/electron/locales/tr.pak b/astilectron-deps/vendor/electron/locales/tr.pak new file mode 100644 index 0000000..e3ba13d Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/tr.pak differ diff --git a/astilectron-deps/vendor/electron/locales/uk.pak b/astilectron-deps/vendor/electron/locales/uk.pak new file mode 100644 index 0000000..0672cd1 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/uk.pak differ diff --git a/astilectron-deps/vendor/electron/locales/vi.pak b/astilectron-deps/vendor/electron/locales/vi.pak new file mode 100644 index 0000000..2c8c5af Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/vi.pak differ diff --git a/astilectron-deps/vendor/electron/locales/zh-CN.pak b/astilectron-deps/vendor/electron/locales/zh-CN.pak new file mode 100644 index 0000000..fd21125 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/zh-CN.pak differ diff --git a/astilectron-deps/vendor/electron/locales/zh-TW.pak b/astilectron-deps/vendor/electron/locales/zh-TW.pak new file mode 100644 index 0000000..c2f2185 Binary files /dev/null and b/astilectron-deps/vendor/electron/locales/zh-TW.pak differ diff --git a/astilectron-deps/vendor/electron/natives_blob.bin b/astilectron-deps/vendor/electron/natives_blob.bin new file mode 100644 index 0000000..35d842b --- /dev/null +++ b/astilectron-deps/vendor/electron/natives_blob.bin @@ -0,0 +1,14750 @@ + mirrors +(function(a,b){ +"use strict"; +var c=a.Array; +var d=a.isNaN; +var e=a.JSON.stringify; +var f; +var g; +var h=b.ImportNow("promise_state_symbol"); +var i=b.ImportNow("promise_result_symbol"); +var j; +var k; +b.Import(function(l){ +f=l.MapEntries; +g=l.MapIteratorNext; +j=l.SetIteratorNext; +k=l.SetValues; +}); +var m={ +UNDEFINED_TYPE:'undefined', +NULL_TYPE:'null', +BOOLEAN_TYPE:'boolean', +NUMBER_TYPE:'number', +STRING_TYPE:'string', +SYMBOL_TYPE:'symbol', +OBJECT_TYPE:'object', +FUNCTION_TYPE:'function', +REGEXP_TYPE:'regexp', +ERROR_TYPE:'error', +PROPERTY_TYPE:'property', +INTERNAL_PROPERTY_TYPE:'internalProperty', +FRAME_TYPE:'frame', +SCRIPT_TYPE:'script', +CONTEXT_TYPE:'context', +SCOPE_TYPE:'scope', +PROMISE_TYPE:'promise', +MAP_TYPE:'map', +SET_TYPE:'set', +ITERATOR_TYPE:'iterator', +GENERATOR_TYPE:'generator', +} +var n=0; +var o=-1; +var p=[]; +var q=true; +function MirrorCacheIsEmpty(){ +return n==0&&p.length==0; +} +function ToggleMirrorCache(r){ +q=r; +ClearMirrorCache(); +} +function ClearMirrorCache(r){ +n=0; +p=[]; +} +function ObjectIsPromise(r){ +return(%_IsJSReceiver(r))&& +!(%DebugGetProperty(r,h)===(void 0)); +} +function MakeMirror(r,s){ +var t; +if(!s&&q){ +for(var u in p){ +t=p[u]; +if(t.value()===r){ +return t; +} +if(t.isNumber()&&d(t.value())&& +typeof r=='number'&&d(r)){ +return t; +} +} +} +if((r===(void 0))){ +t=new UndefinedMirror(); +}else if((r===null)){ +t=new NullMirror(); +}else if((typeof(r)==='boolean')){ +t=new BooleanMirror(r); +}else if((typeof(r)==='number')){ +t=new NumberMirror(r); +}else if((typeof(r)==='string')){ +t=new StringMirror(r); +}else if((typeof(r)==='symbol')){ +t=new SymbolMirror(r); +}else if((%_IsArray(r))){ +t=new ArrayMirror(r); +}else if((%IsDate(r))){ +t=new DateMirror(r); +}else if((%IsFunction(r))){ +t=new FunctionMirror(r); +}else if((%_IsRegExp(r))){ +t=new RegExpMirror(r); +}else if((%_ClassOf(r)==='Error')){ +t=new ErrorMirror(r); +}else if((%_ClassOf(r)==='Script')){ +t=new ScriptMirror(r); +}else if((%_ClassOf(r)==='Map')||(%_ClassOf(r)==='WeakMap')){ +t=new MapMirror(r); +}else if((%_ClassOf(r)==='Set')||(%_ClassOf(r)==='WeakSet')){ +t=new SetMirror(r); +}else if((%_ClassOf(r)==='Map Iterator')||(%_ClassOf(r)==='Set Iterator')){ +t=new IteratorMirror(r); +}else if(ObjectIsPromise(r)){ +t=new PromiseMirror(r); +}else if((%_ClassOf(r)==='Generator')){ +t=new GeneratorMirror(r); +}else{ +t=new ObjectMirror(r,m.OBJECT_TYPE,s); +} +if(q)p[t.handle()]=t; +return t; +} +function LookupMirror(v){ +if(!q){ +throw %make_error(2,"Mirror cache is disabled"); +} +return p[v]; +} +function GetUndefinedMirror(){ +return MakeMirror((void 0)); +} +function inherits(w,x){ +var y=function(){}; +y.prototype=x.prototype; +w.super_=x.prototype; +w.prototype=new y(); +w.prototype.constructor=w; +} +var z=80; +var A={}; +A.Data=0; +A.DataConstant=2; +A.AccessorConstant=3; +var B={}; +B.None=0; +B.ReadOnly=1; +B.DontEnum=2; +B.DontDelete=4; +var C={Global:0, +Local:1, +With:2, +Closure:3, +Catch:4, +Block:5, +Script:6, +Eval:7, +Module:8, +}; +function Mirror(D){ +this.type_=D; +} +Mirror.prototype.type=function(){ +return this.type_; +}; +Mirror.prototype.isValue=function(){ +return this instanceof ValueMirror; +}; +Mirror.prototype.isUndefined=function(){ +return this instanceof UndefinedMirror; +}; +Mirror.prototype.isNull=function(){ +return this instanceof NullMirror; +}; +Mirror.prototype.isBoolean=function(){ +return this instanceof BooleanMirror; +}; +Mirror.prototype.isNumber=function(){ +return this instanceof NumberMirror; +}; +Mirror.prototype.isString=function(){ +return this instanceof StringMirror; +}; +Mirror.prototype.isSymbol=function(){ +return this instanceof SymbolMirror; +}; +Mirror.prototype.isObject=function(){ +return this instanceof ObjectMirror; +}; +Mirror.prototype.isFunction=function(){ +return this instanceof FunctionMirror; +}; +Mirror.prototype.isUnresolvedFunction=function(){ +return this instanceof UnresolvedFunctionMirror; +}; +Mirror.prototype.isArray=function(){ +return this instanceof ArrayMirror; +}; +Mirror.prototype.isDate=function(){ +return this instanceof DateMirror; +}; +Mirror.prototype.isRegExp=function(){ +return this instanceof RegExpMirror; +}; +Mirror.prototype.isError=function(){ +return this instanceof ErrorMirror; +}; +Mirror.prototype.isPromise=function(){ +return this instanceof PromiseMirror; +}; +Mirror.prototype.isGenerator=function(){ +return this instanceof GeneratorMirror; +}; +Mirror.prototype.isProperty=function(){ +return this instanceof PropertyMirror; +}; +Mirror.prototype.isInternalProperty=function(){ +return this instanceof InternalPropertyMirror; +}; +Mirror.prototype.isFrame=function(){ +return this instanceof FrameMirror; +}; +Mirror.prototype.isScript=function(){ +return this instanceof ScriptMirror; +}; +Mirror.prototype.isContext=function(){ +return this instanceof ContextMirror; +}; +Mirror.prototype.isScope=function(){ +return this instanceof ScopeMirror; +}; +Mirror.prototype.isMap=function(){ +return this instanceof MapMirror; +}; +Mirror.prototype.isSet=function(){ +return this instanceof SetMirror; +}; +Mirror.prototype.isIterator=function(){ +return this instanceof IteratorMirror; +}; +Mirror.prototype.allocateHandle_=function(){ +if(q)this.handle_=n++; +}; +Mirror.prototype.allocateTransientHandle_=function(){ +this.handle_=o--; +}; +Mirror.prototype.toText=function(){ +return"#<"+this.constructor.name+">"; +}; +function ValueMirror(D,r,E){ +%_Call(Mirror,this,D); +this.value_=r; +if(!E){ +this.allocateHandle_(); +}else{ +this.allocateTransientHandle_(); +} +} +inherits(ValueMirror,Mirror); +Mirror.prototype.handle=function(){ +return this.handle_; +}; +ValueMirror.prototype.isPrimitive=function(){ +var D=this.type(); +return D==='undefined'|| +D==='null'|| +D==='boolean'|| +D==='number'|| +D==='string'|| +D==='symbol'; +}; +ValueMirror.prototype.value=function(){ +return this.value_; +}; +function UndefinedMirror(){ +%_Call(ValueMirror,this,m.UNDEFINED_TYPE,(void 0)); +} +inherits(UndefinedMirror,ValueMirror); +UndefinedMirror.prototype.toText=function(){ +return'undefined'; +}; +function NullMirror(){ +%_Call(ValueMirror,this,m.NULL_TYPE,null); +} +inherits(NullMirror,ValueMirror); +NullMirror.prototype.toText=function(){ +return'null'; +}; +function BooleanMirror(r){ +%_Call(ValueMirror,this,m.BOOLEAN_TYPE,r); +} +inherits(BooleanMirror,ValueMirror); +BooleanMirror.prototype.toText=function(){ +return this.value_?'true':'false'; +}; +function NumberMirror(r){ +%_Call(ValueMirror,this,m.NUMBER_TYPE,r); +} +inherits(NumberMirror,ValueMirror); +NumberMirror.prototype.toText=function(){ +return %_NumberToString(this.value_); +}; +function StringMirror(r){ +%_Call(ValueMirror,this,m.STRING_TYPE,r); +} +inherits(StringMirror,ValueMirror); +StringMirror.prototype.length=function(){ +return this.value_.length; +}; +StringMirror.prototype.getTruncatedValue=function(F){ +if(F!=-1&&this.length()>F){ +return this.value_.substring(0,F)+ +'... (length: '+this.length()+')'; +} +return this.value_; +}; +StringMirror.prototype.toText=function(){ +return this.getTruncatedValue(z); +}; +function SymbolMirror(r){ +%_Call(ValueMirror,this,m.SYMBOL_TYPE,r); +} +inherits(SymbolMirror,ValueMirror); +SymbolMirror.prototype.description=function(){ +return %SymbolDescription(%ValueOf(this.value_)); +} +SymbolMirror.prototype.toText=function(){ +return %SymbolDescriptiveString(%ValueOf(this.value_)); +} +function ObjectMirror(r,D,E){ +D=D||m.OBJECT_TYPE; +%_Call(ValueMirror,this,D,r,E); +} +inherits(ObjectMirror,ValueMirror); +ObjectMirror.prototype.className=function(){ +return %_ClassOf(this.value_); +}; +ObjectMirror.prototype.constructorFunction=function(){ +return MakeMirror(%DebugGetProperty(this.value_,'constructor')); +}; +ObjectMirror.prototype.prototypeObject=function(){ +return MakeMirror(%DebugGetProperty(this.value_,'prototype')); +}; +ObjectMirror.prototype.protoObject=function(){ +return MakeMirror(%DebugGetPrototype(this.value_)); +}; +ObjectMirror.prototype.hasNamedInterceptor=function(){ +var G=%GetInterceptorInfo(this.value_); +return(G&2)!=0; +}; +ObjectMirror.prototype.hasIndexedInterceptor=function(){ +var G=%GetInterceptorInfo(this.value_); +return(G&1)!=0; +}; +ObjectMirror.prototype.propertyNames=function(){ +return %GetOwnPropertyKeys(this.value_,0); +}; +ObjectMirror.prototype.properties=function(){ +var H=this.propertyNames(); +var I=new c(H.length); +for(var J=0;J'; +}; +ObjectMirror.GetInternalProperties=function(r){ +var I=%DebugGetInternalProperties(r); +var O=[]; +for(var J=0;JV)return new c(); +var W=new c(V-U+1); +for(var J=U;J<=V;J++){ +var L=%DebugGetPropertyDetails(this.value_,(%_ToString(J))); +var r; +if(L){ +r=new PropertyMirror(this,J,L); +}else{ +r=GetUndefinedMirror(); +} +W[J-U]=r; +} +return W; +}; +function DateMirror(r){ +%_Call(ObjectMirror,this,r); +} +inherits(DateMirror,ObjectMirror); +DateMirror.prototype.toText=function(){ +var X=e(this.value_); +return X.substring(1,X.length-1); +}; +function RegExpMirror(r){ +%_Call(ObjectMirror,this,r,m.REGEXP_TYPE); +} +inherits(RegExpMirror,ObjectMirror); +RegExpMirror.prototype.source=function(){ +return this.value_.source; +}; +RegExpMirror.prototype.global=function(){ +return this.value_.global; +}; +RegExpMirror.prototype.ignoreCase=function(){ +return this.value_.ignoreCase; +}; +RegExpMirror.prototype.multiline=function(){ +return this.value_.multiline; +}; +RegExpMirror.prototype.sticky=function(){ +return this.value_.sticky; +}; +RegExpMirror.prototype.unicode=function(){ +return this.value_.unicode; +}; +RegExpMirror.prototype.toText=function(){ +return"/"+this.source()+"/"; +}; +function ErrorMirror(r){ +%_Call(ObjectMirror,this,r,m.ERROR_TYPE); +} +inherits(ErrorMirror,ObjectMirror); +ErrorMirror.prototype.message=function(){ +return this.value_.message; +}; +ErrorMirror.prototype.toText=function(){ +var Y; +try{ +Y=%ErrorToString(this.value_); +}catch(e){ +Y='#'; +} +return Y; +}; +function PromiseMirror(r){ +%_Call(ObjectMirror,this,r,m.PROMISE_TYPE); +} +inherits(PromiseMirror,ObjectMirror); +function PromiseGetStatus_(r){ +var Z=%DebugGetProperty(r,h); +if(Z==0)return"pending"; +if(Z==1)return"resolved"; +return"rejected"; +} +function PromiseGetValue_(r){ +return %DebugGetProperty(r,i); +} +PromiseMirror.prototype.status=function(){ +return PromiseGetStatus_(this.value_); +}; +PromiseMirror.prototype.promiseValue=function(){ +return MakeMirror(PromiseGetValue_(this.value_)); +}; +function MapMirror(r){ +%_Call(ObjectMirror,this,r,m.MAP_TYPE); +} +inherits(MapMirror,ObjectMirror); +MapMirror.prototype.entries=function(aa){ +var O=[]; +if((%_ClassOf(this.value_)==='WeakMap')){ +var ab=%GetWeakMapEntries(this.value_,aa||0); +for(var J=0;J3){ +this.exception_=L[3]; +this.getter_=L[4]; +this.setter_=L[5]; +} +} +inherits(PropertyMirror,Mirror); +PropertyMirror.prototype.isReadOnly=function(){ +return(this.attributes()&B.ReadOnly)!=0; +}; +PropertyMirror.prototype.isEnum=function(){ +return(this.attributes()&B.DontEnum)==0; +}; +PropertyMirror.prototype.canDelete=function(){ +return(this.attributes()&B.DontDelete)==0; +}; +PropertyMirror.prototype.name=function(){ +return this.name_; +}; +PropertyMirror.prototype.toText=function(){ +if((typeof(this.name_)==='symbol'))return %SymbolDescriptiveString(this.name_); +return this.name_; +}; +PropertyMirror.prototype.isIndexed=function(){ +for(var J=0;J0; +}; +FrameDetails.prototype.inlinedFrameIndex=function(){ +%CheckExecutionState(this.break_id_); +var aA=ay; +return(this.details_[ar]&aA)>>2; +}; +FrameDetails.prototype.argumentCount=function(){ +%CheckExecutionState(this.break_id_); +return this.details_[am]; +}; +FrameDetails.prototype.argumentName=function(R){ +%CheckExecutionState(this.break_id_); +if(R>=0&&R=0&&R=0&&R=0&&R0){ +for(var J=0;J0){ +O+=this.lineOffset(); +O+='-'; +O+=this.lineOffset()+this.lineCount()-1; +}else{ +O+=this.lineCount(); +} +O+=')'; +return O; +}; +function ContextMirror(bb){ +%_Call(Mirror,this,m.CONTEXT_TYPE); +this.data_=bb; +this.allocateHandle_(); +} +inherits(ContextMirror,Mirror); +ContextMirror.prototype.data=function(){ +return this.data_; +}; +function MakeMirrorSerializer(L,bc){ +return new JSONProtocolSerializer(L,bc); +} +function JSONProtocolSerializer(L,bc){ +this.details_=L; +this.options_=bc; +this.mirrors_=[]; +} +JSONProtocolSerializer.prototype.serializeReference=function(t){ +return this.serialize_(t,true,true); +}; +JSONProtocolSerializer.prototype.serializeValue=function(t){ +var bd=this.serialize_(t,false,true); +return bd; +}; +JSONProtocolSerializer.prototype.serializeReferencedObjects=function(){ +var be=[]; +var bf=this.mirrors_.length; +for(var J=0;Jthis.maxStringLength_()){ +var bh=t.getTruncatedValue(this.maxStringLength_()); +be.value=bh; +be.fromIndex=0; +be.toIndex=this.maxStringLength_(); +}else{ +be.value=t.value(); +} +be.length=t.length(); +break; +case m.SYMBOL_TYPE: +be.description=t.description(); +break; +case m.OBJECT_TYPE: +case m.FUNCTION_TYPE: +case m.ERROR_TYPE: +case m.REGEXP_TYPE: +case m.PROMISE_TYPE: +case m.GENERATOR_TYPE: +this.serializeObject_(t,be,L); +break; +case m.PROPERTY_TYPE: +case m.INTERNAL_PROPERTY_TYPE: +throw %make_error(2, +'PropertyMirror cannot be serialized independently'); +break; +case m.FRAME_TYPE: +this.serializeFrame_(t,be); +break; +case m.SCOPE_TYPE: +this.serializeScope_(t,be); +break; +case m.SCRIPT_TYPE: +if(t.name()){ +be.name=t.name(); +} +be.id=t.id(); +be.lineOffset=t.lineOffset(); +be.columnOffset=t.columnOffset(); +be.lineCount=t.lineCount(); +if(t.data()){ +be.data=t.data(); +} +if(this.includeSource_()){ +be.source=t.source(); +}else{ +var bi=t.source().substring(0,80); +be.sourceStart=bi; +} +be.sourceLength=t.source().length; +be.scriptType=t.scriptType(); +be.compilationType=t.compilationType(); +if(t.compilationType()==1&& +t.evalFromScript()){ +be.evalFromScript= +this.serializeReference(t.evalFromScript()); +var bj=t.evalFromLocation(); +if(bj){ +be.evalFromLocation={line:bj.line, +column:bj.column}; +} +if(t.evalFromFunctionName()){ +be.evalFromFunctionName=t.evalFromFunctionName(); +} +} +if(t.context()){ +be.context=this.serializeReference(t.context()); +} +break; +case m.CONTEXT_TYPE: +be.data=t.data(); +break; +} +be.text=t.toText(); +return be; +}; +JSONProtocolSerializer.prototype.serializeObject_=function(t,be, +L){ +be.className=t.className(); +be.constructorFunction= +this.serializeReference(t.constructorFunction()); +be.protoObject=this.serializeReference(t.protoObject()); +be.prototypeObject=this.serializeReference(t.prototypeObject()); +if(t.hasNamedInterceptor()){ +be.namedInterceptor=true; +} +if(t.hasIndexedInterceptor()){ +be.indexedInterceptor=true; +} +if(t.isFunction()){ +be.name=t.name(); +if(!(t.inferredName()===(void 0))){ +be.inferredName=t.inferredName(); +} +be.resolved=t.resolved(); +if(t.resolved()){ +be.source=t.source(); +} +if(t.script()){ +be.script=this.serializeReference(t.script()); +be.scriptId=t.script().id(); +serializeLocationFields(t.sourceLocation(),be); +} +be.scopes=[]; +for(var J=0;J0){ +var bn=[]; +for(var J=0;J0){ +return'Infinity'; +}else{ +return'-Infinity'; +} +} +return r; +} +b.InstallFunctions(a,2,[ +"MakeMirror",MakeMirror, +"MakeMirrorSerializer",MakeMirrorSerializer, +"LookupMirror",LookupMirror, +"ToggleMirrorCache",ToggleMirrorCache, +"MirrorCacheIsEmpty",MirrorCacheIsEmpty, +]); +b.InstallConstants(a,[ +"ScopeType",C, +"PropertyType",A, +"PropertyAttribute",B, +"Mirror",Mirror, +"ValueMirror",ValueMirror, +"UndefinedMirror",UndefinedMirror, +"NullMirror",NullMirror, +"BooleanMirror",BooleanMirror, +"NumberMirror",NumberMirror, +"StringMirror",StringMirror, +"SymbolMirror",SymbolMirror, +"ObjectMirror",ObjectMirror, +"FunctionMirror",FunctionMirror, +"UnresolvedFunctionMirror",UnresolvedFunctionMirror, +"ArrayMirror",ArrayMirror, +"DateMirror",DateMirror, +"RegExpMirror",RegExpMirror, +"ErrorMirror",ErrorMirror, +"PromiseMirror",PromiseMirror, +"MapMirror",MapMirror, +"SetMirror",SetMirror, +"IteratorMirror",IteratorMirror, +"GeneratorMirror",GeneratorMirror, +"PropertyMirror",PropertyMirror, +"InternalPropertyMirror",InternalPropertyMirror, +"FrameMirror",FrameMirror, +"ScriptMirror",ScriptMirror, +"ScopeMirror",ScopeMirror, +"FrameDetails",FrameDetails, +]); +b.InstallFunctions(b,2,[ +"ClearMirrorCache",ClearMirrorCache +]); +b.Export(function(bv){ +bv.MirrorType=m; +}); +}) + +debugzb +(function(a,b){ +"use strict"; +var c=a.FrameMirror; +var d=a.Array; +var e=a.RegExp; +var f=a.isNaN; +var g=a.JSON.parse; +var h=a.JSON.stringify; +var i=a.LookupMirror; +var j=a.MakeMirror; +var k=a.MakeMirrorSerializer; +var l=a.Math.min; +var m=a.Mirror; +var n; +var o=a.parseInt; +var p=a.ValueMirror; +b.Import(function(q){ +n=q.MirrorType; +}); +var r=10; +var s={}; +var t=/^(?:\s*(?:\/\*.*?\*\/)*)*/; +s.DebugEvent={Break:1, +Exception:2, +NewFunction:3, +BeforeCompile:4, +AfterCompile:5, +CompileError:6, +AsyncTaskEvent:7}; +s.ExceptionBreak={Caught:0, +Uncaught:1}; +s.StepAction={StepOut:0, +StepNext:1, +StepIn:2, +StepFrame:3}; +s.ScriptType={Native:0, +Extension:1, +Normal:2, +Wasm:3}; +s.ScriptCompilationType={Host:0, +Eval:1, +JSON:2}; +s.ScriptBreakPointType={ScriptId:0, +ScriptName:1, +ScriptRegExp:2}; +s.BreakPositionAlignment={ +Statement:0, +BreakPosition:1 +}; +function ScriptTypeFlag(u){ +return(1<=this.frameCount()){ +throw %make_type_error(33); +} +return new c(this.break_id,aw); +}; +ExecutionState.prototype.setSelectedFrame=function(ax){ +var L=(%_ToNumber(ax)); +if(L<0||L>=this.frameCount()){ +throw %make_type_error(33); +} +this.selected_frame=L; +}; +ExecutionState.prototype.selectedFrame=function(){ +return this.selected_frame; +}; +ExecutionState.prototype.debugCommandProcessor=function(ay){ +return new DebugCommandProcessor(this,ay); +}; +function MakeBreakEvent(H,az){ +return new BreakEvent(H,az); +} +function BreakEvent(H,az){ +this.frame_=new c(H,0); +this.break_points_hit_=az; +} +BreakEvent.prototype.eventType=function(){ +return s.DebugEvent.Break; +}; +BreakEvent.prototype.func=function(){ +return this.frame_.func(); +}; +BreakEvent.prototype.sourceLine=function(){ +return this.frame_.sourceLine(); +}; +BreakEvent.prototype.sourceColumn=function(){ +return this.frame_.sourceColumn(); +}; +BreakEvent.prototype.sourceLineText=function(){ +return this.frame_.sourceLineText(); +}; +BreakEvent.prototype.breakPointsHit=function(){ +return this.break_points_hit_; +}; +BreakEvent.prototype.toJSONProtocol=function(){ +var aA={seq:v++, +type:"event", +event:"break", +body:{invocationText:this.frame_.invocationText()} +}; +var O=this.func().script(); +if(O){ +aA.body.sourceLine=this.sourceLine(), +aA.body.sourceColumn=this.sourceColumn(), +aA.body.sourceLineText=this.sourceLineText(), +aA.body.script=MakeScriptObject_(O,false); +} +if(this.breakPointsHit()){ +aA.body.breakpoints=[]; +for(var L=0;L0){ +aA.body.sourceLine=this.sourceLine(); +aA.body.sourceColumn=this.sourceColumn(); +aA.body.sourceLineText=this.sourceLineText(); +var O=this.func().script(); +if(O){ +aA.body.script=MakeScriptObject_(O,false); +} +}else{ +aA.body.sourceLine=-1; +} +return aA.toJSONProtocol(); +}; +function MakeCompileEvent(O,u){ +return new CompileEvent(O,u); +} +function CompileEvent(O,u){ +this.script_=j(O); +this.type_=u; +} +CompileEvent.prototype.eventType=function(){ +return this.type_; +}; +CompileEvent.prototype.script=function(){ +return this.script_; +}; +CompileEvent.prototype.toJSONProtocol=function(){ +var aA=new ProtocolMessage(); +aA.running=true; +switch(this.type_){ +case s.DebugEvent.BeforeCompile: +aA.event="beforeCompile"; +break; +case s.DebugEvent.AfterCompile: +aA.event="afterCompile"; +break; +case s.DebugEvent.CompileError: +aA.event="compileError"; +break; +} +aA.body={}; +aA.body.script=this.script_; +return aA.toJSONProtocol(); +}; +function MakeScriptObject_(O,aG){ +var aA={id:O.id(), +name:O.name(), +lineOffset:O.lineOffset(), +columnOffset:O.columnOffset(), +lineCount:O.lineCount(), +}; +if(!(O.data()===(void 0))){ +aA.data=O.data(); +} +if(aG){ +aA.source=O.source(); +} +return aA; +} +function MakeAsyncTaskEvent(u,aH,aI){ +return new AsyncTaskEvent(u,aH,aI); +} +function AsyncTaskEvent(u,aH,aI){ +this.type_=u; +this.id_=aH; +this.name_=aI; +} +AsyncTaskEvent.prototype.type=function(){ +return this.type_; +} +AsyncTaskEvent.prototype.name=function(){ +return this.name_; +} +AsyncTaskEvent.prototype.id=function(){ +return this.id_; +} +function DebugCommandProcessor(F,ay){ +this.exec_state_=F; +this.running_=ay||false; +} +DebugCommandProcessor.prototype.processDebugRequest=function(aJ){ +return this.processDebugJSONRequest(aJ); +}; +function ProtocolMessage(aJ){ +this.seq=v++; +if(aJ){ +this.type='response'; +this.request_seq=aJ.seq; +this.command=aJ.command; +}else{ +this.type='event'; +} +this.success=true; +this.running=(void 0); +} +ProtocolMessage.prototype.setOption=function(aI,A){ +if(!this.options_){ +this.options_={}; +} +this.options_[aI]=A; +}; +ProtocolMessage.prototype.failed=function(aK,aL){ +this.success=false; +this.message=aK; +if((typeof(aL)==='object')){ +this.error_details=aL; +} +}; +ProtocolMessage.prototype.toJSONProtocol=function(){ +var aM={}; +aM.seq=this.seq; +if(this.request_seq){ +aM.request_seq=this.request_seq; +} +aM.type=this.type; +if(this.event){ +aM.event=this.event; +} +if(this.command){ +aM.command=this.command; +} +if(this.success){ +aM.success=this.success; +}else{ +aM.success=false; +} +if(this.body){ +var aN; +var aO=k(true,this.options_); +if(this.body instanceof m){ +aN=aO.serializeValue(this.body); +}else if(this.body instanceof d){ +aN=[]; +for(var L=0;L=this.exec_state_.frameCount()){ +return aP.failed('Invalid frame "'+bn+'"'); +} +aP.body=this.exec_state_.frame(bE).evaluate( +by,(!!(bz)),bB); +return; +}else{ +aP.body=this.exec_state_.frame().evaluate( +by,(!!(bz)),bB); +return; +} +}; +DebugCommandProcessor.prototype.lookupRequest_=function(aJ,aP){ +if(!aJ.arguments){ +return aP.failed('Missing arguments'); +} +var bF=aJ.arguments.handles; +if((bF===(void 0))){ +return aP.failed('Argument "handles" missing'); +} +if(!(aJ.arguments.includeSource===(void 0))){ +var bG=(!!(aJ.arguments.includeSource)); +aP.setOption('includeSource',bG); +} +var bH={}; +for(var L=0;L=this.exec_state_.frameCount()){ +return aP.failed('Invalid frame "'+bn+'"'); +} +bn=this.exec_state_.frame(bE); +} +} +var O=bn.func().script(); +if(!O){ +return aP.failed('No source'); +} +var bK=O.value(); +var bL=bK.line_offset; +var bM=%ScriptLineCount(bK); +bI=(bI===(void 0))?0:bI-bL; +bJ=(bJ===(void 0))?bM:bJ-bL; +if(bI<0)bI=0; +if(bJ>bM)bJ=bM; +if(bI>=bM||bJ<0||bI>bJ){ +return aP.failed('Invalid line interval'); +} +aP.body={}; +aP.body.fromLine=bI+bL; +aP.body.toLine=bJ+bL; +aP.body.fromPosition=%ScriptLineStartPosition(bK,bI); +aP.body.toPosition= +(bJ==0)?0:%ScriptLineEndPosition(bK,bJ-1); +aP.body.totalLines=%ScriptLineCount(bK); +aP.body.source=%_SubString(bK.source, +aP.body.fromPosition, +aP.body.toPosition); +}; +DebugCommandProcessor.prototype.scriptsRequest_=function(aJ,aP){ +var bN=ScriptTypeFlag(s.ScriptType.Normal); +var bG=false; +var bO=null; +if(aJ.arguments){ +if(!(aJ.arguments.types===(void 0))){ +bN=(%_ToNumber(aJ.arguments.types)); +if(f(bN)||bN<0){ +return aP.failed('Invalid types "'+ +aJ.arguments.types+'"'); +} +} +if(!(aJ.arguments.includeSource===(void 0))){ +bG=(!!(aJ.arguments.includeSource)); +aP.setOption('includeSource',bG); +} +if((%_IsArray(aJ.arguments.ids))){ +bO={}; +var bP=aJ.arguments.ids; +for(var L=0;L=0){ +bT=true; +} +} +if(!bT)continue; +} +if(bN&ScriptTypeFlag(Y[L].type)){ +aP.body.push(j(Y[L])); +} +} +}; +DebugCommandProcessor.prototype.suspendRequest_=function(aJ,aP){ +aP.running=false; +}; +DebugCommandProcessor.prototype.versionRequest_=function(aJ,aP){ +aP.body={ +V8Version:%GetV8Version() +}; +}; +DebugCommandProcessor.prototype.changeLiveRequest_=function( +aJ,aP){ +if(!aJ.arguments){ +return aP.failed('Missing arguments'); +} +var bU=aJ.arguments.script_id; +var bV=!!aJ.arguments.preview_only; +var bW=scriptById(bU); +if(!bW){ +aP.failed('Script not found'); +return; +} +var bX=new d(); +if(!(typeof(aJ.arguments.new_source)==='string')){ +throw"new_source argument expected"; +} +var bY=aJ.arguments.new_source; +var bZ; +try{ +bZ=s.LiveEdit.SetScriptSource(bW, +bY,bV,bX); +}catch(e){ +if(e instanceof s.LiveEdit.Failure&&"details"in e){ +aP.failed(e.message,e.details); +return; +} +throw e; +} +aP.body={change_log:bX,result:bZ}; +if(!bV&&!this.running_&&bZ.stack_modified){ +aP.body.stepin_recommended=true; +} +}; +DebugCommandProcessor.prototype.restartFrameRequest_=function( +aJ,aP){ +if(!aJ.arguments){ +return aP.failed('Missing arguments'); +} +var bn=aJ.arguments.frame; +if(this.exec_state_.frameCount()==0){ +return aP.failed('No frames'); +} +var ca; +if(!(bn===(void 0))){ +var bE=(%_ToNumber(bn)); +if(bE<0||bE>=this.exec_state_.frameCount()){ +return aP.failed('Invalid frame "'+bn+'"'); +} +ca=this.exec_state_.frame(bE); +}else{ +ca=this.exec_state_.frame(); +} +var bZ=ca.restart(); +aP.body={result:bZ}; +}; +DebugCommandProcessor.prototype.debuggerFlagsRequest_=function(aJ, +aP){ +if(!aJ.arguments){ +aP.failed('Missing arguments'); +return; +} +var cb=aJ.arguments.flags; +aP.body={flags:[]}; +if(!(cb===(void 0))){ +for(var L=0;LP[E].start_position){ +R=E; +} +} +if(R!=x){ +var S=P[R]; +var T=Q[R]; +P[R]=P[x]; +Q[R]=Q[x]; +P[x]=S; +Q[x]=T; +} +} +var U=0; +function ResetIndexes(V,W){ +var X=-1; +while(U=aK.pos1+aK.len1){ +return aE+aK.pos2+aK.len2-aK.pos1-aK.len1; +} +if(!aF){ +aF=PosTranslator.DefaultInsideChunkHandler; +} +return aF(aE,aK); +}; +PosTranslator.DefaultInsideChunkHandler=function(aE,aL){ +Assert(false,"Cannot translate position in changed area"); +}; +PosTranslator.ShiftWithTopInsideChunkHandler= +function(aE,aL){ +return aE-aL.pos1+aL.pos2; +}; +var i={ +UNCHANGED:"unchanged", +SOURCE_CHANGED:"source changed", +CHANGED:"changed", +DAMAGED:"damaged" +}; +function CodeInfoTreeNode(aM,aN,aO){ +this.info=aM; +this.children=aN; +this.array_index=aO; +this.parent=(void 0); +this.status=i.UNCHANGED; +this.status_explanation=(void 0); +this.new_start_pos=(void 0); +this.new_end_pos=(void 0); +this.corresponding_node=(void 0); +this.unmatched_new_nodes=(void 0); +this.textual_corresponding_node=(void 0); +this.textually_unmatched_new_nodes=(void 0); +this.live_shared_function_infos=(void 0); +} +function BuildCodeInfoTree(aP){ +var aQ=0; +function BuildNode(){ +var aR=aQ; +aQ++; +var aS=new e(); +while(aQ=ay.length;}; +this.TranslatePos=function(aE){return aE+aX;}; +}; +function ProcessInternals(aY){ +aY.new_start_pos=aV.TranslatePos( +aY.info.start_position); +var aZ=0; +var ba=false; +var bb=false; +while(!aV.done()&& +aV.current().pos1= +aV.current().pos1+aV.current().len1){ +ba=true; +aV.next(); +continue; +}else if(bc.info.start_position<=aV.current().pos1&& +bc.info.end_position>=aV.current().pos1+ +aV.current().len1){ +ProcessInternals(bc); +bb=bb|| +(bc.status!=i.UNCHANGED); +ba=ba|| +(bc.status==i.DAMAGED); +aZ++; +continue; +}else{ +ba=true; +bc.status=i.DAMAGED; +bc.status_explanation= +"Text diff overlaps with function boundary"; +aZ++; +continue; +} +}else{ +if(aV.current().pos1+aV.current().len1<= +aY.info.end_position){ +aY.status=i.CHANGED; +aV.next(); +continue; +}else{ +aY.status=i.DAMAGED; +aY.status_explanation= +"Text diff overlaps with function boundary"; +return; +} +} +Assert("Unreachable",false); +} +while(aZ0){ +return bp; +} +} +function TraverseTree(w){ +w.live_shared_function_infos=FindFunctionInfos(w.info); +for(var x=0;x ["+bx+"]"; +} +return; +} +var by; +function CheckStackActivations(old_shared_wrapper_list, +new_shared_list, +Z){ +var bz=new e(); +for(var x=0;x0){ +Z.push({dropped_from_stack:bC}); +} +if(bB.length>0){ +Z.push({functions_on_stack:bB}); +throw new Failure("Blocked by functions on stack"); +} +return bC.length; +} +var by={ +AVAILABLE_FOR_PATCH:1, +BLOCKED_ON_ACTIVE_STACK:2, +BLOCKED_ON_OTHER_STACK:3, +BLOCKED_UNDER_NATIVE_CODE:4, +REPLACED_ON_ACTIVE_STACK:5, +BLOCKED_UNDER_GENERATOR:6, +BLOCKED_ACTIVE_GENERATOR:7, +BLOCKED_NO_NEW_TARGET_ON_RESTART:8 +}; +by.SymbolName=function(bF){ +var bG=by; +for(var bH in bG){ +if(bG[bH]==bF){ +return bH; +} +} +}; +function Failure(as){ +this.message=as; +} +Failure.prototype.toString=function(){ +return"LiveEdit Failure: "+this.message; +}; +function CopyErrorPositionToDetails(bI,p){ +function createPositionStruct(N,bJ){ +if(bJ==-1)return; +var bK=N.locationFromPosition(bJ,true); +if(bK==null)return; +return{ +line:bK.line+1, +column:bK.column+1, +position:bJ +}; +} +if(!("scriptObject"in bI)||!("startPosition"in bI)){ +return; +} +var N=bI.scriptObject; +var bL={ +start:createPositionStruct(N,bI.startPosition), +end:createPositionStruct(N,bI.endPosition) +}; +p.position=bL; +} +function SetScriptSource(N,bM,bN,Z){ +var j=N.source; +var bO=CompareStrings(j,bM); +return ApplyPatchMultiChunk(N,bO,bM,bN, +Z); +} +function CompareStrings(bP,bQ){ +return %LiveEditCompareStrings(bP,bQ); +} +function ApplySingleChunkPatch(N,change_pos,change_len,new_str, +Z){ +var j=N.source; +var bM=j.substring(0,change_pos)+ +new_str+j.substring(change_pos+change_len); +return ApplyPatchMultiChunk(N, +[change_pos,change_pos+change_len,change_pos+new_str.length], +bM,false,Z); +} +function DescribeChangeTree(bd){ +function ProcessOldNode(w){ +var bR=[]; +for(var x=0;x>1); +var m=2|4|1; +for(var n=0;n>1); +for(var n=0;n>1)+(fields?fields.length:0); +if(v>=4){ +%OptimizeObjectForAddingMultipleProperties(u,v); +} +if(fields){ +for(var n=0;n9007199254740991)throw %make_range_error(i); +return j; +} +function MaxSimple(k,l){ +return k>l?k:l; +} +function MinSimple(k,l){ +return k>l?l:k; +} +%SetForceInlineFlag(MaxSimple); +%SetForceInlineFlag(MinSimple); +function SpeciesConstructor(m,n){ +var o=m.constructor; +if((o===(void 0))){ +return n; +} +if(!(%_IsJSReceiver(o))){ +throw %make_type_error(28); +} +var p=o[f]; +if((p==null)){ +return n; +} +if(%IsConstructor(p)){ +return p; +} +throw %make_type_error(236); +} +%FunctionSetPrototype(c,new c(0)); +b.Export(function(q){ +q.MaxSimple=MaxSimple; +q.MinSimple=MinSimple; +q.ToPositiveInteger=ToPositiveInteger; +q.ToIndex=ToIndex; +q.SpeciesConstructor=SpeciesConstructor; +}); +}) + +$v8nativesu +(function(a,b){ +%CheckIsBootstrapping(); +var c=a.Number; +var d=a.Object; +var e=b.ImportNow("iterator_symbol"); +var f=%GetRootNaN(); +var g=b.ImportNow("object_to_string"); +var h=2|4|1; +b.InstallConstants(a,[ +"Infinity",(1/0), +"NaN",f, +"undefined",(void 0), +]); +function ObjectToLocaleString(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Object.prototype.toLocaleString"); +return this.toString(); +} +function ObjectValueOf(){ +return(%_ToObject(this)); +} +function ObjectIsPrototypeOf(i){ +if(!(%_IsJSReceiver(i)))return false; +var j=(%_ToObject(this)); +return %HasInPrototypeChain(i,j); +} +function GetMethod(k,l){ +var m=k[l]; +if((m==null))return(void 0); +if((typeof(m)==='function'))return m; +throw %make_type_error(15,typeof m); +} +function ObjectConstructor(n){ +if(d!=new.target&&!(new.target===(void 0))){ +return this; +} +if((n===null)||(n===(void 0)))return{}; +return(%_ToObject(n)); +} +%SetNativeFlag(d); +%SetCode(d,ObjectConstructor); +%AddNamedProperty(d.prototype,"constructor",d, +2); +b.InstallFunctions(d.prototype,2,[ +"toString",g, +"toLocaleString",ObjectToLocaleString, +"valueOf",ObjectValueOf, +"isPrototypeOf",ObjectIsPrototypeOf, +]); +b.InstallConstants(c,[ +"MAX_VALUE",1.7976931348623157e+308, +"MIN_VALUE",5e-324, +"NaN",f, +"NEGATIVE_INFINITY",-(1/0), +"POSITIVE_INFINITY",(1/0), +"MAX_SAFE_INTEGER",9007199254740991, +"MIN_SAFE_INTEGER",-9007199254740991, +"EPSILON",2.220446049250313e-16, +]); +function GetIterator(k,o){ +if((o===(void 0))){ +o=k[e]; +} +if(!(typeof(o)==='function')){ +throw %make_type_error(71,k); +} +var p=%_Call(o,k); +if(!(%_IsJSReceiver(p))){ +throw %make_type_error(65,p); +} +return p; +} +b.Export(function(q){ +q.GetIterator=GetIterator; +q.GetMethod=GetMethod; +q.ObjectHasOwnProperty=d.prototype.hasOwnProperty; +}); +%InstallToContext([ +"object_value_of",ObjectValueOf, +]); +}) + +symbol +(function(a,b){ +"use strict"; +%CheckIsBootstrapping(); +var c=a.Symbol; +var d=b.ImportNow("has_instance_symbol"); +var e= +b.ImportNow("is_concat_spreadable_symbol"); +var f=b.ImportNow("iterator_symbol"); +var g=b.ImportNow("match_symbol"); +var h=b.ImportNow("replace_symbol"); +var i=b.ImportNow("search_symbol"); +var j=b.ImportNow("species_symbol"); +var k=b.ImportNow("split_symbol"); +var l=b.ImportNow("to_primitive_symbol"); +var m=b.ImportNow("to_string_tag_symbol"); +var n=b.ImportNow("unscopables_symbol"); +function SymbolFor(o){ +o=(%_ToString(o)); +var p=%SymbolRegistry(); +if((p.for[o]===(void 0))){ +var q=%CreateSymbol(o); +p.for[o]=q; +p.keyFor[q]=o; +} +return p.for[o]; +} +function SymbolKeyFor(q){ +if(!(typeof(q)==='symbol'))throw %make_type_error(138,q); +return %SymbolRegistry().keyFor[q]; +} +b.InstallConstants(c,[ +"hasInstance",d, +"isConcatSpreadable",e, +"iterator",f, +"match",g, +"replace",h, +"search",i, +"species",j, +"split",k, +"toPrimitive",l, +"toStringTag",m, +"unscopables",n, +]); +b.InstallFunctions(c,2,[ +"for",SymbolFor, +"keyFor",SymbolKeyFor +]); +}) + +arrayfc +(function(a,b,c){ +"use strict"; +%CheckIsBootstrapping(); +var d; +var e; +var f=a.Array; +var g=b.InternalArray; +var h=b.InternalPackedArray; +var i; +var j; +var k; +var l=b.ImportNow("object_to_string"); +var m=b.ImportNow("iterator_symbol"); +var n=b.ImportNow("species_symbol"); +var o=b.ImportNow("unscopables_symbol"); +b.Import(function(p){ +d=p.GetIterator; +e=p.GetMethod; +i=p.MaxSimple; +j=p.MinSimple; +k=p.ObjectHasOwnProperty; +}); +function ArraySpeciesCreate(q,r){ +r=((r)+0); +var s=%ArraySpeciesConstructor(q); +return new s(r); +} +function KeySortCompare(t,u){ +return t-u; +} +function GetSortedArrayKeys(q,v){ +if((typeof(v)==='number')){ +var w=v; +var x=new g(); +for(var y=0;y>2; +var I=%EstimateNumberOfElements(q); +return(II*4); +} +function Stack(){ +this.length=0; +this.values=new g(); +} +Stack.prototype.length=null; +Stack.prototype.values=null; +function StackPush(J,K){ +J.values[J.length++]=K; +} +function StackPop(J){ +J.values[--J.length]=null +} +function StackHas(J,L){ +var r=J.length; +var M=J.values; +for(var y=0;y=P){ +var T=q[E]; +if(!(T===(void 0))||E in q){ +%CreateDataProperty(S,E-P,T); +} +} +} +} +} +function SparseMove(q,P,Q,R,V){ +if(V===Q)return; +var W=new g( +j(R-Q+V,0xffffffff)); +var X; +var v=%GetArrayKeys(q,R); +if((typeof(v)==='number')){ +var w=v; +for(var y=0;y=P+Q){ +var T=q[E]; +if(!(T===(void 0))||E in q){ +var Y=E-Q+V; +W[Y]=T; +if(Y>0xfffffffe){ +X=X||new g(); +X.push(Y); +} +} +} +} +} +%MoveArrayContents(W,q); +if(!(X===(void 0))){ +var r=X.length; +for(var y=0;yQ){ +for(var y=R-Q;y>P;y--){ +var aa=y+Q-1; +var ab=y+V-1; +if(aa in q){ +q[ab]=q[aa]; +}else{ +delete q[ab]; +} +} +}else{ +for(var y=P;yR-Q+V;y--){ +delete q[y-1]; +} +} +} +} +function ArrayToString(){ +var q; +var ac; +if((%_IsArray(this))){ +ac=this.join; +if(ac===ArrayJoin){ +return Join(this,this.length,',',false); +} +q=this; +}else{ +q=(%_ToObject(this)); +ac=q.join; +} +if(!(typeof(ac)==='function')){ +return %_Call(l,q); +} +return %_Call(ac,q); +} +function InnerArrayToLocaleString(q,r){ +return Join(q,(%_ToLength(r)),',',true); +} +function ArrayToLocaleString(){ +var q=(%_ToObject(this)); +var ad=q.length; +return InnerArrayToLocaleString(q,ad); +} +function InnerArrayJoin(B,q,r){ +if((B===(void 0))){ +B=','; +}else{ +B=(%_ToString(B)); +} +if(r===1){ +var z=q[0]; +if((z==null))return''; +return(%_ToString(z)); +} +return Join(q,r,B,false); +} +function ArrayJoin(B){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.join"); +var q=(%_ToObject(this)); +var r=(%_ToLength(q.length)); +return InnerArrayJoin(B,q,r); +} +function ArrayPop(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.pop"); +var q=(%_ToObject(this)); +var ae=(%_ToLength(q.length)); +if(ae==0){ +q.length=ae; +return; +} +ae--; +var K=q[ae]; +%DeleteProperty_Strict(q,ae); +q.length=ae; +return K; +} +function ArrayPush(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.push"); +var q=(%_ToObject(this)); +var ae=(%_ToLength(q.length)); +var af=arguments.length; +if(af>9007199254740991-ae)throw %make_type_error(228,af,ae); +for(var y=0;y=y){ +al=y; +while(x[++ai]==y){} +am=R-y-1; +} +var an=q[al]; +if(!(an===(void 0))||al in q){ +var ao=q[am]; +if(!(ao===(void 0))||am in q){ +q[al]=ao; +q[am]=an; +}else{ +q[am]=an; +delete q[al]; +} +}else{ +var ao=q[am]; +if(!(ao===(void 0))||am in q){ +q[al]=ao; +delete q[am]; +} +} +} +} +function PackedArrayReverse(q,R){ +var aj=R-1; +for(var y=0;y0&&UseSparseVariant(q,R,(%_IsArray(q)),R)&& +!%object_is_sealed(q)){ +SparseMove(q,0,0,R,as); +}else{ +SimpleMove(q,0,0,R,as); +} +for(var y=0;yR)P=R; +} +if(av<0){ +av+=R; +if(av<0)av=0; +}else{ +if(av>R)av=R; +} +var aw=ArraySpeciesCreate(q,i(av-P,0)); +if(avR?R:P; +} +function ComputeSpliceDeleteCount(ax,as,R,P){ +var Q=0; +if(as==1) +return R-P; +Q=(%_ToInteger(ax)); +if(Q<0) +return 0; +if(Q>R-P) +return R-P; +return Q; +} +function ArraySplice(at,ax){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.splice"); +var as=arguments.length; +var q=(%_ToObject(this)); +var R=(%_ToLength(q.length)); +var P=ComputeSpliceStartIndex((%_ToInteger(at)),R); +var Q=ComputeSpliceDeleteCount(ax,as,R, +P); +var S=ArraySpeciesCreate(q,Q); +S.length=Q; +var ay=as>2?as-2:0; +if(Q!=ay&&%object_is_sealed(q)){ +throw %make_type_error(13); +}else if(Q>0&&%object_is_frozen(q)){ +throw %make_type_error(12); +} +var az=Q; +if(ay!=Q){ +az+=R-P-Q; +} +if(UseSparseVariant(q,R,(%_IsArray(q)),az)){ +%NormalizeElements(q); +if((%_IsArray(S)))%NormalizeElements(S); +SparseSlice(q,P,Q,R,S); +SparseMove(q,P,Q,R,ay); +}else{ +SimpleSlice(q,P,Q,R,S); +SimpleMove(q,P,Q,R,ay); +} +var y=P; +var aA=2; +var aB=arguments.length; +while(aA=p;aj--){ +var aH=t[aj]; +var aI=aC(aH,aG); +if(aI>0){ +t[aj+1]=aH; +}else{ +break; +} +} +t[aj+1]=aG; +} +}; +var aJ=function(t,p,aF){ +var aK=new g(); +var aL=200+((aF-p)&15); +var aj=0; +p+=1; +aF-=1; +for(var y=p;y>1][0]; +return aM; +} +var aN=function QuickSort(t,p,aF){ +var aM=0; +while(true){ +if(aF-p<=10){ +aE(t,p,aF); +return; +} +if(aF-p>1000){ +aM=aJ(t,p,aF); +}else{ +aM=p+((aF-p)>>1); +} +var aO=t[p]; +var aP=t[aF-1]; +var aQ=t[aM]; +var aR=aC(aO,aP); +if(aR>0){ +var aH=aO; +aO=aP; +aP=aH; +} +var aS=aC(aO,aQ); +if(aS>=0){ +var aH=aO; +aO=aQ; +aQ=aP; +aP=aH; +}else{ +var aT=aC(aP,aQ); +if(aT>0){ +var aH=aP; +aP=aQ; +aQ=aH; +} +} +t[p]=aO; +t[aF-1]=aQ; +var aU=aP; +var aV=p+1; +var aW=aF-1; +t[aM]=t[aV]; +t[aV]=aU; +partition:for(var y=aV+1;y0){ +do{ +aW--; +if(aW==y)break partition; +var aX=t[aW]; +aI=aC(aX,aU); +}while(aI>0); +t[y]=t[aW]; +t[aW]=aG; +if(aI<0){ +aG=t[y]; +t[y]=t[aV]; +t[aV]=aG; +aV++; +} +} +} +if(aF-aW=ba){ba=y+1;} +} +} +}else{ +for(var y=0;y=ba){ba=Z+1;} +} +} +} +} +return ba; +}; +var bd=function(aZ,p,aF){ +for(var bb=%object_get_prototype_of(aZ);bb; +bb=%object_get_prototype_of(bb)){ +var v=(%_IsJSProxy(bb))?aF:%GetArrayKeys(bb,aF); +if((typeof(v)==='number')){ +var bc=v; +for(var y=p;y=r)Z=r-1; +} +var bo=0; +var ba=Z; +if(UseSparseVariant(q,r,(%_IsArray(q)),Z)){ +%NormalizeElements(q); +var v=%GetArrayKeys(q,Z+1); +if((typeof(v)==='number')){ +ba=v; +}else{ +if(v.length==0)return-1; +var bp=GetSortedArrayKeys(q,v); +var y=bp.length-1; +while(y>=0){ +var E=bp[y]; +if(q[E]===aG)return E; +y--; +} +return-1; +} +} +if(!(aG===(void 0))){ +for(var y=ba;y>=bo;y--){ +if(q[y]===aG)return y; +} +return-1; +} +for(var y=ba;y>=bo;y--){ +if((q[y]===(void 0))&&y in q){ +return y; +} +} +return-1; +} +function ArrayLastIndexOf(aG,Z){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.lastIndexOf"); +var r=(%_ToLength(this.length)); +return InnerArrayLastIndexOf(this,aG,Z,r, +arguments.length); +} +function InnerArrayReduce(bq,T,q,r,bn){ +if(!(typeof(bq)==='function')){ +throw %make_type_error(15,bq); +} +var y=0; +find_initial:if(bn<2){ +for(;y=0;y--){ +if(y in q){ +T=q[y--]; +break find_initial; +} +} +throw %make_type_error(122); +} +for(;y>=0;y--){ +if(y in q){ +var aG=q[y]; +T=bq(T,aG,y,q); +} +} +return T; +} +function ArrayReduceRight(bq,T){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.reduceRight"); +var q=(%_ToObject(this)); +var r=(%_ToLength(q.length)); +return InnerArrayReduceRight(bq,T,q,r, +arguments.length); +} +function InnerArrayCopyWithin(br,at,au,q,r){ +br=(%_ToInteger(br)); +var aF; +if(br<0){ +aF=i(r+br,0); +}else{ +aF=j(br,r); +} +at=(%_ToInteger(at)); +var p; +if(at<0){ +p=i(r+at,0); +}else{ +p=j(at,r); +} +au=(au===(void 0))?r:(%_ToInteger(au)); +var bs; +if(au<0){ +bs=i(r+au,0); +}else{ +bs=j(au,r); +} +var bt=j(bs-p,r-aF); +var bu=1; +if(p0){ +if(p in q){ +q[aF]=q[p]; +}else{ +delete q[aF]; +} +p=p+bu; +aF=aF+bu; +bt--; +} +return q; +} +function ArrayCopyWithin(br,at,au){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Array.prototype.copyWithin"); +var q=(%_ToObject(this)); +var r=(%_ToLength(q.length)); +return InnerArrayCopyWithin(br,at,au,q,r); +} +function InnerArrayFind(bv,bw,q,r){ +if(!(typeof(bv)==='function')){ +throw %make_type_error(15,bv); +} +for(var y=0;yr)y=r; +} +if(au<0){ +au+=r; +if(au<0)au=0; +}else{ +if(au>r)au=r; +} +if((au-y)>0&&%object_is_frozen(q)){ +throw %make_type_error(12); +} +for(;y0)D+=%_SubString(y,0,H); +while(true){ +F='$'; +E=H+1; +if(E=48&&G<=57){ +I=(G-48); +J=1; +if(E+1=48&&H<=57){ +K=I*10+((H-48)); +if(KE){ +D+=%_SubString(y,E,H); +} +} +return D; +} +function StringReplace(M,N){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.replace"); +if(!(M==null)){ +var O=M[i]; +if(!(O===(void 0))){ +return %_Call(O,M,this,N); +} +} +var s=(%_ToString(this)); +M=(%_ToString(M)); +if(M.length==1&& +s.length>0xFF&& +(typeof(N)==='string')&& +%StringIndexOf(N,'$',0)<0){ +return %StringReplaceOneCharWithString(s,M,N); +} +var P=%StringIndexOf(s,M,0); +if(P<0)return s; +var Q=P+M.length; +var D=%_SubString(s,0,P); +if((typeof(N)==='function')){ +D+=N(M,P,s); +}else{ +const x={length:1}; +const u=%_SubString(s,P,Q); +D+=GetSubstitution(u,s,P,x, +(%_ToString(N))); +} +return D+%_SubString(s,Q,s.length); +} +function StringSearch(q){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.search"); +if(!(q==null)){ +var R=q[j]; +if(!(R===(void 0))){ +return %_Call(R,q,this); +} +} +var s=(%_ToString(this)); +var t=%RegExpCreate(q); +return %_Call(t[j],t,s); +} +function StringSlice(P,Q){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.slice"); +var n=(%_ToString(this)); +var S=n.length; +var T=(%_ToInteger(P)); +var U=S; +if(!(Q===(void 0))){ +U=(%_ToInteger(Q)); +} +if(T<0){ +T+=S; +if(T<0){ +T=0; +} +}else{ +if(T>S){ +return''; +} +} +if(U<0){ +U+=S; +if(U<0){ +return''; +} +}else{ +if(U>S){ +U=S; +} +} +if(U<=T){ +return''; +} +return %_SubString(n,T,U); +} +function StringSplitJS(V,W){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.split"); +if(!(V==null)){ +var X=V[k]; +if(!(X===(void 0))){ +return %_Call(X,V,this,W); +} +} +var s=(%_ToString(this)); +W=((W===(void 0)))?4294967295:((W)>>>0); +var Y=s.length; +var Z=(%_ToString(V)); +if(W===0)return[]; +if((V===(void 0)))return[s]; +var aa=Z.length; +if(aa===0)return %StringToArray(s,W); +return %StringSplit(s,Z,W); +} +function StringToLowerCaseJS(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLowerCase"); +return %StringToLowerCase((%_ToString(this))); +} +function StringToLocaleLowerCase(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLocaleLowerCase"); +return %StringToLowerCase((%_ToString(this))); +} +function StringToUpperCaseJS(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toUpperCase"); +return %StringToUpperCase((%_ToString(this))); +} +function StringToLocaleUpperCase(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLocaleUpperCase"); +return %StringToUpperCase((%_ToString(this))); +} +function HtmlEscape(ab){ +return %_Call(StringReplace,(%_ToString(ab)),/"/g,"""); +} +function StringAnchor(ac){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.anchor"); +return""+(%_ToString(this))+ +""; +} +function StringBig(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.big"); +return""+(%_ToString(this))+""; +} +function StringBlink(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.blink"); +return""+(%_ToString(this))+""; +} +function StringBold(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.bold"); +return""+(%_ToString(this))+""; +} +function StringFixed(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.fixed"); +return""+(%_ToString(this))+""; +} +function StringFontcolor(ad){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.fontcolor"); +return""+(%_ToString(this))+ +""; +} +function StringFontsize(ae){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.fontsize"); +return""+(%_ToString(this))+ +""; +} +function StringItalics(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.italics"); +return""+(%_ToString(this))+""; +} +function StringLink(n){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.link"); +return""+(%_ToString(this))+""; +} +function StringSmall(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.small"); +return""+(%_ToString(this))+""; +} +function StringStrike(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.strike"); +return""+(%_ToString(this))+""; +} +function StringSub(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.sub"); +return""+(%_ToString(this))+""; +} +function StringSup(){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.sup"); +return""+(%_ToString(this))+""; +} +function StringRepeat(af){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.repeat"); +var n=(%_ToString(this)); +var ag=(%_ToInteger(af)); +if(ag<0||ag===(1/0))throw %make_range_error(158); +if(n.length===0)return""; +if(ag>%_MaxSmi())throw %make_range_error(158); +var ah=""; +while(true){ +if(ag&1)ah+=n; +ag>>=1; +if(ag===0)return ah; +n+=n; +} +} +function StringCodePointAt(E){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.codePointAt"); +var v=(%_ToString(this)); +var ae=v.length; +E=(%_ToInteger(E)); +if(E<0||E>=ae){ +return(void 0); +} +var ai=%_StringCharCodeAt(v,E); +if(ai<0xD800||ai>0xDBFF||E+1==ae){ +return ai; +} +var aj=%_StringCharCodeAt(v,E+1); +if(aj<0xDC00||aj>0xDFFF){ +return ai; +} +return(ai-0xD800)*0x400+aj+0x2400; +} +function StringRaw(ak){ +"use strict"; +var al=arguments.length; +var am=(%_ToObject(ak)); +var an=(%_ToObject(am.raw)); +var ao=(%_ToLength(an.length)); +if(ao<=0)return""; +var D=(%_ToString(an[0])); +for(var p=1;p%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 1!==0){ +throw %make_range_error(169, +"start offset","Uint8Array",1); +} +} +var ah; +if((ae===(void 0))){ +if(af % 1!==0){ +throw %make_range_error(169, +"byte length","Uint8Array",1); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Uint8Array",1); +} +}else{ +ah=ae*1; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,1,ac,ag,ah,true); +} +function Uint8ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*1; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,1,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,1,null,0,aj,true); +} +} +function Uint8ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*1; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,1,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,1,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 1!==0){ +throw %make_range_error(169, +"start offset","Int8Array",1); +} +} +var ah; +if((ae===(void 0))){ +if(af % 1!==0){ +throw %make_range_error(169, +"byte length","Int8Array",1); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Int8Array",1); +} +}else{ +ah=ae*1; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,2,ac,ag,ah,true); +} +function Int8ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*1; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,2,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,2,null,0,aj,true); +} +} +function Int8ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*1; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,2,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,2,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 2!==0){ +throw %make_range_error(169, +"start offset","Uint16Array",2); +} +} +var ah; +if((ae===(void 0))){ +if(af % 2!==0){ +throw %make_range_error(169, +"byte length","Uint16Array",2); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Uint16Array",2); +} +}else{ +ah=ae*2; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,3,ac,ag,ah,true); +} +function Uint16ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*2; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,3,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,3,null,0,aj,true); +} +} +function Uint16ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*2; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,3,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,3,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 2!==0){ +throw %make_range_error(169, +"start offset","Int16Array",2); +} +} +var ah; +if((ae===(void 0))){ +if(af % 2!==0){ +throw %make_range_error(169, +"byte length","Int16Array",2); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Int16Array",2); +} +}else{ +ah=ae*2; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,4,ac,ag,ah,true); +} +function Int16ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*2; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,4,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,4,null,0,aj,true); +} +} +function Int16ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*2; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,4,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,4,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 4!==0){ +throw %make_range_error(169, +"start offset","Uint32Array",4); +} +} +var ah; +if((ae===(void 0))){ +if(af % 4!==0){ +throw %make_range_error(169, +"byte length","Uint32Array",4); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Uint32Array",4); +} +}else{ +ah=ae*4; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,5,ac,ag,ah,true); +} +function Uint32ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*4; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,5,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,5,null,0,aj,true); +} +} +function Uint32ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*4; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,5,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,5,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 4!==0){ +throw %make_range_error(169, +"start offset","Int32Array",4); +} +} +var ah; +if((ae===(void 0))){ +if(af % 4!==0){ +throw %make_range_error(169, +"byte length","Int32Array",4); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Int32Array",4); +} +}else{ +ah=ae*4; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,6,ac,ag,ah,true); +} +function Int32ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*4; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,6,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,6,null,0,aj,true); +} +} +function Int32ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*4; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,6,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,6,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 4!==0){ +throw %make_range_error(169, +"start offset","Float32Array",4); +} +} +var ah; +if((ae===(void 0))){ +if(af % 4!==0){ +throw %make_range_error(169, +"byte length","Float32Array",4); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Float32Array",4); +} +}else{ +ah=ae*4; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,7,ac,ag,ah,true); +} +function Float32ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*4; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,7,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,7,null,0,aj,true); +} +} +function Float32ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*4; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,7,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,7,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 8!==0){ +throw %make_range_error(169, +"start offset","Float64Array",8); +} +} +var ah; +if((ae===(void 0))){ +if(af % 8!==0){ +throw %make_range_error(169, +"byte length","Float64Array",8); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Float64Array",8); +} +}else{ +ah=ae*8; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,8,ac,ag,ah,true); +} +function Float64ArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*8; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,8,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,8,null,0,aj,true); +} +} +function Float64ArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*8; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,8,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,8,ak,ai); +} +if(!al){ +for(var am=0;am%_MaxSmi()){ +throw %make_range_error(170); +} +var af=%_ArrayBufferGetByteLength(ac); +var ag; +if((ad===(void 0))){ +ag=0; +}else{ +ag=ad; +if(ag % 1!==0){ +throw %make_range_error(169, +"start offset","Uint8ClampedArray",1); +} +} +var ah; +if((ae===(void 0))){ +if(af % 1!==0){ +throw %make_range_error(169, +"byte length","Uint8ClampedArray",1); +} +ah=af-ag; +if(ah<0){ +throw %make_range_error(169, +"byte length","Uint8ClampedArray",1); +} +}else{ +ah=ae*1; +if(ag+ah>af){ +throw %make_range_error(170); +} +} +%_TypedArrayInitialize(ab,9,ac,ag,ah,true); +} +function Uint8ClampedArrayConstructByLength(ab,ae){ +var ai=(ae===(void 0))? +0:D(ae,170); +if(ae>%_MaxSmi()){ +throw %make_range_error(170); +} +var aj=ai*1; +if(aj>%_TypedArrayMaxSizeInHeap()){ +var ac=new h(aj); +%_TypedArrayInitialize(ab,9,ac,0,aj,true); +}else{ +%_TypedArrayInitialize(ab,9,null,0,aj,true); +} +} +function Uint8ClampedArrayConstructByArrayLike(ab,ak,ae){ +var ai=C(ae,170); +if(ai>%_MaxSmi()){ +throw %make_range_error(170); +} +var al=false; +var aj=ai*1; +if(aj<=%_TypedArrayMaxSizeInHeap()){ +%_TypedArrayInitialize(ab,9,null,0,aj,false); +}else{ +al= +%TypedArrayInitializeFromArrayLike(ab,9,ak,ai); +} +if(!al){ +for(var am=0;am0){ +for(var am=0;am=aL&&aJ>=aK; +aM--){ +aE[ag+aM]=aF[aM]; +aJ-=aI; +aK-=aH; +} +return aM; +} +var aM=CopyRightPart(); +var aN=new g(aM+1-aL); +for(var am=aL;am<=aM;am++){ +aN[am-aL]=aF[am]; +} +for(am=aL;am<=aM;am++){ +aE[ag+am]=aN[am-aL]; +} +} +function TypedArraySet(ab,ag){ +var aO=(ag===(void 0))?0:(%_ToInteger(ag)); +if(aO<0)throw %make_type_error(182); +if(aO>%_MaxSmi()){ +throw %make_range_error(183); +} +switch(%TypedArraySetFastCases(this,ab,aO)){ +case 0: +return; +case 1: +TypedArraySetFromOverlappingTypedArray(this,ab,aO); +return; +case 2: +TypedArraySetFromArrayLike(this, +ab,%_TypedArrayGetLength(ab),aO); +return; +case 3: +var ai=ab.length; +if((ai===(void 0))){ +if((typeof(ab)==='number')){ +throw %make_type_error(47); +} +return; +} +ai=(%_ToLength(ai)); +if(aO+ai>%_TypedArrayGetLength(this)){ +throw %make_range_error(183); +} +TypedArraySetFromArrayLike(this,ab,ai,aO); +return; +} +} +%FunctionSetLength(TypedArraySet,1); +function TypedArrayGetToStringTag(){ +if(!(%_IsTypedArray(this)))return; +var aP=%_ClassOf(this); +if((aP===(void 0)))return; +return aP; +} +function TypedArrayCopyWithin(aE,aQ,ay){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +return k(aE,aQ,ay,this,ae); +} +%FunctionSetLength(TypedArrayCopyWithin,2); +function TypedArrayEvery(aR,aS){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +return l(aR,aS,this,ae); +} +%FunctionSetLength(TypedArrayEvery,1); +function TypedArrayForEach(aR,aS){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +q(aR,aS,this,ae); +} +%FunctionSetLength(TypedArrayForEach,1); +function TypedArrayFill(as,aQ,ay){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +return m(as,aQ,ay,this,ae); +} +%FunctionSetLength(TypedArrayFill,1); +function TypedArrayFilter(aR,aT){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +if(!(typeof(aR)==='function'))throw %make_type_error(15,aR); +var aU=new x(); +n(aR,aT,this,ae,aU); +var aV=aU.length; +var aW=TypedArraySpeciesCreate(this,aV); +for(var am=0;amaZ){ +return 1; +}else if((!%_IsSmi(%IS_VAR(aY))&&!(aY==aY))&&(!%_IsSmi(%IS_VAR(aZ))&&!(aZ==aZ))){ +return(!%_IsSmi(%IS_VAR(aZ))&&!(aZ==aZ))?0:1; +}else if((!%_IsSmi(%IS_VAR(aY))&&!(aY==aY))){ +return 1; +} +return 0; +} +function TypedArraySort(ba){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +if((ba===(void 0))){ +ba=TypedArrayComparefn; +} +return v(this,ae,ba); +} +function TypedArrayIndexOf(bb,bc){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +if(ae===0)return-1; +if(!(typeof(bb)==='number'))return-1; +var bd=(%_ToInteger(bc)); +var be; +if(bd===0){ +be=0; +}else if(bd>0){ +be=bd; +}else{ +be=ae+bd; +if(be<0){ +be=0; +} +} +while(be=0){ +if(ae<=bd){ +be=ae-1; +}else if(bd===0){ +be=0; +}else{ +be=bd; +} +}else{ +be=ae+bd; +} +while(be>=0){ +var bf=this[be]; +if(bb===bf){ +return be; +} +--be; +} +return-1; +} +%FunctionSetLength(TypedArrayLastIndexOf,1); +function TypedArrayMap(aR,aT){ +if(!(%_IsTypedArray(this)))throw %make_type_error(73); +var ae=%_TypedArrayGetLength(this); +var aU=TypedArraySpeciesCreate(this,ae); +if(!(typeof(aR)==='function'))throw %make_type_error(15,aR); +for(var am=0;am=0){ +be=bd; +}else{ +be=ae+bd; +if(be<0){ +be=0; +} +} +while(be>>12); +n=n+(n<<2); +n=n^(n>>>4); +n=(n*2057)|0; +n=n^(n>>>16); +return n&0x3fffffff; +} +%SetForceInlineFlag(ComputeIntegerHash); +function GetExistingHash(q){ +if(%_IsSmi(q)){ +return ComputeIntegerHash(q,0); +} +if((typeof(q)==='string')){ +var v=%_StringGetRawHashField(q); +if((v&1)===0){ +return v>>>2; +} +}else if((%_IsJSReceiver(q))&&!(%_IsJSProxy(q))&&!(%_ClassOf(q)==='global')){ +var n=(q[f]); +return n; +} +return %GenericHash(q); +} +%SetForceInlineFlag(GetExistingHash); +function GetHash(q){ +var n=GetExistingHash(q); +if((n===(void 0))){ +n=(g()*0x40000000)|0; +if(n===0)n=1; +(q[f]=n); +} +return n; +} +%SetForceInlineFlag(GetHash); +function SetConstructor(w){ +if((new.target===(void 0))){ +throw %make_type_error(27,"Set"); +} +%_SetInitialize(this); +if(!(w==null)){ +var x=this.add; +if(!(typeof(x)==='function')){ +throw %make_type_error(87,x,'add',this); +} +for(var y of w){ +%_Call(x,this,y); +} +} +} +function SetAdd(q){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45,'Set.prototype.add',this); +} +if(q===0){ +q=0; +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetHash(q); +if(SetFindEntry(m,o,q,n)!==-1)return this; +var z=((%_FixedArrayGet(m,(1)|0))); +var A=((%_FixedArrayGet(m,(2)|0))); +var B=o<<1; +if((z+A)>=B){ +%SetGrow(this); +m=%_JSCollectionGetTable(this); +o=((%_FixedArrayGet(m,(0)|0))); +z=((%_FixedArrayGet(m,(1)|0))); +A=((%_FixedArrayGet(m,(2)|0))); +} +var r=z+A; +var C=(3+(o)+((r)<<1)); +var p=(n&((o)-1)); +var D=((%_FixedArrayGet(m,(3+(p))|0))); +((%_FixedArraySet(m,(3+(p))|0,r))); +(((%_FixedArraySet(m,(1)|0,(z+1)|0)))); +(%_FixedArraySet(m,(C)|0,q)); +((%_FixedArraySet(m,(C+1)|0,(D)|0))); +return this; +} +function SetHas(q){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45,'Set.prototype.has',this); +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetExistingHash(q); +if((n===(void 0)))return false; +return SetFindEntry(m,o,q,n)!==-1; +} +function SetDelete(q){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45, +'Set.prototype.delete',this); +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetExistingHash(q); +if((n===(void 0)))return false; +var r=SetFindEntry(m,o,q,n); +if(r===-1)return false; +var z=((%_FixedArrayGet(m,(1)|0)))-1; +var A=((%_FixedArrayGet(m,(2)|0)))+1; +var C=(3+(o)+((r)<<1)); +(%_FixedArraySet(m,(C)|0,%_TheHole())); +(((%_FixedArraySet(m,(1)|0,(z)|0)))); +(((%_FixedArraySet(m,(2)|0,(A)|0)))); +if(z<(o>>>1))%SetShrink(this); +return true; +} +function SetGetSize(){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45, +'Set.prototype.size',this); +} +var m=%_JSCollectionGetTable(this); +return((%_FixedArrayGet(m,(1)|0))); +} +function SetClearJS(){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45, +'Set.prototype.clear',this); +} +%_SetClear(this); +} +function SetForEach(E,F){ +if(!(%_ClassOf(this)==='Set')){ +throw %make_type_error(45, +'Set.prototype.forEach',this); +} +if(!(typeof(E)==='function'))throw %make_type_error(15,E); +var G=new i(this,2); +var q; +var H=[(void 0)]; +while(%SetIteratorNext(G,H)){ +q=H[0]; +%_Call(E,F,q,q,this); +} +} +function SetSpecies(){ +return this; +} +%SetCode(e,SetConstructor); +%FunctionSetLength(e,0); +%FunctionSetPrototype(e,new d()); +%AddNamedProperty(e.prototype,"constructor",e,2); +%AddNamedProperty(e.prototype,k,"Set", +2|1); +%FunctionSetLength(SetForEach,1); +b.InstallGetter(e,j,SetSpecies); +b.InstallGetter(e.prototype,"size",SetGetSize); +b.InstallFunctions(e.prototype,2,[ +"add",SetAdd, +"has",SetHas, +"delete",SetDelete, +"clear",SetClearJS, +"forEach",SetForEach +]); +function MapConstructor(w){ +if((new.target===(void 0))){ +throw %make_type_error(27,"Map"); +} +%_MapInitialize(this); +if(!(w==null)){ +var x=this.set; +if(!(typeof(x)==='function')){ +throw %make_type_error(87,x,'set',this); +} +for(var I of w){ +if(!(%_IsJSReceiver(I))){ +throw %make_type_error(52,I); +} +%_Call(x,this,I[0],I[1]); +} +} +} +function MapGet(q){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.get',this); +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetExistingHash(q); +if((n===(void 0)))return(void 0); +var r=MapFindEntry(m,o,q,n); +if(r===-1)return(void 0); +return((%_FixedArrayGet(m,((3+(o)+((r)*3))+1)|0))); +} +function MapSet(q,y){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.set',this); +} +if(q===0){ +q=0; +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetHash(q); +var r=MapFindEntry(m,o,q,n); +if(r!==-1){ +var J=(3+(o)+((r)*3)); +(%_FixedArraySet(m,(J+1)|0,y)); +return this; +} +var z=((%_FixedArrayGet(m,(1)|0))); +var A=((%_FixedArrayGet(m,(2)|0))); +var B=o<<1; +if((z+A)>=B){ +%MapGrow(this); +m=%_JSCollectionGetTable(this); +o=((%_FixedArrayGet(m,(0)|0))); +z=((%_FixedArrayGet(m,(1)|0))); +A=((%_FixedArrayGet(m,(2)|0))); +} +r=z+A; +var C=(3+(o)+((r)*3)); +var p=(n&((o)-1)); +var D=((%_FixedArrayGet(m,(3+(p))|0))); +((%_FixedArraySet(m,(3+(p))|0,r))); +(((%_FixedArraySet(m,(1)|0,(z+1)|0)))); +(%_FixedArraySet(m,(C)|0,q)); +(%_FixedArraySet(m,(C+1)|0,y)); +(%_FixedArraySet(m,(C+2)|0,D)); +return this; +} +function MapHas(q){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.has',this); +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetHash(q); +return MapFindEntry(m,o,q,n)!==-1; +} +function MapDelete(q){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.delete',this); +} +var m=%_JSCollectionGetTable(this); +var o=((%_FixedArrayGet(m,(0)|0))); +var n=GetHash(q); +var r=MapFindEntry(m,o,q,n); +if(r===-1)return false; +var z=((%_FixedArrayGet(m,(1)|0)))-1; +var A=((%_FixedArrayGet(m,(2)|0)))+1; +var C=(3+(o)+((r)*3)); +(%_FixedArraySet(m,(C)|0,%_TheHole())); +(%_FixedArraySet(m,(C+1)|0,%_TheHole())); +(((%_FixedArraySet(m,(1)|0,(z)|0)))); +(((%_FixedArraySet(m,(2)|0,(A)|0)))); +if(z<(o>>>1))%MapShrink(this); +return true; +} +function MapGetSize(){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.size',this); +} +var m=%_JSCollectionGetTable(this); +return((%_FixedArrayGet(m,(1)|0))); +} +function MapClearJS(){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.clear',this); +} +%_MapClear(this); +} +function MapForEach(E,F){ +if(!(%_ClassOf(this)==='Map')){ +throw %make_type_error(45, +'Map.prototype.forEach',this); +} +if(!(typeof(E)==='function'))throw %make_type_error(15,E); +var G=new h(this,3); +var H=[(void 0),(void 0)]; +while(%MapIteratorNext(G,H)){ +%_Call(E,F,H[1],H[0],this); +} +} +function MapSpecies(){ +return this; +} +%SetCode(c,MapConstructor); +%FunctionSetLength(c,0); +%FunctionSetPrototype(c,new d()); +%AddNamedProperty(c.prototype,"constructor",c,2); +%AddNamedProperty( +c.prototype,k,"Map",2|1); +%FunctionSetLength(MapForEach,1); +b.InstallGetter(c,j,MapSpecies); +b.InstallGetter(c.prototype,"size",MapGetSize); +b.InstallFunctions(c.prototype,2,[ +"get",MapGet, +"set",MapSet, +"has",MapHas, +"delete",MapDelete, +"clear",MapClearJS, +"forEach",MapForEach +]); +%InstallToContext([ +"map_get",MapGet, +"map_set",MapSet, +"map_has",MapHas, +"map_delete",MapDelete, +"set_add",SetAdd, +"set_has",SetHas, +"set_delete",SetDelete, +]); +b.Export(function(K){ +K.GetExistingHash=GetExistingHash; +K.GetHash=GetHash; +}); +}) + +{ +if(!(D.resolve===(void 0))||!(D.reject===(void 0))) +throw %make_type_error(84); +D.resolve=resolve; +D.reject=reject; +}); +if(!(typeof(D.resolve)==='function')||!(typeof(D.reject)==='function')) +throw %make_type_error(85); +return D; +} +function PromiseReject(P){ +if(!(%_IsJSReceiver(this))){ +throw %make_type_error(16,PromiseResolve); +} +if(this===u){ +var w=PromiseCreateAndSet(kRejected,P); +%PromiseRejectEventFromStack(w,P); +return w; +}else{ +var Y=NewPromiseCapability(this,true); +%_Call(Y.reject,(void 0),P); +return Y.promise; +} +} +function PerformPromiseThen(w,I,J,Z){ +if(!(typeof(I)==='function'))I=PromiseIdResolveHandler; +if(!(typeof(J)==='function'))J=PromiseIdRejectHandler; +var z=(w[n]); +switch(z){ +case kPending: +PromiseAttachCallbacks(w,Z,I,J); +break; +case kFulfilled: +%EnqueuePromiseReactionJob((w[o]), +I,Z,kFulfilled); +break; +case kRejected: +if(!(!(w[h]===(void 0)))){ +%PromiseRevokeReject(w); +} +%EnqueuePromiseReactionJob((w[o]), +J,Z,kRejected); +break; +} +(w[h]=true); +return Z.promise; +} +function PromiseThen(I,J){ +var z=(this[n]); +if((z===(void 0))){ +throw %make_type_error(66,this); +} +var aa=p(this,u); +var Z; +if(aa===u){ +Z={ +promise:PromiseCreate(), +resolve:(void 0), +reject:(void 0) +}; +}else{ +Z=NewPromiseCapability(aa,false); +} +return PerformPromiseThen(this,I,J,Z); +} +function PromiseCatch(J){ +return this.then((void 0),J); +} +function PromiseResolve(O){ +if(!(%_IsJSReceiver(this))){ +throw %make_type_error(16,PromiseResolve); +} +if(IsPromise(O)&&O.constructor===this)return O; +if(this===u){ +var w=PromiseCreate(); +ResolvePromise(w,O); +return w; +} +var Y=NewPromiseCapability(this,true); +%_Call(Y.resolve,(void 0),O); +return Y.promise; +} +function PromiseAll(ab){ +if(!(%_IsJSReceiver(this))){ +throw %make_type_error(16,"Promise.all"); +} +var C=NewPromiseCapability(this,false); +var ac=new d(); +var ad; +var H=(%_DebugIsActive()!=0); +if(H){ +(C.reject[g]=true); +} +function CreateResolveElementFunction(ae,af,Y){ +var ag=false; +return(O)=>{ +if(ag===true)return; +ag=true; +af[ae]=O; +if(--ad===0){ +var ah=[]; +%MoveArrayContents(af,ah); +%_Call(Y.resolve,(void 0),ah); +} +}; +} +try{ +var ai=0; +ad=1; +for(var A of ab){ +var aj=this.resolve(A); +++ad; +var ak=aj.then( +CreateResolveElementFunction(ai,ac,C), +C.reject); +if(H&&IsPromise(ak)){ +(ak[f]=C.promise); +} +++ai; +} +if(--ad===0){ +var ah=[]; +%MoveArrayContents(ac,ah); +%_Call(C.resolve,(void 0),ah); +} +}catch(e){ +%_Call(C.reject,(void 0),e); +} +return C.promise; +} +function PromiseRace(ab){ +if(!(%_IsJSReceiver(this))){ +throw %make_type_error(16,PromiseRace); +} +var C=NewPromiseCapability(this,false); +var H=(%_DebugIsActive()!=0); +if(H){ +(C.reject[g]=true); +} +try{ +for(var A of ab){ +var ak=this.resolve(A).then(C.resolve, +C.reject); +if(H&&IsPromise(ak)){ +(ak[f]=C.promise); +} +} +}catch(e){ +%_Call(C.reject,(void 0),e); +} +return C.promise; +} +function PromiseHasUserDefinedRejectHandlerCheck(B,C){ +if((B[g])){ +return PromiseHasUserDefinedRejectHandlerRecursive(C.promise); +} +return true; +} +function PromiseHasUserDefinedRejectHandlerRecursive(w){ +if((w[l]))return true; +var al=(w[f]); +if(al&& +PromiseHasUserDefinedRejectHandlerRecursive(al)){ +return true; +} +var am=(w[i]); +var C=(w[k]); +if((am===(void 0)))return false; +if(!(%_IsArray(am))){ +return PromiseHasUserDefinedRejectHandlerCheck(am,C); +} +for(var ai=0;ai%JSProxyRevoke(f)}; +} +b.InstallFunctions(c,2,[ +"revocable",ProxyCreateRevocable +]); +}) + +,async-await +(function(a,b,c){ +"use strict"; +%CheckIsBootstrapping(); +var d; +var e; +var f; +var g; +var h; +var i; +var j; +var k; +var l; +var m; +b.Import(function(n){ +d=n.AsyncFunctionNext; +e=n.AsyncFunctionThrow; +f=n.GlobalPromise; +g=n.IsPromise; +h=n.NewPromiseCapability; +i=n.PerformPromiseThen; +j=n.PromiseCreate; +l=n.RejectPromise; +m=n.ResolvePromise; +}); +var o= +b.ImportNow("promise_async_stack_id_symbol"); +var p= +b.ImportNow("promise_handled_by_symbol"); +var q= +b.ImportNow("promise_forwarding_handler_symbol"); +var r= +b.ImportNow("promise_handled_hint_symbol"); +var s= +b.ImportNow("promise_has_handler_symbol"); +function PromiseCastResolved(t){ +if(g(t)){ +return t; +}else{ +var u=j(); +m(u,t); +return u; +} +} +function AsyncFunctionAwait(v,w,x){ +var u=PromiseCastResolved(w); +var y=sentValue=>{ +%_Call(d,v,sentValue); +return; +}; +var z=sentError=>{ +%_Call(e,v,sentError); +return; +} +var A=h(f,false); +(A.promise[s]=true); +if((%_DebugIsActive()!=0)){ +if(g(w)){ +(z[q]=true); +} +(A.promise[p]=x); +} +i(u,y,z,A); +} +function AsyncFunctionAwaitUncaught(v,w,x){ +AsyncFunctionAwait(v,w,x); +} +function AsyncFunctionAwaitCaught(v,w,x){ +if((%_DebugIsActive()!=0)&&g(w)){ +(w[r]=true); +} +AsyncFunctionAwait(v,w,x); +} +function RejectPromiseNoDebugEvent(u,B){ +return l(u,B,false); +} +function AsyncFunctionPromiseCreate(){ +var u=j(); +if((%_DebugIsActive()!=0)){ +%DebugPushPromise(u); +var C=%DebugNextMicrotaskId(); +(u[o]=C); +%DebugAsyncTaskEvent("enqueueRecurring",C,"async function"); +} +return u; +} +function AsyncFunctionPromiseRelease(u){ +if((%_DebugIsActive()!=0)){ +var C=(u[o]); +if(!(C===(void 0))){ +%DebugAsyncTaskEvent("cancel",C,"async function"); +} +%DebugPopPromise(); +} +} +%InstallToContext([ +"async_function_await_caught",AsyncFunctionAwaitCaught, +"async_function_await_uncaught",AsyncFunctionAwaitUncaught, +"reject_promise_no_debug_event",RejectPromiseNoDebugEvent, +"async_function_promise_create",AsyncFunctionPromiseCreate, +"async_function_promise_release",AsyncFunctionPromiseRelease, +]); +}) + +i18n*  +(function(a,b){ +"use strict"; +%CheckIsBootstrapping(); +var c; +var d; +var e=a.Date; +var f=a.Number; +var g=a.RegExp; +var h=a.String; +var i=b.InstallFunctions; +var j=b.InstallGetter; +var k=b.InternalArray; +var l=b.ImportNow("ObjectHasOwnProperty"); +var m=b.OverrideFunction; +var n=b.ImportNow("intl_pattern_symbol"); +var o=b.ImportNow("intl_resolved_symbol"); +var p=b.SetFunctionName; +var q=h.prototype.substr; +var r=h.prototype.substring; +b.Import(function(s){ +c=s.ArrayJoin; +d=s.ArrayPush; +}); +function InstallFunction(t,u,v){ +i(t,2,[u,v]); +} +function InstallConstructor(t,u,v){ +%CheckIsBootstrapping(); +p(v,u); +%AddNamedProperty(t,u,v,2); +%SetNativeFlag(v); +%ToFastProperties(t); +} +function AddBoundMethod(w,x,y,z,A){ +%CheckIsBootstrapping(); +var B=%CreatePrivateSymbol(x); +var C=(0,(function(){ +if(!%IsInitializedIntlObjectOfType(this,A)){ +throw %make_type_error(54,x); +} +if((this[B]===(void 0))){ +var D; +if((z===(void 0))||z===2){ +D= +(0,((fst,snd)=>y(this,fst,snd))); +}else if(z===1){ +D=(0,(fst=>y(this,fst))); +}else{ +D=(0,((...args)=>{ +if(args.length>0){ +return y(this,args[0]); +}else{ +return y(this); +} +})); +} +%SetNativeFlag(D); +this[B]=D; +} +return this[B]; +})); +%FunctionRemovePrototype(C); +%DefineGetterPropertyUnchecked(w.prototype,x,C,2); +%SetNativeFlag(C); +} +var E={}; +%AddNamedProperty(a,"Intl",E,2); +var F={ +'collator':(void 0), +'numberformat':(void 0), +'dateformat':(void 0), +'breakiterator':(void 0) +}; +var G=(void 0); +function GetDefaultICULocaleJS(){ +if((G===(void 0))){ +G=%GetDefaultICULocale(); +} +return G; +} +var H=(void 0); +function GetUnicodeExtensionRE(){ +if(((void 0)===(void 0))){ +H=new g('-u(-[a-z0-9]{2,8})+','g'); +} +return H; +} +var I=(void 0); +function GetAnyExtensionRE(){ +if((I===(void 0))){ +I=new g('-[a-z0-9]{1}-.*','g'); +} +return I; +} +var J=(void 0); +function GetQuotedStringRE(){ +if((J===(void 0))){ +J=new g("'[^']+'",'g'); +} +return J; +} +var K=(void 0); +function GetServiceRE(){ +if((K===(void 0))){ +K= +new g('^(collator|numberformat|dateformat|breakiterator)$'); +} +return K; +} +var L=(void 0); +function GetLanguageTagRE(){ +if((L===(void 0))){ +BuildLanguageTagREs(); +} +return L; +} +var M=(void 0); +function GetLanguageVariantRE(){ +if((M===(void 0))){ +BuildLanguageTagREs(); +} +return M; +} +var N=(void 0); +function GetLanguageSingletonRE(){ +if((N===(void 0))){ +BuildLanguageTagREs(); +} +return N; +} +var O=(void 0); +function GetTimezoneNameCheckRE(){ +if((O===(void 0))){ +O=new g( +'^([A-Za-z]+)/([A-Za-z_-]+)((?:\/[A-Za-z_-]+)+)*$'); +} +return O; +} +var P=(void 0); +function GetTimezoneNameLocationPartRE(){ +if((P===(void 0))){ +P= +new g('^([A-Za-z]+)((?:[_-][A-Za-z]+)+)*$'); +} +return P; +} +function supportedLocalesOf(Q,R,S){ +if((%regexp_internal_match(GetServiceRE(),Q)===null)){ +throw %make_error(7,Q); +} +if((S===(void 0))){ +S={}; +}else{ +S=(%_ToObject(S)); +} +var T=S.localeMatcher; +if(!(T===(void 0))){ +T=(%_ToString(T)); +if(T!=='lookup'&&T!=='best fit'){ +throw %make_range_error(175,T); +} +}else{ +T='best fit'; +} +var U=initializeLocaleList(R); +if((F[Q]===(void 0))){ +F[Q]=getAvailableLocalesOf(Q); +} +if(T==='best fit'){ +return initializeLocaleList(bestFitSupportedLocalesOf( +U,F[Q])); +} +return initializeLocaleList(lookupSupportedLocalesOf( +U,F[Q])); +} +function lookupSupportedLocalesOf(U,V){ +var W=new k(); +for(var X=0;X=3&&z<=8&&!(al===(void 0))){ +if((af===(void 0))){ +af=am; +}else{ +af=af+"-"+am; +} +}else{ +return{}; +} +} +if(!(al===(void 0))&&!(al in ak)){ +ak[al]=af; +} +return ak; +} +function setOptions(an,ak,ao,ab,ap){ +var ai=''; +var aq=function updateExtension(al,af){ +return'-'+al+'-'+(%_ToString(af)); +} +var ar=function updateProperty(ac,A,af){ +if(A==='boolean'&&(typeof af==='string')){ +af=(af==='true')?true:false; +} +if(!(ac===(void 0))){ +defineWEProperty(ap,ac,af); +} +} +for(var al in ao){ +if((%_Call(l,ao,al))){ +var af=(void 0); +var as=ao[al]; +if(!(as.property===(void 0))){ +af=ab(as.property,as.type,as.values); +} +if(!(af===(void 0))){ +ar(as.property,as.type,af); +ai+=aq(al,af); +continue; +} +if((%_Call(l,ak,al))){ +af=ak[al]; +if(!(af===(void 0))){ +ar(as.property,as.type,af); +ai+=aq(al,af); +}else if(as.type==='boolean'){ +ar(as.property,as.type,true); +ai+=aq(al,true); +} +} +} +} +return ai===''?'':'-u'+ai; +} +function freezeArray(at){ +var au=[]; +var av=at.length; +for(var X=0;Xbt){ +throw %make_range_error(178,ac); +} +return %math_floor(af); +} +return bu; +} +var bv={ +get(){ +%IncrementUseCounter(15); +return this[n]; +}, +set(af){ +this[n]=af; +} +}; +function initializeNumberFormat(bw,R,S){ +if(%IsInitializedIntlObject(bw)){ +throw %make_type_error(126,"NumberFormat"); +} +if((S===(void 0))){ +S={}; +} +var ab=getGetOption(S,'numberformat'); +var Y=resolveLocale('numberformat',R,S); +var bh={}; +defineWEProperty(bh,'style',ab( +'style','string',['decimal','percent','currency'],'decimal')); +var br=ab('currency','string'); +if(!(br===(void 0))&&!isWellFormedCurrencyCode(br)){ +throw %make_range_error(159,br); +} +if(bh.style==='currency'&&(br===(void 0))){ +throw %make_type_error(29); +} +var bx=ab( +'currencyDisplay','string',['code','symbol','name'],'symbol'); +if(bh.style==='currency'){ +defineWEProperty(bh,'currency',%StringToUpperCase(br)); +defineWEProperty(bh,'currencyDisplay',bx); +} +var by=getNumberOption(S,'minimumIntegerDigits',1,21,1); +defineWEProperty(bh,'minimumIntegerDigits',by); +var bz=S['minimumFractionDigits']; +var bA=S['maximumFractionDigits']; +if(!(bz===(void 0))||bh.style!=='currency'){ +bz=getNumberOption(S,'minimumFractionDigits',0,20,0); +defineWEProperty(bh,'minimumFractionDigits',bz); +} +if(!(bA===(void 0))||bh.style!=='currency'){ +var bB=bh.style==='percent'?0:3; +bz=(bz===(void 0))?0:bz; +var bC=(bz>bB)?bz:bB; +bA=getNumberOption(S,'maximumFractionDigits',bz,20,bC); +defineWEProperty(bh,'maximumFractionDigits',bA); +} +var bD=S['minimumSignificantDigits']; +var bE=S['maximumSignificantDigits']; +if(!(bD===(void 0))||!(bE===(void 0))){ +bD=getNumberOption(S,'minimumSignificantDigits',1,21,0); +defineWEProperty(bh,'minimumSignificantDigits',bD); +bE=getNumberOption(S,'maximumSignificantDigits',bD,21,21); +defineWEProperty(bh,'maximumSignificantDigits',bE); +} +defineWEProperty(bh,'useGrouping',ab( +'useGrouping','boolean',(void 0),true)); +var ak=parseExtension(Y.extension); +var bF={ +'nu':{'property':(void 0),'type':'string'} +}; +var ai=setOptions(S,ak,bF, +ab,bh); +var bm=Y.locale+ai; +var ag=%object_define_properties({},{ +currency:{writable:true}, +currencyDisplay:{writable:true}, +locale:{writable:true}, +maximumFractionDigits:{writable:true}, +minimumFractionDigits:{writable:true}, +minimumIntegerDigits:{writable:true}, +numberingSystem:{writable:true}, +requestedLocale:{value:bm,writable:true}, +style:{value:bh.style,writable:true}, +useGrouping:{writable:true} +}); +if((%_Call(l,bh,'minimumSignificantDigits'))){ +defineWEProperty(ag,'minimumSignificantDigits',(void 0)); +} +if((%_Call(l,bh,'maximumSignificantDigits'))){ +defineWEProperty(ag,'maximumSignificantDigits',(void 0)); +} +var bG=%CreateNumberFormat(bm, +bh, +ag); +if(bh.style==='currency'){ +%object_define_property(ag,'currencyDisplay', +{value:bx,writable:true}); +} +%MarkAsInitializedIntlObjectOfType(bw,'numberformat',bG); +bw[o]=ag; +return bw; +} +InstallConstructor(E,'NumberFormat',function(){ +var R=arguments[0]; +var S=arguments[1]; +if(!this||this===E){ +return new E.NumberFormat(R,S); +} +return initializeNumberFormat((%_ToObject(this)),R,S); +} +); +InstallFunction(E.NumberFormat.prototype,'resolvedOptions',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if(!%IsInitializedIntlObjectOfType(this,'numberformat')){ +throw %make_type_error(127,"NumberFormat"); +} +var bH=this; +var Y=getOptimalLanguageTag(bH[o].requestedLocale, +bH[o].locale); +var aD={ +locale:Y, +numberingSystem:bH[o].numberingSystem, +style:bH[o].style, +useGrouping:bH[o].useGrouping, +minimumIntegerDigits:bH[o].minimumIntegerDigits, +minimumFractionDigits:bH[o].minimumFractionDigits, +maximumFractionDigits:bH[o].maximumFractionDigits, +}; +if(aD.style==='currency'){ +defineWECProperty(aD,'currency',bH[o].currency); +defineWECProperty(aD,'currencyDisplay', +bH[o].currencyDisplay); +} +if((%_Call(l,bH[o],'minimumSignificantDigits'))){ +defineWECProperty(aD,'minimumSignificantDigits', +bH[o].minimumSignificantDigits); +} +if((%_Call(l,bH[o],'maximumSignificantDigits'))){ +defineWECProperty(aD,'maximumSignificantDigits', +bH[o].maximumSignificantDigits); +} +return aD; +} +); +InstallFunction(E.NumberFormat,'supportedLocalesOf',function(R){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +return supportedLocalesOf('numberformat',R,arguments[1]); +} +); +function formatNumber(bG,af){ +var bI=(%_ToNumber(af))+0; +return %InternalNumberFormat(%GetImplFromInitializedIntlObject(bG), +bI); +} +AddBoundMethod(E.NumberFormat,'format',formatNumber,1,'numberformat'); +function toLDMLString(S){ +var ab=getGetOption(S,'dateformat'); +var bJ=''; +var bK=ab('weekday','string',['narrow','short','long']); +bJ+=appendToLDMLString( +bK,{narrow:'EEEEE',short:'EEE',long:'EEEE'}); +bK=ab('era','string',['narrow','short','long']); +bJ+=appendToLDMLString( +bK,{narrow:'GGGGG',short:'GGG',long:'GGGG'}); +bK=ab('year','string',['2-digit','numeric']); +bJ+=appendToLDMLString(bK,{'2-digit':'yy','numeric':'y'}); +bK=ab('month','string', +['2-digit','numeric','narrow','short','long']); +bJ+=appendToLDMLString(bK,{'2-digit':'MM','numeric':'M', +'narrow':'MMMMM','short':'MMM','long':'MMMM'}); +bK=ab('day','string',['2-digit','numeric']); +bJ+=appendToLDMLString( +bK,{'2-digit':'dd','numeric':'d'}); +var bL=ab('hour12','boolean'); +bK=ab('hour','string',['2-digit','numeric']); +if((bL===(void 0))){ +bJ+=appendToLDMLString(bK,{'2-digit':'jj','numeric':'j'}); +}else if(bL===true){ +bJ+=appendToLDMLString(bK,{'2-digit':'hh','numeric':'h'}); +}else{ +bJ+=appendToLDMLString(bK,{'2-digit':'HH','numeric':'H'}); +} +bK=ab('minute','string',['2-digit','numeric']); +bJ+=appendToLDMLString(bK,{'2-digit':'mm','numeric':'m'}); +bK=ab('second','string',['2-digit','numeric']); +bJ+=appendToLDMLString(bK,{'2-digit':'ss','numeric':'s'}); +bK=ab('timeZoneName','string',['short','long']); +bJ+=appendToLDMLString(bK,{short:'z',long:'zzzz'}); +return bJ; +} +function appendToLDMLString(bK,bM){ +if(!(bK===(void 0))){ +return bM[bK]; +}else{ +return''; +} +} +function fromLDMLString(bJ){ +bJ=%RegExpInternalReplace(GetQuotedStringRE(),bJ,''); +var S={}; +var aC=%regexp_internal_match(/E{3,5}/,bJ); +S=appendToDateTimeObject( +S,'weekday',aC,{EEEEE:'narrow',EEE:'short',EEEE:'long'}); +aC=%regexp_internal_match(/G{3,5}/,bJ); +S=appendToDateTimeObject( +S,'era',aC,{GGGGG:'narrow',GGG:'short',GGGG:'long'}); +aC=%regexp_internal_match(/y{1,2}/,bJ); +S=appendToDateTimeObject( +S,'year',aC,{y:'numeric',yy:'2-digit'}); +aC=%regexp_internal_match(/M{1,5}/,bJ); +S=appendToDateTimeObject(S,'month',aC,{MM:'2-digit', +M:'numeric',MMMMM:'narrow',MMM:'short',MMMM:'long'}); +aC=%regexp_internal_match(/L{1,5}/,bJ); +S=appendToDateTimeObject(S,'month',aC,{LL:'2-digit', +L:'numeric',LLLLL:'narrow',LLL:'short',LLLL:'long'}); +aC=%regexp_internal_match(/d{1,2}/,bJ); +S=appendToDateTimeObject( +S,'day',aC,{d:'numeric',dd:'2-digit'}); +aC=%regexp_internal_match(/h{1,2}/,bJ); +if(aC!==null){ +S['hour12']=true; +} +S=appendToDateTimeObject( +S,'hour',aC,{h:'numeric',hh:'2-digit'}); +aC=%regexp_internal_match(/H{1,2}/,bJ); +if(aC!==null){ +S['hour12']=false; +} +S=appendToDateTimeObject( +S,'hour',aC,{H:'numeric',HH:'2-digit'}); +aC=%regexp_internal_match(/m{1,2}/,bJ); +S=appendToDateTimeObject( +S,'minute',aC,{m:'numeric',mm:'2-digit'}); +aC=%regexp_internal_match(/s{1,2}/,bJ); +S=appendToDateTimeObject( +S,'second',aC,{s:'numeric',ss:'2-digit'}); +aC=%regexp_internal_match(/z|zzzz/,bJ); +S=appendToDateTimeObject( +S,'timeZoneName',aC,{z:'short',zzzz:'long'}); +return S; +} +function appendToDateTimeObject(S,bK,aC,bM){ +if((aC===null)){ +if(!(%_Call(l,S,bK))){ +defineWEProperty(S,bK,(void 0)); +} +return S; +} +var ac=aC[0]; +defineWEProperty(S,bK,bM[ac]); +return S; +} +function toDateTimeOptions(S,bN,bO){ +if((S===(void 0))){ +S={}; +}else{ +S=(%_ToObject(S)); +} +var bP=true; +if((bN==='date'||bN==='any')&& +(!(S.weekday===(void 0))||!(S.year===(void 0))|| +!(S.month===(void 0))||!(S.day===(void 0)))){ +bP=false; +} +if((bN==='time'||bN==='any')&& +(!(S.hour===(void 0))||!(S.minute===(void 0))|| +!(S.second===(void 0)))){ +bP=false; +} +if(bP&&(bO==='date'||bO==='all')){ +%object_define_property(S,'year',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +%object_define_property(S,'month',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +%object_define_property(S,'day',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +} +if(bP&&(bO==='time'||bO==='all')){ +%object_define_property(S,'hour',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +%object_define_property(S,'minute',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +%object_define_property(S,'second',{value:'numeric', +writable:true, +enumerable:true, +configurable:true}); +} +return S; +} +function initializeDateTimeFormat(bQ,R,S){ +if(%IsInitializedIntlObject(bQ)){ +throw %make_type_error(126,"DateTimeFormat"); +} +if((S===(void 0))){ +S={}; +} +var Y=resolveLocale('dateformat',R,S); +S=toDateTimeOptions(S,'any','date'); +var ab=getGetOption(S,'dateformat'); +var T=ab('formatMatcher','string', +['basic','best fit'],'best fit'); +var bJ=toLDMLString(S); +var bR=canonicalizeTimeZoneID(S.timeZone); +var bh={}; +var ak=parseExtension(Y.extension); +var bS={ +'ca':{'property':(void 0),'type':'string'}, +'nu':{'property':(void 0),'type':'string'} +}; +var ai=setOptions(S,ak,bS, +ab,bh); +var bm=Y.locale+ai; +var ag=%object_define_properties({},{ +calendar:{writable:true}, +day:{writable:true}, +era:{writable:true}, +hour12:{writable:true}, +hour:{writable:true}, +locale:{writable:true}, +minute:{writable:true}, +month:{writable:true}, +numberingSystem:{writable:true}, +[n]:{writable:true}, +requestedLocale:{value:bm,writable:true}, +second:{writable:true}, +timeZone:{writable:true}, +timeZoneName:{writable:true}, +tz:{value:bR,writable:true}, +weekday:{writable:true}, +year:{writable:true} +}); +var bG=%CreateDateTimeFormat( +bm,{skeleton:bJ,timeZone:bR},ag); +if(ag.timeZone==="Etc/Unknown"){ +throw %make_range_error(184,bR); +} +%MarkAsInitializedIntlObjectOfType(bQ,'dateformat',bG); +bQ[o]=ag; +return bQ; +} +InstallConstructor(E,'DateTimeFormat',function(){ +var R=arguments[0]; +var S=arguments[1]; +if(!this||this===E){ +return new E.DateTimeFormat(R,S); +} +return initializeDateTimeFormat((%_ToObject(this)),R,S); +} +); +InstallFunction(E.DateTimeFormat.prototype,'resolvedOptions',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if(!%IsInitializedIntlObjectOfType(this,'dateformat')){ +throw %make_type_error(127,"DateTimeFormat"); +} +var bT={ +'gregorian':'gregory', +'ethiopic-amete-alem':'ethioaa' +}; +var bH=this; +var bU=fromLDMLString(bH[o][n]); +var bV=bT[bH[o].calendar]; +if((bV===(void 0))){ +bV=bH[o].calendar; +} +var Y=getOptimalLanguageTag(bH[o].requestedLocale, +bH[o].locale); +var aD={ +locale:Y, +numberingSystem:bH[o].numberingSystem, +calendar:bV, +timeZone:bH[o].timeZone +}; +addWECPropertyIfDefined(aD,'timeZoneName',bU.timeZoneName); +addWECPropertyIfDefined(aD,'era',bU.era); +addWECPropertyIfDefined(aD,'year',bU.year); +addWECPropertyIfDefined(aD,'month',bU.month); +addWECPropertyIfDefined(aD,'day',bU.day); +addWECPropertyIfDefined(aD,'weekday',bU.weekday); +addWECPropertyIfDefined(aD,'hour12',bU.hour12); +addWECPropertyIfDefined(aD,'hour',bU.hour); +addWECPropertyIfDefined(aD,'minute',bU.minute); +addWECPropertyIfDefined(aD,'second',bU.second); +return aD; +} +); +InstallFunction(E.DateTimeFormat,'supportedLocalesOf',function(R){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +return supportedLocalesOf('dateformat',R,arguments[1]); +} +); +function formatDate(bG,bW){ +var bX; +if((bW===(void 0))){ +bX=%DateCurrentTime(); +}else{ +bX=(%_ToNumber(bW)); +} +if(!(%_IsSmi(%IS_VAR(bX))||((bX==bX)&&(bX!=1/0)&&(bX!=-1/0))))throw %make_range_error(150); +return %InternalDateFormat(%GetImplFromInitializedIntlObject(bG), +new e(bX)); +} +function FormatDateToParts(bW){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"Intl.DateTimeFormat.prototype.formatToParts"); +if(!(typeof(this)==='object')){ +throw %make_type_error(16,this); +} +var bX; +if((bW===(void 0))){ +bX=%DateCurrentTime(); +}else{ +bX=(%_ToNumber(bW)); +} +if(!(%_IsSmi(%IS_VAR(bX))||((bX==bX)&&(bX!=1/0)&&(bX!=-1/0))))throw %make_range_error(150); +return %InternalDateFormatToParts( +%GetImplFromInitializedIntlObject(this),new e(bX)); +} +%FunctionSetLength(FormatDateToParts,0); +AddBoundMethod(E.DateTimeFormat,'format',formatDate,0,'dateformat'); +function canonicalizeTimeZoneID(bY){ +if((bY===(void 0))){ +return bY; +} +bY=(%_ToString(bY)); +var bZ=%StringToUpperCase(bY); +if(bZ==='UTC'||bZ==='GMT'|| +bZ==='ETC/UTC'||bZ==='ETC/GMT'){ +return'UTC'; +} +var aC=%regexp_internal_match(GetTimezoneNameCheckRE(),bY); +if((aC===null))throw %make_range_error(151,bY); +var aD=toTitleCaseTimezoneLocation(aC[1])+'/'+ +toTitleCaseTimezoneLocation(aC[2]); +if(!(aC[3]===(void 0))&&30?R[0]:GetDefaultICULocaleJS(); +} +var Z=%StringIndexOf(bc,'-',0); +if(Z!=-1){ +bc=%_Call(r,bc,0,Z); +} +var cm=['az','el','lt','tr']; +var cn=%ArrayIndexOf(cm,bc,0); +if(cn==-1){ +return cl?%StringToUpperCaseI18N(ck):%StringToLowerCaseI18N(ck); +} +return %StringLocaleConvertCase(ck,cl, +cm[cn]); +} +m(h.prototype,'localeCompare',function(co){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((this==null)){ +throw %make_type_error(55); +} +var R=arguments[1]; +var S=arguments[2]; +var bg=cachedOrNewService('collator',R,S); +return compare(bg,this,co); +} +); +m(h.prototype,'normalize',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.normalize"); +var ck=(%_ToString(this)); +var cp=arguments[0]; +var cq=(cp===(void 0))?'NFC':(%_ToString(cp)); +var cr=['NFC','NFD','NFKC','NFKD']; +var cs=%ArrayIndexOf(cr,cq,0); +if(cs===-1){ +throw %make_range_error(176, +%_Call(c,cr,', ')); +} +return %StringNormalize(ck,cs); +} +); +function ToLowerCaseI18N(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLowerCase"); +var ck=(%_ToString(this)); +return %StringToLowerCaseI18N(ck); +} +function ToUpperCaseI18N(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toUpperCase"); +var ck=(%_ToString(this)); +return %StringToUpperCaseI18N(ck); +} +function ToLocaleLowerCaseI18N(R){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLocaleLowerCase"); +return LocaleConvertCase((%_ToString(this)),R,false); +} +%FunctionSetLength(ToLocaleLowerCaseI18N,0); +function ToLocaleUpperCaseI18N(R){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.toLocaleUpperCase"); +return LocaleConvertCase((%_ToString(this)),R,true); +} +%FunctionSetLength(ToLocaleUpperCaseI18N,0); +%FunctionRemovePrototype(ToLowerCaseI18N); +%FunctionRemovePrototype(ToUpperCaseI18N); +%FunctionRemovePrototype(ToLocaleLowerCaseI18N); +%FunctionRemovePrototype(ToLocaleUpperCaseI18N); +b.Export(function(ct){ +ct.ToLowerCaseI18N=ToLowerCaseI18N; +ct.ToUpperCaseI18N=ToUpperCaseI18N; +ct.ToLocaleLowerCaseI18N=ToLocaleLowerCaseI18N; +ct.ToLocaleUpperCaseI18N=ToLocaleUpperCaseI18N; +}); +m(f.prototype,'toLocaleString',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +if(!(this instanceof f)&&typeof(this)!=='number'){ +throw %make_type_error(56,"Number"); +} +var R=arguments[0]; +var S=arguments[1]; +var bw=cachedOrNewService('numberformat',R,S); +return formatNumber(bw,this); +} +); +function toLocaleDateTime(cu,R,S,bN,bO,Q){ +if(!(cu instanceof e)){ +throw %make_type_error(56,"Date"); +} +var bW=(%_ToNumber(cu)); +if((!%_IsSmi(%IS_VAR(bW))&&!(bW==bW)))return'Invalid Date'; +var bh=toDateTimeOptions(S,bN,bO); +var bQ= +cachedOrNewService(Q,R,S,bh); +return formatDate(bQ,cu); +} +m(e.prototype,'toLocaleString',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +var R=arguments[0]; +var S=arguments[1]; +return toLocaleDateTime( +this,R,S,'any','all','dateformatall'); +} +); +m(e.prototype,'toLocaleDateString',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +var R=arguments[0]; +var S=arguments[1]; +return toLocaleDateTime( +this,R,S,'date','date','dateformatdate'); +} +); +m(e.prototype,'toLocaleTimeString',function(){ +if(!(new.target===(void 0))){ +throw %make_type_error(82); +} +var R=arguments[0]; +var S=arguments[1]; +return toLocaleDateTime( +this,R,S,'time','time','dateformattime'); +} +); +%FunctionRemovePrototype(FormatDateToParts); +b.Export(function(ct){ +ct.FormatDateToParts=FormatDateToParts; +}); +}) + +=i){ +throw %make_range_error(156); +} +return k; +} +function AtomicsCompareExchangeJS(l,h,m,n){ +CheckSharedIntegerTypedArray(l); +h=ValidateIndex(h,%_TypedArrayGetLength(l)); +m=(%_ToNumber(m)); +n=(%_ToNumber(n)); +return %_AtomicsCompareExchange(l,h,m,n); +} +function AtomicsAddJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsAdd(g,h,o); +} +function AtomicsSubJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsSub(g,h,o); +} +function AtomicsAndJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsAnd(g,h,o); +} +function AtomicsOrJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsOr(g,h,o); +} +function AtomicsXorJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsXor(g,h,o); +} +function AtomicsExchangeJS(g,h,o){ +CheckSharedIntegerTypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +o=(%_ToNumber(o)); +return %_AtomicsExchange(g,h,o); +} +function AtomicsIsLockFreeJS(p){ +return %_AtomicsIsLockFree(p); +} +function AtomicsWaitJS(g,h,o,q){ +CheckSharedInteger32TypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +if((q===(void 0))){ +q=(1/0); +}else{ +q=(%_ToNumber(q)); +if((!%_IsSmi(%IS_VAR(q))&&!(q==q))){ +q=(1/0); +}else{ +q=d(0,q); +} +} +return %AtomicsWait(g,h,o,q); +} +function AtomicsWakeJS(g,h,r){ +CheckSharedInteger32TypedArray(g); +h=ValidateIndex(h,%_TypedArrayGetLength(g)); +r=d(0,(%_ToInteger(r))); +return %AtomicsWake(g,h,r); +} +var s=a.Atomics; +%AddNamedProperty(s,e,"Atomics",1|2); +b.InstallFunctions(s,2,[ +"compareExchange",AtomicsCompareExchangeJS, +"add",AtomicsAddJS, +"sub",AtomicsSubJS, +"and",AtomicsAndJS, +"or",AtomicsOrJS, +"xor",AtomicsXorJS, +"exchange",AtomicsExchangeJS, +"isLockFree",AtomicsIsLockFreeJS, +"wait",AtomicsWaitJS, +"wake",AtomicsWakeJS, +]); +}) + +0harmony-simd +(function(a,b){ +"use strict"; +%CheckIsBootstrapping(); +var c=a.SIMD; +var d=b.ImportNow("to_string_tag_symbol"); +var e=c.Float32x4; + + +var f=c.Int32x4; + +var g=c.Int16x8; + +var h=c.Int8x16; + + +var i=c.Uint32x4; + +var j=c.Uint16x8; + +var k=c.Uint8x16; + + +var l=c.Bool32x4; + +var m=c.Bool16x8; + +var n=c.Bool8x16; + + + +function Float32x4CheckJS(o){ +return %Float32x4Check(o); +} +function Float32x4ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='float32x4'){ +throw %make_type_error(45, +"Float32x4.prototype.toString",this); +} +var q="SIMD.Float32x4("; +q+=%Float32x4ExtractLane(p,0); +for(var r=1;r<4;r++){ +q+=", "+%Float32x4ExtractLane(p,r); +} +return q+")"; +} +function Float32x4ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='float32x4'){ +throw %make_type_error(45, +"Float32x4.prototype.toLocaleString",this); +} +var q="SIMD.Float32x4("; +q+=%Float32x4ExtractLane(p,0).toLocaleString(); +for(var r=1;r<4;r++){ +q+=", "+%Float32x4ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Float32x4ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='float32x4'){ +throw %make_type_error(45, +"Float32x4.prototype.valueOf",this); +} +return p; +} +function Float32x4ExtractLaneJS(s,t){ +return %Float32x4ExtractLane(s,t); +} + + +function Int32x4CheckJS(o){ +return %Int32x4Check(o); +} +function Int32x4ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int32x4'){ +throw %make_type_error(45, +"Int32x4.prototype.toString",this); +} +var q="SIMD.Int32x4("; +q+=%Int32x4ExtractLane(p,0); +for(var r=1;r<4;r++){ +q+=", "+%Int32x4ExtractLane(p,r); +} +return q+")"; +} +function Int32x4ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int32x4'){ +throw %make_type_error(45, +"Int32x4.prototype.toLocaleString",this); +} +var q="SIMD.Int32x4("; +q+=%Int32x4ExtractLane(p,0).toLocaleString(); +for(var r=1;r<4;r++){ +q+=", "+%Int32x4ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Int32x4ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='int32x4'){ +throw %make_type_error(45, +"Int32x4.prototype.valueOf",this); +} +return p; +} +function Int32x4ExtractLaneJS(s,t){ +return %Int32x4ExtractLane(s,t); +} + +function Int16x8CheckJS(o){ +return %Int16x8Check(o); +} +function Int16x8ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int16x8'){ +throw %make_type_error(45, +"Int16x8.prototype.toString",this); +} +var q="SIMD.Int16x8("; +q+=%Int16x8ExtractLane(p,0); +for(var r=1;r<8;r++){ +q+=", "+%Int16x8ExtractLane(p,r); +} +return q+")"; +} +function Int16x8ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int16x8'){ +throw %make_type_error(45, +"Int16x8.prototype.toLocaleString",this); +} +var q="SIMD.Int16x8("; +q+=%Int16x8ExtractLane(p,0).toLocaleString(); +for(var r=1;r<8;r++){ +q+=", "+%Int16x8ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Int16x8ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='int16x8'){ +throw %make_type_error(45, +"Int16x8.prototype.valueOf",this); +} +return p; +} +function Int16x8ExtractLaneJS(s,t){ +return %Int16x8ExtractLane(s,t); +} + +function Int8x16CheckJS(o){ +return %Int8x16Check(o); +} +function Int8x16ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int8x16'){ +throw %make_type_error(45, +"Int8x16.prototype.toString",this); +} +var q="SIMD.Int8x16("; +q+=%Int8x16ExtractLane(p,0); +for(var r=1;r<16;r++){ +q+=", "+%Int8x16ExtractLane(p,r); +} +return q+")"; +} +function Int8x16ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='int8x16'){ +throw %make_type_error(45, +"Int8x16.prototype.toLocaleString",this); +} +var q="SIMD.Int8x16("; +q+=%Int8x16ExtractLane(p,0).toLocaleString(); +for(var r=1;r<16;r++){ +q+=", "+%Int8x16ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Int8x16ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='int8x16'){ +throw %make_type_error(45, +"Int8x16.prototype.valueOf",this); +} +return p; +} +function Int8x16ExtractLaneJS(s,t){ +return %Int8x16ExtractLane(s,t); +} + + +function Uint32x4CheckJS(o){ +return %Uint32x4Check(o); +} +function Uint32x4ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint32x4'){ +throw %make_type_error(45, +"Uint32x4.prototype.toString",this); +} +var q="SIMD.Uint32x4("; +q+=%Uint32x4ExtractLane(p,0); +for(var r=1;r<4;r++){ +q+=", "+%Uint32x4ExtractLane(p,r); +} +return q+")"; +} +function Uint32x4ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint32x4'){ +throw %make_type_error(45, +"Uint32x4.prototype.toLocaleString",this); +} +var q="SIMD.Uint32x4("; +q+=%Uint32x4ExtractLane(p,0).toLocaleString(); +for(var r=1;r<4;r++){ +q+=", "+%Uint32x4ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Uint32x4ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint32x4'){ +throw %make_type_error(45, +"Uint32x4.prototype.valueOf",this); +} +return p; +} +function Uint32x4ExtractLaneJS(s,t){ +return %Uint32x4ExtractLane(s,t); +} + +function Uint16x8CheckJS(o){ +return %Uint16x8Check(o); +} +function Uint16x8ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint16x8'){ +throw %make_type_error(45, +"Uint16x8.prototype.toString",this); +} +var q="SIMD.Uint16x8("; +q+=%Uint16x8ExtractLane(p,0); +for(var r=1;r<8;r++){ +q+=", "+%Uint16x8ExtractLane(p,r); +} +return q+")"; +} +function Uint16x8ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint16x8'){ +throw %make_type_error(45, +"Uint16x8.prototype.toLocaleString",this); +} +var q="SIMD.Uint16x8("; +q+=%Uint16x8ExtractLane(p,0).toLocaleString(); +for(var r=1;r<8;r++){ +q+=", "+%Uint16x8ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Uint16x8ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint16x8'){ +throw %make_type_error(45, +"Uint16x8.prototype.valueOf",this); +} +return p; +} +function Uint16x8ExtractLaneJS(s,t){ +return %Uint16x8ExtractLane(s,t); +} + +function Uint8x16CheckJS(o){ +return %Uint8x16Check(o); +} +function Uint8x16ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint8x16'){ +throw %make_type_error(45, +"Uint8x16.prototype.toString",this); +} +var q="SIMD.Uint8x16("; +q+=%Uint8x16ExtractLane(p,0); +for(var r=1;r<16;r++){ +q+=", "+%Uint8x16ExtractLane(p,r); +} +return q+")"; +} +function Uint8x16ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint8x16'){ +throw %make_type_error(45, +"Uint8x16.prototype.toLocaleString",this); +} +var q="SIMD.Uint8x16("; +q+=%Uint8x16ExtractLane(p,0).toLocaleString(); +for(var r=1;r<16;r++){ +q+=", "+%Uint8x16ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Uint8x16ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='uint8x16'){ +throw %make_type_error(45, +"Uint8x16.prototype.valueOf",this); +} +return p; +} +function Uint8x16ExtractLaneJS(s,t){ +return %Uint8x16ExtractLane(s,t); +} + + +function Bool32x4CheckJS(o){ +return %Bool32x4Check(o); +} +function Bool32x4ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool32x4'){ +throw %make_type_error(45, +"Bool32x4.prototype.toString",this); +} +var q="SIMD.Bool32x4("; +q+=%Bool32x4ExtractLane(p,0); +for(var r=1;r<4;r++){ +q+=", "+%Bool32x4ExtractLane(p,r); +} +return q+")"; +} +function Bool32x4ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool32x4'){ +throw %make_type_error(45, +"Bool32x4.prototype.toLocaleString",this); +} +var q="SIMD.Bool32x4("; +q+=%Bool32x4ExtractLane(p,0).toLocaleString(); +for(var r=1;r<4;r++){ +q+=", "+%Bool32x4ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Bool32x4ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool32x4'){ +throw %make_type_error(45, +"Bool32x4.prototype.valueOf",this); +} +return p; +} +function Bool32x4ExtractLaneJS(s,t){ +return %Bool32x4ExtractLane(s,t); +} + +function Bool16x8CheckJS(o){ +return %Bool16x8Check(o); +} +function Bool16x8ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool16x8'){ +throw %make_type_error(45, +"Bool16x8.prototype.toString",this); +} +var q="SIMD.Bool16x8("; +q+=%Bool16x8ExtractLane(p,0); +for(var r=1;r<8;r++){ +q+=", "+%Bool16x8ExtractLane(p,r); +} +return q+")"; +} +function Bool16x8ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool16x8'){ +throw %make_type_error(45, +"Bool16x8.prototype.toLocaleString",this); +} +var q="SIMD.Bool16x8("; +q+=%Bool16x8ExtractLane(p,0).toLocaleString(); +for(var r=1;r<8;r++){ +q+=", "+%Bool16x8ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Bool16x8ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool16x8'){ +throw %make_type_error(45, +"Bool16x8.prototype.valueOf",this); +} +return p; +} +function Bool16x8ExtractLaneJS(s,t){ +return %Bool16x8ExtractLane(s,t); +} + +function Bool8x16CheckJS(o){ +return %Bool8x16Check(o); +} +function Bool8x16ToString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool8x16'){ +throw %make_type_error(45, +"Bool8x16.prototype.toString",this); +} +var q="SIMD.Bool8x16("; +q+=%Bool8x16ExtractLane(p,0); +for(var r=1;r<16;r++){ +q+=", "+%Bool8x16ExtractLane(p,r); +} +return q+")"; +} +function Bool8x16ToLocaleString(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool8x16'){ +throw %make_type_error(45, +"Bool8x16.prototype.toLocaleString",this); +} +var q="SIMD.Bool8x16("; +q+=%Bool8x16ExtractLane(p,0).toLocaleString(); +for(var r=1;r<16;r++){ +q+=", "+%Bool8x16ExtractLane(p,r).toLocaleString(); +} +return q+")"; +} +function Bool8x16ValueOf(){ +var p=%ValueOf(this); +if(typeof(p)!=='bool8x16'){ +throw %make_type_error(45, +"Bool8x16.prototype.valueOf",this); +} +return p; +} +function Bool8x16ExtractLaneJS(s,t){ +return %Bool8x16ExtractLane(s,t); +} + + + +function Int32x4ShiftLeftByScalarJS(s,u){ +return %Int32x4ShiftLeftByScalar(s,u); +} +function Int32x4ShiftRightByScalarJS(s,u){ +return %Int32x4ShiftRightByScalar(s,u); +} + +function Int16x8ShiftLeftByScalarJS(s,u){ +return %Int16x8ShiftLeftByScalar(s,u); +} +function Int16x8ShiftRightByScalarJS(s,u){ +return %Int16x8ShiftRightByScalar(s,u); +} + +function Int8x16ShiftLeftByScalarJS(s,u){ +return %Int8x16ShiftLeftByScalar(s,u); +} +function Int8x16ShiftRightByScalarJS(s,u){ +return %Int8x16ShiftRightByScalar(s,u); +} + + +function Uint32x4ShiftLeftByScalarJS(s,u){ +return %Uint32x4ShiftLeftByScalar(s,u); +} +function Uint32x4ShiftRightByScalarJS(s,u){ +return %Uint32x4ShiftRightByScalar(s,u); +} + +function Uint16x8ShiftLeftByScalarJS(s,u){ +return %Uint16x8ShiftLeftByScalar(s,u); +} +function Uint16x8ShiftRightByScalarJS(s,u){ +return %Uint16x8ShiftRightByScalar(s,u); +} + +function Uint8x16ShiftLeftByScalarJS(s,u){ +return %Uint8x16ShiftLeftByScalar(s,u); +} +function Uint8x16ShiftRightByScalarJS(s,u){ +return %Uint8x16ShiftRightByScalar(s,u); +} + + +function Int16x8AddSaturateJS(o,v){ +return %Int16x8AddSaturate(o,v); +} +function Int16x8SubSaturateJS(o,v){ +return %Int16x8SubSaturate(o,v); +} + +function Int8x16AddSaturateJS(o,v){ +return %Int8x16AddSaturate(o,v); +} +function Int8x16SubSaturateJS(o,v){ +return %Int8x16SubSaturate(o,v); +} + +function Uint8x16AddSaturateJS(o,v){ +return %Uint8x16AddSaturate(o,v); +} +function Uint8x16SubSaturateJS(o,v){ +return %Uint8x16SubSaturate(o,v); +} + +function Uint16x8AddSaturateJS(o,v){ +return %Uint16x8AddSaturate(o,v); +} +function Uint16x8SubSaturateJS(o,v){ +return %Uint16x8SubSaturate(o,v); +} + + +function Float32x4NegJS(o){ +return %Float32x4Neg(o); +} + + +function Int32x4NegJS(o){ +return %Int32x4Neg(o); +} + +function Int16x8NegJS(o){ +return %Int16x8Neg(o); +} + +function Int8x16NegJS(o){ +return %Int8x16Neg(o); +} + + +function Bool32x4ReplaceLaneJS(s,t,p){ +return %Bool32x4ReplaceLane(s,t,p); +} +function Bool32x4AnyTrueJS(w){ +return %Bool32x4AnyTrue(w); +} +function Bool32x4AllTrueJS(w){ +return %Bool32x4AllTrue(w); +} + +function Bool16x8ReplaceLaneJS(s,t,p){ +return %Bool16x8ReplaceLane(s,t,p); +} +function Bool16x8AnyTrueJS(w){ +return %Bool16x8AnyTrue(w); +} +function Bool16x8AllTrueJS(w){ +return %Bool16x8AllTrue(w); +} + +function Bool8x16ReplaceLaneJS(s,t,p){ +return %Bool8x16ReplaceLane(s,t,p); +} +function Bool8x16AnyTrueJS(w){ +return %Bool8x16AnyTrue(w); +} +function Bool8x16AllTrueJS(w){ +return %Bool8x16AllTrue(w); +} + + +function Float32x4ReplaceLaneJS(s,t,p){ +return %Float32x4ReplaceLane(s,t,(%_ToNumber(p))); +} +function Float32x4SelectJS(x,o,v){ +return %Float32x4Select(x,o,v); +} +function Float32x4AddJS(o,v){ +return %Float32x4Add(o,v); +} +function Float32x4SubJS(o,v){ +return %Float32x4Sub(o,v); +} +function Float32x4MulJS(o,v){ +return %Float32x4Mul(o,v); +} +function Float32x4MinJS(o,v){ +return %Float32x4Min(o,v); +} +function Float32x4MaxJS(o,v){ +return %Float32x4Max(o,v); +} +function Float32x4EqualJS(o,v){ +return %Float32x4Equal(o,v); +} +function Float32x4NotEqualJS(o,v){ +return %Float32x4NotEqual(o,v); +} +function Float32x4LessThanJS(o,v){ +return %Float32x4LessThan(o,v); +} +function Float32x4LessThanOrEqualJS(o,v){ +return %Float32x4LessThanOrEqual(o,v); +} +function Float32x4GreaterThanJS(o,v){ +return %Float32x4GreaterThan(o,v); +} +function Float32x4GreaterThanOrEqualJS(o,v){ +return %Float32x4GreaterThanOrEqual(o,v); +} +function Float32x4LoadJS(y,z){ +return %Float32x4Load(y,z); +} +function Float32x4StoreJS(y,z,o){ +return %Float32x4Store(y,z,o); +} + + +function Int32x4ReplaceLaneJS(s,t,p){ +return %Int32x4ReplaceLane(s,t,(%_ToNumber(p))); +} +function Int32x4SelectJS(x,o,v){ +return %Int32x4Select(x,o,v); +} +function Int32x4AddJS(o,v){ +return %Int32x4Add(o,v); +} +function Int32x4SubJS(o,v){ +return %Int32x4Sub(o,v); +} +function Int32x4MulJS(o,v){ +return %Int32x4Mul(o,v); +} +function Int32x4MinJS(o,v){ +return %Int32x4Min(o,v); +} +function Int32x4MaxJS(o,v){ +return %Int32x4Max(o,v); +} +function Int32x4EqualJS(o,v){ +return %Int32x4Equal(o,v); +} +function Int32x4NotEqualJS(o,v){ +return %Int32x4NotEqual(o,v); +} +function Int32x4LessThanJS(o,v){ +return %Int32x4LessThan(o,v); +} +function Int32x4LessThanOrEqualJS(o,v){ +return %Int32x4LessThanOrEqual(o,v); +} +function Int32x4GreaterThanJS(o,v){ +return %Int32x4GreaterThan(o,v); +} +function Int32x4GreaterThanOrEqualJS(o,v){ +return %Int32x4GreaterThanOrEqual(o,v); +} +function Int32x4LoadJS(y,z){ +return %Int32x4Load(y,z); +} +function Int32x4StoreJS(y,z,o){ +return %Int32x4Store(y,z,o); +} + +function Int16x8ReplaceLaneJS(s,t,p){ +return %Int16x8ReplaceLane(s,t,(%_ToNumber(p))); +} +function Int16x8SelectJS(x,o,v){ +return %Int16x8Select(x,o,v); +} +function Int16x8AddJS(o,v){ +return %Int16x8Add(o,v); +} +function Int16x8SubJS(o,v){ +return %Int16x8Sub(o,v); +} +function Int16x8MulJS(o,v){ +return %Int16x8Mul(o,v); +} +function Int16x8MinJS(o,v){ +return %Int16x8Min(o,v); +} +function Int16x8MaxJS(o,v){ +return %Int16x8Max(o,v); +} +function Int16x8EqualJS(o,v){ +return %Int16x8Equal(o,v); +} +function Int16x8NotEqualJS(o,v){ +return %Int16x8NotEqual(o,v); +} +function Int16x8LessThanJS(o,v){ +return %Int16x8LessThan(o,v); +} +function Int16x8LessThanOrEqualJS(o,v){ +return %Int16x8LessThanOrEqual(o,v); +} +function Int16x8GreaterThanJS(o,v){ +return %Int16x8GreaterThan(o,v); +} +function Int16x8GreaterThanOrEqualJS(o,v){ +return %Int16x8GreaterThanOrEqual(o,v); +} +function Int16x8LoadJS(y,z){ +return %Int16x8Load(y,z); +} +function Int16x8StoreJS(y,z,o){ +return %Int16x8Store(y,z,o); +} + +function Int8x16ReplaceLaneJS(s,t,p){ +return %Int8x16ReplaceLane(s,t,(%_ToNumber(p))); +} +function Int8x16SelectJS(x,o,v){ +return %Int8x16Select(x,o,v); +} +function Int8x16AddJS(o,v){ +return %Int8x16Add(o,v); +} +function Int8x16SubJS(o,v){ +return %Int8x16Sub(o,v); +} +function Int8x16MulJS(o,v){ +return %Int8x16Mul(o,v); +} +function Int8x16MinJS(o,v){ +return %Int8x16Min(o,v); +} +function Int8x16MaxJS(o,v){ +return %Int8x16Max(o,v); +} +function Int8x16EqualJS(o,v){ +return %Int8x16Equal(o,v); +} +function Int8x16NotEqualJS(o,v){ +return %Int8x16NotEqual(o,v); +} +function Int8x16LessThanJS(o,v){ +return %Int8x16LessThan(o,v); +} +function Int8x16LessThanOrEqualJS(o,v){ +return %Int8x16LessThanOrEqual(o,v); +} +function Int8x16GreaterThanJS(o,v){ +return %Int8x16GreaterThan(o,v); +} +function Int8x16GreaterThanOrEqualJS(o,v){ +return %Int8x16GreaterThanOrEqual(o,v); +} +function Int8x16LoadJS(y,z){ +return %Int8x16Load(y,z); +} +function Int8x16StoreJS(y,z,o){ +return %Int8x16Store(y,z,o); +} + + +function Uint32x4ReplaceLaneJS(s,t,p){ +return %Uint32x4ReplaceLane(s,t,(%_ToNumber(p))); +} +function Uint32x4SelectJS(x,o,v){ +return %Uint32x4Select(x,o,v); +} +function Uint32x4AddJS(o,v){ +return %Uint32x4Add(o,v); +} +function Uint32x4SubJS(o,v){ +return %Uint32x4Sub(o,v); +} +function Uint32x4MulJS(o,v){ +return %Uint32x4Mul(o,v); +} +function Uint32x4MinJS(o,v){ +return %Uint32x4Min(o,v); +} +function Uint32x4MaxJS(o,v){ +return %Uint32x4Max(o,v); +} +function Uint32x4EqualJS(o,v){ +return %Uint32x4Equal(o,v); +} +function Uint32x4NotEqualJS(o,v){ +return %Uint32x4NotEqual(o,v); +} +function Uint32x4LessThanJS(o,v){ +return %Uint32x4LessThan(o,v); +} +function Uint32x4LessThanOrEqualJS(o,v){ +return %Uint32x4LessThanOrEqual(o,v); +} +function Uint32x4GreaterThanJS(o,v){ +return %Uint32x4GreaterThan(o,v); +} +function Uint32x4GreaterThanOrEqualJS(o,v){ +return %Uint32x4GreaterThanOrEqual(o,v); +} +function Uint32x4LoadJS(y,z){ +return %Uint32x4Load(y,z); +} +function Uint32x4StoreJS(y,z,o){ +return %Uint32x4Store(y,z,o); +} + +function Uint16x8ReplaceLaneJS(s,t,p){ +return %Uint16x8ReplaceLane(s,t,(%_ToNumber(p))); +} +function Uint16x8SelectJS(x,o,v){ +return %Uint16x8Select(x,o,v); +} +function Uint16x8AddJS(o,v){ +return %Uint16x8Add(o,v); +} +function Uint16x8SubJS(o,v){ +return %Uint16x8Sub(o,v); +} +function Uint16x8MulJS(o,v){ +return %Uint16x8Mul(o,v); +} +function Uint16x8MinJS(o,v){ +return %Uint16x8Min(o,v); +} +function Uint16x8MaxJS(o,v){ +return %Uint16x8Max(o,v); +} +function Uint16x8EqualJS(o,v){ +return %Uint16x8Equal(o,v); +} +function Uint16x8NotEqualJS(o,v){ +return %Uint16x8NotEqual(o,v); +} +function Uint16x8LessThanJS(o,v){ +return %Uint16x8LessThan(o,v); +} +function Uint16x8LessThanOrEqualJS(o,v){ +return %Uint16x8LessThanOrEqual(o,v); +} +function Uint16x8GreaterThanJS(o,v){ +return %Uint16x8GreaterThan(o,v); +} +function Uint16x8GreaterThanOrEqualJS(o,v){ +return %Uint16x8GreaterThanOrEqual(o,v); +} +function Uint16x8LoadJS(y,z){ +return %Uint16x8Load(y,z); +} +function Uint16x8StoreJS(y,z,o){ +return %Uint16x8Store(y,z,o); +} + +function Uint8x16ReplaceLaneJS(s,t,p){ +return %Uint8x16ReplaceLane(s,t,(%_ToNumber(p))); +} +function Uint8x16SelectJS(x,o,v){ +return %Uint8x16Select(x,o,v); +} +function Uint8x16AddJS(o,v){ +return %Uint8x16Add(o,v); +} +function Uint8x16SubJS(o,v){ +return %Uint8x16Sub(o,v); +} +function Uint8x16MulJS(o,v){ +return %Uint8x16Mul(o,v); +} +function Uint8x16MinJS(o,v){ +return %Uint8x16Min(o,v); +} +function Uint8x16MaxJS(o,v){ +return %Uint8x16Max(o,v); +} +function Uint8x16EqualJS(o,v){ +return %Uint8x16Equal(o,v); +} +function Uint8x16NotEqualJS(o,v){ +return %Uint8x16NotEqual(o,v); +} +function Uint8x16LessThanJS(o,v){ +return %Uint8x16LessThan(o,v); +} +function Uint8x16LessThanOrEqualJS(o,v){ +return %Uint8x16LessThanOrEqual(o,v); +} +function Uint8x16GreaterThanJS(o,v){ +return %Uint8x16GreaterThan(o,v); +} +function Uint8x16GreaterThanOrEqualJS(o,v){ +return %Uint8x16GreaterThanOrEqual(o,v); +} +function Uint8x16LoadJS(y,z){ +return %Uint8x16Load(y,z); +} +function Uint8x16StoreJS(y,z,o){ +return %Uint8x16Store(y,z,o); +} + + + +function Int32x4AndJS(o,v){ +return %Int32x4And(o,v); +} +function Int32x4OrJS(o,v){ +return %Int32x4Or(o,v); +} +function Int32x4XorJS(o,v){ +return %Int32x4Xor(o,v); +} +function Int32x4NotJS(o){ +return %Int32x4Not(o); +} + +function Int16x8AndJS(o,v){ +return %Int16x8And(o,v); +} +function Int16x8OrJS(o,v){ +return %Int16x8Or(o,v); +} +function Int16x8XorJS(o,v){ +return %Int16x8Xor(o,v); +} +function Int16x8NotJS(o){ +return %Int16x8Not(o); +} + +function Int8x16AndJS(o,v){ +return %Int8x16And(o,v); +} +function Int8x16OrJS(o,v){ +return %Int8x16Or(o,v); +} +function Int8x16XorJS(o,v){ +return %Int8x16Xor(o,v); +} +function Int8x16NotJS(o){ +return %Int8x16Not(o); +} + + +function Uint32x4AndJS(o,v){ +return %Uint32x4And(o,v); +} +function Uint32x4OrJS(o,v){ +return %Uint32x4Or(o,v); +} +function Uint32x4XorJS(o,v){ +return %Uint32x4Xor(o,v); +} +function Uint32x4NotJS(o){ +return %Uint32x4Not(o); +} + +function Uint16x8AndJS(o,v){ +return %Uint16x8And(o,v); +} +function Uint16x8OrJS(o,v){ +return %Uint16x8Or(o,v); +} +function Uint16x8XorJS(o,v){ +return %Uint16x8Xor(o,v); +} +function Uint16x8NotJS(o){ +return %Uint16x8Not(o); +} + +function Uint8x16AndJS(o,v){ +return %Uint8x16And(o,v); +} +function Uint8x16OrJS(o,v){ +return %Uint8x16Or(o,v); +} +function Uint8x16XorJS(o,v){ +return %Uint8x16Xor(o,v); +} +function Uint8x16NotJS(o){ +return %Uint8x16Not(o); +} + + +function Bool32x4AndJS(o,v){ +return %Bool32x4And(o,v); +} +function Bool32x4OrJS(o,v){ +return %Bool32x4Or(o,v); +} +function Bool32x4XorJS(o,v){ +return %Bool32x4Xor(o,v); +} +function Bool32x4NotJS(o){ +return %Bool32x4Not(o); +} + +function Bool16x8AndJS(o,v){ +return %Bool16x8And(o,v); +} +function Bool16x8OrJS(o,v){ +return %Bool16x8Or(o,v); +} +function Bool16x8XorJS(o,v){ +return %Bool16x8Xor(o,v); +} +function Bool16x8NotJS(o){ +return %Bool16x8Not(o); +} + +function Bool8x16AndJS(o,v){ +return %Bool8x16And(o,v); +} +function Bool8x16OrJS(o,v){ +return %Bool8x16Or(o,v); +} +function Bool8x16XorJS(o,v){ +return %Bool8x16Xor(o,v); +} +function Bool8x16NotJS(o){ +return %Bool8x16Not(o); +} + + + +function Float32x4FromInt32x4JS(o){ +return %Float32x4FromInt32x4(o); +} + +function Float32x4FromUint32x4JS(o){ +return %Float32x4FromUint32x4(o); +} + +function Int32x4FromFloat32x4JS(o){ +return %Int32x4FromFloat32x4(o); +} + +function Int32x4FromUint32x4JS(o){ +return %Int32x4FromUint32x4(o); +} + +function Uint32x4FromFloat32x4JS(o){ +return %Uint32x4FromFloat32x4(o); +} + +function Uint32x4FromInt32x4JS(o){ +return %Uint32x4FromInt32x4(o); +} + +function Int16x8FromUint16x8JS(o){ +return %Int16x8FromUint16x8(o); +} + +function Uint16x8FromInt16x8JS(o){ +return %Uint16x8FromInt16x8(o); +} + +function Int8x16FromUint8x16JS(o){ +return %Int8x16FromUint8x16(o); +} + +function Uint8x16FromInt8x16JS(o){ +return %Uint8x16FromInt8x16(o); +} + + +function Float32x4FromInt32x4BitsJS(o){ +return %Float32x4FromInt32x4Bits(o); +} + +function Float32x4FromUint32x4BitsJS(o){ +return %Float32x4FromUint32x4Bits(o); +} + +function Float32x4FromInt16x8BitsJS(o){ +return %Float32x4FromInt16x8Bits(o); +} + +function Float32x4FromUint16x8BitsJS(o){ +return %Float32x4FromUint16x8Bits(o); +} + +function Float32x4FromInt8x16BitsJS(o){ +return %Float32x4FromInt8x16Bits(o); +} + +function Float32x4FromUint8x16BitsJS(o){ +return %Float32x4FromUint8x16Bits(o); +} + +function Int32x4FromFloat32x4BitsJS(o){ +return %Int32x4FromFloat32x4Bits(o); +} + +function Int32x4FromUint32x4BitsJS(o){ +return %Int32x4FromUint32x4Bits(o); +} + +function Int32x4FromInt16x8BitsJS(o){ +return %Int32x4FromInt16x8Bits(o); +} + +function Int32x4FromUint16x8BitsJS(o){ +return %Int32x4FromUint16x8Bits(o); +} + +function Int32x4FromInt8x16BitsJS(o){ +return %Int32x4FromInt8x16Bits(o); +} + +function Int32x4FromUint8x16BitsJS(o){ +return %Int32x4FromUint8x16Bits(o); +} + +function Uint32x4FromFloat32x4BitsJS(o){ +return %Uint32x4FromFloat32x4Bits(o); +} + +function Uint32x4FromInt32x4BitsJS(o){ +return %Uint32x4FromInt32x4Bits(o); +} + +function Uint32x4FromInt16x8BitsJS(o){ +return %Uint32x4FromInt16x8Bits(o); +} + +function Uint32x4FromUint16x8BitsJS(o){ +return %Uint32x4FromUint16x8Bits(o); +} + +function Uint32x4FromInt8x16BitsJS(o){ +return %Uint32x4FromInt8x16Bits(o); +} + +function Uint32x4FromUint8x16BitsJS(o){ +return %Uint32x4FromUint8x16Bits(o); +} + +function Int16x8FromFloat32x4BitsJS(o){ +return %Int16x8FromFloat32x4Bits(o); +} + +function Int16x8FromInt32x4BitsJS(o){ +return %Int16x8FromInt32x4Bits(o); +} + +function Int16x8FromUint32x4BitsJS(o){ +return %Int16x8FromUint32x4Bits(o); +} + +function Int16x8FromUint16x8BitsJS(o){ +return %Int16x8FromUint16x8Bits(o); +} + +function Int16x8FromInt8x16BitsJS(o){ +return %Int16x8FromInt8x16Bits(o); +} + +function Int16x8FromUint8x16BitsJS(o){ +return %Int16x8FromUint8x16Bits(o); +} + +function Uint16x8FromFloat32x4BitsJS(o){ +return %Uint16x8FromFloat32x4Bits(o); +} + +function Uint16x8FromInt32x4BitsJS(o){ +return %Uint16x8FromInt32x4Bits(o); +} + +function Uint16x8FromUint32x4BitsJS(o){ +return %Uint16x8FromUint32x4Bits(o); +} + +function Uint16x8FromInt16x8BitsJS(o){ +return %Uint16x8FromInt16x8Bits(o); +} + +function Uint16x8FromInt8x16BitsJS(o){ +return %Uint16x8FromInt8x16Bits(o); +} + +function Uint16x8FromUint8x16BitsJS(o){ +return %Uint16x8FromUint8x16Bits(o); +} + +function Int8x16FromFloat32x4BitsJS(o){ +return %Int8x16FromFloat32x4Bits(o); +} + +function Int8x16FromInt32x4BitsJS(o){ +return %Int8x16FromInt32x4Bits(o); +} + +function Int8x16FromUint32x4BitsJS(o){ +return %Int8x16FromUint32x4Bits(o); +} + +function Int8x16FromInt16x8BitsJS(o){ +return %Int8x16FromInt16x8Bits(o); +} + +function Int8x16FromUint16x8BitsJS(o){ +return %Int8x16FromUint16x8Bits(o); +} + +function Int8x16FromUint8x16BitsJS(o){ +return %Int8x16FromUint8x16Bits(o); +} + +function Uint8x16FromFloat32x4BitsJS(o){ +return %Uint8x16FromFloat32x4Bits(o); +} + +function Uint8x16FromInt32x4BitsJS(o){ +return %Uint8x16FromInt32x4Bits(o); +} + +function Uint8x16FromUint32x4BitsJS(o){ +return %Uint8x16FromUint32x4Bits(o); +} + +function Uint8x16FromInt16x8BitsJS(o){ +return %Uint8x16FromInt16x8Bits(o); +} + +function Uint8x16FromUint16x8BitsJS(o){ +return %Uint8x16FromUint16x8Bits(o); +} + +function Uint8x16FromInt8x16BitsJS(o){ +return %Uint8x16FromInt8x16Bits(o); +} + + +function Float32x4Load1JS(y,z){ +return %Float32x4Load1(y,z); +} +function Float32x4Store1JS(y,z,o){ +return %Float32x4Store1(y,z,o); +} + +function Float32x4Load2JS(y,z){ +return %Float32x4Load2(y,z); +} +function Float32x4Store2JS(y,z,o){ +return %Float32x4Store2(y,z,o); +} + +function Float32x4Load3JS(y,z){ +return %Float32x4Load3(y,z); +} +function Float32x4Store3JS(y,z,o){ +return %Float32x4Store3(y,z,o); +} + +function Int32x4Load1JS(y,z){ +return %Int32x4Load1(y,z); +} +function Int32x4Store1JS(y,z,o){ +return %Int32x4Store1(y,z,o); +} + +function Int32x4Load2JS(y,z){ +return %Int32x4Load2(y,z); +} +function Int32x4Store2JS(y,z,o){ +return %Int32x4Store2(y,z,o); +} + +function Int32x4Load3JS(y,z){ +return %Int32x4Load3(y,z); +} +function Int32x4Store3JS(y,z,o){ +return %Int32x4Store3(y,z,o); +} + +function Uint32x4Load1JS(y,z){ +return %Uint32x4Load1(y,z); +} +function Uint32x4Store1JS(y,z,o){ +return %Uint32x4Store1(y,z,o); +} + +function Uint32x4Load2JS(y,z){ +return %Uint32x4Load2(y,z); +} +function Uint32x4Store2JS(y,z,o){ +return %Uint32x4Store2(y,z,o); +} + +function Uint32x4Load3JS(y,z){ +return %Uint32x4Load3(y,z); +} +function Uint32x4Store3JS(y,z,o){ +return %Uint32x4Store3(y,z,o); +} + + +function Float32x4Splat(w){ +return %CreateFloat32x4(w,w,w,w); +} +function Float32x4SwizzleJS(o,A,B,C,D){ +return %Float32x4Swizzle(o,A,B,C,D); +} +function Float32x4ShuffleJS(o,v,A,B,C,D){ +return %Float32x4Shuffle(o,v,A,B,C,D); +} + +function Int32x4Splat(w){ +return %CreateInt32x4(w,w,w,w); +} +function Int32x4SwizzleJS(o,A,B,C,D){ +return %Int32x4Swizzle(o,A,B,C,D); +} +function Int32x4ShuffleJS(o,v,A,B,C,D){ +return %Int32x4Shuffle(o,v,A,B,C,D); +} + +function Uint32x4Splat(w){ +return %CreateUint32x4(w,w,w,w); +} +function Uint32x4SwizzleJS(o,A,B,C,D){ +return %Uint32x4Swizzle(o,A,B,C,D); +} +function Uint32x4ShuffleJS(o,v,A,B,C,D){ +return %Uint32x4Shuffle(o,v,A,B,C,D); +} + +function Bool32x4Splat(w){ +return %CreateBool32x4(w,w,w,w); +} +function Bool32x4SwizzleJS(o,A,B,C,D){ +return %Bool32x4Swizzle(o,A,B,C,D); +} +function Bool32x4ShuffleJS(o,v,A,B,C,D){ +return %Bool32x4Shuffle(o,v,A,B,C,D); +} + + +function Int16x8Splat(w){ +return %CreateInt16x8(w,w,w,w,w,w,w,w); +} +function Int16x8SwizzleJS(o,A,B,C,D,E,F,G,H){ +return %Int16x8Swizzle(o,A,B,C,D,E,F,G,H); +} +function Int16x8ShuffleJS(o,v,A,B,C,D,E,F,G,H){ +return %Int16x8Shuffle(o,v,A,B,C,D,E,F,G,H); +} + +function Uint16x8Splat(w){ +return %CreateUint16x8(w,w,w,w,w,w,w,w); +} +function Uint16x8SwizzleJS(o,A,B,C,D,E,F,G,H){ +return %Uint16x8Swizzle(o,A,B,C,D,E,F,G,H); +} +function Uint16x8ShuffleJS(o,v,A,B,C,D,E,F,G,H){ +return %Uint16x8Shuffle(o,v,A,B,C,D,E,F,G,H); +} + +function Bool16x8Splat(w){ +return %CreateBool16x8(w,w,w,w,w,w,w,w); +} +function Bool16x8SwizzleJS(o,A,B,C,D,E,F,G,H){ +return %Bool16x8Swizzle(o,A,B,C,D,E,F,G,H); +} +function Bool16x8ShuffleJS(o,v,A,B,C,D,E,F,G,H){ +return %Bool16x8Shuffle(o,v,A,B,C,D,E,F,G,H); +} + + +function Int8x16Splat(w){ +return %CreateInt8x16(w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w); +} +function Int8x16SwizzleJS(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +return %Int8x16Swizzle(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15); +} +function Int8x16ShuffleJS(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15){ +return %Int8x16Shuffle(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15); +} + +function Uint8x16Splat(w){ +return %CreateUint8x16(w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w); +} +function Uint8x16SwizzleJS(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +return %Uint8x16Swizzle(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15); +} +function Uint8x16ShuffleJS(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15){ +return %Uint8x16Shuffle(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15); +} + +function Bool8x16Splat(w){ +return %CreateBool8x16(w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w); +} +function Bool8x16SwizzleJS(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +return %Bool8x16Swizzle(o,A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15); +} +function Bool8x16ShuffleJS(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15){ +return %Bool8x16Shuffle(o,v,A,B,C,D,E,F,G,H,c8,c9,c10, +c11,c12,c13,c14,c15); +} + + +function Float32x4Constructor(A,B,C,D){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Float32x4"); +} +return %CreateFloat32x4((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D))); +} +function Int32x4Constructor(A,B,C,D){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Int32x4"); +} +return %CreateInt32x4((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D))); +} +function Uint32x4Constructor(A,B,C,D){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Uint32x4"); +} +return %CreateUint32x4((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D))); +} +function Bool32x4Constructor(A,B,C,D){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Bool32x4"); +} +return %CreateBool32x4(A,B,C,D); +} +function Int16x8Constructor(A,B,C,D,E,F,G,H){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Int16x8"); +} +return %CreateInt16x8((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D)), +(%_ToNumber(E)),(%_ToNumber(F)), +(%_ToNumber(G)),(%_ToNumber(H))); +} +function Uint16x8Constructor(A,B,C,D,E,F,G,H){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Uint16x8"); +} +return %CreateUint16x8((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D)), +(%_ToNumber(E)),(%_ToNumber(F)), +(%_ToNumber(G)),(%_ToNumber(H))); +} +function Bool16x8Constructor(A,B,C,D,E,F,G,H){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Bool16x8"); +} +return %CreateBool16x8(A,B,C,D,E,F,G,H); +} +function Int8x16Constructor(A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Int8x16"); +} +return %CreateInt8x16((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D)), +(%_ToNumber(E)),(%_ToNumber(F)), +(%_ToNumber(G)),(%_ToNumber(H)), +(%_ToNumber(c8)),(%_ToNumber(c9)), +(%_ToNumber(c10)),(%_ToNumber(c11)), +(%_ToNumber(c12)),(%_ToNumber(c13)), +(%_ToNumber(c14)),(%_ToNumber(c15))); +} +function Uint8x16Constructor(A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Uint8x16"); +} +return %CreateUint8x16((%_ToNumber(A)),(%_ToNumber(B)), +(%_ToNumber(C)),(%_ToNumber(D)), +(%_ToNumber(E)),(%_ToNumber(F)), +(%_ToNumber(G)),(%_ToNumber(H)), +(%_ToNumber(c8)),(%_ToNumber(c9)), +(%_ToNumber(c10)),(%_ToNumber(c11)), +(%_ToNumber(c12)),(%_ToNumber(c13)), +(%_ToNumber(c14)),(%_ToNumber(c15))); +} +function Bool8x16Constructor(A,B,C,D,E,F,G,H,c8,c9,c10,c11, +c12,c13,c14,c15){ +if(!(new.target===(void 0))){ +throw %make_type_error(67,"Bool8x16"); +} +return %CreateBool8x16(A,B,C,D,E,F,G,H,c8,c9,c10,c11,c12, +c13,c14,c15); +} +function Float32x4AbsJS(o){ +return %Float32x4Abs(o); +} +function Float32x4SqrtJS(o){ +return %Float32x4Sqrt(o); +} +function Float32x4RecipApproxJS(o){ +return %Float32x4RecipApprox(o); +} +function Float32x4RecipSqrtApproxJS(o){ +return %Float32x4RecipSqrtApprox(o); +} +function Float32x4DivJS(o,v){ +return %Float32x4Div(o,v); +} +function Float32x4MinNumJS(o,v){ +return %Float32x4MinNum(o,v); +} +function Float32x4MaxNumJS(o,v){ +return %Float32x4MaxNum(o,v); +} +%AddNamedProperty(c,d,'SIMD',1|2); +%SetCode(e,Float32x4Constructor); +%FunctionSetPrototype(e,{}); +%AddNamedProperty(e.prototype,'constructor',e, +2); +%AddNamedProperty(e.prototype,d,'Float32x4', +2|1); +b.InstallFunctions(e.prototype,2,[ +'toLocaleString',Float32x4ToLocaleString, +'toString',Float32x4ToString, +'valueOf',Float32x4ValueOf, +]); + + +%SetCode(f,Int32x4Constructor); +%FunctionSetPrototype(f,{}); +%AddNamedProperty(f.prototype,'constructor',f, +2); +%AddNamedProperty(f.prototype,d,'Int32x4', +2|1); +b.InstallFunctions(f.prototype,2,[ +'toLocaleString',Int32x4ToLocaleString, +'toString',Int32x4ToString, +'valueOf',Int32x4ValueOf, +]); + +%SetCode(g,Int16x8Constructor); +%FunctionSetPrototype(g,{}); +%AddNamedProperty(g.prototype,'constructor',g, +2); +%AddNamedProperty(g.prototype,d,'Int16x8', +2|1); +b.InstallFunctions(g.prototype,2,[ +'toLocaleString',Int16x8ToLocaleString, +'toString',Int16x8ToString, +'valueOf',Int16x8ValueOf, +]); + +%SetCode(h,Int8x16Constructor); +%FunctionSetPrototype(h,{}); +%AddNamedProperty(h.prototype,'constructor',h, +2); +%AddNamedProperty(h.prototype,d,'Int8x16', +2|1); +b.InstallFunctions(h.prototype,2,[ +'toLocaleString',Int8x16ToLocaleString, +'toString',Int8x16ToString, +'valueOf',Int8x16ValueOf, +]); + + +%SetCode(i,Uint32x4Constructor); +%FunctionSetPrototype(i,{}); +%AddNamedProperty(i.prototype,'constructor',i, +2); +%AddNamedProperty(i.prototype,d,'Uint32x4', +2|1); +b.InstallFunctions(i.prototype,2,[ +'toLocaleString',Uint32x4ToLocaleString, +'toString',Uint32x4ToString, +'valueOf',Uint32x4ValueOf, +]); + +%SetCode(j,Uint16x8Constructor); +%FunctionSetPrototype(j,{}); +%AddNamedProperty(j.prototype,'constructor',j, +2); +%AddNamedProperty(j.prototype,d,'Uint16x8', +2|1); +b.InstallFunctions(j.prototype,2,[ +'toLocaleString',Uint16x8ToLocaleString, +'toString',Uint16x8ToString, +'valueOf',Uint16x8ValueOf, +]); + +%SetCode(k,Uint8x16Constructor); +%FunctionSetPrototype(k,{}); +%AddNamedProperty(k.prototype,'constructor',k, +2); +%AddNamedProperty(k.prototype,d,'Uint8x16', +2|1); +b.InstallFunctions(k.prototype,2,[ +'toLocaleString',Uint8x16ToLocaleString, +'toString',Uint8x16ToString, +'valueOf',Uint8x16ValueOf, +]); + + +%SetCode(l,Bool32x4Constructor); +%FunctionSetPrototype(l,{}); +%AddNamedProperty(l.prototype,'constructor',l, +2); +%AddNamedProperty(l.prototype,d,'Bool32x4', +2|1); +b.InstallFunctions(l.prototype,2,[ +'toLocaleString',Bool32x4ToLocaleString, +'toString',Bool32x4ToString, +'valueOf',Bool32x4ValueOf, +]); + +%SetCode(m,Bool16x8Constructor); +%FunctionSetPrototype(m,{}); +%AddNamedProperty(m.prototype,'constructor',m, +2); +%AddNamedProperty(m.prototype,d,'Bool16x8', +2|1); +b.InstallFunctions(m.prototype,2,[ +'toLocaleString',Bool16x8ToLocaleString, +'toString',Bool16x8ToString, +'valueOf',Bool16x8ValueOf, +]); + +%SetCode(n,Bool8x16Constructor); +%FunctionSetPrototype(n,{}); +%AddNamedProperty(n.prototype,'constructor',n, +2); +%AddNamedProperty(n.prototype,d,'Bool8x16', +2|1); +b.InstallFunctions(n.prototype,2,[ +'toLocaleString',Bool8x16ToLocaleString, +'toString',Bool8x16ToString, +'valueOf',Bool8x16ValueOf, +]); + + + +b.InstallFunctions(e,2,[ +'splat',Float32x4Splat, +'check',Float32x4CheckJS, +'extractLane',Float32x4ExtractLaneJS, +'replaceLane',Float32x4ReplaceLaneJS, +'neg',Float32x4NegJS, +'abs',Float32x4AbsJS, +'sqrt',Float32x4SqrtJS, +'reciprocalApproximation',Float32x4RecipApproxJS, +'reciprocalSqrtApproximation',Float32x4RecipSqrtApproxJS, +'add',Float32x4AddJS, +'sub',Float32x4SubJS, +'mul',Float32x4MulJS, +'div',Float32x4DivJS, +'min',Float32x4MinJS, +'max',Float32x4MaxJS, +'minNum',Float32x4MinNumJS, +'maxNum',Float32x4MaxNumJS, +'lessThan',Float32x4LessThanJS, +'lessThanOrEqual',Float32x4LessThanOrEqualJS, +'greaterThan',Float32x4GreaterThanJS, +'greaterThanOrEqual',Float32x4GreaterThanOrEqualJS, +'equal',Float32x4EqualJS, +'notEqual',Float32x4NotEqualJS, +'select',Float32x4SelectJS, +'swizzle',Float32x4SwizzleJS, +'shuffle',Float32x4ShuffleJS, +'fromInt32x4',Float32x4FromInt32x4JS, +'fromUint32x4',Float32x4FromUint32x4JS, +'fromInt32x4Bits',Float32x4FromInt32x4BitsJS, +'fromUint32x4Bits',Float32x4FromUint32x4BitsJS, +'fromInt16x8Bits',Float32x4FromInt16x8BitsJS, +'fromUint16x8Bits',Float32x4FromUint16x8BitsJS, +'fromInt8x16Bits',Float32x4FromInt8x16BitsJS, +'fromUint8x16Bits',Float32x4FromUint8x16BitsJS, +'load',Float32x4LoadJS, +'load1',Float32x4Load1JS, +'load2',Float32x4Load2JS, +'load3',Float32x4Load3JS, +'store',Float32x4StoreJS, +'store1',Float32x4Store1JS, +'store2',Float32x4Store2JS, +'store3',Float32x4Store3JS, +]); +b.InstallFunctions(f,2,[ +'splat',Int32x4Splat, +'check',Int32x4CheckJS, +'extractLane',Int32x4ExtractLaneJS, +'replaceLane',Int32x4ReplaceLaneJS, +'neg',Int32x4NegJS, +'add',Int32x4AddJS, +'sub',Int32x4SubJS, +'mul',Int32x4MulJS, +'min',Int32x4MinJS, +'max',Int32x4MaxJS, +'and',Int32x4AndJS, +'or',Int32x4OrJS, +'xor',Int32x4XorJS, +'not',Int32x4NotJS, +'shiftLeftByScalar',Int32x4ShiftLeftByScalarJS, +'shiftRightByScalar',Int32x4ShiftRightByScalarJS, +'lessThan',Int32x4LessThanJS, +'lessThanOrEqual',Int32x4LessThanOrEqualJS, +'greaterThan',Int32x4GreaterThanJS, +'greaterThanOrEqual',Int32x4GreaterThanOrEqualJS, +'equal',Int32x4EqualJS, +'notEqual',Int32x4NotEqualJS, +'select',Int32x4SelectJS, +'swizzle',Int32x4SwizzleJS, +'shuffle',Int32x4ShuffleJS, +'fromFloat32x4',Int32x4FromFloat32x4JS, +'fromUint32x4',Int32x4FromUint32x4JS, +'fromFloat32x4Bits',Int32x4FromFloat32x4BitsJS, +'fromUint32x4Bits',Int32x4FromUint32x4BitsJS, +'fromInt16x8Bits',Int32x4FromInt16x8BitsJS, +'fromUint16x8Bits',Int32x4FromUint16x8BitsJS, +'fromInt8x16Bits',Int32x4FromInt8x16BitsJS, +'fromUint8x16Bits',Int32x4FromUint8x16BitsJS, +'load',Int32x4LoadJS, +'load1',Int32x4Load1JS, +'load2',Int32x4Load2JS, +'load3',Int32x4Load3JS, +'store',Int32x4StoreJS, +'store1',Int32x4Store1JS, +'store2',Int32x4Store2JS, +'store3',Int32x4Store3JS, +]); +b.InstallFunctions(i,2,[ +'splat',Uint32x4Splat, +'check',Uint32x4CheckJS, +'extractLane',Uint32x4ExtractLaneJS, +'replaceLane',Uint32x4ReplaceLaneJS, +'add',Uint32x4AddJS, +'sub',Uint32x4SubJS, +'mul',Uint32x4MulJS, +'min',Uint32x4MinJS, +'max',Uint32x4MaxJS, +'and',Uint32x4AndJS, +'or',Uint32x4OrJS, +'xor',Uint32x4XorJS, +'not',Uint32x4NotJS, +'shiftLeftByScalar',Uint32x4ShiftLeftByScalarJS, +'shiftRightByScalar',Uint32x4ShiftRightByScalarJS, +'lessThan',Uint32x4LessThanJS, +'lessThanOrEqual',Uint32x4LessThanOrEqualJS, +'greaterThan',Uint32x4GreaterThanJS, +'greaterThanOrEqual',Uint32x4GreaterThanOrEqualJS, +'equal',Uint32x4EqualJS, +'notEqual',Uint32x4NotEqualJS, +'select',Uint32x4SelectJS, +'swizzle',Uint32x4SwizzleJS, +'shuffle',Uint32x4ShuffleJS, +'fromFloat32x4',Uint32x4FromFloat32x4JS, +'fromInt32x4',Uint32x4FromInt32x4JS, +'fromFloat32x4Bits',Uint32x4FromFloat32x4BitsJS, +'fromInt32x4Bits',Uint32x4FromInt32x4BitsJS, +'fromInt16x8Bits',Uint32x4FromInt16x8BitsJS, +'fromUint16x8Bits',Uint32x4FromUint16x8BitsJS, +'fromInt8x16Bits',Uint32x4FromInt8x16BitsJS, +'fromUint8x16Bits',Uint32x4FromUint8x16BitsJS, +'load',Uint32x4LoadJS, +'load1',Uint32x4Load1JS, +'load2',Uint32x4Load2JS, +'load3',Uint32x4Load3JS, +'store',Uint32x4StoreJS, +'store1',Uint32x4Store1JS, +'store2',Uint32x4Store2JS, +'store3',Uint32x4Store3JS, +]); +b.InstallFunctions(l,2,[ +'splat',Bool32x4Splat, +'check',Bool32x4CheckJS, +'extractLane',Bool32x4ExtractLaneJS, +'replaceLane',Bool32x4ReplaceLaneJS, +'and',Bool32x4AndJS, +'or',Bool32x4OrJS, +'xor',Bool32x4XorJS, +'not',Bool32x4NotJS, +'anyTrue',Bool32x4AnyTrueJS, +'allTrue',Bool32x4AllTrueJS, +'swizzle',Bool32x4SwizzleJS, +'shuffle',Bool32x4ShuffleJS, +]); +b.InstallFunctions(g,2,[ +'splat',Int16x8Splat, +'check',Int16x8CheckJS, +'extractLane',Int16x8ExtractLaneJS, +'replaceLane',Int16x8ReplaceLaneJS, +'neg',Int16x8NegJS, +'add',Int16x8AddJS, +'sub',Int16x8SubJS, +'addSaturate',Int16x8AddSaturateJS, +'subSaturate',Int16x8SubSaturateJS, +'mul',Int16x8MulJS, +'min',Int16x8MinJS, +'max',Int16x8MaxJS, +'and',Int16x8AndJS, +'or',Int16x8OrJS, +'xor',Int16x8XorJS, +'not',Int16x8NotJS, +'shiftLeftByScalar',Int16x8ShiftLeftByScalarJS, +'shiftRightByScalar',Int16x8ShiftRightByScalarJS, +'lessThan',Int16x8LessThanJS, +'lessThanOrEqual',Int16x8LessThanOrEqualJS, +'greaterThan',Int16x8GreaterThanJS, +'greaterThanOrEqual',Int16x8GreaterThanOrEqualJS, +'equal',Int16x8EqualJS, +'notEqual',Int16x8NotEqualJS, +'select',Int16x8SelectJS, +'swizzle',Int16x8SwizzleJS, +'shuffle',Int16x8ShuffleJS, +'fromUint16x8',Int16x8FromUint16x8JS, +'fromFloat32x4Bits',Int16x8FromFloat32x4BitsJS, +'fromInt32x4Bits',Int16x8FromInt32x4BitsJS, +'fromUint32x4Bits',Int16x8FromUint32x4BitsJS, +'fromUint16x8Bits',Int16x8FromUint16x8BitsJS, +'fromInt8x16Bits',Int16x8FromInt8x16BitsJS, +'fromUint8x16Bits',Int16x8FromUint8x16BitsJS, +'load',Int16x8LoadJS, +'store',Int16x8StoreJS, +]); +b.InstallFunctions(j,2,[ +'splat',Uint16x8Splat, +'check',Uint16x8CheckJS, +'extractLane',Uint16x8ExtractLaneJS, +'replaceLane',Uint16x8ReplaceLaneJS, +'add',Uint16x8AddJS, +'sub',Uint16x8SubJS, +'addSaturate',Uint16x8AddSaturateJS, +'subSaturate',Uint16x8SubSaturateJS, +'mul',Uint16x8MulJS, +'min',Uint16x8MinJS, +'max',Uint16x8MaxJS, +'and',Uint16x8AndJS, +'or',Uint16x8OrJS, +'xor',Uint16x8XorJS, +'not',Uint16x8NotJS, +'shiftLeftByScalar',Uint16x8ShiftLeftByScalarJS, +'shiftRightByScalar',Uint16x8ShiftRightByScalarJS, +'lessThan',Uint16x8LessThanJS, +'lessThanOrEqual',Uint16x8LessThanOrEqualJS, +'greaterThan',Uint16x8GreaterThanJS, +'greaterThanOrEqual',Uint16x8GreaterThanOrEqualJS, +'equal',Uint16x8EqualJS, +'notEqual',Uint16x8NotEqualJS, +'select',Uint16x8SelectJS, +'swizzle',Uint16x8SwizzleJS, +'shuffle',Uint16x8ShuffleJS, +'fromInt16x8',Uint16x8FromInt16x8JS, +'fromFloat32x4Bits',Uint16x8FromFloat32x4BitsJS, +'fromInt32x4Bits',Uint16x8FromInt32x4BitsJS, +'fromUint32x4Bits',Uint16x8FromUint32x4BitsJS, +'fromInt16x8Bits',Uint16x8FromInt16x8BitsJS, +'fromInt8x16Bits',Uint16x8FromInt8x16BitsJS, +'fromUint8x16Bits',Uint16x8FromUint8x16BitsJS, +'load',Uint16x8LoadJS, +'store',Uint16x8StoreJS, +]); +b.InstallFunctions(m,2,[ +'splat',Bool16x8Splat, +'check',Bool16x8CheckJS, +'extractLane',Bool16x8ExtractLaneJS, +'replaceLane',Bool16x8ReplaceLaneJS, +'and',Bool16x8AndJS, +'or',Bool16x8OrJS, +'xor',Bool16x8XorJS, +'not',Bool16x8NotJS, +'anyTrue',Bool16x8AnyTrueJS, +'allTrue',Bool16x8AllTrueJS, +'swizzle',Bool16x8SwizzleJS, +'shuffle',Bool16x8ShuffleJS, +]); +b.InstallFunctions(h,2,[ +'splat',Int8x16Splat, +'check',Int8x16CheckJS, +'extractLane',Int8x16ExtractLaneJS, +'replaceLane',Int8x16ReplaceLaneJS, +'neg',Int8x16NegJS, +'add',Int8x16AddJS, +'sub',Int8x16SubJS, +'addSaturate',Int8x16AddSaturateJS, +'subSaturate',Int8x16SubSaturateJS, +'mul',Int8x16MulJS, +'min',Int8x16MinJS, +'max',Int8x16MaxJS, +'and',Int8x16AndJS, +'or',Int8x16OrJS, +'xor',Int8x16XorJS, +'not',Int8x16NotJS, +'shiftLeftByScalar',Int8x16ShiftLeftByScalarJS, +'shiftRightByScalar',Int8x16ShiftRightByScalarJS, +'lessThan',Int8x16LessThanJS, +'lessThanOrEqual',Int8x16LessThanOrEqualJS, +'greaterThan',Int8x16GreaterThanJS, +'greaterThanOrEqual',Int8x16GreaterThanOrEqualJS, +'equal',Int8x16EqualJS, +'notEqual',Int8x16NotEqualJS, +'select',Int8x16SelectJS, +'swizzle',Int8x16SwizzleJS, +'shuffle',Int8x16ShuffleJS, +'fromUint8x16',Int8x16FromUint8x16JS, +'fromFloat32x4Bits',Int8x16FromFloat32x4BitsJS, +'fromInt32x4Bits',Int8x16FromInt32x4BitsJS, +'fromUint32x4Bits',Int8x16FromUint32x4BitsJS, +'fromInt16x8Bits',Int8x16FromInt16x8BitsJS, +'fromUint16x8Bits',Int8x16FromUint16x8BitsJS, +'fromUint8x16Bits',Int8x16FromUint8x16BitsJS, +'load',Int8x16LoadJS, +'store',Int8x16StoreJS, +]); +b.InstallFunctions(k,2,[ +'splat',Uint8x16Splat, +'check',Uint8x16CheckJS, +'extractLane',Uint8x16ExtractLaneJS, +'replaceLane',Uint8x16ReplaceLaneJS, +'add',Uint8x16AddJS, +'sub',Uint8x16SubJS, +'addSaturate',Uint8x16AddSaturateJS, +'subSaturate',Uint8x16SubSaturateJS, +'mul',Uint8x16MulJS, +'min',Uint8x16MinJS, +'max',Uint8x16MaxJS, +'and',Uint8x16AndJS, +'or',Uint8x16OrJS, +'xor',Uint8x16XorJS, +'not',Uint8x16NotJS, +'shiftLeftByScalar',Uint8x16ShiftLeftByScalarJS, +'shiftRightByScalar',Uint8x16ShiftRightByScalarJS, +'lessThan',Uint8x16LessThanJS, +'lessThanOrEqual',Uint8x16LessThanOrEqualJS, +'greaterThan',Uint8x16GreaterThanJS, +'greaterThanOrEqual',Uint8x16GreaterThanOrEqualJS, +'equal',Uint8x16EqualJS, +'notEqual',Uint8x16NotEqualJS, +'select',Uint8x16SelectJS, +'swizzle',Uint8x16SwizzleJS, +'shuffle',Uint8x16ShuffleJS, +'fromInt8x16',Uint8x16FromInt8x16JS, +'fromFloat32x4Bits',Uint8x16FromFloat32x4BitsJS, +'fromInt32x4Bits',Uint8x16FromInt32x4BitsJS, +'fromUint32x4Bits',Uint8x16FromUint32x4BitsJS, +'fromInt16x8Bits',Uint8x16FromInt16x8BitsJS, +'fromUint16x8Bits',Uint8x16FromUint16x8BitsJS, +'fromInt8x16Bits',Uint8x16FromInt8x16BitsJS, +'load',Uint8x16LoadJS, +'store',Uint8x16StoreJS, +]); +b.InstallFunctions(n,2,[ +'splat',Bool8x16Splat, +'check',Bool8x16CheckJS, +'extractLane',Bool8x16ExtractLaneJS, +'replaceLane',Bool8x16ReplaceLaneJS, +'and',Bool8x16AndJS, +'or',Bool8x16OrJS, +'xor',Bool8x16XorJS, +'not',Bool8x16NotJS, +'anyTrue',Bool8x16AnyTrueJS, +'allTrue',Bool8x16AllTrueJS, +'swizzle',Bool8x16SwizzleJS, +'shuffle',Bool8x16ShuffleJS, +]); +}) + +Xharmony-string-paddingY +(function(a,b){ +%CheckIsBootstrapping(); +var c=a.String; +function StringPad(d,e,f){ +e=(%_ToLength(e)); +var g=d.length; +if(e<=g)return""; +if((f===(void 0))){ +f=" "; +}else{ +f=(%_ToString(f)); +if(f===""){ +return""; +} +} +var h=e-g; +var i=(h/f.length)|0; +var j=(h-f.length*i)|0; +var k=""; +while(true){ +if(i&1)k+=f; +i>>=1; +if(i===0)break; +f+=f; +} +if(j){ +k+=%_SubString(f,0,j); +} +return k; +} +function StringPadStart(e,f){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.padStart") +var d=(%_ToString(this)); +return StringPad(d,e,f)+d; +} +%FunctionSetLength(StringPadStart,1); +function StringPadEnd(e,f){ +if((%IS_VAR(this)===null)||(this===(void 0)))throw %make_type_error(17,"String.prototype.padEnd") +var d=(%_ToString(this)); +return d+StringPad(d,e,f); +} +%FunctionSetLength(StringPadEnd,1); +b.InstallFunctions(c.prototype,2,[ +"padStart",StringPadStart, +"padEnd",StringPadEnd +]); +}); + +`datetime-format-to-parts +(function(a,b){ +"use strict"; +%CheckIsBootstrapping(); +var c=a.Intl; +var d=b.ImportNow("FormatDateToParts"); +b.InstallFunctions(c.DateTimeFormat.prototype,2,[ +'formatToParts',d +]); +}) + +@icu-case-mapping +(function(a,b){ +"use strict"; +%CheckIsBootstrapping(); +var c=a.String; +var d=b.OverrideFunction; +var e=b.ImportNow("ToLowerCaseI18N"); +var f=b.ImportNow("ToUpperCaseI18N"); +var g=b.ImportNow("ToLocaleLowerCaseI18N"); +var h=b.ImportNow("ToLocaleUpperCaseI18N"); +d(c.prototype,'toLowerCase',e,true); +d(c.prototype,'toUpperCase',f,true); +d(c.prototype,'toLocaleLowerCase', +g,true); +d(c.prototype,'toLocaleUpperCase', +h,true); +}) + + dByteLengthQueuingStrategy +(function(global, binding, v8) { + 'use strict'; + const defineProperty = global.Object.defineProperty; + class ByteLengthQueuingStrategy { + constructor(options) { + defineProperty(this, 'highWaterMark', { + value: options.highWaterMark, + enumerable: true, + configurable: true, + writable: true + }); + } + size(chunk) { return chunk.byteLength; } + } + defineProperty(global, 'ByteLengthQueuingStrategy', { + value: ByteLengthQueuingStrategy, + enumerable: false, + configurable: true, + writable: true + }); +}); +PCountQueuingStrategy +(function(global, binding, v8) { + 'use strict'; + const defineProperty = global.Object.defineProperty; + class CountQueuingStrategy { + constructor(options) { + defineProperty(this, 'highWaterMark', { + value: options.highWaterMark, + enumerable: true, + configurable: true, + writable: true + }); + } + size(chunk) { return 1; } + } + defineProperty(global, 'CountQueuingStrategy', { + value: CountQueuingStrategy, + enumerable: false, + configurable: true, + writable: true + }); + class BuiltInCountQueuingStrategy { + constructor(highWaterMark) { + defineProperty(this, 'highWaterMark', {value: highWaterMark}); + } + size(chunk) { return 1; } + } + binding.createBuiltInCountQueuingStrategy = highWaterMark => + new BuiltInCountQueuingStrategy(highWaterMark); +}); +8ReadableStream +(function(global, binding, v8) { + 'use strict'; + const _reader = v8.createPrivateSymbol('[[reader]]'); + const _storedError = v8.createPrivateSymbol('[[storedError]]'); + const _controller = v8.createPrivateSymbol('[[controller]]'); + const _closedPromise = v8.createPrivateSymbol('[[closedPromise]]'); + const _ownerReadableStream = + v8.createPrivateSymbol('[[ownerReadableStream]]'); + const _readRequests = v8.createPrivateSymbol('[[readRequests]]'); + const createWithExternalControllerSentinel = + v8.createPrivateSymbol('flag for UA-created ReadableStream to pass'); + const _readableStreamBits = v8.createPrivateSymbol('bit field for [[state]] and [[disturbed]]'); + const DISTURBED = 0b1; + const STATE_MASK = 0b110; + const STATE_BITS_OFFSET = 1; + const STATE_READABLE = 0; + const STATE_CLOSED = 1; + const STATE_ERRORED = 2; + const _underlyingSource = v8.createPrivateSymbol('[[underlyingSource]]'); + const _controlledReadableStream = + v8.createPrivateSymbol('[[controlledReadableStream]]'); + const _queue = v8.createPrivateSymbol('[[queue]]'); + const _totalQueuedSize = v8.createPrivateSymbol('[[totalQueuedSize]]'); + const _strategySize = v8.createPrivateSymbol('[[strategySize]]'); + const _strategyHWM = v8.createPrivateSymbol('[[strategyHWM]]'); + const _readableStreamDefaultControllerBits = v8.createPrivateSymbol( + 'bit field for [[started]], [[closeRequested]], [[pulling]], [[pullAgain]]'); + const STARTED = 0b1; + const CLOSE_REQUESTED = 0b10; + const PULLING = 0b100; + const PULL_AGAIN = 0b1000; + const EXTERNALLY_CONTROLLED = 0b10000; + const undefined = global.undefined; + const Infinity = global.Infinity; + const defineProperty = global.Object.defineProperty; + const hasOwnProperty = v8.uncurryThis(global.Object.hasOwnProperty); + const callFunction = v8.uncurryThis(global.Function.prototype.call); + const TypeError = global.TypeError; + const RangeError = global.RangeError; + const Number = global.Number; + const Number_isNaN = Number.isNaN; + const Number_isFinite = Number.isFinite; + const Promise = global.Promise; + const thenPromise = v8.uncurryThis(Promise.prototype.then); + const Promise_resolve = v8.simpleBind(Promise.resolve, Promise); + const Promise_reject = v8.simpleBind(Promise.reject, Promise); + const errIllegalInvocation = 'Illegal invocation'; + const errIllegalConstructor = 'Illegal constructor'; + const errCancelLockedStream = + 'Cannot cancel a readable stream that is locked to a reader'; + const errEnqueueCloseRequestedStream = + 'Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed'; + const errCancelReleasedReader = + 'This readable stream reader has been released and cannot be used to cancel its previous owner stream'; + const errReadReleasedReader = + 'This readable stream reader has been released and cannot be used to read from its previous owner stream'; + const errCloseCloseRequestedStream = + 'Cannot close a readable stream that has already been requested to be closed'; + const errEnqueueClosedStream = 'Cannot enqueue a chunk into a closed readable stream'; + const errEnqueueErroredStream = 'Cannot enqueue a chunk into an errored readable stream'; + const errCloseClosedStream = 'Cannot close a closed readable stream'; + const errCloseErroredStream = 'Cannot close an errored readable stream'; + const errErrorClosedStream = 'Cannot error a close readable stream'; + const errErrorErroredStream = + 'Cannot error a readable stream that is already errored'; + const errGetReaderNotByteStream = 'This readable stream does not support BYOB readers'; + const errGetReaderBadMode = 'Invalid reader mode given: expected undefined or "byob"'; + const errReaderConstructorBadArgument = + 'ReadableStreamReader constructor argument is not a readable stream'; + const errReaderConstructorStreamAlreadyLocked = + 'ReadableStreamReader constructor can only accept readable streams that are not yet locked to a reader'; + const errReleaseReaderWithPendingRead = + 'Cannot release a readable stream reader when it still has outstanding read() calls that have not yet settled'; + const errReleasedReaderClosedPromise = + 'This readable stream reader has been released and cannot be used to monitor the stream\'s state'; + const errInvalidSize = + 'The return value of a queuing strategy\'s size function must be a finite, non-NaN, non-negative number'; + const errSizeNotAFunction = + 'A queuing strategy\'s size property must be a function'; + const errInvalidHWM = + 'A queueing strategy\'s highWaterMark property must be a nonnegative, non-NaN number'; + const errTmplMustBeFunctionOrUndefined = name => + `${name} must be a function or undefined`; + class ReadableStream { + constructor() { + const underlyingSource = arguments[0] === undefined ? {} : arguments[0]; + const strategy = arguments[1] === undefined ? {} : arguments[1]; + const size = strategy.size; + let highWaterMark = strategy.highWaterMark; + if (highWaterMark === undefined) { + highWaterMark = 1; + } + this[_readableStreamBits] = 0b0; + ReadableStreamSetState(this, STATE_READABLE); + this[_reader] = undefined; + this[_storedError] = undefined; + this[_controller] = undefined; + const type = underlyingSource.type; + const typeString = String(type); + if (typeString === 'bytes') { + throw new RangeError('bytes type is not yet implemented'); + } else if (type !== undefined) { + throw new RangeError('Invalid type is specified'); + } + this[_controller] = + new ReadableStreamDefaultController(this, underlyingSource, size, highWaterMark, arguments[2] === createWithExternalControllerSentinel); + } + get locked() { + if (IsReadableStream(this) === false) { + throw new TypeError(errIllegalInvocation); + } + return IsReadableStreamLocked(this); + } + cancel(reason) { + if (IsReadableStream(this) === false) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + if (IsReadableStreamLocked(this) === true) { + return Promise_reject(new TypeError(errCancelLockedStream)); + } + return ReadableStreamCancel(this, reason); + } + getReader({ mode } = {}) { + if (IsReadableStream(this) === false) { + throw new TypeError(errIllegalInvocation); + } + if (mode === 'byob') { + throw new TypeError(errGetReaderNotByteStream); + } + if (mode === undefined) { + return AcquireReadableStreamDefaultReader(this); + } + throw new RangeError(errGetReaderBadMode); + } + tee() { + if (IsReadableStream(this) === false) { + throw new TypeError(errIllegalInvocation); + } + return ReadableStreamTee(this); + } + } + class ReadableStreamDefaultController { + constructor(stream, underlyingSource, size, highWaterMark, isExternallyControlled) { + if (IsReadableStream(stream) === false) { + throw new TypeError(errIllegalConstructor); + } + if (stream[_controller] !== undefined) { + throw new TypeError(errIllegalConstructor); + } + this[_controlledReadableStream] = stream; + this[_underlyingSource] = underlyingSource; + this[_queue] = new v8.InternalPackedArray(); + this[_totalQueuedSize] = 0; + this[_readableStreamDefaultControllerBits] = 0b0; + if (isExternallyControlled === true) { + this[_readableStreamDefaultControllerBits] |= EXTERNALLY_CONTROLLED; + } + const normalizedStrategy = + ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this[_strategySize] = normalizedStrategy.size; + this[_strategyHWM] = normalizedStrategy.highWaterMark; + const controller = this; + const startResult = CallOrNoop( + underlyingSource, 'start', this, 'underlyingSource.start'); + thenPromise(Promise_resolve(startResult), + () => { + controller[_readableStreamDefaultControllerBits] |= STARTED; + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + }, + r => { + if (ReadableStreamGetState(stream) === STATE_READABLE) { + ReadableStreamDefaultControllerError(controller, r); + } + }); + } + get desiredSize() { + if (IsReadableStreamDefaultController(this) === false) { + throw new TypeError(errIllegalInvocation); + } + return ReadableStreamDefaultControllerGetDesiredSize(this); + } + close() { + if (IsReadableStreamDefaultController(this) === false) { + throw new TypeError(errIllegalInvocation); + } + const stream = this[_controlledReadableStream]; + if (this[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) { + throw new TypeError(errCloseCloseRequestedStream); + } + const state = ReadableStreamGetState(stream); + if (state === STATE_ERRORED) { + throw new TypeError(errCloseErroredStream); + } + if (state === STATE_CLOSED) { + throw new TypeError(errCloseClosedStream); + } + return ReadableStreamDefaultControllerClose(this); + } + enqueue(chunk) { + if (IsReadableStreamDefaultController(this) === false) { + throw new TypeError(errIllegalInvocation); + } + const stream = this[_controlledReadableStream]; + if (this[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) { + throw new TypeError(errEnqueueCloseRequestedStream); + } + const state = ReadableStreamGetState(stream); + if (state === STATE_ERRORED) { + throw new TypeError(errEnqueueErroredStream); + } + if (state === STATE_CLOSED) { + throw new TypeError(errEnqueueClosedStream); + } + return ReadableStreamDefaultControllerEnqueue(this, chunk); + } + error(e) { + if (IsReadableStreamDefaultController(this) === false) { + throw new TypeError(errIllegalInvocation); + } + const stream = this[_controlledReadableStream]; + const state = ReadableStreamGetState(stream); + if (state === STATE_ERRORED) { + throw new TypeError(errErrorErroredStream); + } + if (state === STATE_CLOSED) { + throw new TypeError(errErrorClosedStream); + } + return ReadableStreamDefaultControllerError(this, e); + } + } + function ReadableStreamDefaultControllerCancel(controller, reason) { + controller[_queue] = new v8.InternalPackedArray(); + const underlyingSource = controller[_underlyingSource]; + return PromiseCallOrNoop(underlyingSource, 'cancel', reason, 'underlyingSource.cancel'); + } + function ReadableStreamDefaultControllerPull(controller) { + const stream = controller[_controlledReadableStream]; + if (controller[_queue].length > 0) { + const chunk = DequeueValue(controller); + if ((controller[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) && + controller[_queue].length === 0) { + ReadableStreamClose(stream); + } else { + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + return Promise_resolve(CreateIterResultObject(chunk, false)); + } + const pendingPromise = ReadableStreamAddReadRequest(stream); + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + return pendingPromise; + } + function ReadableStreamAddReadRequest(stream) { + const promise = v8.createPromise(); + stream[_reader][_readRequests].push(promise); + return promise; + } + class ReadableStreamDefaultReader { + constructor(stream) { + if (IsReadableStream(stream) === false) { + throw new TypeError(errReaderConstructorBadArgument); + } + if (IsReadableStreamLocked(stream) === true) { + throw new TypeError(errReaderConstructorStreamAlreadyLocked); + } + ReadableStreamReaderGenericInitialize(this, stream); + this[_readRequests] = new v8.InternalPackedArray(); + } + get closed() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + return this[_closedPromise]; + } + cancel(reason) { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + const stream = this[_ownerReadableStream]; + if (stream === undefined) { + return Promise_reject(new TypeError(errCancelReleasedReader)); + } + return ReadableStreamReaderGenericCancel(this, reason); + } + read() { + if (IsReadableStreamDefaultReader(this) === false) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + if (this[_ownerReadableStream] === undefined) { + return Promise_reject(new TypeError(errReadReleasedReader)); + } + return ReadableStreamDefaultReaderRead(this); + } + releaseLock() { + if (IsReadableStreamDefaultReader(this) === false) { + throw new TypeError(errIllegalInvocation); + } + const stream = this[_ownerReadableStream]; + if (stream === undefined) { + return undefined; + } + if (this[_readRequests].length > 0) { + throw new TypeError(errReleaseReaderWithPendingRead); + } + ReadableStreamReaderGenericRelease(this); + } + } + function ReadableStreamReaderGenericCancel(reader, reason) { + return ReadableStreamCancel(reader[_ownerReadableStream], reason); + } + function AcquireReadableStreamDefaultReader(stream) { + return new ReadableStreamDefaultReader(stream); + } + function ReadableStreamCancel(stream, reason) { + stream[_readableStreamBits] |= DISTURBED; + const state = ReadableStreamGetState(stream); + if (state === STATE_CLOSED) { + return Promise_resolve(undefined); + } + if (state === STATE_ERRORED) { + return Promise_reject(stream[_storedError]); + } + ReadableStreamClose(stream); + const sourceCancelPromise = ReadableStreamDefaultControllerCancel(stream[_controller], reason); + return thenPromise(sourceCancelPromise, () => undefined); + } + function ReadableStreamDefaultControllerClose(controller) { + const stream = controller[_controlledReadableStream]; + controller[_readableStreamDefaultControllerBits] |= CLOSE_REQUESTED; + if (controller[_queue].length === 0) { + ReadableStreamClose(stream); + } + } + function ReadableStreamFulfillReadRequest(stream, chunk, done) { + const reader = stream[_reader]; + const readRequest = stream[_reader][_readRequests].shift(); + v8.resolvePromise(readRequest, CreateIterResultObject(chunk, done)); + } + function ReadableStreamDefaultControllerEnqueue(controller, chunk) { + const stream = controller[_controlledReadableStream]; + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + ReadableStreamFulfillReadRequest(stream, chunk, false); + } else { + let chunkSize = 1; + const strategySize = controller[_strategySize]; + if (strategySize !== undefined) { + try { + chunkSize = strategySize(chunk); + } catch (chunkSizeE) { + if (ReadableStreamGetState(stream) === STATE_READABLE) { + ReadableStreamDefaultControllerError(controller, chunkSizeE); + } + throw chunkSizeE; + } + } + try { + EnqueueValueWithSize(controller, chunk, chunkSize); + } catch (enqueueE) { + if (ReadableStreamGetState(stream) === STATE_READABLE) { + ReadableStreamDefaultControllerError(controller, enqueueE); + } + throw enqueueE; + } + } + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + function ReadableStreamGetState(stream) { + return (stream[_readableStreamBits] & STATE_MASK) >> STATE_BITS_OFFSET; + } + function ReadableStreamSetState(stream, state) { + stream[_readableStreamBits] = (stream[_readableStreamBits] & ~STATE_MASK) | + (state << STATE_BITS_OFFSET); + } + function ReadableStreamDefaultControllerError(controller, e) { + controller[_queue] = new v8.InternalPackedArray(); + const stream = controller[_controlledReadableStream]; + ReadableStreamError(stream, e); + } + function ReadableStreamError(stream, e) { + stream[_storedError] = e; + ReadableStreamSetState(stream, STATE_ERRORED); + const reader = stream[_reader]; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + const readRequests = reader[_readRequests]; + for (let i = 0; i < readRequests.length; i++) { + v8.rejectPromise(readRequests[i], e); + } + reader[_readRequests] = new v8.InternalPackedArray(); + } + v8.rejectPromise(reader[_closedPromise], e); + } + function ReadableStreamClose(stream) { + ReadableStreamSetState(stream, STATE_CLOSED); + const reader = stream[_reader]; + if (reader === undefined) { + return undefined; + } + if (IsReadableStreamDefaultReader(reader) === true) { + const readRequests = reader[_readRequests]; + for (let i = 0; i < readRequests.length; i++) { + v8.resolvePromise( + readRequests[i], CreateIterResultObject(undefined, true)); + } + reader[_readRequests] = new v8.InternalPackedArray(); + } + v8.resolvePromise(reader[_closedPromise], undefined); + } + function ReadableStreamDefaultControllerGetDesiredSize(controller) { + const queueSize = GetTotalQueueSize(controller); + return controller[_strategyHWM] - queueSize; + } + function IsReadableStream(x) { + return hasOwnProperty(x, _controller); + } + function IsReadableStreamDisturbed(stream) { + return stream[_readableStreamBits] & DISTURBED; + } + function IsReadableStreamLocked(stream) { + return stream[_reader] !== undefined; + } + function IsReadableStreamDefaultController(x) { + return hasOwnProperty(x, _controlledReadableStream); + } + function IsReadableStreamDefaultReader(x) { + return hasOwnProperty(x, _readRequests); + } + function IsReadableStreamReadable(stream) { + return ReadableStreamGetState(stream) === STATE_READABLE; + } + function IsReadableStreamClosed(stream) { + return ReadableStreamGetState(stream) === STATE_CLOSED; + } + function IsReadableStreamErrored(stream) { + return ReadableStreamGetState(stream) === STATE_ERRORED; + } + function ReadableStreamReaderGenericInitialize(reader, stream) { + const controller = stream[_controller]; + if (controller[_readableStreamDefaultControllerBits] & EXTERNALLY_CONTROLLED) { + const underlyingSource = controller[_underlyingSource]; + callFunction(underlyingSource.notifyLockAcquired, underlyingSource); + } + reader[_ownerReadableStream] = stream; + stream[_reader] = reader; + switch (ReadableStreamGetState(stream)) { + case STATE_READABLE: + reader[_closedPromise] = v8.createPromise(); + break; + case STATE_CLOSED: + reader[_closedPromise] = Promise_resolve(undefined); + break; + case STATE_ERRORED: + reader[_closedPromise] = Promise_reject(stream[_storedError]); + break; + } + } + function ReadableStreamReaderGenericRelease(reader) { + const controller = reader[_ownerReadableStream][_controller]; + if (controller[_readableStreamDefaultControllerBits] & EXTERNALLY_CONTROLLED) { + const underlyingSource = controller[_underlyingSource]; + callFunction(underlyingSource.notifyLockReleased, underlyingSource); + } + if (ReadableStreamGetState(reader[_ownerReadableStream]) === STATE_READABLE) { + v8.rejectPromise(reader[_closedPromise], new TypeError(errReleasedReaderClosedPromise)); + } else { + reader[_closedPromise] = Promise_reject(new TypeError(errReleasedReaderClosedPromise)); + } + reader[_ownerReadableStream][_reader] = undefined; + reader[_ownerReadableStream] = undefined; + } + function ReadableStreamDefaultReaderRead(reader) { + const stream = reader[_ownerReadableStream]; + stream[_readableStreamBits] |= DISTURBED; + if (ReadableStreamGetState(stream) === STATE_CLOSED) { + return Promise_resolve(CreateIterResultObject(undefined, true)); + } + if (ReadableStreamGetState(stream) === STATE_ERRORED) { + return Promise_reject(stream[_storedError]); + } + return ReadableStreamDefaultControllerPull(stream[_controller]); + } + function ReadableStreamDefaultControllerCallPullIfNeeded(controller) { + const shouldPull = ReadableStreamDefaultControllerShouldCallPull(controller); + if (shouldPull === false) { + return undefined; + } + if (controller[_readableStreamDefaultControllerBits] & PULLING) { + controller[_readableStreamDefaultControllerBits] |= PULL_AGAIN; + return undefined; + } + controller[_readableStreamDefaultControllerBits] |= PULLING; + const underlyingSource = controller[_underlyingSource]; + const pullPromise = PromiseCallOrNoop( + underlyingSource, 'pull', controller, 'underlyingSource.pull'); + thenPromise(pullPromise, + () => { + controller[_readableStreamDefaultControllerBits] &= ~PULLING; + if (controller[_readableStreamDefaultControllerBits] & PULL_AGAIN) { + controller[_readableStreamDefaultControllerBits] &= ~PULL_AGAIN; + ReadableStreamDefaultControllerCallPullIfNeeded(controller); + } + }, + e => { + if (ReadableStreamGetState(controller[_controlledReadableStream]) === STATE_READABLE) { + ReadableStreamDefaultControllerError(controller, e); + } + }); + } + function ReadableStreamDefaultControllerShouldCallPull(controller) { + const stream = controller[_controlledReadableStream]; + const state = ReadableStreamGetState(stream); + if (state === STATE_CLOSED || state === STATE_ERRORED) { + return false; + } + if (controller[_readableStreamDefaultControllerBits] & CLOSE_REQUESTED) { + return false; + } + if (!(controller[_readableStreamDefaultControllerBits] & STARTED)) { + return false; + } + if (IsReadableStreamLocked(stream) === true && ReadableStreamGetNumReadRequests(stream) > 0) { + return true; + } + const desiredSize = ReadableStreamDefaultControllerGetDesiredSize(controller); + if (desiredSize > 0) { + return true; + } + return false; + } + function ReadableStreamGetNumReadRequests(stream) { + const reader = stream[_reader]; + const readRequests = reader[_readRequests]; + return readRequests.length; + } + function ReadableStreamTee(stream) { + const reader = AcquireReadableStreamDefaultReader(stream); + let closedOrErrored = false; + let canceled1 = false; + let canceled2 = false; + let reason1; + let reason2; + let promise = v8.createPromise(); + const branch1Stream = new ReadableStream({pull, cancel: cancel1}); + const branch2Stream = new ReadableStream({pull, cancel: cancel2}); + const branch1 = branch1Stream[_controller]; + const branch2 = branch2Stream[_controller]; + thenPromise( + reader[_closedPromise], undefined, function(r) { + if (closedOrErrored === true) { + return; + } + ReadableStreamDefaultControllerError(branch1, r); + ReadableStreamDefaultControllerError(branch2, r); + closedOrErrored = true; + }); + return [branch1Stream, branch2Stream]; + function pull() { + return thenPromise( + ReadableStreamDefaultReaderRead(reader), function(result) { + const value = result.value; + const done = result.done; + if (done === true && closedOrErrored === false) { + if (canceled1 === false) { + ReadableStreamDefaultControllerClose(branch1); + } + if (canceled2 === false) { + ReadableStreamDefaultControllerClose(branch2); + } + closedOrErrored = true; + } + if (closedOrErrored === true) { + return; + } + if (canceled1 === false) { + ReadableStreamDefaultControllerEnqueue(branch1, value); + } + if (canceled2 === false) { + ReadableStreamDefaultControllerEnqueue(branch2, value); + } + }); + } + function cancel1(reason) { + canceled1 = true; + reason1 = reason; + if (canceled2 === true) { + const compositeReason = [reason1, reason2]; + const cancelResult = ReadableStreamCancel(stream, compositeReason); + v8.resolvePromise(promise, cancelResult); + } + return promise; + } + function cancel2(reason) { + canceled2 = true; + reason2 = reason; + if (canceled1 === true) { + const compositeReason = [reason1, reason2]; + const cancelResult = ReadableStreamCancel(stream, compositeReason); + v8.resolvePromise(promise, cancelResult); + } + return promise; + } + } + function DequeueValue(controller) { + const result = controller[_queue].shift(); + controller[_totalQueuedSize] -= result.size; + return result.value; + } + function EnqueueValueWithSize(controller, value, size) { + size = Number(size); + if (Number_isNaN(size) || size === +Infinity || size < 0) { + throw new RangeError(errInvalidSize); + } + controller[_totalQueuedSize] += size; + controller[_queue].push({value, size}); + } + function GetTotalQueueSize(controller) { return controller[_totalQueuedSize]; } + function ValidateAndNormalizeQueuingStrategy(size, highWaterMark) { + if (size !== undefined && typeof size !== 'function') { + throw new TypeError(errSizeNotAFunction); + } + highWaterMark = Number(highWaterMark); + if (Number_isNaN(highWaterMark) || highWaterMark < 0) { + throw new RangeError(errInvalidHWM); + } + return {size, highWaterMark}; + } + function CallOrNoop(O, P, arg, nameForError) { + const method = O[P]; + if (method === undefined) { + return undefined; + } + if (typeof method !== 'function') { + throw new TypeError(errTmplMustBeFunctionOrUndefined(nameForError)); + } + return callFunction(method, O, arg); + } + function PromiseCallOrNoop(O, P, arg, nameForError) { + let method; + try { + method = O[P]; + } catch (methodE) { + return Promise_reject(methodE); + } + if (method === undefined) { + return Promise_resolve(undefined); + } + if (typeof method !== 'function') { + return Promise_reject(new TypeError(errTmplMustBeFunctionOrUndefined(nameForError))); + } + try { + return Promise_resolve(callFunction(method, O, arg)); + } catch (e) { + return Promise_reject(e); + } + } + function CreateIterResultObject(value, done) { return {value, done}; } + defineProperty(global, 'ReadableStream', { + value: ReadableStream, + enumerable: false, + configurable: true, + writable: true + }); + binding.AcquireReadableStreamDefaultReader = AcquireReadableStreamDefaultReader; + binding.IsReadableStream = IsReadableStream; + binding.IsReadableStreamDisturbed = IsReadableStreamDisturbed; + binding.IsReadableStreamLocked = IsReadableStreamLocked; + binding.IsReadableStreamReadable = IsReadableStreamReadable; + binding.IsReadableStreamClosed = IsReadableStreamClosed; + binding.IsReadableStreamErrored = IsReadableStreamErrored; + binding.IsReadableStreamDefaultReader = IsReadableStreamDefaultReader; + binding.ReadableStreamDefaultReaderRead = ReadableStreamDefaultReaderRead; + binding.ReadableStreamTee = ReadableStreamTee; + binding.ReadableStreamDefaultControllerClose = ReadableStreamDefaultControllerClose; + binding.ReadableStreamDefaultControllerGetDesiredSize = ReadableStreamDefaultControllerGetDesiredSize; + binding.ReadableStreamDefaultControllerEnqueue = ReadableStreamDefaultControllerEnqueue; + binding.ReadableStreamDefaultControllerError = ReadableStreamDefaultControllerError; + binding.createReadableStreamWithExternalController = + (underlyingSource, strategy) => { + return new ReadableStream( + underlyingSource, strategy, createWithExternalControllerSentinel); + }; +}); +8WritableStream& +(function(global, binding, v8) { + 'use strict'; + const _state = v8.createPrivateSymbol('[[state]]'); + const _storedError = v8.createPrivateSymbol('[[storedError]]'); + const _writer = v8.createPrivateSymbol('[[writer]]'); + const _writableStreamController = + v8.createPrivateSymbol('[[writableStreamController]]'); + const _writeRequests = v8.createPrivateSymbol('[[writeRequests]]'); + const _closedPromise = v8.createPrivateSymbol('[[closedPromise]]'); + const _ownerWritableStream = + v8.createPrivateSymbol('[[ownerWritableStream]]'); + const _readyPromise = v8.createPrivateSymbol('[[readyPromise]]'); + const _controlledWritableStream = + v8.createPrivateSymbol('[[controlledWritableStream]]'); + const _queue = v8.createPrivateSymbol('[[queue]]'); + const _queueSize = v8.createPrivateSymbol('[[queueSize]]'); + const _strategyHWM = v8.createPrivateSymbol('[[strategyHWM]]'); + const _strategySize = v8.createPrivateSymbol('[[strategySize]]'); + const _underlyingSink = v8.createPrivateSymbol('[[underlyingSink]]'); + const _defaultControllerFlags = + v8.createPrivateSymbol('[[defaultControllerFlags]]'); + const FLAG_STARTED = 0b1; + const FLAG_WRITING = 0b10; + const WRITABLE = 0; + const CLOSING = 1; + const CLOSED = 2; + const ERRORED = 3; + const undefined = global.undefined; + const defineProperty = global.Object.defineProperty; + const hasOwnProperty = v8.uncurryThis(global.Object.hasOwnProperty); + const Function_call = v8.uncurryThis(global.Function.prototype.call); + const Function_apply = v8.uncurryThis(global.Function.prototype.apply); + const TypeError = global.TypeError; + const RangeError = global.RangeError; + const Boolean = global.Boolean; + const Number = global.Number; + const Number_isNaN = Number.isNaN; + const Number_isFinite = Number.isFinite; + const Promise = global.Promise; + const thenPromise = v8.uncurryThis(Promise.prototype.then); + const Promise_resolve = v8.simpleBind(Promise.resolve, Promise); + const Promise_reject = v8.simpleBind(Promise.reject, Promise); + const errIllegalInvocation = 'Illegal invocation'; + const errIllegalConstructor = 'Illegal constructor'; + const errInvalidType = 'Invalid type is specified'; + const errAbortLockedStream = 'Cannot abort a writable stream that is locked to a writer'; + const errStreamAborted = 'The stream has been aborted'; + const errWriterLockReleasedPrefix = 'This writable stream writer has been released and cannot be '; + const errCloseCloseRequestedStream = + 'Cannot close a writable stream that has already been requested to be closed'; + const errWriteCloseRequestedStream = + 'Cannot write to a writable stream that is due to be closed'; + const templateErrorCannotActionOnStateStream = + (action, state) => `Cannot ${action} a ${state} writable stream`; + const errReleasedWriterClosedPromise = + 'This writable stream writer has been released and cannot be used to monitor the stream\'s state'; + const templateErrorIsNotAFunction = f => `${f} is not a function`; + const errSizeNotAFunction = + 'A queuing strategy\'s size property must be a function'; + const errInvalidHWM = + 'A queuing strategy\'s highWaterMark property must be a non-negative, non-NaN number'; + const errInvalidSize = + 'The return value of a queuing strategy\'s size function must be a finite, non-NaN, non-negative number'; + const verbUsedToGetTheDesiredSize = 'used to get the desiredSize'; + const verbAborted = 'aborted'; + const verbClosed = 'closed'; + const verbWrittenTo = 'written to'; + function createWriterLockReleasedError(verb) { + return new TypeError(errWriterLockReleasedPrefix + verb); + } + const stateNames = {[CLOSED]: 'closed', [ERRORED]: 'errored'}; + function createCannotActionOnStateStreamError(action, state) { + TEMP_ASSERT(stateNames[state] !== undefined, + `name for state ${state} exists in stateNames`); + return new TypeError( + templateErrorCannotActionOnStateStream(action, stateNames[state])); + } + function setDefaultControllerFlag(controller, flag, value) { + let flags = controller[_defaultControllerFlags]; + if (value) { + flags = flags | flag; + } else { + flags = flags & ~flag; + } + controller[_defaultControllerFlags] = flags; + } + function getDefaultControllerStartedFlag(controller) { + return Boolean(controller[_defaultControllerFlags] & FLAG_STARTED); + } + function setDefaultControllerStartedFlag(controller, value) { + setDefaultControllerFlag(controller, FLAG_STARTED, value); + } + function getDefaultControllerWritingFlag(controller) { + return Boolean(controller[_defaultControllerFlags] & FLAG_WRITING); + } + function setDefaultControllerWritingFlag(controller, value) { + setDefaultControllerFlag(controller, FLAG_WRITING, value); + } + function rejectPromises(array, e) { + for (let i = 0; i < array.length; ++i) { + v8.rejectPromise(array[i], e); + } + } + function IsPropertyKey(argument) { + return typeof argument === 'string' || typeof argument === 'symbol'; + } + function TEMP_ASSERT(predicate, message) { + if (predicate) { + return; + } + v8.log(`Assertion failed: ${message}\n`); + v8.logStackTrace(); + class WritableStreamInternalError { + } + throw new WritableStreamInternalError(); + } + class WritableStream { + constructor(underlyingSink = {}, { size, highWaterMark = 1 } = {}) { + this[_state] = WRITABLE; + this[_storedError] = undefined; + this[_writer] = undefined; + this[_writableStreamController] = undefined; + this[_writeRequests] = new v8.InternalPackedArray(); + const type = underlyingSink.type; + if (type !== undefined) { + throw new RangeError(errInvalidType); + } + this[_writableStreamController] = + new WritableStreamDefaultController(this, underlyingSink, size, + highWaterMark); + } + get locked() { + if (!IsWritableStream(this)) { + throw new TypeError(errIllegalInvocation); + } + return IsWritableStreamLocked(this); + } + abort(reason) { + if (!IsWritableStream(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + if (IsWritableStreamLocked(this)) { + return Promise_reject(new TypeError(errAbortLockedStream)); + } + return WritableStreamAbort(this, reason); + } + getWriter() { + if (!IsWritableStream(this)) { + throw new TypeError(errIllegalInvocation); + } + return AcquireWritableStreamDefaultWriter(this); + } + } + function AcquireWritableStreamDefaultWriter(stream) { + return new WritableStreamDefaultWriter(stream); + } + function IsWritableStream(x) { + return hasOwnProperty(x, _writableStreamController); + } + function IsWritableStreamLocked(stream) { + TEMP_ASSERT(IsWritableStream(stream), + '! IsWritableStream(stream) is true.'); + return stream[_writer] !== undefined; + } + function WritableStreamAbort(stream, reason) { + const state = stream[_state]; + if (state === CLOSED) { + return Promise_resolve(undefined); + } + if (state === ERRORED) { + return Promise_reject(stream[_storedError]); + } + TEMP_ASSERT(state === WRITABLE || state === CLOSING, + 'state is "writable" or "closing".'); + const error = new TypeError(errStreamAborted); + WritableStreamError(stream, error); + return WritableStreamDefaultControllerAbort( + stream[_writableStreamController], reason); + } + function WritableStreamAddWriteRequest(stream) { + TEMP_ASSERT(IsWritableStreamLocked(stream), + '! IsWritableStreamLocked(writer) is true.'); + TEMP_ASSERT(stream[_state] === WRITABLE, + 'stream.[[state]] is "writable".'); + const promise = v8.createPromise(); + stream[_writeRequests].push(promise); + return promise; + } + function WritableStreamError(stream, e) { + const state = stream[_state]; + TEMP_ASSERT(state === WRITABLE || state === CLOSING, + 'state is "writable" or "closing".'); + rejectPromises(stream[_writeRequests], e); + stream[_writeRequests] = new v8.InternalPackedArray(); + const writer = stream[_writer]; + if (writer !== undefined) { + v8.rejectPromise(writer[_closedPromise], e); + if (state === WRITABLE && + WritableStreamDefaultControllerGetBackpressure( + stream[_writableStreamController])) { + v8.rejectPromise(writer[_readyPromise], e); + } else { + writer[_readyPromise] = Promise_reject(e); + } + } + stream[_state] = ERRORED; + stream[_storedError] = e; + } + function WritableStreamFinishClose(stream) { + TEMP_ASSERT(stream[_state] === CLOSING, + 'stream.[[state]] is "closing".'); + TEMP_ASSERT(stream[_writer] !== undefined, + 'stream.[[writer]] is not undefined.'); + stream[_state] = CLOSED; + v8.resolvePromise(stream[_writer][_closedPromise], undefined); + } + function WritableStreamFulfillWriteRequest(stream) { + TEMP_ASSERT(stream[_writeRequests].length !== 0, + 'stream.[[writeRequests]] is not empty.'); + const writeRequest = stream[_writeRequests].shift(); + v8.resolvePromise(writeRequest, undefined); + } + function WritableStreamUpdateBackpressure(stream, backpressure) { + TEMP_ASSERT(stream[_state] === WRITABLE, + 'stream.[[state]] is "writable".'); + const writer = stream[_writer]; + if (writer === undefined) { + return; + } + if (backpressure) { + writer[_readyPromise] = v8.createPromise(); + } else { + TEMP_ASSERT(backpressure === false, + 'backpressure is false.'); + v8.resolvePromise(writer[_readyPromise], undefined); + } + } + class WritableStreamDefaultWriter { + constructor(stream) { + if (!IsWritableStream(stream)) { + throw new TypeError(errIllegalConstructor); + } + if (IsWritableStreamLocked(stream)) { + throw new TypeError(errIllegalConstructor); + } + this[_ownerWritableStream] = stream; + stream[_writer] = this; + const state = stream[_state]; + if (state === WRITABLE || state === CLOSING) { + this[_closedPromise] = v8.createPromise(); + } else if (state === CLOSED) { + this[_closedPromise] = Promise_resolve(undefined); + } else { + TEMP_ASSERT(state === ERRORED, + 'state is "errored".'); + this[_closedPromise] = Promise_reject(stream[_storedError]); + } + if (state === WRITABLE && + WritableStreamDefaultControllerGetBackpressure( + stream[_writableStreamController])) { + this[_readyPromise] = v8.createPromise(); + } else { + this[_readyPromise] = Promise_resolve(undefined); + } + } + get closed() { + if (!IsWritableStreamDefaultWriter(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + return this[_closedPromise]; + } + get desiredSize() { + if (!IsWritableStreamDefaultWriter(this)) { + throw new TypeError(errIllegalInvocation); + } + if (this[_ownerWritableStream] === undefined) { + throw createWriterLockReleasedError(verbUsedToGetTheDesiredSize); + } + return WritableStreamDefaultWriterGetDesiredSize(this); + } + get ready() { + if (!IsWritableStreamDefaultWriter(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + return this[_readyPromise]; + } + abort(reason) { + if (!IsWritableStreamDefaultWriter(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + if (this[_ownerWritableStream] === undefined) { + return Promise_reject(createWriterLockReleasedError(verbAborted)); + } + return WritableStreamDefaultWriterAbort(this, reason); + } + close() { + if (!IsWritableStreamDefaultWriter(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + const stream = this[_ownerWritableStream]; + if (stream === undefined) { + return Promise_reject(createWriterLockReleasedError(verbClosed)); + } + if (stream[_state] === CLOSING) { + return Promise_reject(new TypeError(errCloseCloseRequestedStream)); + } + return WritableStreamDefaultWriterClose(this); + } + releaseLock() { + if (!IsWritableStreamDefaultWriter(this)) { + throw new TypeError(errIllegalInvocation); + } + const stream = this[_ownerWritableStream]; + if (stream === undefined) { + return; + } + TEMP_ASSERT(stream[_writer] !== undefined, + 'stream.[[writer]] is not undefined.'); + WritableStreamDefaultWriterRelease(this); + } + write(chunk) { + if (!IsWritableStreamDefaultWriter(this)) { + return Promise_reject(new TypeError(errIllegalInvocation)); + } + const stream = this[_ownerWritableStream]; + if (stream === undefined) { + return Promise_reject(createWriterLockReleasedError(verbWrittenTo)); + } + if (stream[_state] === CLOSING) { + return Promise_reject(new TypeError(errWriteCloseRequestedStream)); + } + return WritableStreamDefaultWriterWrite(this, chunk); + } + } + function IsWritableStreamDefaultWriter(x) { + return hasOwnProperty(x, _ownerWritableStream); + } + function WritableStreamDefaultWriterAbort(writer, reason) { + const stream = writer[_ownerWritableStream]; + TEMP_ASSERT(stream !== undefined, + 'stream is not undefined.'); + return WritableStreamAbort(stream, reason); + } + function WritableStreamDefaultWriterClose(writer) { + const stream = writer[_ownerWritableStream]; + TEMP_ASSERT(stream !== undefined, + 'stream is not undefined.'); + const state = stream[_state]; + if (state === CLOSED || state === ERRORED) { + return Promise_reject( + createCannotActionOnStateStreamError('close', state)); + } + TEMP_ASSERT(state === WRITABLE, + 'state is "writable".'); + const promise = WritableStreamAddWriteRequest(stream); + if (WritableStreamDefaultControllerGetBackpressure( + stream[_writableStreamController])) { + v8.resolvePromise(writer[_readyPromise], undefined); + } + stream[_state] = CLOSING; + WritableStreamDefaultControllerClose(stream[_writableStreamController]); + return promise; + } + function WritableStreamDefaultWriterGetDesiredSize(writer) { + const stream = writer[_ownerWritableStream]; + const state = stream[_state]; + if (state === ERRORED) { + return null; + } + if (state === CLOSED) { + return 0; + } + return WritableStreamDefaultControllerGetDesiredSize( + stream[_writableStreamController]); + } + function WritableStreamDefaultWriterRelease(writer) { + const stream = writer[_ownerWritableStream]; + TEMP_ASSERT(stream !== undefined, + 'stream is not undefined.'); + TEMP_ASSERT(stream[_writer] === writer, + 'stream.[[writer]] is writer.'); + const releasedError = new TypeError(errReleasedWriterClosedPromise); + const state = stream[_state]; + if (state === WRITABLE || state === CLOSING) { + v8.rejectPromise(writer[_closedPromise], releasedError); + } else { + writer[_closedPromise] = Promise_reject(releasedError); + } + if (state === WRITABLE && + WritableStreamDefaultControllerGetBackpressure( + stream[_writableStreamController])) { + v8.rejectPromise(writer[_readyPromise], releasedError); + } else { + writer[_readyPromise] = Promise_reject(releasedError); + } + stream[_writer] = undefined; + writer[_ownerWritableStream] = undefined; + } + function WritableStreamDefaultWriterWrite(writer, chunk) { + const stream = writer[_ownerWritableStream]; + TEMP_ASSERT(stream !== undefined, + 'stream is not undefined.'); + const state = stream[_state]; + if (state === CLOSED || state === ERRORED) { + return Promise_reject( + createCannotActionOnStateStreamError('write to', state)); + } + TEMP_ASSERT(state === WRITABLE, + 'state is "writable".'); + const promise = WritableStreamAddWriteRequest(stream); + WritableStreamDefaultControllerWrite(stream[_writableStreamController], + chunk); + return promise; + } + class WritableStreamDefaultController { + constructor(stream, underlyingSink, size, highWaterMark) { + if (!IsWritableStream(stream)) { + throw new TypeError(errIllegalConstructor); + } + if (stream[_writableStreamController] !== undefined) { + throw new TypeError(errIllegalConstructor); + } + this[_controlledWritableStream] = stream; + this[_underlyingSink] = underlyingSink; + this[_queue] = new v8.InternalPackedArray(); + this[_queueSize] = 0; + this[_defaultControllerFlags] = 0; + const normalizedStrategy = + ValidateAndNormalizeQueuingStrategy(size, highWaterMark); + this[_strategySize] = normalizedStrategy.size; + this[_strategyHWM] = normalizedStrategy.highWaterMark; + const backpressure = WritableStreamDefaultControllerGetBackpressure(this); + if (backpressure) { + WritableStreamUpdateBackpressure(stream, backpressure); + } + const controller = this; + const startResult = InvokeOrNoop(underlyingSink, 'start', [this]); + const onFulfilled = () => { + setDefaultControllerStartedFlag(controller, true); + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + }; + const onRejected = r => { + WritableStreamDefaultControllerErrorIfNeeded(controller, r); + }; + thenPromise(Promise_resolve(startResult), onFulfilled, onRejected); + } + error(e) { + if (!IsWritableStreamDefaultController(this)) { + throw new TypeError(errIllegalInvocation); + } + const state = this[_controlledWritableStream][_state]; + if (state === CLOSED || state === ERRORED) { + throw createCannotActionOnStateStreamError('error', state); + } + WritableStreamDefaultControllerError(this, e); + } + } + function IsWritableStreamDefaultController(x) { + return hasOwnProperty(x, _underlyingSink); + } + function WritableStreamDefaultControllerAbort(controller, reason) { + controller[_queue] = v8.InternalPackedArray(); + controller[_queueSize] = 0; + const sinkAbortPromise = + PromiseInvokeOrFallbackOrNoop(controller[_underlyingSink], + 'abort', [reason], 'close', [controller]); + return thenPromise(sinkAbortPromise, () => undefined); + } + function WritableStreamDefaultControllerClose(controller) { + EnqueueValueWithSizeForController(controller, 'close', 0); + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerGetDesiredSize(controller) { + const queueSize = GetTotalQueueSizeForController(controller); + return controller[_strategyHWM] - queueSize; + } + function WritableStreamDefaultControllerWrite(controller, chunk) { + const stream = controller[_controlledWritableStream]; + TEMP_ASSERT(stream[_state] === WRITABLE, + 'stream.[[state]] is "writable".'); + let chunkSize = 1; + if (controller[_strategySize] !== undefined) { + try { + chunkSize = Function_call(controller[_strategySize], undefined, chunk); + } catch (e) { + WritableStreamDefaultControllerErrorIfNeeded(controller, e); + return Promise_reject(e); + } + } + const writeRecord = {chunk}; + const lastBackpressure = + WritableStreamDefaultControllerGetBackpressure(controller); + try { + const enqueueResult = + EnqueueValueWithSizeForController(controller, writeRecord, chunkSize); + } catch (e) { + WritableStreamDefaultControllerErrorIfNeeded(controller, e); + return Promise_reject(e); + } + if (stream[_state] === WRITABLE) { + const backpressure = + WritableStreamDefaultControllerGetBackpressure(controller); + if (lastBackpressure !== backpressure) { + WritableStreamUpdateBackpressure(stream, backpressure); + } + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + } + function WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller) { + const state = controller[_controlledWritableStream][_state]; + if (state === CLOSED || state === ERRORED) { + return; + } + if (!getDefaultControllerStartedFlag(controller)) { + return; + } + if (getDefaultControllerWritingFlag(controller)) { + return; + } + if (controller[_queue].length === 0) { + return; + } + const writeRecord = PeekQueueValue(controller[_queue]); + if (writeRecord === 'close') { + WritableStreamDefaultControllerProcessClose(controller); + } else { + WritableStreamDefaultControllerProcessWrite(controller, + writeRecord.chunk); + } + } + function WritableStreamDefaultControllerErrorIfNeeded(controller, e) { + const state = controller[_controlledWritableStream][_state]; + if (state === WRITABLE || state === CLOSING) { + WritableStreamDefaultControllerError(controller, e); + } + } + function WritableStreamDefaultControllerProcessClose(controller) { + const stream = controller[_controlledWritableStream]; + TEMP_ASSERT(stream[_state] === CLOSING, + 'stream.[[state]] is "closing".'); + DequeueValueForController(controller); + TEMP_ASSERT(controller[_queue].length === 0, + 'controller.[[queue]] is empty.'); + const sinkClosePromise = PromiseInvokeOrNoop(controller[_underlyingSink], + 'close', [controller]); + thenPromise(sinkClosePromise, + () => { + if (stream[_state] !== CLOSING) { + return; + } + WritableStreamFulfillWriteRequest(stream); + WritableStreamFinishClose(stream); + }, + r => WritableStreamDefaultControllerErrorIfNeeded(controller, r) + ); + } + function WritableStreamDefaultControllerProcessWrite(controller, chunk) { + setDefaultControllerWritingFlag(controller, true); + const sinkWritePromise = PromiseInvokeOrNoop(controller[_underlyingSink], + 'write', [chunk, controller]); + thenPromise( + sinkWritePromise, + () => { + const stream = controller[_controlledWritableStream]; + const state = stream[_state]; + if (state === ERRORED || state === CLOSED) { + return; + } + setDefaultControllerWritingFlag(controller, false); + WritableStreamFulfillWriteRequest(stream); + const lastBackpressure = + WritableStreamDefaultControllerGetBackpressure(controller); + DequeueValueForController(controller); + if (state !== CLOSING) { + const backpressure = + WritableStreamDefaultControllerGetBackpressure(controller); + if (lastBackpressure !== backpressure) { + WritableStreamUpdateBackpressure( + controller[_controlledWritableStream], backpressure); + } + } + WritableStreamDefaultControllerAdvanceQueueIfNeeded(controller); + }, + r => WritableStreamDefaultControllerErrorIfNeeded(controller, r) + ); + } + function WritableStreamDefaultControllerGetBackpressure(controller) { + const desiredSize = + WritableStreamDefaultControllerGetDesiredSize(controller); + return desiredSize <= 0; + } + function WritableStreamDefaultControllerError(controller, e) { + const stream = controller[_controlledWritableStream]; + const state = stream[_state]; + TEMP_ASSERT(state === WRITABLE || state === CLOSING, + 'stream.[[state]] is "writable" or "closing".'); + WritableStreamError(stream, e); + controller[_queue] = new v8.InternalPackedArray(); + controller[_queueSize] = 0; + } + function DequeueValueForController(controller) { + TEMP_ASSERT(controller[_queue].length !== 0, + 'queue is not empty.'); + const result = controller[_queue].shift(); + controller[_queueSize] -= result.size; + return result.value; + } + function EnqueueValueWithSizeForController(controller, value, size) { + size = Number(size); + if (!IsFiniteNonNegativeNumber(size)) { + throw new RangeError(errInvalidSize); + } + controller[_queueSize] += size; + controller[_queue].push({value, size}); + } + function GetTotalQueueSizeForController(controller) { + return controller[_queueSize]; + } + function PeekQueueValue(queue) { + TEMP_ASSERT(queue.length !== 0, + 'queue is not empty.'); + return queue[0].value; + } + function InvokeOrNoop(O, P, args) { + TEMP_ASSERT(IsPropertyKey(P), + 'P is a valid property key.'); + if (args === undefined) { + args = []; + } + const method = O[P]; + if (method === undefined) { + return undefined; + } + if (typeof method !== 'function') { + throw new TypeError(templateErrorIsNotAFunction(P)); + } + return Function_apply(method, O, args); + } + function IsFiniteNonNegativeNumber(v) { + return Number_isFinite(v) && v >= 0; + } + function PromiseInvokeOrFallbackOrNoop(O, P1, args1, P2, args2) { + TEMP_ASSERT(IsPropertyKey(P1), + 'P1 is a valid property key.'); + TEMP_ASSERT(IsPropertyKey(P2), + 'P2 is a valid property key.'); + try { + const method = O[P1]; + if (method === undefined) { + return PromiseInvokeOrNoop(O, P2, args2); + } + if (typeof method !== 'function') { + return Promise_reject(new TypeError(templateErrorIsNotAFunction(P1))); + } + return Promise_resolve(Function_apply(method, O, args1)); + } catch (e) { + return Promise_reject(e); + } + } + function PromiseInvokeOrNoop(O, P, args) { + try { + return Promise_resolve(InvokeOrNoop(O, P, args)); + } catch (e) { + return Promise_reject(e); + } + } + function ValidateAndNormalizeQueuingStrategy(size, highWaterMark) { + if (size !== undefined && typeof size !== 'function') { + throw new TypeError(errSizeNotAFunction); + } + highWaterMark = Number(highWaterMark); + if (Number_isNaN(highWaterMark) || highWaterMark < 0) { + throw new RangeError(errInvalidHWM); + } + return {size, highWaterMark}; + } + defineProperty(global, 'WritableStream', { + value: WritableStream, + enumerable: false, + configurable: true, + writable: true + }); +}); diff --git a/astilectron-deps/vendor/electron/pdf_viewer_resources.pak b/astilectron-deps/vendor/electron/pdf_viewer_resources.pak new file mode 100644 index 0000000..112a553 Binary files /dev/null and b/astilectron-deps/vendor/electron/pdf_viewer_resources.pak differ diff --git a/astilectron-deps/vendor/electron/resources/default_app.asar b/astilectron-deps/vendor/electron/resources/default_app.asar new file mode 100644 index 0000000..c3a7525 Binary files /dev/null and b/astilectron-deps/vendor/electron/resources/default_app.asar differ diff --git a/astilectron-deps/vendor/electron/resources/electron.asar b/astilectron-deps/vendor/electron/resources/electron.asar new file mode 100644 index 0000000..32485e2 Binary files /dev/null and b/astilectron-deps/vendor/electron/resources/electron.asar differ diff --git a/astilectron-deps/vendor/electron/snapshot_blob.bin b/astilectron-deps/vendor/electron/snapshot_blob.bin new file mode 100644 index 0000000..8ae0e0b Binary files /dev/null and b/astilectron-deps/vendor/electron/snapshot_blob.bin differ diff --git a/astilectron-deps/vendor/electron/ui_resources_200_percent.pak b/astilectron-deps/vendor/electron/ui_resources_200_percent.pak new file mode 100644 index 0000000..a93b599 Binary files /dev/null and b/astilectron-deps/vendor/electron/ui_resources_200_percent.pak differ diff --git a/astilectron-deps/vendor/electron/version b/astilectron-deps/vendor/electron/version new file mode 100644 index 0000000..bf991af --- /dev/null +++ b/astilectron-deps/vendor/electron/version @@ -0,0 +1 @@ +v1.6.5 \ No newline at end of file diff --git a/astilectron-deps/vendor/electron/views_resources_200_percent.pak b/astilectron-deps/vendor/electron/views_resources_200_percent.pak new file mode 100644 index 0000000..77463a2 Binary files /dev/null and b/astilectron-deps/vendor/electron/views_resources_200_percent.pak differ diff --git a/astilectron-deps/vendor/status.json b/astilectron-deps/vendor/status.json new file mode 100644 index 0000000..561f2e6 --- /dev/null +++ b/astilectron-deps/vendor/status.json @@ -0,0 +1 @@ +{"astilectron":{"version":"0.6.0"},"electron":{"version":"1.6.5"}} diff --git a/config.ini b/config.ini index e9abd4e..2abc9bc 100644 --- a/config.ini +++ b/config.ini @@ -6,7 +6,7 @@ AdminPassword = geheim Mode = 1 ; Serverkram -; Das Interface inkl. Port, auf dem der Webserver läuft +; Das Interface inkl. Port, auf dem der Webserver läuft. Muss komplett mit IP-Adresse vorhanden sein. Interface = 127.0.0.1:8080 ; Hier wird die Datenbank gespeichert DBFile = ./data.db \ No newline at end of file diff --git a/glide.yaml b/glide.yaml index 3c5d950..c9802fd 100644 --- a/glide.yaml +++ b/glide.yaml @@ -26,6 +26,8 @@ import: - package: google.golang.org/api subpackages: - compute/v1 +- package: github.com/asticode/go-astilectron + version: ~0.5.0 testImport: - package: github.com/denisenkom/go-mssqldb - package: github.com/smartystreets/goconvey diff --git a/login.go b/login.go index a2ca64b..d785723 100644 --- a/login.go +++ b/login.go @@ -19,6 +19,10 @@ func login(c echo.Context) error { //Wenn das password stimmt, einloggen if SiteConf.AdminPassword == pass { sess.Set("login", true) + direct := c.QueryParam("direct") + if direct == "true" { + return c.Redirect(http.StatusSeeOther, "/admin") + } return c.JSON(http.StatusOK, Message{"success"}) } else { return c.JSON(http.StatusOK, Message{"fail"}) diff --git a/main.go b/main.go index 7f3fb07..a29cc9c 100644 --- a/main.go +++ b/main.go @@ -6,9 +6,14 @@ import ( "github.com/labstack/gommon/log" "html/template" + "fmt" "github.com/astaxie/session" _ "github.com/astaxie/session/providers/memory" + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" + "time" ) //Initialize Session @@ -85,5 +90,104 @@ func main() { //Start the server e.Logger.SetLevel(log.ERROR) - e.Start(SiteConf.Interface) + go e.Start(SiteConf.Interface) + + //Windows + // Create astilectron + var a *astilectron.Astilectron + var err error + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: "/gopher.png", + AppIconDarwinPath: "/gopher.icns", + BaseDirectoryPath: "astilectron-deps", + }); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create Admin window + var wAdmin *astilectron.Window + if wAdmin, err = a.NewWindow("http://" + SiteConf.Interface + "/admin", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(800), + Width: astilectron.PtrInt(1200), + }); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = wAdmin.Create(); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Create Frontend window + var wFrontend *astilectron.Window + if wFrontend, err = a.NewWindow("http://" + SiteConf.Interface, &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(800), + Width: astilectron.PtrInt(1200), + }); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = wFrontend.Create(); err != nil { + fmt.Println(err) + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // If several displays, move the window to the second display + var displays = a.Displays() + if len(displays) > 1 { + time.Sleep(time.Second) + wFrontend.MoveInDisplay(displays[1], 50, 50) + wFrontend.Maximize() + } + + // Blocking pattern + a.Wait() + + + // Initialize astilectron + /*var a, _ = astilectron.New(astilectron.Options{ + AppName: "Konfi@Castle Kasino Kasse", + AppIconDefaultPath: "", + AppIconDarwinPath: "", + BaseDirectoryPath: "", + }) + defer a.Close() + + // Start astilectron + a.Start() + + // Create a new window + var wAdmin, _ = a.NewWindow("http://" + SiteConf.Interface + "/admin", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(800), + Width: astilectron.PtrInt(1300), + }) + wAdmin.Create() + + // Create a new window + var wFrontend, _ = a.NewWindow("http://" + SiteConf.Interface, &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }) + wFrontend.Create() + + // If several displays, move the window to the second display + var displays = a.Displays() + if len(displays) > 1 { + wFrontend.MoveInDisplay(displays[1], 50, 50) + wFrontend.Maximize() + }*/ } diff --git a/tpl/admin_mode_0.html b/tpl/admin_mode_0.html index a8581d1..0f95deb 100644 --- a/tpl/admin_mode_0.html +++ b/tpl/admin_mode_0.html @@ -5,7 +5,10 @@ Kasino Admin + + + {{if .Loggedin}} diff --git a/tpl/admin_mode_1.html b/tpl/admin_mode_1.html index 891222f..f70c8b7 100644 --- a/tpl/admin_mode_1.html +++ b/tpl/admin_mode_1.html @@ -5,7 +5,10 @@ Kasino Admin + + + {{if .Loggedin}} diff --git a/tpl/index.html b/tpl/index.html index 7e7d301..2fe5f1b 100644 --- a/tpl/index.html +++ b/tpl/index.html @@ -31,7 +31,9 @@ + + diff --git a/tpl/login.html b/tpl/login.html index c3c6da8..4e17419 100644 --- a/tpl/login.html +++ b/tpl/login.html @@ -5,7 +5,10 @@ Kasino Admin + + + @@ -14,7 +17,7 @@

Kasino Admin

-
+
diff --git a/vendor/github.com/asticode/go-astilectron/.gitignore b/vendor/github.com/asticode/go-astilectron/.gitignore new file mode 100644 index 0000000..0a7ebeb --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/.gitignore @@ -0,0 +1,8 @@ +.DS_Store +Thumbs.db +.idea/ +cover.* +examples/5.single_binary_distribution/vendor.go +examples/test +examples/vendor +testdata/tmp/* diff --git a/vendor/github.com/asticode/go-astilectron/.travis.yml b/vendor/github.com/asticode/go-astilectron/.travis.yml new file mode 100644 index 0000000..7d80f6b --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/.travis.yml @@ -0,0 +1,9 @@ +language: go +go: +- 1.8 +- tip +matrix: + allow_failures: + - go: tip +script: + go test -v diff --git a/vendor/github.com/asticode/go-astilectron/LICENSE b/vendor/github.com/asticode/go-astilectron/LICENSE new file mode 100644 index 0000000..b01df7f --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2017 Quentin RENARD + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/README.md b/vendor/github.com/asticode/go-astilectron/README.md new file mode 100644 index 0000000..7167eda --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/README.md @@ -0,0 +1,646 @@ +[![GoReportCard](http://goreportcard.com/badge/github.com/asticode/go-astilectron)](http://goreportcard.com/report/github.com/asticode/go-astilectron) +[![GoDoc](https://godoc.org/github.com/asticode/go-astilectron?status.svg)](https://godoc.org/github.com/asticode/go-astilectron) +[![GoCoverage](https://cover.run/go/github.com/asticode/go-astilectron.svg)](https://cover.run/go/github.com/asticode/go-astilectron) +[![Travis](https://travis-ci.org/asticode/go-astilectron.svg?branch=master)](https://travis-ci.org/asticode/go-astilectron#) + +Thanks to `go-astilectron` build cross platform GUI apps with GO and HTML/JS/CSS. It is the official GO bindings of [astilectron](https://github.com/asticode/astilectron) and is powered by [Electron](https://github.com/electron/electron). + +# Real-life examples + +Here's a list of awesome projects using `go-astilectron` (if you're using `go-astilectron` and want your project to be listed here please submit a PR): + +- [go-astivid](https://github.com/asticode/go-astivid) Video tools written in GO +- [GroupMatcher](https://github.com/veecue/GroupMatcher) Program to allocate persons to groups while trying to fulfill all the given wishes as good as possible + +# Quick start + +WARNING: the code below doesn't handle errors for readibility purposes. However you SHOULD! + +### Import `go-astilectron` + +To import `go-astilectron` run: + + $ go get -u github.com/asticode/go-astilectron + +### Start `go-astilectron` + +```go +// Initialize astilectron +var a, _ = astilectron.New(astilectron.Options{ + AppName: "", + AppIconDefaultPath: "", + AppIconDarwinPath: "", + BaseDirectoryPath: "", +}) +defer a.Close() + +// Start astilectron +a.Start() +``` + +For everything to work properly we need to fetch 2 dependencies : [astilectron](https://github.com/asticode/astilectron) and [Electron](https://github.com/electron/electron). `.Start()` takes care of it by downloading the sources and setting them up properly. + +In case you want to embed the sources in the binary to keep a unique binary you can use the **NewDisembedderProvisioner** function to get the proper **Provisioner** and attach it to `go-astilectron` with `.SetProvisioner(p Provisioner)`. Check out the [example](https://github.com/asticode/go-astilectron/tree/master/examples/5.single_binary_distribution/main.go) to see how to use it with [go-bindata](https://github.com/jteeuwen/go-bindata). + +Beware when trying to add your own app icon as you'll need 2 icons : one compatible with MacOSX (.icns) and one compatible with the rest (.png for instance). + +If no BaseDirectoryPath is provided, it defaults to the executable's directory path. + +The majority of methods are synchrone which means that when executing them `go-astilectron` will block until it receives a specific Electron event or until the overall context is cancelled. This is the case of `.Start()` which will block until it receives the `app.event.ready` `astilectron` event or until the overall context is cancelled. + +### Create a window + +```go +// Create a new window +var w, _ = a.NewWindow("http://127.0.0.1:4000", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), +}) +w.Create() +``` + +When creating a window you need to indicate a URL as well as options such as position, size, etc. + +This is pretty straightforward except the `astilectron.Ptr*` methods so let me explain: GO doesn't do optional fields when json encoding unless you use pointers whereas Electron does handle optional fields. Therefore I added helper methods to convert int, bool and string into pointers and used pointers in structs sent to Electron. + +### Add listeners + +```go +// Add a listener on Astilectron +a.On(astilectron.EventNameAppCrash, func(e astilectron.Event) (deleteListener bool) { + astilog.Error("App has crashed") + return +}) + +// Add a listener on the window +w.On(astilectron.EventNameWindowEventResize, func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Window resized") + return +}) +``` + +Nothing much to say here either except that you can add listeners to Astilectron as well. + +### Play with the window + +```go +// Play with the window +w.Resize(200, 200) +time.Sleep(time.Second) +w.Maximize() +``` + +Check out the [Window doc](https://godoc.org/github.com/asticode/go-astilectron#Window) for a list of all exported methods + +### Send messages between GO and your webserver + +In your webserver add the following javascript to any of the pages you want to interact with: + +```html + +``` + +In your GO app add the following: + +```go +// Listen to messages sent by webserver +w.On(astilectron.EventNameWindowEventMessage, func(e astilectron.Event) (deleteListener bool) { + var m string + e.Message.Unmarshal(&m) + astilog.Infof("Received message %s", m) + return +}) + +// Send message to webserver +w.Send("What's up?") +``` + +And that's it! + +NOTE: needless to say that the message can be something other than a string. A custom struct for instance! + +### Handle several screens/displays + +```go +// If several displays, move the window to the second display +var displays = a.Displays() +if len(displays) > 1 { + time.Sleep(time.Second) + w.MoveInDisplay(displays[1], 50, 50) +} +``` + +### Menus + +```go +// Init a new app menu +// You can do the same thing with a window +var m = a.NewMenu([]*astilectron.MenuItemOptions{ + { + Label: astilectron.PtrStr("Separator"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Normal 1")}, + { + Label: astilectron.PtrStr("Normal 2"), + OnClick: func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Normal 2 item has been clicked") + return + }, + }, + {Type: astilectron.MenuItemTypeSeparator}, + {Label: astilectron.PtrStr("Normal 3")}, + }, + }, + { + Label: astilectron.PtrStr("Checkbox"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Checkbox 1"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 2"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 3"), Type: astilectron.MenuItemTypeCheckbox}, + }, + }, + { + Label: astilectron.PtrStr("Radio"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Radio 1"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 2"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 3"), Type: astilectron.MenuItemTypeRadio}, + }, + }, + { + Label: astilectron.PtrStr("Roles"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Minimize"), Role: astilectron.MenuItemRoleMinimize}, + {Label: astilectron.PtrStr("Close"), Role: astilectron.MenuItemRoleClose}, + }, + }, +}) + +// Retrieve a menu item +// This will retrieve the "Checkbox 1" item +mi, _ := m.Item(1, 0) + +// Add listener manually +// An OnClick listener has already been added in the options directly for another menu item +mi.On(astilectron.EventNameMenuItemEventClicked, func(e astilectron.Event) bool { + astilog.Infof("Menu item has been clicked. 'Checked' status is now %t", *e.MenuItemOptions.Checked) + return false +}) + +// Create the menu +m.Create() + +// Manipulate a menu item +mi.SetChecked(true) + +// Init a new menu item +var ni = m.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Inserted"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Inserted 1")}, + {Label: astilectron.PtrStr("Inserted 2")}, + }, +}) + +// Insert the menu item at position "1" +m.Insert(1, ni) + +// Fetch a sub menu +s, _ := m.SubMenu(0) + +// Init a new menu item +ni = s.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Appended"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Appended 1")}, + {Label: astilectron.PtrStr("Appended 2")}, + }, +}) + +// Append menu item dynamically +s.Append(ni) + +// Pop up sub menu as a context menu +s.Popup(&astilectron.MenuPopupOptions{PositionOptions: astilectron.PositionOptions{X: astilectron.PtrInt(50), Y: astilectron.PtrInt(50)}}) + +// Close popup +s.ClosePopup() + +// Destroy the menu +m.Destroy() +``` + +A few things to know: + +* when assigning a role to a menu item, `go-astilectron` won't be able to capture its click event +* on MacOS there's no such thing as a window menu, only app menus therefore my advice is to stick to one global app menu instead of creating separate window menus + +### Tray + +```go +// New tray +var t = a.NewTray(&astilectron.TrayOptions{ + Image: astilectron.PtrStr("/path/to/image.png"), + Tooltip: astilectron.PtrStr("Tray's tooltip"), +}) + +// New tray menu +var m = t.NewMenu([]*astilectron.MenuItemOptions{ + { + Label: astilectron.PtrStr("Root 1"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Item 1")}, + {Label: astilectron.PtrStr("Item 2")}, + {Type: astilectron.MenuItemTypeSeparator}, + {Label: astilectron.PtrStr("Item 3")}, + }, + }, + { + Label: astilectron.PtrStr("Root 2"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Item 1")}, + {Label: astilectron.PtrStr("Item 2")}, + }, + }, +}) + +// Create the menu +m.Create() + +// Create tray +t.Create() +``` + +### Dialogs + +In your webserver add one of the following javascript to achieve any kind of dialog. + +#### Error box + +```html + +``` + +#### Message box + +```html + +``` + +#### Open dialog + +```html + +``` + +#### Save dialog + +```html + +``` + +### Final code + +```go +// Set up the logger +var l +astilog.SetLogger(l) + +// Start an http server +http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(` + + + + Hello world + + + Hello world + + + `)) +}) +go http.ListenAndServe("127.0.0.1:4000", nil) + +// Initialize astilectron +var a, _ = astilectron.New(astilectron.Options{ + AppName: "", + AppIconDefaultPath: "", + AppIconDarwinPath: "", + BaseDirectoryPath: "", +}) +defer a.Close() + +// Handle quit +a.HandleSignals() +a.On(astilectron.EventNameAppCrash, func(e astilectron.Event) (deleteListener bool) { + astilog.Error("App has crashed") + return +}) + +// Start astilectron: this will download and set up the dependencies, and start the Electron app +a.Start() + +// Init a new app menu +// You can do the same thing with a window +var m = a.NewMenu([]*astilectron.MenuItemOptions{ + { + Label: astilectron.PtrStr("Separator"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Normal 1")}, + { + Label: astilectron.PtrStr("Normal 2"), + OnClick: func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Normal 2 item has been clicked") + return + }, + }, + {Type: astilectron.MenuItemTypeSeparator}, + {Label: astilectron.PtrStr("Normal 3")}, + }, + }, + { + Label: astilectron.PtrStr("Checkbox"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Checkbox 1"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 2"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 3"), Type: astilectron.MenuItemTypeCheckbox}, + }, + }, + { + Label: astilectron.PtrStr("Radio"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Radio 1"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 2"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 3"), Type: astilectron.MenuItemTypeRadio}, + }, + }, + { + Label: astilectron.PtrStr("Roles"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Minimize"), Role: astilectron.MenuItemRoleMinimize}, + {Label: astilectron.PtrStr("Close"), Role: astilectron.MenuItemRoleClose}, + }, + }, +}) + +// Retrieve a menu item +// This will retrieve the "Checkbox 1" item +mi, _ := m.Item(1, 0) + +// Add listener manually +// An OnClick listener has already been added in the options directly for another menu item +mi.On(astilectron.EventNameMenuItemEventClicked, func(e astilectron.Event) bool { + astilog.Infof("Menu item has been clicked. 'Checked' status is now %t", *e.MenuItemOptions.Checked) + return false +}) + +// Create the menu +m.Create() + +// Create a new window with a listener on resize +var w, _ = a.NewWindow("http://127.0.0.1:4000", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Icon: astilectron.PtrStr(), + Width: astilectron.PtrInt(600), +}) +w.On(astilectron.EventNameWindowEventResize, func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Window resized") + return +}) +w.On(astilectron.EventNameWindowEventMessage, func(e astilectron.Event) (deleteListener bool) { + var m string + e.Message.Unmarshal(&m) + astilog.Infof("Received message %s", m) + return +}) +w.Create() + +// Play with the window +w.Resize(200, 200) +time.Sleep(time.Second) +w.Maximize() + +// If several displays, move the window to the second display +var displays = a.Displays() +if len(displays) > 1 { + time.Sleep(time.Second) + w.MoveInDisplay(displays[1], 50, 50) +} + +// Send a message to the server +time.Sleep(time.Second) +w.Send("What's up?") + +// Manipulate a menu item +time.Sleep(time.Second) +mi.SetChecked(true) + +// Init a new menu item +var ni = m.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Inserted"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Inserted 1")}, + {Label: astilectron.PtrStr("Inserted 2")}, + }, +}) + +// Insert the menu item at position "1" +time.Sleep(time.Second) +m.Insert(1, ni) + +// Fetch a sub menu +s, _ := m.SubMenu(0) + +// Init a new menu item +ni = s.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Appended"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Appended 1")}, + {Label: astilectron.PtrStr("Appended 2")}, + }, +}) + +// Append menu item dynamically +time.Sleep(time.Second) +s.Append(ni) + +// Pop up sub menu as a context menu +time.Sleep(time.Second) +s.Popup(&astilectron.MenuPopupOptions{PositionOptions: astilectron.PositionOptions{X: astilectron.PtrInt(50), Y: astilectron.PtrInt(50)}}) + +// Close popup +time.Sleep(time.Second) +s.ClosePopup() + +// Destroy the menu +time.Sleep(time.Second) +m.Destroy() + +// Blocking pattern +a.Wait() +``` + +# Bootstrap + +For convenience purposes I've added a **bootstrap** to help first timers and avoid code duplications. + +NOTE: you DON'T have to use the bootstrap, it's entirely up to you whether to use it or not. + +The bootstrap allows you to quickly create a one-window application. + +## Using static files and remote messaging (the best way) + +In order to use the **bootstrap** with static files and remote messaging you must: + +- follow the following project organization: + + |--+ resources + | + |--+ app (contains your static files such as .html, .css, .js, .png, etc.) + |--+ main.go + +- use the `MessageHandler` **bootstrap** option in order to handle remote messaging +- use `remote messaging` in your static files + +## Using a web server + +In order to use the **bootstrap** with a web server you must: + +- follow the following project organization: + + |--+ resources + | + |--+ static (contains your static files such as .css, .js, .png, etc.) + | + |--+ templates (contains your templates .html files) + |--+ main.go +- use the `AdaptRouter` and `TemplateData` **bootstrap** options in order to handle the server routes + +## Common + +- if you're using the `RestoreAssets` **bootstrap** option, add the following comment on top of your `main()` method: + + //go:generate go-bindata -pkg $GOPACKAGE -o resources.go resources/... + + and run the following command before building your binary: + + $ go generate main.go + +- use the `bootstrap.Run()` method + +Check out the [example](https://github.com/asticode/go-astilectron/tree/master/examples/9.bootstrap) for a detailed working example (see the **Examples** section below for the specific commands to run). + +# I want to see it in actions! + +To make things clearer I've tried to split features in different [examples](https://github.com/asticode/go-astilectron/tree/master/examples). + +To run any of the examples, run the following commands: + + $ go run examples//main.go -v + +Here's a list of the examples: + +- [1.basic_window](https://github.com/asticode/go-astilectron/tree/master/examples/1.basic_window/main.go) creates a basic window that displays a static .html file +- [2.basic_window_events](https://github.com/asticode/go-astilectron/tree/master/examples/2.basic_window_events/main.go) plays with basic window methods and shows you how to set up your own listeners +- [3.webserver_app](https://github.com/asticode/go-astilectron/tree/master/examples/3.webserver_app/main.go) sets up a basic webserver app +- [4.remote_messaging](https://github.com/asticode/go-astilectron/tree/master/examples/4.remote_messaging/main.go) sends a message to the webserver and listens for any response +- [5.single_binary_distribution](https://github.com/asticode/go-astilectron/tree/master/examples/5.single_binary_distribution/main.go) shows how to use `go-astilectron` in a unique binary. For this example you have to run one of the previous examples (so that the .zip files exist) and run the following commands: + +``` +$ go generate examples/5.single_binary_distribution/main.go +$ go run examples/5.single_binary_distribution/main.go examples/5.single_binary_distribution/vendor.go -v +``` + +- [6.screens_and_displays](https://github.com/asticode/go-astilectron/tree/master/examples/6.screens_and_displays/main.go) plays around with screens and displays +- [7.menus](https://github.com/asticode/go-astilectron/tree/master/examples/7.menus/main.go) creates and manipulates menus +- [8.bootstrap](https://github.com/asticode/go-astilectron/tree/master/examples/8.bootstrap) shows how to use the **bootstrap**. For this example you have to run the following commands: + +``` +$ go generate examples/8.bootstrap/main.go +$ go run examples/8.bootstrap/main.go examples/8.bootstrap/resources.go -v +``` + +- [9.tray](https://github.com/asticode/go-astilectron/tree/master/examples/9.tray/main.go) creates a tray + +# Features and roadmap + +- [x] custom branding (custom app name, app icon, etc.) +- [x] window basic methods (create, show, close, resize, minimize, maximize, ...) +- [x] window basic events (close, blur, focus, unresponsive, crashed, ...) +- [x] remote messaging (messages between GO and the JS in the webserver) +- [x] single binary distribution +- [x] multi screens/displays +- [x] menu methods and events (create, insert, append, popup, clicked, ...) +- [x] bootstrap +- [x] dialogs (open or save file, alerts, ...) +- [x] tray +- [ ] loader +- [ ] bundle helper +- [ ] accelerators (shortcuts) +- [ ] file methods (drag & drop, ...) +- [ ] clipboard methods +- [ ] power monitor events (suspend, resume, ...) +- [ ] notifications (macosx) +- [ ] desktop capturer (audio and video) +- [ ] session methods +- [ ] session events +- [ ] window advanced options (add missing ones) +- [ ] window advanced methods (add missing ones) +- [ ] window advanced events (add missing ones) +- [ ] child windows + +# Cheers to + +[go-thrust](https://github.com/miketheprogrammer/go-thrust) which is awesome but unfortunately not maintained anymore. It inspired this project. diff --git a/vendor/github.com/asticode/go-astilectron/astilectron.go b/vendor/github.com/asticode/go-astilectron/astilectron.go new file mode 100644 index 0000000..df2d716 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/astilectron.go @@ -0,0 +1,389 @@ +package astilectron + +import ( + "flag" + "fmt" + "net" + "os" + "os/exec" + "os/signal" + "runtime" + "strings" + "syscall" + "time" + + "github.com/asticode/go-astilog" + "github.com/asticode/go-astitools/context" + "github.com/asticode/go-astitools/exec" + "github.com/asticode/go-astitools/slice" + "github.com/pkg/errors" +) + +// Versions +const ( + VersionAstilectron = "0.6.0" + VersionElectron = "1.6.5" +) + +// Misc vars +var ( + astilectronDirectoryPath = flag.String("astilectron-directory-path", "", "the astilectron directory path") + validOSes = []string{"darwin", "linux", "windows"} +) + +// App event names +const ( + EventNameAppClose = "app.close" + EventNameAppCmdStop = "app.cmd.stop" + EventNameAppCrash = "app.crash" + EventNameAppErrorAccept = "app.error.accept" + EventNameAppEventReady = "app.event.ready" + EventNameAppNoAccept = "app.no.accept" + EventNameAppTooManyAccept = "app.too.many.accept" +) + +// Astilectron represents an object capable of interacting with Astilectron +// TODO Fix race conditions +type Astilectron struct { + canceller *asticontext.Canceller + channelQuit chan bool + dispatcher *Dispatcher + displayPool *displayPool + identifier *identifier + listener net.Listener + options Options + paths *Paths + provisioner Provisioner + reader *reader + stderrWriter *astiexec.StdWriter + stdoutWriter *astiexec.StdWriter + writer *writer +} + +// Options represents Astilectron options +type Options struct { + AppName string + AppIconDarwinPath string // Darwin systems requires a specific .icns file + AppIconDefaultPath string + BaseDirectoryPath string +} + +// New creates a new Astilectron instance +func New(o Options) (a *Astilectron, err error) { + // Validate the OS + if err = validateOS(runtime.GOOS); err != nil { + err = errors.Wrap(err, "validating OS failed") + return + } + a = &Astilectron{ + canceller: asticontext.NewCanceller(), + channelQuit: make(chan bool), + dispatcher: newDispatcher(), + displayPool: newDisplayPool(), + identifier: newIdentifier(), + options: o, + provisioner: DefaultProvisioner, + } + + // Set paths + if a.paths, err = newPaths(runtime.GOOS, runtime.GOARCH, o); err != nil { + err = errors.Wrap(err, "creating new paths failed") + return + } + + // Add default listeners + a.On(EventNameAppCmdStop, func(e Event) (deleteListener bool) { + a.Stop() + return + }) + a.On(EventNameDisplayEventAdded, func(e Event) (deleteListener bool) { + a.displayPool.update(e.Displays) + return + }) + a.On(EventNameDisplayEventMetricsChanged, func(e Event) (deleteListener bool) { + a.displayPool.update(e.Displays) + return + }) + a.On(EventNameDisplayEventRemoved, func(e Event) (deleteListener bool) { + a.displayPool.update(e.Displays) + return + }) + return +} + +// validateOS validates the OS +func validateOS(os string) error { + if !astislice.InStringSlice(os, validOSes) { + return fmt.Errorf("OS %s is not supported", os) + } + return nil +} + +// ValidOSes returns a slice containing the names of all currently supported operating systems +func ValidOSes() []string { + return append(make([]string, 0, len(validOSes)), validOSes...) +} + +// SetProvisioner sets the provisioner +func (a *Astilectron) SetProvisioner(p Provisioner) *Astilectron { + a.provisioner = p + return a +} + +// On implements the Listenable interface +func (a *Astilectron) On(eventName string, l Listener) { + a.dispatcher.addListener(mainTargetID, eventName, l) +} + +// Start starts Astilectron +func (a *Astilectron) Start() (err error) { + // Log + astilog.Debug("Starting...") + + // Start the dispatcher + go a.dispatcher.start() + + // Provision + if err = a.provision(); err != nil { + return errors.Wrap(err, "provisioning failed") + } + + // Unfortunately communicating with Electron through stdin/stdout doesn't work on Windows so all communications + // will be done through TCP + if err = a.listenTCP(); err != nil { + return errors.Wrap(err, "listening failed") + } + + // Execute + if err = a.execute(); err != nil { + err = errors.Wrap(err, "executing failed") + return + } + return +} + +// provision provisions Astilectron +func (a *Astilectron) provision() error { + astilog.Debug("Provisioning...") + var ctx, _ = a.canceller.NewContext() + return a.provisioner.Provision(ctx, *a.dispatcher, a.options.AppName, runtime.GOOS, *a.paths) +} + +// listenTCP listens to the first TCP connection coming its way (this should be Astilectron) +func (a *Astilectron) listenTCP() (err error) { + // Log + astilog.Debug("Listening...") + + // Listen + if a.listener, err = net.Listen("tcp", "127.0.0.1:"); err != nil { + return errors.Wrap(err, "tcp net.Listen failed") + } + + // Check a connection has been accepted quickly enough + var chanAccepted = make(chan bool) + go a.watchNoAccept(30*time.Second, chanAccepted) + + // Accept connections + go a.acceptTCP(chanAccepted) + return +} + +// watchNoAccept checks whether a TCP connection is accepted quickly enough +func (a *Astilectron) watchNoAccept(timeout time.Duration, chanAccepted chan bool) { + var t = time.NewTimer(timeout) + defer t.Stop() + for { + select { + case <-chanAccepted: + return + case <-t.C: + astilog.Errorf("No TCP connection has been accepted in the past %s", timeout) + a.dispatcher.Dispatch(Event{Name: EventNameAppNoAccept, TargetID: mainTargetID}) + a.dispatcher.Dispatch(Event{Name: EventNameAppCmdStop, TargetID: mainTargetID}) + return + } + } +} + +// watchAcceptTCP accepts TCP connections +func (a *Astilectron) acceptTCP(chanAccepted chan bool) { + for i := 0; i <= 1; i++ { + // Accept + var conn net.Conn + var err error + if conn, err = a.listener.Accept(); err != nil { + astilog.Errorf("%s while TCP accepting", err) + a.dispatcher.Dispatch(Event{Name: EventNameAppErrorAccept, TargetID: mainTargetID}) + a.dispatcher.Dispatch(Event{Name: EventNameAppCmdStop, TargetID: mainTargetID}) + return + } + + // We only accept the first connection which should be Astilectron, close the next one and stop + // the app + if i > 0 { + astilog.Errorf("Too many TCP connections") + a.dispatcher.Dispatch(Event{Name: EventNameAppTooManyAccept, TargetID: mainTargetID}) + a.dispatcher.Dispatch(Event{Name: EventNameAppCmdStop, TargetID: mainTargetID}) + conn.Close() + return + } + + // Let the timer know a connection has been accepted + chanAccepted <- true + + // Create reader and writer + a.writer = newWriter(conn) + a.reader = newReader(a.dispatcher, conn) + go a.reader.read() + } +} + +// execute executes Astilectron in Electron +func (a *Astilectron) execute() (err error) { + // Log + astilog.Debug("Executing...") + + // Create command + var ctx, _ = a.canceller.NewContext() + var cmd = exec.CommandContext(ctx, a.paths.AppExecutable(), a.paths.AstilectronApplication(), a.listener.Addr().String()) + a.stderrWriter = astiexec.NewStdWriter(func(i []byte) { astilog.Debugf("Stderr says: %s", i) }) + a.stdoutWriter = astiexec.NewStdWriter(func(i []byte) { astilog.Debugf("Stdout says: %s", i) }) + cmd.Stderr = a.stderrWriter + cmd.Stdout = a.stdoutWriter + + // Execute command + if err = a.executeCmd(cmd); err != nil { + return errors.Wrap(err, "executing cmd failed") + } + return +} + +// executeCmd executes the command +func (a *Astilectron) executeCmd(cmd *exec.Cmd) (err error) { + var e = synchronousFunc(a.canceller, a, func() { + // Start command + astilog.Debugf("Starting cmd %s", strings.Join(cmd.Args, " ")) + if err = cmd.Start(); err != nil { + err = errors.Wrapf(err, "starting cmd %s failed", strings.Join(cmd.Args, " ")) + return + } + + // Watch command + go a.watchCmd(cmd) + }, EventNameAppEventReady) + + // Update display pool + if e.Displays != nil { + a.displayPool.update(e.Displays) + } + return +} + +// watchCmd watches the cmd execution +func (a *Astilectron) watchCmd(cmd *exec.Cmd) { + // Wait + cmd.Wait() + + // Check the canceller to check whether it was a crash + if !a.canceller.Cancelled() { + astilog.Debug("App has crashed") + a.dispatcher.Dispatch(Event{Name: EventNameAppCrash, TargetID: mainTargetID}) + } else { + astilog.Debug("App has closed") + a.dispatcher.Dispatch(Event{Name: EventNameAppClose, TargetID: mainTargetID}) + } + a.dispatcher.Dispatch(Event{Name: EventNameAppCmdStop, TargetID: mainTargetID}) +} + +// Close closes Astilectron properly +func (a *Astilectron) Close() { + astilog.Debug("Closing...") + a.canceller.Cancel() + a.dispatcher.close() + if a.listener != nil { + a.listener.Close() + } + if a.reader != nil { + a.reader.close() + } + if a.stderrWriter != nil { + a.stderrWriter.Close() + } + if a.stdoutWriter != nil { + a.stdoutWriter.Close() + } + if a.writer != nil { + a.writer.close() + } +} + +// HandleSignals handles signals +func (a *Astilectron) HandleSignals() { + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGABRT, syscall.SIGKILL, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM) + go func() { + for sig := range ch { + astilog.Debugf("Received signal %s", sig) + a.Stop() + } + }() +} + +// Stop orders Astilectron to stop +func (a *Astilectron) Stop() { + astilog.Debug("Stopping...") + a.canceller.Cancel() + if a.channelQuit != nil { + close(a.channelQuit) + a.channelQuit = nil + } +} + +// Wait is a blocking pattern +func (a *Astilectron) Wait() { + if a.channelQuit == nil { + return + } + <-a.channelQuit +} + +// Displays returns the displays +func (a *Astilectron) Displays() []*Display { + return a.displayPool.all() +} + +// PrimaryDisplay returns the primary display +func (a *Astilectron) PrimaryDisplay() *Display { + return a.displayPool.primary() +} + +// NewMenu creates a new app menu +func (a *Astilectron) NewMenu(i []*MenuItemOptions) *Menu { + return newMenu(nil, a, i, a.canceller, a.dispatcher, a.identifier, a.writer) +} + +// NewWindow creates a new window +func (a *Astilectron) NewWindow(url string, o *WindowOptions) (*Window, error) { + return newWindow(a.options, url, o, a.canceller, a.dispatcher, a.identifier, a.writer) +} + +// NewWindowInDisplay creates a new window in a specific display +// This overrides the center attribute +func (a *Astilectron) NewWindowInDisplay(d *Display, url string, o *WindowOptions) (*Window, error) { + if o.X != nil { + *o.X += d.Bounds().X + } else { + o.X = PtrInt(d.Bounds().X) + } + if o.Y != nil { + *o.Y += d.Bounds().Y + } else { + o.Y = PtrInt(d.Bounds().Y) + } + return newWindow(a.options, url, o, a.canceller, a.dispatcher, a.identifier, a.writer) +} + +// NewTray creates a new tray +func (a *Astilectron) NewTray(o *TrayOptions) *Tray { + return newTray(o, a.canceller, a.dispatcher, a.identifier, a.writer) +} diff --git a/vendor/github.com/asticode/go-astilectron/astilectron_test.go b/vendor/github.com/asticode/go-astilectron/astilectron_test.go new file mode 100644 index 0000000..8f2f908 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/astilectron_test.go @@ -0,0 +1,183 @@ +package astilectron + +import ( + "net" + "os" + "sync" + "testing" + "time" + + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" +) + +func TestAstilectron_Provision(t *testing.T) { + // Init + var o = Options{BaseDirectoryPath: mockedTempPath()} + defer os.RemoveAll(o.BaseDirectoryPath) + a, err := New(o) + assert.NoError(t, err) + defer a.dispatcher.close() + go a.dispatcher.start() + a.SetProvisioner(NewDisembedderProvisioner(mockedDisembedder, "astilectron", "electron/linux")) + var hasStarted, hasStopped bool + a.On(EventNameProvisionAstilectronMoved, func(e Event) bool { + hasStarted = true + return false + }) + var wg = &sync.WaitGroup{} + a.On(EventNameProvisionElectronFinished, func(e Event) bool { + hasStopped = true + wg.Done() + return false + }) + wg.Add(1) + + // Test provision is successful and sends the correct events + err = a.provision() + assert.NoError(t, err) + wg.Wait() + assert.True(t, hasStarted) + assert.True(t, hasStopped) +} + +func TestAstilectron_WatchNoAccept(t *testing.T) { + // Init + a, err := New(Options{}) + assert.NoError(t, err) + defer a.dispatcher.close() + go a.dispatcher.start() + var isStopped bool + var wg = &sync.WaitGroup{} + a.On(EventNameAppCmdStop, func(e Event) bool { + isStopped = true + wg.Done() + return false + }) + c := make(chan bool) + + // Test success + go func() { + time.Sleep(50 * time.Microsecond) + c <- true + }() + a.watchNoAccept(time.Second, c) + assert.False(t, isStopped) + + // Test failure + wg.Add(1) + a.watchNoAccept(time.Nanosecond, c) + wg.Wait() + assert.True(t, isStopped) +} + +// mockedListener implements the net.Listener interface +type mockedListener struct { + c chan bool + e chan bool +} + +func (l mockedListener) Accept() (net.Conn, error) { + for { + select { + case <-l.c: + return mockedConn{}, nil + case <-l.e: + return nil, errors.New("invalid") + } + } +} +func (l mockedListener) Close() error { return nil } +func (l mockedListener) Addr() net.Addr { return nil } + +// mockedConn implements the net.Conn interface +type mockedConn struct{} + +func (c mockedConn) Read(b []byte) (n int, err error) { return } +func (c mockedConn) Write(b []byte) (n int, err error) { return } +func (c mockedConn) Close() error { return nil } +func (c mockedConn) LocalAddr() net.Addr { return nil } +func (c mockedConn) RemoteAddr() net.Addr { return nil } +func (c mockedConn) SetDeadline(t time.Time) error { return nil } +func (c mockedConn) SetReadDeadline(t time.Time) error { return nil } +func (c mockedConn) SetWriteDeadline(t time.Time) error { return nil } + +// mockedAddr implements the net.Addr interface +type mockedAddr struct{} + +func (a mockedAddr) Network() string { return "" } +func (a mockedAddr) String() string { return "" } + +func TestAstilectron_AcceptTCP(t *testing.T) { + // Init + a, err := New(Options{}) + assert.NoError(t, err) + defer a.Close() + go a.dispatcher.start() + var l = &mockedListener{c: make(chan bool), e: make(chan bool)} + a.listener = l + var isStopped bool + var wg = &sync.WaitGroup{} + a.On(EventNameAppCmdStop, func(e Event) bool { + isStopped = true + wg.Done() + return false + }) + c := make(chan bool) + var isAccepted bool + go func() { + for { + select { + case <-c: + isAccepted = true + wg.Done() + return + } + } + }() + go a.acceptTCP(c) + + // Test accepted + wg.Add(1) + l.c <- true + wg.Wait() + assert.True(t, isAccepted) + assert.False(t, isStopped) + + // Test refused + isAccepted = false + wg.Add(1) + l.c <- true + wg.Wait() + assert.False(t, isAccepted) + assert.True(t, isStopped) + + // Test error accept + go a.acceptTCP(c) + isStopped = false + wg.Add(1) + l.e <- true + wg.Wait() + assert.False(t, isAccepted) + assert.True(t, isStopped) +} + +func TestIsValidOS(t *testing.T) { + assert.NoError(t, validateOS("darwin")) + assert.NoError(t, validateOS("linux")) + assert.NoError(t, validateOS("windows")) + assert.Error(t, validateOS("invalid")) +} + +func TestAstilectron_Wait(t *testing.T) { + a, err := New(Options{}) + assert.NoError(t, err) + a.HandleSignals() + go func() { + time.Sleep(20 * time.Microsecond) + p, err := os.FindProcess(os.Getpid()) + assert.NoError(t, err) + p.Signal(os.Interrupt) + }() + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/bootstrap/message.go b/vendor/github.com/asticode/go-astilectron/bootstrap/message.go new file mode 100644 index 0000000..8e63c09 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/bootstrap/message.go @@ -0,0 +1,37 @@ +package bootstrap + +import ( + "encoding/json" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" +) + +// MessageOut represents a message going out +type MessageOut struct { + Name string `json:"name"` + Payload interface{} `json:"payload"` +} + +// MessageIn represents a message going in +type MessageIn struct { + Name string `json:"name"` + Payload json.RawMessage `json:"payload"` +} + +// handleMessages handles messages +func handleMessages(w *astilectron.Window, messageHandler MessageHandler) astilectron.Listener { + return func(e astilectron.Event) (deleteListener bool) { + // Unmarshal message + var m MessageIn + var err error + if err = e.Message.Unmarshal(&m); err != nil { + astilog.Errorf("Unmarshaling message %+v failed", *e.Message) + return + } + + // Handle message + messageHandler(w, m) + return + } +} diff --git a/vendor/github.com/asticode/go-astilectron/bootstrap/options.go b/vendor/github.com/asticode/go-astilectron/bootstrap/options.go new file mode 100644 index 0000000..26164cb --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/bootstrap/options.go @@ -0,0 +1,45 @@ +package bootstrap + +import ( + "net/http" + + "github.com/asticode/go-astilectron" + "github.com/julienschmidt/httprouter" +) + +// Options represents options +type Options struct { + AdaptAstilectron AdaptAstilectron + AdaptRouter AdaptRouter + AdaptWindow AdaptWindow + AstilectronOptions astilectron.Options + BaseDirectoryPath string + CustomProvision CustomProvision + Debug bool + Homepage string + MessageHandler MessageHandler + RestoreAssets RestoreAssets + TemplateData TemplateData + WindowOptions *astilectron.WindowOptions +} + +// AdaptAstilectron is a function that adapts astilectron +type AdaptAstilectron func(a *astilectron.Astilectron) + +// AdaptRouter is a function that adapts the router +type AdaptRouter func(r *httprouter.Router) + +// AdaptWindow is a function that adapts the window +type AdaptWindow func(w *astilectron.Window) + +// CustomProvision is a function that executes custom provisioning +type CustomProvision func(baseDirectoryPath string) error + +// MessageHandler is a functions that handles messages +type MessageHandler func(w *astilectron.Window, m MessageIn) + +// RestoreAssets is a function that restores assets namely the go-bindata's RestoreAssets method +type RestoreAssets func(dir, name string) error + +// TemplateData is a function that retrieves a template's data +type TemplateData func(name string, r *http.Request, p httprouter.Params) (d interface{}, err error) diff --git a/vendor/github.com/asticode/go-astilectron/bootstrap/provisioner.go b/vendor/github.com/asticode/go-astilectron/bootstrap/provisioner.go new file mode 100644 index 0000000..132fd73 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/bootstrap/provisioner.go @@ -0,0 +1,38 @@ +package bootstrap + +import ( + "os" + "path/filepath" + + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +// provision provisions the resources as well as the custom provision +func provision(baseDirectoryPath string, fnA RestoreAssets, fnP CustomProvision) (err error) { + // Provision resources + // TODO Handle upgrades and therefore removing the resources folder accordingly + var pr = filepath.Join(baseDirectoryPath, "resources") + if _, err = os.Stat(pr); os.IsNotExist(err) { + // Restore assets + astilog.Debugf("Restoring assets in %s", baseDirectoryPath) + if err = fnA(baseDirectoryPath, "resources"); err != nil { + err = errors.Wrapf(err, "restoring assets in %s failed", baseDirectoryPath) + return + } + } else if err != nil { + err = errors.Wrapf(err, "stating %s failed", pr) + return + } else { + astilog.Debugf("%s already exists, skipping restoring assets...", pr) + } + + // Custom provision + if fnP != nil { + if err = fnP(baseDirectoryPath); err != nil { + err = errors.Wrap(err, "custom provisioning failed") + return + } + } + return +} diff --git a/vendor/github.com/asticode/go-astilectron/bootstrap/run.go b/vendor/github.com/asticode/go-astilectron/bootstrap/run.go new file mode 100644 index 0000000..d04323a --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/bootstrap/run.go @@ -0,0 +1,90 @@ +package bootstrap + +import ( + "os" + "path/filepath" + + "github.com/asticode/go-astilectron" + "github.com/pkg/errors" +) + +// Run runs the bootstrap +func Run(o Options) (err error) { + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(o.AstilectronOptions); err != nil { + return errors.Wrap(err, "creating new astilectron failed") + } + defer a.Close() + a.HandleSignals() + + // Adapt astilectron + if o.AdaptAstilectron != nil { + o.AdaptAstilectron(a) + } + + // Base directory path default to executable path + if o.BaseDirectoryPath == "" { + if o.BaseDirectoryPath, err = os.Executable(); err != nil { + return errors.Wrap(err, "getting executable path failed") + } + o.BaseDirectoryPath = filepath.Dir(o.BaseDirectoryPath) + } + + // Provision + if err = provision(o.BaseDirectoryPath, o.RestoreAssets, o.CustomProvision); err != nil { + return errors.Wrap(err, "provisioning failed") + } + + // Start + if err = a.Start(); err != nil { + return errors.Wrap(err, "starting astilectron failed") + } + + // Serve or handle messages + var url string + if o.MessageHandler == nil { + var ln = serve(o.BaseDirectoryPath, o.AdaptRouter, o.TemplateData) + defer ln.Close() + url = "http://" + ln.Addr().String() + o.Homepage + } else { + url = filepath.Join(o.BaseDirectoryPath, "resources", "app", o.Homepage) + } + + // Debug + if o.Debug { + o.WindowOptions.Width = astilectron.PtrInt(*o.WindowOptions.Width + 700) + } + + // Init window + var w *astilectron.Window + if w, err = a.NewWindow(url, o.WindowOptions); err != nil { + return errors.Wrap(err, "new window failed") + } + + // Handle messages + if o.MessageHandler != nil { + w.On(astilectron.EventNameWindowEventMessage, handleMessages(w, o.MessageHandler)) + } + + // Create window + if err = w.Create(); err != nil { + return errors.Wrap(err, "creating window failed") + } + + // Adapt window + if o.AdaptWindow != nil { + o.AdaptWindow(w) + } + + // Debug + if o.Debug { + if err = w.OpenDevTools(); err != nil { + return errors.Wrap(err, "opening dev tools failed") + } + } + + // Blocking pattern + a.Wait() + return +} diff --git a/vendor/github.com/asticode/go-astilectron/bootstrap/server.go b/vendor/github.com/asticode/go-astilectron/bootstrap/server.go new file mode 100644 index 0000000..8ebaa6e --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/bootstrap/server.go @@ -0,0 +1,81 @@ +package bootstrap + +import ( + "net" + "net/http" + "text/template" + + "path/filepath" + + "github.com/asticode/go-astilog" + "github.com/asticode/go-astitools/template" + "github.com/julienschmidt/httprouter" +) + +// Vars +var ( + templates *template.Template +) + +// serve initialize an HTTP server +func serve(baseDirectoryPath string, fnR AdaptRouter, fnT TemplateData) (ln net.Listener) { + // Init router + var r = httprouter.New() + + // Static files + r.ServeFiles("/static/*filepath", http.Dir(filepath.Join(baseDirectoryPath, "resources", "static"))) + + // Dynamic pages + r.GET("/templates/*page", handleTemplates(fnT)) + + // Adapt router + if fnR != nil { + fnR(r) + } + + // Parse templates + var err error + if templates, err = astitemplate.ParseDirectory(filepath.Join(baseDirectoryPath, "resources", "templates"), ".html"); err != nil { + astilog.Fatal(err) + } + + // Listen + if ln, err = net.Listen("tcp", "127.0.0.1:"); err != nil { + astilog.Fatal(err) + } + astilog.Debugf("Listening on %s", ln.Addr()) + + // Serve + go http.Serve(ln, r) + return +} + +// handleTemplate handles templates +func handleTemplates(fn TemplateData) httprouter.Handle { + return func(rw http.ResponseWriter, r *http.Request, p httprouter.Params) { + // Check if template exists + var name = p.ByName("page") + ".html" + if templates.Lookup(name) == nil { + rw.WriteHeader(http.StatusNotFound) + return + } + + // Get data + var d interface{} + var err error + if fn != nil { + if d, err = fn(name, r, p); err != nil { + astilog.Errorf("%s while retrieving data for template %s", err, name) + rw.WriteHeader(http.StatusInternalServerError) + return + } + } + + // Execute template + if err = templates.ExecuteTemplate(rw, name, d); err != nil { + astilog.Errorf("%s while handling template %s", err, name) + rw.WriteHeader(http.StatusInternalServerError) + return + } + } +} diff --git a/vendor/github.com/asticode/go-astilectron/dispatcher.go b/vendor/github.com/asticode/go-astilectron/dispatcher.go new file mode 100644 index 0000000..40dee01 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/dispatcher.go @@ -0,0 +1,102 @@ +package astilectron + +import "sync" + +// Listener represents a listener executed when an event is dispatched +type Listener func(e Event) (deleteListener bool) + +// listenable represents an object that can listen +type listenable interface { + On(eventName string, l Listener) +} + +// Dispatcher represents an object capable of dispatching events +type Dispatcher struct { + c chan Event + cq chan bool + id int + // Indexed by target ID then by event name then be listener id + // We use a map[int]Listener so that deletion is as smooth as possible + // It means it doesn't store listeners in order + l map[string]map[string]map[int]Listener + m *sync.Mutex +} + +// newDispatcher creates a new dispatcher +func newDispatcher() *Dispatcher { + return &Dispatcher{ + c: make(chan Event), + cq: make(chan bool), + l: make(map[string]map[string]map[int]Listener), + m: &sync.Mutex{}, + } +} + +// addListener adds a listener +func (d *Dispatcher) addListener(targetID, eventName string, l Listener) { + d.m.Lock() + defer d.m.Unlock() + if _, ok := d.l[targetID]; !ok { + d.l[targetID] = make(map[string]map[int]Listener) + } + if _, ok := d.l[targetID][eventName]; !ok { + d.l[targetID][eventName] = make(map[int]Listener) + } + d.id++ + d.l[targetID][eventName][d.id] = l +} + +// close closes the dispatcher properly +func (d *Dispatcher) close() { + if d.cq != nil { + close(d.cq) + d.cq = nil + } +} + +// delListener delete a specific listener +func (d *Dispatcher) delListener(targetID, eventName string, id int) { + d.m.Lock() + defer d.m.Unlock() + if _, ok := d.l[targetID]; !ok { + return + } + if _, ok := d.l[targetID][eventName]; !ok { + return + } + delete(d.l[targetID][eventName], id) +} + +// Dispatch dispatches an event +func (d Dispatcher) Dispatch(e Event) { + d.c <- e +} + +// start starts the dispatcher and listens to dispatched events +func (d *Dispatcher) start() { + for { + select { + case e := <-d.c: + for id, l := range d.listeners(e.TargetID, e.Name) { + if l(e) { + d.delListener(e.TargetID, e.Name, id) + } + } + case <-d.cq: + return + } + } +} + +// listeners returns the listeners for a target ID and an event name +func (d *Dispatcher) listeners(targetID, eventName string) map[int]Listener { + d.m.Lock() + defer d.m.Unlock() + if _, ok := d.l[targetID]; !ok { + return map[int]Listener{} + } + if _, ok := d.l[targetID][eventName]; !ok { + return map[int]Listener{} + } + return d.l[targetID][eventName] +} diff --git a/vendor/github.com/asticode/go-astilectron/dispatcher_test.go b/vendor/github.com/asticode/go-astilectron/dispatcher_test.go new file mode 100644 index 0000000..0ff58cc --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/dispatcher_test.go @@ -0,0 +1,54 @@ +package astilectron + +import ( + "sync" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestDispatcher(t *testing.T) { + // Init + var d = newDispatcher() + defer d.close() + go d.start() + var wg = &sync.WaitGroup{} + var dispatched = []int{} + + // Test adding listener + d.addListener("1", "1", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 1) + wg.Done() + return + }) + d.addListener("1", "1", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 2) + wg.Done() + return true + }) + d.addListener("1", "1", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 3) + wg.Done() + return true + }) + d.addListener("1", "2", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 4) + wg.Done() + return + }) + assert.Len(t, d.l["1"]["1"], 3) + + // Test dispatch + wg.Add(4) + d.Dispatch(Event{Name: "2", TargetID: "1"}) + d.Dispatch(Event{Name: "1", TargetID: "1"}) + wg.Wait() + for _, v := range []int{1, 2, 3, 4} { + assert.Contains(t, dispatched, v) + } + assert.Len(t, d.l["1"]["1"], 1) + + // Test close + d.close() + assert.Nil(t, d.cq) +} diff --git a/vendor/github.com/asticode/go-astilectron/display.go b/vendor/github.com/asticode/go-astilectron/display.go new file mode 100644 index 0000000..b5f6d64 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/display.go @@ -0,0 +1,77 @@ +package astilectron + +// Display event names +const ( + EventNameDisplayEventAdded = "display.event.added" + EventNameDisplayEventMetricsChanged = "display.event.metrics.changed" + EventNameDisplayEventRemoved = "display.event.removed" +) + +// Display represents a display +// https://github.com/electron/electron/blob/v1.6.5/docs/api/structures/display.md +type Display struct { + o *DisplayOptions + primary bool +} + +// DisplayOptions represents display options +// https://github.com/electron/electron/blob/v1.6.5/docs/api/structures/display.md +type DisplayOptions struct { + Bounds *RectangleOptions `json:"bounds,omitempty"` + ID *int64 `json:"id,omitempty"` + Rotation *int `json:"rotation,omitempty"` // 0, 90, 180 or 270 + ScaleFactor *float64 `json:"scaleFactor,omitempty"` + Size *SizeOptions `json:"size,omitempty"` + TouchSupport *string `json:"touchSupport,omitempty"` // available, unavailable or unknown + WorkArea *RectangleOptions `json:"workArea,omitempty"` + WorkAreaSize *SizeOptions `json:"workAreaSize,omitempty"` +} + +// newDisplay creates a displays +func newDisplay(o *DisplayOptions, primary bool) *Display { return &Display{o: o, primary: primary} } + +// Bounds returns the display bounds +func (d Display) Bounds() Rectangle { + return Rectangle{ + Position: Position{X: *d.o.Bounds.X, Y: *d.o.Bounds.Y}, + Size: Size{Height: *d.o.Bounds.Height, Width: *d.o.Bounds.Width}, + } +} + +// IsPrimary checks whether the display is the primary display +func (d Display) IsPrimary() bool { + return d.primary +} + +// IsTouchAvailable checks whether touch is available on this display +func (d Display) IsTouchAvailable() bool { + return *d.o.TouchSupport == "available" +} + +// Rotation returns the display rotation +func (d Display) Rotation() int { + return *d.o.Rotation +} + +// ScaleFactor returns the display scale factor +func (d Display) ScaleFactor() float64 { + return *d.o.ScaleFactor +} + +// Size returns the display size +func (d Display) Size() Size { + return Size{Height: *d.o.Size.Height, Width: *d.o.Size.Width} +} + +// WorkArea returns the display work area +func (d Display) WorkArea() Rectangle { + return Rectangle{ + Position: Position{X: *d.o.WorkArea.X, Y: *d.o.WorkArea.Y}, + Size: Size{Height: *d.o.WorkArea.Height, Width: *d.o.WorkArea.Width}, + } +} + +// WorkAreaSize returns the display work area size +func (d Display) WorkAreaSize() Size { + return Size{Height: *d.o.WorkAreaSize.Height, Width: *d.o.WorkAreaSize.Width} +} diff --git a/vendor/github.com/asticode/go-astilectron/display_pool.go b/vendor/github.com/asticode/go-astilectron/display_pool.go new file mode 100644 index 0000000..b2c8e7e --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/display_pool.go @@ -0,0 +1,66 @@ +package astilectron + +import "sync" + +// displayPool represents a display pool +type displayPool struct { + d map[int64]*Display + m *sync.Mutex +} + +// newDisplayPool creates a new display pool +func newDisplayPool() *displayPool { + return &displayPool{ + d: make(map[int64]*Display), + m: &sync.Mutex{}, + } +} + +// all returns all the displays +func (p *displayPool) all() (ds []*Display) { + p.m.Lock() + defer p.m.Unlock() + ds = []*Display{} + for _, d := range p.d { + ds = append(ds, d) + } + return +} + +// primary returns the primary display +// It defaults to the last display +func (p *displayPool) primary() (d *Display) { + p.m.Lock() + defer p.m.Unlock() + for _, d = range p.d { + if d.primary { + return + } + } + return +} + +// update updates the pool based on event displays +func (p *displayPool) update(e *EventDisplays) { + p.m.Lock() + defer p.m.Unlock() + var ids = make(map[int64]bool) + for _, o := range e.All { + ids[*o.ID] = true + var primary bool + if *o.ID == *e.Primary.ID { + primary = true + } + if d, ok := p.d[*o.ID]; ok { + d.primary = primary + *d.o = *o + } else { + p.d[*o.ID] = newDisplay(o, primary) + } + } + for id := range p.d { + if _, ok := ids[id]; !ok { + delete(p.d, id) + } + } +} diff --git a/vendor/github.com/asticode/go-astilectron/display_pool_test.go b/vendor/github.com/asticode/go-astilectron/display_pool_test.go new file mode 100644 index 0000000..78425fb --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/display_pool_test.go @@ -0,0 +1,45 @@ +package astilectron + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestDisplayPool(t *testing.T) { + // Init + var dp = newDisplayPool() + + // Test update + dp.update(&EventDisplays{ + All: []*DisplayOptions{ + {ID: PtrInt64(1), Rotation: PtrInt(1)}, + {ID: PtrInt64(2)}, + }, + Primary: &DisplayOptions{ID: PtrInt64(2)}, + }) + assert.Len(t, dp.all(), 2) + assert.Equal(t, int64(2), *dp.primary().o.ID) + + // Test removing one display + dp.update(&EventDisplays{ + All: []*DisplayOptions{ + {ID: PtrInt64(1), Rotation: PtrInt(2)}, + }, + Primary: &DisplayOptions{ID: PtrInt64(1)}, + }) + assert.Len(t, dp.all(), 1) + assert.Equal(t, 2, dp.all()[0].Rotation()) + assert.Equal(t, int64(1), *dp.primary().o.ID) + + // Test adding a new one + dp.update(&EventDisplays{ + All: []*DisplayOptions{ + {ID: PtrInt64(1)}, + {ID: PtrInt64(3)}, + }, + Primary: &DisplayOptions{ID: PtrInt64(1)}, + }) + assert.Len(t, dp.all(), 2) + assert.Equal(t, int64(1), *dp.primary().o.ID) +} diff --git a/vendor/github.com/asticode/go-astilectron/display_test.go b/vendor/github.com/asticode/go-astilectron/display_test.go new file mode 100644 index 0000000..e3ee93a --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/display_test.go @@ -0,0 +1,33 @@ +package astilectron + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// TestDisplay tests display +func TestDisplay(t *testing.T) { + var o = &DisplayOptions{ + Bounds: &RectangleOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}, SizeOptions: SizeOptions{Height: PtrInt(3), Width: PtrInt(4)}}, + Rotation: PtrInt(5), + ScaleFactor: PtrFloat(6), + Size: &SizeOptions{Height: PtrInt(7), Width: PtrInt(8)}, + TouchSupport: PtrStr("available"), + WorkArea: &RectangleOptions{PositionOptions: PositionOptions{X: PtrInt(9), Y: PtrInt(10)}, SizeOptions: SizeOptions{Height: PtrInt(11), Width: PtrInt(12)}}, + WorkAreaSize: &SizeOptions{Height: PtrInt(13), Width: PtrInt(14)}, + } + var d = newDisplay(o, true) + assert.Equal(t, Rectangle{Position: Position{X: 1, Y: 2}, Size: Size{Height: 3, Width: 4}}, d.Bounds()) + assert.True(t, d.IsPrimary()) + assert.Equal(t, 5, d.Rotation()) + assert.Equal(t, float64(6), d.ScaleFactor()) + assert.Equal(t, Size{Height: 7, Width: 8}, d.Size()) + assert.True(t, d.IsTouchAvailable()) + assert.Equal(t, Rectangle{Position: Position{X: 9, Y: 10}, Size: Size{Height: 11, Width: 12}}, d.WorkArea()) + assert.Equal(t, Size{Height: 13, Width: 14}, d.WorkAreaSize()) + o.TouchSupport = PtrStr("unavailable") + d = newDisplay(o, false) + assert.False(t, d.IsPrimary()) + assert.False(t, d.IsTouchAvailable()) +} diff --git a/vendor/github.com/asticode/go-astilectron/event.go b/vendor/github.com/asticode/go-astilectron/event.go new file mode 100644 index 0000000..d0c3df7 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/event.go @@ -0,0 +1,89 @@ +package astilectron + +import ( + "encoding/json" + "errors" +) + +// Misc constants +const ( + mainTargetID = "main" +) + +// Event represents an event +type Event struct { + // This is the base of the event + Name string `json:"name"` + TargetID string `json:"targetID"` + + // This is a list of all possible payloads. + // A choice was made not to use interfaces since it's a pain in the ass asserting each an every payload afterwards + // We use pointers so that omitempty works + Displays *EventDisplays `json:"displays,omitempty"` + Menu *EventMenu `json:"menu,omitempty"` + MenuID string `json:"menuId,omitempty"` + MenuItem *EventMenuItem `json:"menuItem,omitempty"` + MenuItemOptions *MenuItemOptions `json:"menuItemOptions,omitempty"` + MenuItemPosition *int `json:"menuItemPosition,omitempty"` + MenuPopupOptions *MenuPopupOptions `json:"menuPopupOptions,omitempty"` + Message *EventMessage `json:"message,omitempty"` + TrayOptions *TrayOptions `json:"trayOptions,omitempty"` + URL string `json:"url,omitempty"` + WindowID string `json:"windowId,omitempty"` + WindowOptions *WindowOptions `json:"windowOptions,omitempty"` +} + +// EventDisplays represents events displays +type EventDisplays struct { + All []*DisplayOptions `json:"all,omitempty"` + Primary *DisplayOptions `json:"primary,omitempty"` +} + +// EventMessage represents an event message +type EventMessage struct { + i interface{} +} + +// newEventMessage creates a new event message +func newEventMessage(i interface{}) *EventMessage { + return &EventMessage{i: i} +} + +// MarshalJSON implements the JSONMarshaler interface +func (p *EventMessage) MarshalJSON() ([]byte, error) { + return json.Marshal(p.i) +} + +// Unmarshal unmarshals the payload into the given interface +func (p *EventMessage) Unmarshal(i interface{}) error { + if b, ok := p.i.([]byte); ok { + return json.Unmarshal(b, i) + } + return errors.New("event message should []byte") +} + +// UnmarshalJSON implements the JSONUnmarshaler interface +func (p *EventMessage) UnmarshalJSON(i []byte) error { + p.i = i + return nil +} + +// EventMenu represents an event menu +type EventMenu struct { + *EventSubMenu +} + +// EventMenuItem represents an event menu item +type EventMenuItem struct { + ID string `json:"id"` + Options *MenuItemOptions `json:"options,omitempty"` + RootID string `json:"rootId"` + SubMenu *EventSubMenu `json:"submenu,omitempty"` +} + +// EventSubMenu represents a sub menu event +type EventSubMenu struct { + ID string `json:"id"` + Items []*EventMenuItem `json:"items,omitempty"` + RootID string `json:"rootId"` +} diff --git a/vendor/github.com/asticode/go-astilectron/event_test.go b/vendor/github.com/asticode/go-astilectron/event_test.go new file mode 100644 index 0000000..1d6daf8 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/event_test.go @@ -0,0 +1,27 @@ +package astilectron + +import ( + "encoding/json" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEventMessage(t *testing.T) { + // Init + var em = newEventMessage(false) + + // Test marshal + var b, err = json.Marshal(em) + assert.NoError(t, err) + assert.Equal(t, "false", string(b)) + + // Test unmarshal + err = json.Unmarshal([]byte("true"), em) + assert.NoError(t, err) + assert.Equal(t, []byte("true"), em.i) + var v bool + err = em.Unmarshal(&v) + assert.NoError(t, err) + assert.Equal(t, true, v) +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/1.basic_window/main.go b/vendor/github.com/asticode/go-astilectron/examples/1.basic_window/main.go new file mode 100644 index 0000000..d533e7e --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/1.basic_window/main.go @@ -0,0 +1,56 @@ +package main + +import ( + "flag" + "os" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow(p+"/index.html", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/2.basic_window_events/main.go b/vendor/github.com/asticode/go-astilectron/examples/2.basic_window_events/main.go new file mode 100644 index 0000000..9cbf5d4 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/2.basic_window_events/main.go @@ -0,0 +1,98 @@ +package main + +import ( + "flag" + "os" + "time" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow("http://google.com", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Add listener + w.On(astilectron.EventNameWindowEventMove, func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Window moved") + return + }) + + // Simulate actions + go func() { + time.Sleep(time.Second) + if err = w.Move(0, 0); err != nil { + astilog.Fatal(errors.Wrap(err, "moving window failed")) + } + time.Sleep(time.Second) + if err = w.Resize(200, 200); err != nil { + astilog.Fatal(errors.Wrap(err, "resizing window failed")) + } + time.Sleep(time.Second) + if err = w.Maximize(); err != nil { + astilog.Fatal(errors.Wrap(err, "maximizing window failed")) + } + time.Sleep(time.Second) + if err = w.Unmaximize(); err != nil { + astilog.Fatal(errors.Wrap(err, "unmaximizing window failed")) + } + time.Sleep(time.Second) + if err = w.Minimize(); err != nil { + astilog.Fatal(errors.Wrap(err, "minimizing window failed")) + } + time.Sleep(time.Second) + if err = w.Restore(); err != nil { + astilog.Fatal(errors.Wrap(err, "restoring window failed")) + } + time.Sleep(time.Second) + if err = w.Resize(600, 600); err != nil { + astilog.Fatal(errors.Wrap(err, "resizing window failed")) + } + if err = w.Center(); err != nil { + astilog.Fatal(errors.Wrap(err, "centering window failed")) + } + }() + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/3.webserver_app/main.go b/vendor/github.com/asticode/go-astilectron/examples/3.webserver_app/main.go new file mode 100644 index 0000000..e913bf1 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/3.webserver_app/main.go @@ -0,0 +1,69 @@ +package main + +import ( + "flag" + "net/http" + "os" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Start server + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(` + + + + Hello world + + `)) + }) + go http.ListenAndServe("127.0.0.1:4000", nil) + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow("http://127.0.0.1:4000", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/4.remote_messaging/main.go b/vendor/github.com/asticode/go-astilectron/examples/4.remote_messaging/main.go new file mode 100644 index 0000000..d6fff7f --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/4.remote_messaging/main.go @@ -0,0 +1,91 @@ +package main + +import ( + "flag" + "net/http" + "os" + + "time" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Start server + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + w.Write([]byte(` + + + + Hello world + + + `)) + }) + go http.ListenAndServe("127.0.0.1:4000", nil) + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow("http://127.0.0.1:4000", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + w.On(astilectron.EventNameWindowEventMessage, func(e astilectron.Event) (deleteListener bool) { + var m string + e.Message.Unmarshal(&m) + astilog.Infof("Received message %s", m) + return + }) + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Send message + time.Sleep(time.Second) + if err = w.Send("What's up?"); err != nil { + astilog.Fatal(errors.Wrap(err, "sending message failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/5.single_binary_distribution/main.go b/vendor/github.com/asticode/go-astilectron/examples/5.single_binary_distribution/main.go new file mode 100644 index 0000000..b2237ac --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/5.single_binary_distribution/main.go @@ -0,0 +1,58 @@ +package main + +import ( + "flag" + "os" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +//go:generate go-bindata -pkg $GOPACKAGE -o vendor.go ../vendor/ +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + a.SetProvisioner(astilectron.NewDisembedderProvisioner(Asset, "../vendor/astilectron-v"+astilectron.VersionAstilectron+".zip", "../vendor/electron-v"+astilectron.VersionElectron+".zip")) + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow(p+"/index.html", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/6.screens_and_displays/main.go b/vendor/github.com/asticode/go-astilectron/examples/6.screens_and_displays/main.go new file mode 100644 index 0000000..c218117 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/6.screens_and_displays/main.go @@ -0,0 +1,75 @@ +package main + +import ( + "flag" + "os" + "time" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // Create window in the primary display + var w *astilectron.Window + if w, err = a.NewWindowInDisplay(a.PrimaryDisplay(), p+"/index.html", &astilectron.WindowOptions{ + Icon: astilectron.PtrStr(os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples/6.icons/gopher.png"), + Height: astilectron.PtrInt(600), + Show: astilectron.PtrBool(false), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + if err = w.Center(); err != nil { + astilog.Fatal(errors.Wrap(err, "centering window failed")) + } + if err = w.Show(); err != nil { + astilog.Fatal(errors.Wrap(err, "showing window failed")) + } + + // Move window to the second display if any + var displays = a.Displays() + var display = displays[0] + if len(displays) > 1 { + display = displays[1] + } + time.Sleep(time.Second) + if err = w.MoveInDisplay(display, 50, 50); err != nil { + astilog.Fatal(errors.Wrap(err, "moving window in display failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/7.menus/main.go b/vendor/github.com/asticode/go-astilectron/examples/7.menus/main.go new file mode 100644 index 0000000..e2fc691 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/7.menus/main.go @@ -0,0 +1,171 @@ +package main + +import ( + "flag" + "os" + "time" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // New app menu + // You can do the same thing with a window + var m = a.NewMenu([]*astilectron.MenuItemOptions{ + { + Label: astilectron.PtrStr("Separator"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Normal 1")}, + { + Label: astilectron.PtrStr("Normal 2"), + OnClick: func(e astilectron.Event) (deleteListener bool) { + astilog.Info("Normal 2 item has been clicked") + return + }, + }, + {Type: astilectron.MenuItemTypeSeparator}, + {Label: astilectron.PtrStr("Normal 3")}, + }, + }, + { + Label: astilectron.PtrStr("Checkbox"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Checkbox 1"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 2"), Type: astilectron.MenuItemTypeCheckbox}, + {Label: astilectron.PtrStr("Checkbox 3"), Type: astilectron.MenuItemTypeCheckbox}, + }, + }, + { + Label: astilectron.PtrStr("Radio"), + SubMenu: []*astilectron.MenuItemOptions{ + {Checked: astilectron.PtrBool(true), Label: astilectron.PtrStr("Radio 1"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 2"), Type: astilectron.MenuItemTypeRadio}, + {Label: astilectron.PtrStr("Radio 3"), Type: astilectron.MenuItemTypeRadio}, + }, + }, + { + Label: astilectron.PtrStr("Roles"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Minimize"), Role: astilectron.MenuItemRoleMinimize}, + {Label: astilectron.PtrStr("Close"), Role: astilectron.MenuItemRoleClose}, + }, + }, + }) + + // Retrieve a menu item + var mi *astilectron.MenuItem + if mi, err = m.Item(1, 0); err != nil { + astilog.Fatal(errors.Wrap(err, "fetching menu item 1,0 failed")) + } + + // Add listener manually + // An OnClick listener has already been added in the options directly for another menu item + mi.On(astilectron.EventNameMenuItemEventClicked, func(e astilectron.Event) bool { + astilog.Infof("Menu item has been clicked. 'Checked' status is now %t", *e.MenuItemOptions.Checked) + return false + }) + + // Create the menu + if err = m.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating app menu failed")) + } + + // Create window + var w *astilectron.Window + if w, err = a.NewWindow(p+"/index.html", &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }); err != nil { + astilog.Fatal(errors.Wrap(err, "new window failed")) + } + if err = w.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating window failed")) + } + + // Manipulate menu item + time.Sleep(time.Second) + if mi, err = m.Item(1, 1); err != nil { + astilog.Fatal(errors.Wrap(err, "fetching menu item 1,1 failed")) + } + if err = mi.SetChecked(true); err != nil { + astilog.Fatal(errors.Wrap(err, "setting checked failed")) + } + + // Insert menu item dynamically + time.Sleep(time.Second) + var ni = m.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Inserted"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Inserted 1")}, + {Label: astilectron.PtrStr("Inserted 2")}, + }, + }) + if err = m.Insert(1, ni); err != nil { + astilog.Fatal(errors.Wrap(err, "inserting menu item failed")) + } + + // Fetch sub menu + var s *astilectron.SubMenu + if s, err = m.SubMenu(0); err != nil { + astilog.Fatal(errors.Wrap(err, "fetching sub menu 0 failed")) + } + + // Append menu item dynamically + time.Sleep(time.Second) + ni = s.NewItem(&astilectron.MenuItemOptions{ + Label: astilectron.PtrStr("Appended"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Appended 1")}, + {Label: astilectron.PtrStr("Appended 2")}, + }, + }) + if err = s.Append(ni); err != nil { + astilog.Fatal(errors.Wrap(err, "appending menu item failed")) + } + + // Pop up sub menu + time.Sleep(time.Second) + if err = s.Popup(&astilectron.MenuPopupOptions{PositionOptions: astilectron.PositionOptions{X: astilectron.PtrInt(50), Y: astilectron.PtrInt(50)}}); err != nil { + astilog.Fatal(errors.Wrap(err, "popping up sub menu failed")) + } + + // Close popup + time.Sleep(time.Second) + if err = s.ClosePopup(); err != nil { + astilog.Fatal(errors.Wrap(err, "closing popup sub menu failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/main.go b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/main.go new file mode 100644 index 0000000..768a161 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/main.go @@ -0,0 +1,63 @@ +package main + +import ( + "flag" + "os" + + "encoding/json" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilectron/bootstrap" + "github.com/asticode/go-astilog" +) + +//go:generate go-bindata -pkg $GOPACKAGE -o resources.go resources/... +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Run bootstrap + if err := bootstrap.Run(bootstrap.Options{ + AstilectronOptions: astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + }, + CustomProvision: func(baseDirectoryPath string) error { + astilog.Info("You can run your custom provisioning here!") + return nil + }, + Homepage: "index.html", + MessageHandler: func(w *astilectron.Window, m bootstrap.MessageIn) { + switch m.Name { + case "say": + // Unmarshal + type P struct { + Message string `json:"message"` + } + var p P + if err := json.Unmarshal(m.Payload, &p); err != nil { + astilog.Errorf("Unmarshaling %s failed", m.Payload) + return + } + + // Send + w.Send(bootstrap.MessageOut{Name: "say", Payload: p}) + } + }, + RestoreAssets: RestoreAssets, + WindowOptions: &astilectron.WindowOptions{ + Center: astilectron.PtrBool(true), + Height: astilectron.PtrInt(600), + Width: astilectron.PtrInt(600), + }, + }); err != nil { + astilog.Fatal(err) + } +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources.go b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources.go new file mode 100644 index 0000000..e9e0690 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources.go @@ -0,0 +1,266 @@ +// Code generated by go-bindata. +// sources: +// resources/app/index.html +// resources/app/static/css/base.css +// DO NOT EDIT! + +package main + +import ( + "bytes" + "compress/gzip" + "fmt" + "io" + "io/ioutil" + "os" + "path/filepath" + "strings" + "time" +) + +func bindataRead(data []byte, name string) ([]byte, error) { + gz, err := gzip.NewReader(bytes.NewBuffer(data)) + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + + var buf bytes.Buffer + _, err = io.Copy(&buf, gz) + clErr := gz.Close() + + if err != nil { + return nil, fmt.Errorf("Read %q: %v", name, err) + } + if clErr != nil { + return nil, err + } + + return buf.Bytes(), nil +} + +type asset struct { + bytes []byte + info os.FileInfo +} + +type bindataFileInfo struct { + name string + size int64 + mode os.FileMode + modTime time.Time +} + +func (fi bindataFileInfo) Name() string { + return fi.name +} +func (fi bindataFileInfo) Size() int64 { + return fi.size +} +func (fi bindataFileInfo) Mode() os.FileMode { + return fi.mode +} +func (fi bindataFileInfo) ModTime() time.Time { + return fi.modTime +} +func (fi bindataFileInfo) IsDir() bool { + return false +} +func (fi bindataFileInfo) Sys() interface{} { + return nil +} + +var _resourcesAppIndexHtml = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x6c\x53\xc1\x6e\xdb\x30\x0c\xbd\xe7\x2b\x58\x5d\x9a\x00\x8d\x7d\x1d\x5c\x3b\xc0\xd6\x65\xc0\x80\x01\xdb\xa1\x43\xb1\x23\x23\x31\xb1\x10\x59\x32\x44\xa6\x9d\x11\xe4\xdf\x07\x39\x8e\xe7\x26\xd5\x25\x12\xdf\x7b\xe4\x23\x19\x97\x77\x5f\x7f\x3e\x3d\xff\xf9\xb5\x86\x5a\x1a\xb7\x9a\x95\xe9\x07\x1c\xfa\x5d\xa5\xc8\xab\x14\x20\x34\xab\x19\x00\x40\xd9\x90\x20\xe8\x1a\x23\x93\x54\xea\xf7\xf3\xb7\xe5\x27\x35\x40\xce\xfa\x3d\x44\x72\x95\x62\xe9\x1c\x71\x4d\x24\x0a\xea\x48\xdb\x14\x41\xb1\x3a\xd7\xcc\xf9\x06\x99\x32\xcd\xac\xf2\xd5\xac\xcc\xcf\xa9\xcb\x4d\x30\xdd\x90\xc6\xd8\x57\xd0\x0e\x99\x2b\xf5\x16\xb1\x6d\x29\x0e\x05\xae\x51\x1d\xbc\x90\x97\x09\x7a\x61\xac\x5e\xc8\xe9\xd0\x10\x48\x80\xcf\x2c\xd6\x91\x96\x18\xfc\x3d\xc3\x26\x04\x61\x89\xd8\xde\x95\x79\x22\xde\x48\xc1\x9a\x4a\x69\x67\xf5\x5e\x41\xdf\x46\xa5\xf4\x21\x72\x88\x05\xb4\xc1\x7a\xa1\xf8\x08\x42\x7f\x65\x69\x48\x87\x88\x62\x83\x2f\xe0\xe0\x0d\x45\x67\x3d\xa9\xd5\x53\x92\x42\x4d\xb1\x2f\xbe\x23\x01\x84\x9a\x9c\x0b\x57\xf5\x26\xcf\xe1\x5a\xb2\x8e\xb6\x95\x73\x2c\xcf\xe1\x05\xad\xc0\x36\x44\xc0\xff\x1d\xa4\x9c\x1b\x82\x48\x68\xba\x9e\x67\x82\x3e\x34\xe4\x25\x43\x63\xd6\xaf\xe4\xe5\x87\x65\x21\x4f\x71\x7e\x3f\x91\x2d\x7b\xc1\xfd\x03\x6c\x0f\x5e\x27\xcb\xf3\x05\x1c\x47\x2b\x13\x62\xe6\x7a\xf9\x7c\xe4\x35\xc4\x8c\x3b\x9a\xd2\xd3\xe1\x37\x2b\xba\x86\x0b\x9c\x79\x6c\x6e\x38\xe9\x68\x64\x02\xc5\xd8\xa9\xe2\x06\xeb\x4b\x3b\x8a\x32\x66\x69\xb1\x73\x01\x4d\x76\x29\xfa\xf8\xa1\x66\x13\x09\xf7\xef\xa1\xd3\xf8\x3a\x4d\x44\xe3\x6c\x76\x24\x6b\x47\xe9\xfa\xa5\xfb\x6e\xe6\xc3\x7a\x17\x59\xf0\xfd\x0d\xaa\x8f\xe7\x72\x3d\x1b\x26\x6f\xe6\xc7\xd4\x6a\x71\xee\xe9\x01\x06\xc7\x05\x1c\x07\xcf\x05\xa8\x7e\xdb\xea\x74\x5a\xcc\xde\xdb\x4b\xd6\xca\xfc\xb2\xe4\x32\x3f\xff\xe5\xcb\xbc\xff\xe8\xfe\x05\x00\x00\xff\xff\xa3\xc9\x24\x03\x84\x03\x00\x00") + +func resourcesAppIndexHtmlBytes() ([]byte, error) { + return bindataRead( + _resourcesAppIndexHtml, + "resources/app/index.html", + ) +} + +func resourcesAppIndexHtml() (*asset, error) { + bytes, err := resourcesAppIndexHtmlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "resources/app/index.html", size: 900, mode: os.FileMode(436), modTime: time.Unix(1495886672, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +var _resourcesAppStaticCssBaseCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x74\x8d\x31\x6e\xc3\x30\x0c\x45\x77\x9f\x82\x40\xd1\xad\x2e\x5c\x78\x53\x4f\x43\x8b\xb4\x44\x94\x96\x04\x95\xad\x6b\x14\xbe\x7b\x90\x28\xce\x92\x64\xfc\xef\x93\xff\x45\x5b\xf4\x0d\xa6\x4c\x1b\xfc\x77\x00\x00\x13\xfa\xaf\x50\xf3\x4f\xa2\xde\x67\xcd\xd5\xc1\xcb\x38\x8e\x9f\x97\xee\x00\xf3\x3c\x37\x10\x59\x42\x34\x07\x1f\xc3\xf0\xda\xc8\x82\x35\x48\x72\x30\xb4\x58\x90\x48\x52\xb8\xe5\x55\xc8\xe2\x71\xbf\x77\xdd\xfb\x5a\xb1\x14\xae\x57\x39\xc9\x77\x51\xdc\x1c\x18\x4e\xca\xcf\x1c\x77\x23\x3e\x27\xe3\x64\x0f\x47\x7a\xcf\xaa\xed\xcf\xf8\xcf\x7a\x54\x09\xc9\x81\xe7\x64\x5c\x1b\xff\xe5\x6a\xe2\x51\x8f\x6e\x11\xa2\xb3\x7d\x3f\x05\x00\x00\xff\xff\x50\x5c\x96\x33\x1d\x01\x00\x00") + +func resourcesAppStaticCssBaseCssBytes() ([]byte, error) { + return bindataRead( + _resourcesAppStaticCssBaseCss, + "resources/app/static/css/base.css", + ) +} + +func resourcesAppStaticCssBaseCss() (*asset, error) { + bytes, err := resourcesAppStaticCssBaseCssBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "resources/app/static/css/base.css", size: 285, mode: os.FileMode(436), modTime: time.Unix(1494851874, 0)} + a := &asset{bytes: bytes, info: info} + return a, nil +} + +// Asset loads and returns the asset for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func Asset(name string) ([]byte, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) + } + return a.bytes, nil + } + return nil, fmt.Errorf("Asset %s not found", name) +} + +// MustAsset is like Asset but panics when Asset would return an error. +// It simplifies safe initialization of global variables. +func MustAsset(name string) []byte { + a, err := Asset(name) + if err != nil { + panic("asset: Asset(" + name + "): " + err.Error()) + } + + return a +} + +// AssetInfo loads and returns the asset info for the given name. +// It returns an error if the asset could not be found or +// could not be loaded. +func AssetInfo(name string) (os.FileInfo, error) { + cannonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[cannonicalName]; ok { + a, err := f() + if err != nil { + return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) + } + return a.info, nil + } + return nil, fmt.Errorf("AssetInfo %s not found", name) +} + +// AssetNames returns the names of the assets. +func AssetNames() []string { + names := make([]string, 0, len(_bindata)) + for name := range _bindata { + names = append(names, name) + } + return names +} + +// _bindata is a table, holding each asset generator, mapped to its name. +var _bindata = map[string]func() (*asset, error){ + "resources/app/index.html": resourcesAppIndexHtml, + "resources/app/static/css/base.css": resourcesAppStaticCssBaseCss, +} + +// AssetDir returns the file names below a certain +// directory embedded in the file by go-bindata. +// For example if you run go-bindata on data/... and data contains the +// following hierarchy: +// data/ +// foo.txt +// img/ +// a.png +// b.png +// then AssetDir("data") would return []string{"foo.txt", "img"} +// AssetDir("data/img") would return []string{"a.png", "b.png"} +// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// AssetDir("") will return []string{"data"}. +func AssetDir(name string) ([]string, error) { + node := _bintree + if len(name) != 0 { + cannonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(cannonicalName, "/") + for _, p := range pathList { + node = node.Children[p] + if node == nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + } + } + if node.Func != nil { + return nil, fmt.Errorf("Asset %s not found", name) + } + rv := make([]string, 0, len(node.Children)) + for childName := range node.Children { + rv = append(rv, childName) + } + return rv, nil +} + +type bintree struct { + Func func() (*asset, error) + Children map[string]*bintree +} + +var _bintree = &bintree{nil, map[string]*bintree{ + "resources": &bintree{nil, map[string]*bintree{ + "app": &bintree{nil, map[string]*bintree{ + "index.html": &bintree{resourcesAppIndexHtml, map[string]*bintree{}}, + "static": &bintree{nil, map[string]*bintree{ + "css": &bintree{nil, map[string]*bintree{ + "base.css": &bintree{resourcesAppStaticCssBaseCss, map[string]*bintree{}}, + }}, + }}, + }}, + }}, +}} + +// RestoreAsset restores an asset under the given directory +func RestoreAsset(dir, name string) error { + data, err := Asset(name) + if err != nil { + return err + } + info, err := AssetInfo(name) + if err != nil { + return err + } + err = os.MkdirAll(_filePath(dir, filepath.Dir(name)), os.FileMode(0755)) + if err != nil { + return err + } + err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + if err != nil { + return err + } + err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) + if err != nil { + return err + } + return nil +} + +// RestoreAssets restores an asset under the given directory recursively +func RestoreAssets(dir, name string) error { + children, err := AssetDir(name) + // File + if err != nil { + return RestoreAsset(dir, name) + } + // Dir + for _, child := range children { + err = RestoreAssets(dir, filepath.Join(name, child)) + if err != nil { + return err + } + } + return nil +} + +func _filePath(dir, name string) string { + cannonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/index.html b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/index.html new file mode 100644 index 0000000..d318b76 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/index.html @@ -0,0 +1,30 @@ + + + + + + + +
+
+
Welcome to Astilectron's bootstrap!
+
Click here to get a hello
+
+
+ + + \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/static/css/base.css b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/static/css/base.css new file mode 100644 index 0000000..23da4cf --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/8.bootstrap/resources/app/static/css/base.css @@ -0,0 +1,20 @@ +html, body { + background-color: #333; + color: #fff; + height: 100%; + margin: 0; + padding: 0; + width: 100%; +} + +.wrapper { + display: table; + height: 100%; + width: 100%; +} + +.content { + display: table-cell; + text-align: center; + vertical-align: middle; +} \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/examples/9.tray/main.go b/vendor/github.com/asticode/go-astilectron/examples/9.tray/main.go new file mode 100644 index 0000000..e2b4782 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/9.tray/main.go @@ -0,0 +1,79 @@ +package main + +import ( + "flag" + "os" + + "github.com/asticode/go-astilectron" + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +func main() { + // Parse flags + flag.Parse() + + // Set up logger + astilog.FlagInit() + + // Get base dir path + var err error + var p = os.Getenv("GOPATH") + "/src/github.com/asticode/go-astilectron/examples" + + // Create astilectron + var a *astilectron.Astilectron + if a, err = astilectron.New(astilectron.Options{ + AppName: "Astilectron", + AppIconDefaultPath: p + "/gopher.png", + AppIconDarwinPath: p + "/gopher.icns", + BaseDirectoryPath: p, + }); err != nil { + astilog.Fatal(errors.Wrap(err, "creating new astilectron failed")) + } + defer a.Close() + a.HandleSignals() + + // Start + if err = a.Start(); err != nil { + astilog.Fatal(errors.Wrap(err, "starting failed")) + } + + // New tray + var t = a.NewTray(&astilectron.TrayOptions{ + Image: astilectron.PtrStr(p + "/gopher.png"), + Tooltip: astilectron.PtrStr("Tray's tooltip"), + }) + + // New tray menu + var m = t.NewMenu([]*astilectron.MenuItemOptions{ + { + Label: astilectron.PtrStr("Root 1"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Item 1")}, + {Label: astilectron.PtrStr("Item 2")}, + {Type: astilectron.MenuItemTypeSeparator}, + {Label: astilectron.PtrStr("Item 3")}, + }, + }, + { + Label: astilectron.PtrStr("Root 2"), + SubMenu: []*astilectron.MenuItemOptions{ + {Label: astilectron.PtrStr("Item 1")}, + {Label: astilectron.PtrStr("Item 2")}, + }, + }, + }) + + // Create the menu + if err = m.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating tray menu failed")) + } + + // Create tray + if err = t.Create(); err != nil { + astilog.Fatal(errors.Wrap(err, "creating tray failed")) + } + + // Blocking pattern + a.Wait() +} diff --git a/vendor/github.com/asticode/go-astilectron/examples/gopher.icns b/vendor/github.com/asticode/go-astilectron/examples/gopher.icns new file mode 100644 index 0000000..4913010 Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/examples/gopher.icns differ diff --git a/vendor/github.com/asticode/go-astilectron/examples/gopher.png b/vendor/github.com/asticode/go-astilectron/examples/gopher.png new file mode 100644 index 0000000..0b6a1a6 Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/examples/gopher.png differ diff --git a/vendor/github.com/asticode/go-astilectron/examples/index.html b/vendor/github.com/asticode/go-astilectron/examples/index.html new file mode 100644 index 0000000..57c6581 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/examples/index.html @@ -0,0 +1,7 @@ + + + + + Hello world + + \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/helper.go b/vendor/github.com/asticode/go-astilectron/helper.go new file mode 100644 index 0000000..82d0122 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/helper.go @@ -0,0 +1,161 @@ +package astilectron + +import ( + "bytes" + "context" + "net/http" + "os" + "path/filepath" + + "github.com/asticode/go-astilog" + "github.com/asticode/go-astitools/context" + "github.com/asticode/go-astitools/http" + "github.com/asticode/go-astitools/io" + "github.com/asticode/go-astitools/zip" + "github.com/pkg/errors" +) + +// Download is a cancellable function that downloads a src into a dst using a specific *http.Client and cleans up on +// failed downloads +func Download(ctx context.Context, c *http.Client, src, dst string) (err error) { + // Log + astilog.Debugf("Downloading %s into %s", src, dst) + + // Destination already exists + if _, err = os.Stat(dst); err == nil { + astilog.Debugf("%s already exists, skipping download...", dst) + return + } else if !os.IsNotExist(err) { + return errors.Wrapf(err, "stating %s failed", dst) + } + err = nil + + // Clean up on error + defer func(err *error) { + if *err != nil { + os.Remove(dst) + } + }(&err) + + // Make sure the dst directory exists + if err = os.MkdirAll(filepath.Dir(dst), 0775); err != nil { + return errors.Wrapf(err, "mkdirall %s failed", filepath.Dir(dst)) + } + + // Download + if err = astihttp.Download(ctx, c, src, dst); err != nil { + return errors.Wrap(err, "astihttp.Download failed") + } + return +} + +// Disembed is a cancellable disembed of an src to a dst using a custom Disembedder +func Disembed(ctx context.Context, d Disembedder, src, dst string) (err error) { + // Log + astilog.Debugf("Disembedding %s into %s...", src, dst) + + // No need to disembed + if _, err = os.Stat(dst); err != nil && !os.IsNotExist(err) { + return errors.Wrapf(err, "stating %s failed", dst) + } else if err == nil { + astilog.Debugf("%s already exists, skipping disembed...", dst) + return + } + err = nil + + // Clean up on error + defer func(err *error) { + if *err != nil { + os.Remove(dst) + } + }(&err) + + // Make sure directory exists + var dirPath = filepath.Dir(dst) + astilog.Debugf("Creating %s", dirPath) + if err = os.MkdirAll(dirPath, 0755); err != nil { + return errors.Wrapf(err, "mkdirall %s failed", dirPath) + } + + // Create dst + var f *os.File + astilog.Debugf("Creating %s", dst) + if f, err = os.Create(dst); err != nil { + return errors.Wrapf(err, "creating %s failed", dst) + } + defer f.Close() + + // Disembed + var b []byte + astilog.Debugf("Disembedding %s", src) + if b, err = d(src); err != nil { + return errors.Wrapf(err, "disembedding %s failed", src) + } + + // Copy + astilog.Debugf("Copying disembedded data to %s", dst) + if _, err = astiio.Copy(ctx, bytes.NewReader(b), f); err != nil { + return errors.Wrapf(err, "copying disembedded data into %s failed", dst) + } + return +} + +// Unzip unzips a src into a dst. +// Possible src formats are /path/to/zip.zip or /path/to/zip.zip/internal/path. +func Unzip(ctx context.Context, src, dst string) error { + astilog.Debugf("Unzipping %s into %s", src, dst) + return astizip.Unzip(ctx, src, dst) +} + +// PtrBool transforms a bool into a *bool +func PtrBool(i bool) *bool { + return &i +} + +// PtrFloat transforms a float64 into a *float64 +func PtrFloat(i float64) *float64 { + return &i +} + +// PtrInt transforms an int into an *int +func PtrInt(i int) *int { + return &i +} + +// PtrInt64 transforms an int64 into an *int64 +func PtrInt64(i int64) *int64 { + return &i +} + +// PtrStr transforms a string into a *string +func PtrStr(i string) *string { + return &i +} + +// synchronousFunc executes a function, blocks until it has received a specific event or the canceller has been +// cancelled and returns the corresponding event +func synchronousFunc(c *asticontext.Canceller, l listenable, fn func(), eventNameDone string) (e Event) { + var ctx, cancel = c.NewContext() + defer cancel() + l.On(eventNameDone, func(i Event) (deleteListener bool) { + e = i + cancel() + return true + }) + fn() + <-ctx.Done() + return +} + +// synchronousEvent sends an event, blocks until it has received a specific event or the canceller has been cancelled +// and returns the corresponding event +func synchronousEvent(c *asticontext.Canceller, l listenable, w *writer, i Event, eventNameDone string) (o Event, err error) { + o = synchronousFunc(c, l, func() { + if err = w.write(i); err != nil { + err = errors.Wrapf(err, "writing %+v event failed", i) + return + } + return + }, eventNameDone) + return +} diff --git a/vendor/github.com/asticode/go-astilectron/helper_test.go b/vendor/github.com/asticode/go-astilectron/helper_test.go new file mode 100644 index 0000000..afaacc2 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/helper_test.go @@ -0,0 +1,176 @@ +package astilectron + +import ( + "context" + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "testing" + + "fmt" + + "github.com/asticode/go-astitools/context" + "github.com/pkg/errors" + "github.com/rs/xid" + "github.com/stretchr/testify/assert" +) + +// mockedHandler is a mocked handler +type mockedHandler struct { + e bool +} + +func (h *mockedHandler) readFile(rw http.ResponseWriter, path string) { + var b, err = ioutil.ReadFile(path) + if err != nil { + fmt.Println(err) + rw.WriteHeader(http.StatusInternalServerError) + return + } + rw.Write(b) +} + +// ServeHTTP implements the http.Handler interface +func (h *mockedHandler) ServeHTTP(rw http.ResponseWriter, r *http.Request) { + if h.e { + rw.WriteHeader(http.StatusInternalServerError) + return + } + switch r.URL.Path { + case "/provisioner/astilectron": + h.readFile(rw, "testdata/provisioner/astilectron/astilectron.zip") + case "/provisioner/electron/darwin": + h.readFile(rw, "testdata/provisioner/electron/darwin/electron.zip") + case "/provisioner/electron/linux": + h.readFile(rw, "testdata/provisioner/electron/linux/electron.zip") + case "/provisioner/electron/windows": + h.readFile(rw, "testdata/provisioner/electron/windows/electron.zip") + default: + rw.Write([]byte("body")) + } +} + +func mockedTempPath() string { + return "testdata/tmp/" + xid.New().String() +} + +func TestDownload(t *testing.T) { + // Init + var mh = &mockedHandler{e: true} + var s = httptest.NewServer(mh) + var dst = mockedTempPath() + + // Test failed download + err := Download(context.Background(), &http.Client{}, s.URL, dst) + assert.Contains(t, err.Error(), "returned 500 status code") + _, err = os.Stat(dst) + assert.True(t, os.IsNotExist(err)) + + // Test successful download + mh.e = false + err = Download(context.Background(), &http.Client{}, s.URL, dst) + assert.NoError(t, err) + defer os.Remove(dst) + b, err := ioutil.ReadFile(dst) + assert.NoError(t, err) + assert.Equal(t, "body", string(b)) +} + +// mockedDisembedder is a mocked disembedder +func mockedDisembedder(src string) ([]byte, error) { + switch src { + case "astilectron": + return ioutil.ReadFile("testdata/provisioner/astilectron/astilectron.zip") + case "electron/linux": + return ioutil.ReadFile("testdata/provisioner/electron/linux/electron.zip") + case "test": + return []byte("body"), nil + default: + return []byte{}, errors.New("invalid") + } +} + +func TestDisembed(t *testing.T) { + // Init + var dst = mockedTempPath() + + // Test failed disembed + err := Disembed(context.Background(), mockedDisembedder, "invalid", dst) + assert.EqualError(t, err, "disembedding invalid failed: invalid") + + // Test successful disembed + err = Disembed(context.Background(), mockedDisembedder, "test", dst) + assert.NoError(t, err) + defer os.Remove(dst) + b, err := ioutil.ReadFile(dst) + assert.NoError(t, err) + assert.Equal(t, "body", string(b)) +} + +func TestPtr(t *testing.T) { + assert.Equal(t, true, *PtrBool(true)) + assert.Equal(t, 1, *PtrInt(1)) + assert.Equal(t, "1", *PtrStr("1")) +} + +// mockedListenable is a mocked listenable +type mockedListenable struct { + d *Dispatcher + id string +} + +// On implements the listenable interface +func (m *mockedListenable) On(eventName string, l Listener) { + m.d.addListener(m.id, eventName, l) +} + +func TestSynchronousFunc(t *testing.T) { + // Init + var d = newDispatcher() + defer d.close() + go d.start() + var c = asticontext.NewCanceller() + var l = &mockedListenable{d: d, id: "1"} + var done bool + l.On("done", func(e Event) bool { + done = true + return false + }) + + // Test canceller cancel + var _ = synchronousFunc(c, l, func() { c.Cancel() }, "done") + assert.False(t, done) + + // Test done event + c = asticontext.NewCanceller() + var ed = Event{Name: "done", TargetID: "1"} + var e = synchronousFunc(c, l, func() { d.Dispatch(ed) }, "done") + assert.True(t, done) + assert.Equal(t, ed, e) +} + +func TestSynchronousEvent(t *testing.T) { + // Init + var d = newDispatcher() + defer d.close() + go d.start() + var ed = Event{Name: "done", TargetID: "1"} + var mw = &mockedWriter{fn: func() { d.Dispatch(ed) }} + var w = newWriter(mw) + var c = asticontext.NewCanceller() + var l = &mockedListenable{d: d, id: "1"} + var done bool + l.On("done", func(e Event) bool { + done = true + return false + }) + var ei = Event{Name: "order", TargetID: "1"} + + // Test successful synchronous event + var e, err = synchronousEvent(c, l, w, ei, "done") + assert.NoError(t, err) + assert.True(t, done) + assert.Equal(t, ed, e) + assert.Equal(t, []string{"{\"name\":\"order\",\"targetID\":\"1\"}\n"}, mw.w) +} diff --git a/vendor/github.com/asticode/go-astilectron/identifier.go b/vendor/github.com/asticode/go-astilectron/identifier.go new file mode 100644 index 0000000..944b941 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/identifier.go @@ -0,0 +1,25 @@ +package astilectron + +import ( + "strconv" + "sync" +) + +// identifier is in charge of delivering a unique identifier +type identifier struct { + i int + m *sync.Mutex +} + +// newIdentifier creates a new identifier +func newIdentifier() *identifier { + return &identifier{m: &sync.Mutex{}} +} + +// new returns a new unique identifier +func (i *identifier) new() string { + i.m.Lock() + defer i.m.Unlock() + i.i++ + return strconv.Itoa(i.i) +} diff --git a/vendor/github.com/asticode/go-astilectron/identifier_test.go b/vendor/github.com/asticode/go-astilectron/identifier_test.go new file mode 100644 index 0000000..b72c39c --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/identifier_test.go @@ -0,0 +1,14 @@ +package astilectron + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestIdentifier(t *testing.T) { + var i = newIdentifier() + assert.Equal(t, "1", i.new()) + assert.Equal(t, "2", i.new()) + assert.Equal(t, "3", i.new()) +} diff --git a/vendor/github.com/asticode/go-astilectron/menu.go b/vendor/github.com/asticode/go-astilectron/menu.go new file mode 100644 index 0000000..3d56a44 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/menu.go @@ -0,0 +1,57 @@ +package astilectron + +import ( + "context" + + "github.com/asticode/go-astitools/context" +) + +// Menu event names +const ( + EventNameMenuCmdCreate = "menu.cmd.create" + EventNameMenuCmdDestroy = "menu.cmd.destroy" + EventNameMenuEventCreated = "menu.event.created" + EventNameMenuEventDestroyed = "menu.event.destroyed" +) + +// Menu represents a menu +// https://github.com/electron/electron/blob/v1.6.5/docs/api/menu.md +type Menu struct { + *subMenu +} + +// newMenu creates a new menu +func newMenu(parentCtx context.Context, root interface{}, items []*MenuItemOptions, c *asticontext.Canceller, d *Dispatcher, i *identifier, w *writer) (m *Menu) { + // Init + m = &Menu{newSubMenu(parentCtx, root, items, c, d, i, w)} + + // Make sure the menu's context is cancelled once the destroyed event is received + m.On(EventNameMenuEventDestroyed, func(e Event) (deleteListener bool) { + m.cancel() + return true + }) + return +} + +// toEvent returns the menu in the proper event format +func (m *Menu) toEvent() *EventMenu { + return &EventMenu{m.subMenu.toEvent()} +} + +// Create creates the menu +func (m *Menu) Create() (err error) { + if err = m.isActionable(); err != nil { + return + } + _, err = synchronousEvent(m.c, m, m.w, Event{Name: EventNameMenuCmdCreate, TargetID: m.id, Menu: m.toEvent()}, EventNameMenuEventCreated) + return +} + +// Destroy destroys the menu +func (m *Menu) Destroy() (err error) { + if err = m.isActionable(); err != nil { + return + } + _, err = synchronousEvent(m.c, m, m.w, Event{Name: EventNameMenuCmdDestroy, TargetID: m.id, Menu: m.toEvent()}, EventNameMenuEventDestroyed) + return +} diff --git a/vendor/github.com/asticode/go-astilectron/menu_item.go b/vendor/github.com/asticode/go-astilectron/menu_item.go new file mode 100644 index 0000000..c3030e4 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/menu_item.go @@ -0,0 +1,171 @@ +package astilectron + +import ( + "context" + + "github.com/asticode/go-astitools/context" +) + +// Menu item event names +const ( + EventNameMenuItemCmdSetChecked = "menu.item.cmd.set.checked" + EventNameMenuItemCmdSetEnabled = "menu.item.cmd.set.enabled" + EventNameMenuItemCmdSetLabel = "menu.item.cmd.set.label" + EventNameMenuItemCmdSetVisible = "menu.item.cmd.set.visible" + EventNameMenuItemEventCheckedSet = "menu.item.event.checked.set" + EventNameMenuItemEventClicked = "menu.item.event.clicked" + EventNameMenuItemEventEnabledSet = "menu.item.event.enabled.set" + EventNameMenuItemEventLabelSet = "menu.item.event.label.set" + EventNameMenuItemEventVisibleSet = "menu.item.event.visible.set" +) + +// Menu item roles +var ( + // All + MenuItemRoleClose = PtrStr("close") + MenuItemRoleCopy = PtrStr("copy") + MenuItemRoleCut = PtrStr("cut") + MenuItemRoleDelete = PtrStr("delete") + MenuItemRoleEditMenu = PtrStr("editMenu") + MenuItemRoleForceReload = PtrStr("forcereload") + MenuItemRoleMinimize = PtrStr("minimize") + MenuItemRolePaste = PtrStr("paste") + MenuItemRolePasteAndMatchStyle = PtrStr("pasteandmatchstyle") + MenuItemRoleQuit = PtrStr("quit") + MenuItemRoleRedo = PtrStr("redo") + MenuItemRoleReload = PtrStr("reload") + MenuItemRoleResetZoom = PtrStr("resetzoom") + MenuItemRoleSelectAll = PtrStr("selectall") + MenuItemRoleToggleDevTools = PtrStr("toggledevtools") + MenuItemRoleToggleFullScreen = PtrStr("togglefullscreen") + MenuItemRoleUndo = PtrStr("undo") + MenuItemRoleWindowMenu = PtrStr("windowMenu") + MenuItemRoleZoomOut = PtrStr("zoomout") + MenuItemRoleZoomIn = PtrStr("zoomin") + + // MacOSX + MenuItemRoleAbout = PtrStr("about") + MenuItemRoleHide = PtrStr("hide") + MenuItemRoleHideOthers = PtrStr("hideothers") + MenuItemRoleUnhide = PtrStr("unhide") + MenuItemRoleStartSpeaking = PtrStr("startspeaking") + MenuItemRoleStopSpeaking = PtrStr("stopspeaking") + MenuItemRoleFront = PtrStr("front") + MenuItemRoleZoom = PtrStr("zoom") + MenuItemRoleWindow = PtrStr("window") + MenuItemRoleHelp = PtrStr("help") + MenuItemRoleServices = PtrStr("services") +) + +// Menu item types +var ( + MenuItemTypeNormal = PtrStr("normal") + MenuItemTypeSeparator = PtrStr("separator") + MenuItemTypeCheckbox = PtrStr("checkbox") + MenuItemTypeRadio = PtrStr("radio") +) + +// MenuItem represents a menu item +type MenuItem struct { + *object + o *MenuItemOptions + // We must store the root since everytime we update a sub menu we need to set the root menu all over again in electron + root interface{} + s *SubMenu +} + +// MenuItemOptions represents menu item options +// We must use pointers since GO doesn't handle optional fields whereas NodeJS does. Use PtrBool, PtrInt or PtrStr +// to fill the struct +// https://github.com/electron/electron/blob/v1.6.5/docs/api/menu-item.md +type MenuItemOptions struct { + // TODO Accelerator *string `json:"label,omitempty"` + Checked *bool `json:"checked,omitempty"` + Enabled *bool `json:"enabled,omitempty"` + Icon *string `json:"icon,omitempty"` + Label *string `json:"label,omitempty"` + OnClick Listener `json:"-"` + Position *string `json:"position,omitempty"` + Role *string `json:"role,omitempty"` + SubLabel *string `json:"sublabel,omitempty"` + SubMenu []*MenuItemOptions `json:"-"` + Type *string `json:"type,omitempty"` + Visible *bool `json:"visible,omitempty"` +} + +// newMenu creates a new menu item +func newMenuItem(parentCtx context.Context, root interface{}, o *MenuItemOptions, c *asticontext.Canceller, d *Dispatcher, i *identifier, w *writer) (m *MenuItem) { + m = &MenuItem{ + o: o, + object: newObject(parentCtx, c, d, i, w), + root: root, + } + if o.OnClick != nil { + m.On(EventNameMenuItemEventClicked, o.OnClick) + } + if len(o.SubMenu) > 0 { + m.s = &SubMenu{newSubMenu(parentCtx, root, o.SubMenu, c, d, i, w)} + } + return +} + +// toEvent returns the menu item in the proper event format +func (i *MenuItem) toEvent() (e *EventMenuItem) { + e = &EventMenuItem{ + ID: i.id, + Options: i.o, + RootID: mainTargetID, + } + if i.s != nil { + e.SubMenu = i.s.toEvent() + } + if w, ok := i.root.(*Window); ok { + e.RootID = w.id + } + return +} + +// SubMenu returns the menu item sub menu +func (i *MenuItem) SubMenu() *SubMenu { + return i.s +} + +// SetChecked sets the checked attribute +func (i *MenuItem) SetChecked(checked bool) (err error) { + if err = i.isActionable(); err != nil { + return + } + i.o.Checked = PtrBool(checked) + _, err = synchronousEvent(i.c, i, i.w, Event{Name: EventNameMenuItemCmdSetChecked, TargetID: i.id, MenuItemOptions: &MenuItemOptions{Checked: i.o.Checked}}, EventNameMenuItemEventCheckedSet) + return +} + +// SetEnabled sets the enabled attribute +func (i *MenuItem) SetEnabled(enabled bool) (err error) { + if err = i.isActionable(); err != nil { + return + } + i.o.Enabled = PtrBool(enabled) + _, err = synchronousEvent(i.c, i, i.w, Event{Name: EventNameMenuItemCmdSetEnabled, TargetID: i.id, MenuItemOptions: &MenuItemOptions{Enabled: i.o.Enabled}}, EventNameMenuItemEventEnabledSet) + return +} + +// SetLabel sets the label attribute +func (i *MenuItem) SetLabel(label string) (err error) { + if err = i.isActionable(); err != nil { + return + } + i.o.Label = PtrStr(label) + _, err = synchronousEvent(i.c, i, i.w, Event{Name: EventNameMenuItemCmdSetLabel, TargetID: i.id, MenuItemOptions: &MenuItemOptions{Label: i.o.Label}}, EventNameMenuItemEventLabelSet) + return +} + +// SetVisible sets the visible attribute +func (i *MenuItem) SetVisible(visible bool) (err error) { + if err = i.isActionable(); err != nil { + return + } + i.o.Visible = PtrBool(visible) + _, err = synchronousEvent(i.c, i, i.w, Event{Name: EventNameMenuItemCmdSetVisible, TargetID: i.id, MenuItemOptions: &MenuItemOptions{Visible: i.o.Visible}}, EventNameMenuItemEventVisibleSet) + return +} diff --git a/vendor/github.com/asticode/go-astilectron/menu_item_test.go b/vendor/github.com/asticode/go-astilectron/menu_item_test.go new file mode 100644 index 0000000..16ac769 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/menu_item_test.go @@ -0,0 +1,35 @@ +package astilectron + +import ( + "context" + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestMenuItem_ToEvent(t *testing.T) { + var o = &MenuItemOptions{Label: PtrStr("1"), SubMenu: []*MenuItemOptions{{Label: PtrStr("2")}, {Label: PtrStr("3")}}} + var mi = newMenuItem(context.Background(), nil, o, nil, nil, newIdentifier(), nil) + e := mi.toEvent() + assert.Equal(t, &EventMenuItem{ID: "1", RootID: "main", Options: o, SubMenu: &EventSubMenu{ID: "2", Items: []*EventMenuItem{{ID: "3", Options: &MenuItemOptions{Label: PtrStr("2")}, RootID: "main"}, {ID: "4", Options: &MenuItemOptions{Label: PtrStr("3")}, RootID: "main"}}, RootID: "main"}}, e) + assert.Len(t, mi.SubMenu().items, 2) +} + +func TestMenuItem_Actions(t *testing.T) { + // Init + var c = asticontext.NewCanceller() + var d = newDispatcher() + go d.start() + var i = newIdentifier() + var wrt = &mockedWriter{} + var w = newWriter(wrt) + var mi = newMenuItem(context.Background(), nil, &MenuItemOptions{Label: PtrStr("label")}, c, d, i, w) + + // Actions + testObjectAction(t, func() error { return mi.SetChecked(true) }, mi.object, wrt, "{\"name\":\""+EventNameMenuItemCmdSetChecked+"\",\"targetID\":\""+mi.id+"\",\"menuItemOptions\":{\"checked\":true}}\n", EventNameMenuItemEventCheckedSet) + testObjectAction(t, func() error { return mi.SetEnabled(true) }, mi.object, wrt, "{\"name\":\""+EventNameMenuItemCmdSetEnabled+"\",\"targetID\":\""+mi.id+"\",\"menuItemOptions\":{\"enabled\":true}}\n", EventNameMenuItemEventEnabledSet) + testObjectAction(t, func() error { return mi.SetLabel("test") }, mi.object, wrt, "{\"name\":\""+EventNameMenuItemCmdSetLabel+"\",\"targetID\":\""+mi.id+"\",\"menuItemOptions\":{\"label\":\"test\"}}\n", EventNameMenuItemEventLabelSet) + testObjectAction(t, func() error { return mi.SetVisible(true) }, mi.object, wrt, "{\"name\":\""+EventNameMenuItemCmdSetVisible+"\",\"targetID\":\""+mi.id+"\",\"menuItemOptions\":{\"visible\":true}}\n", EventNameMenuItemEventVisibleSet) + +} diff --git a/vendor/github.com/asticode/go-astilectron/menu_test.go b/vendor/github.com/asticode/go-astilectron/menu_test.go new file mode 100644 index 0000000..f3d551b --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/menu_test.go @@ -0,0 +1,31 @@ +package astilectron + +import ( + "context" + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestMenu_ToEvent(t *testing.T) { + var m = newMenu(nil, nil, []*MenuItemOptions{{Label: PtrStr("1")}, {Label: PtrStr("2")}}, asticontext.NewCanceller(), newDispatcher(), newIdentifier(), nil) + e := m.toEvent() + assert.Equal(t, &EventMenu{EventSubMenu: &EventSubMenu{ID: "1", Items: []*EventMenuItem{{ID: "2", Options: &MenuItemOptions{Label: PtrStr("1")}, RootID: "main"}, {ID: "3", Options: &MenuItemOptions{Label: PtrStr("2")}, RootID: "main"}}, RootID: "main"}}, e) +} + +func TestMenu_Actions(t *testing.T) { + // Init + var c = asticontext.NewCanceller() + var d = newDispatcher() + go d.start() + var i = newIdentifier() + var wrt = &mockedWriter{} + var w = newWriter(wrt) + var m = newMenu(context.Background(), nil, []*MenuItemOptions{{Label: PtrStr("1")}, {Label: PtrStr("2")}}, c, d, i, w) + + // Actions + testObjectAction(t, func() error { return m.Create() }, m.object, wrt, "{\"name\":\""+EventNameMenuCmdCreate+"\",\"targetID\":\""+m.id+"\",\"menu\":{\"id\":\"1\",\"items\":[{\"id\":\"2\",\"options\":{\"label\":\"1\"},\"rootId\":\"main\"},{\"id\":\"3\",\"options\":{\"label\":\"2\"},\"rootId\":\"main\"}],\"rootId\":\"main\"}}\n", EventNameMenuEventCreated) + testObjectAction(t, func() error { return m.Destroy() }, m.object, wrt, "{\"name\":\""+EventNameMenuCmdDestroy+"\",\"targetID\":\""+m.id+"\",\"menu\":{\"id\":\"1\",\"items\":[{\"id\":\"2\",\"options\":{\"label\":\"1\"},\"rootId\":\"main\"},{\"id\":\"3\",\"options\":{\"label\":\"2\"},\"rootId\":\"main\"}],\"rootId\":\"main\"}}\n", EventNameMenuEventDestroyed) + assert.True(t, m.IsDestroyed()) +} diff --git a/vendor/github.com/asticode/go-astilectron/object.go b/vendor/github.com/asticode/go-astilectron/object.go new file mode 100644 index 0000000..87d13cb --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/object.go @@ -0,0 +1,62 @@ +package astilectron + +import ( + "context" + "errors" + + "github.com/asticode/go-astitools/context" +) + +// Object errors +var ( + ErrCancellerCancelled = errors.New("canceller.cancelled") + ErrObjectDestroyed = errors.New("object.destroyed") +) + +// object represents a base object +type object struct { + cancel context.CancelFunc + ctx context.Context + c *asticontext.Canceller + d *Dispatcher + i *identifier + id string + w *writer +} + +// newObject returns a new base object +func newObject(parentCtx context.Context, c *asticontext.Canceller, d *Dispatcher, i *identifier, w *writer) (o *object) { + o = &object{ + c: c, + d: d, + i: i, + id: i.new(), + w: w, + } + if parentCtx != nil { + o.ctx, o.cancel = context.WithCancel(parentCtx) + } else { + o.ctx, o.cancel = c.NewContext() + } + return +} + +// isActionable checks whether any type of action is allowed on the window +func (o *object) isActionable() error { + if o.c.Cancelled() { + return ErrCancellerCancelled + } else if o.IsDestroyed() { + return ErrObjectDestroyed + } + return nil +} + +// IsDestroyed checks whether the window has been destroyed +func (o *object) IsDestroyed() bool { + return o.ctx.Err() != nil +} + +// On implements the Listenable interface +func (o *object) On(eventName string, l Listener) { + o.d.addListener(o.id, eventName, l) +} diff --git a/vendor/github.com/asticode/go-astilectron/object_test.go b/vendor/github.com/asticode/go-astilectron/object_test.go new file mode 100644 index 0000000..f892490 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/object_test.go @@ -0,0 +1,40 @@ +package astilectron + +import ( + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestObject_IsActionable(t *testing.T) { + // Init + var c = asticontext.NewCanceller() + var o = newObject(nil, c, nil, newIdentifier(), nil) + + // Test success + assert.NoError(t, o.isActionable()) + + // Test object destroyed + o.cancel() + assert.EqualError(t, o.isActionable(), ErrObjectDestroyed.Error()) + + // Test canceller cancelled + c.Cancel() + assert.EqualError(t, o.isActionable(), ErrCancellerCancelled.Error()) +} + +func testObjectAction(t *testing.T, fn func() error, o *object, wrt *mockedWriter, sentEvent, eventNameDone string) { + wrt.w = []string{} + o.c.Cancel() + err := fn() + assert.EqualError(t, err, ErrCancellerCancelled.Error()) + o.c = asticontext.NewCanceller() + o.ctx, o.cancel = o.c.NewContext() + if eventNameDone != "" { + wrt.fn = func() { o.d.Dispatch(Event{Name: eventNameDone, TargetID: o.id}) } + } + err = fn() + assert.NoError(t, err) + assert.Equal(t, []string{sentEvent}, wrt.w) +} diff --git a/vendor/github.com/asticode/go-astilectron/paths.go b/vendor/github.com/asticode/go-astilectron/paths.go new file mode 100644 index 0000000..1e9df53 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/paths.go @@ -0,0 +1,202 @@ +package astilectron + +import ( + "fmt" + "os" + "path/filepath" + "strings" + + "github.com/pkg/errors" +) + +// Paths represents the set of paths needed by Astilectron +type Paths struct { + appExecutable string + appIconDarwinSrc string + astilectronApplication string + astilectronDirectory string + astilectronDownloadSrc string + astilectronDownloadDst string + astilectronUnzipSrc string + baseDirectory string + electronDirectory string + electronDownloadSrc string + electronDownloadDst string + electronUnzipSrc string + provisionStatus string + vendorDirectory string +} + +// newPaths creates new paths +func newPaths(os, arch string, o Options) (p *Paths, err error) { + // Init base directory path + p = &Paths{} + if err = p.initBaseDirectory(o.BaseDirectoryPath); err != nil { + err = errors.Wrap(err, "initializing base directory failed") + return + } + + // Init other paths + //!\\ Order matters + p.appIconDarwinSrc = o.AppIconDarwinPath + p.vendorDirectory = filepath.Join(p.baseDirectory, "vendor") + p.provisionStatus = filepath.Join(p.vendorDirectory, "status.json") + p.initAstilectronDirectory() + p.astilectronApplication = filepath.Join(p.astilectronDirectory, "main.js") + p.astilectronDownloadSrc = AstilectronDownloadSrc() + p.astilectronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("astilectron-v%s.zip", VersionAstilectron)) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, fmt.Sprintf("astilectron-%s", VersionAstilectron)) + p.electronDirectory = filepath.Join(p.vendorDirectory, "electron") + p.electronDownloadSrc = ElectronDownloadSrc(os, arch) + // TODO Split folders for each OS/ARCH couples? + p.electronDownloadDst = filepath.Join(p.vendorDirectory, fmt.Sprintf("electron-v%s.zip", VersionElectron)) + p.electronUnzipSrc = p.electronDownloadDst + p.initAppExecutable(os, o.AppName) + return +} + +// initBaseDirectory initializes the base directory path +func (p *Paths) initBaseDirectory(baseDirectoryPath string) (err error) { + // No path specified in the options + p.baseDirectory = baseDirectoryPath + if len(p.baseDirectory) == 0 { + // Retrieve executable path + var ep string + if ep, err = os.Executable(); err != nil { + err = errors.Wrap(err, "retrieving executable path failed") + return + } + p.baseDirectory = filepath.Dir(ep) + } + + // We need the absolute path + if p.baseDirectory, err = filepath.Abs(p.baseDirectory); err != nil { + err = errors.Wrap(err, "computing absolute path failed") + return + } + return +} + +// initAstilectronDirectory initializes the astilectron directory path +func (p *Paths) initAstilectronDirectory() { + if len(*astilectronDirectoryPath) > 0 { + p.astilectronDirectory = *astilectronDirectoryPath + } else { + p.astilectronDirectory = filepath.Join(p.vendorDirectory, "astilectron") + } +} + +// AstilectronDownloadSrc returns the download URL of the (currently platform-independant) astilectron zipfile +func AstilectronDownloadSrc() string { + return fmt.Sprintf("https://github.com/asticode/astilectron/archive/v%s.zip", VersionAstilectron) +} + +// ElectronDownloadSrc returns the download URL of the platform-dependant electron zipfile +func ElectronDownloadSrc(os, arch string) string { + // Get OS name + var o string + switch strings.ToLower(os) { + case "darwin": + o = "darwin" + case "linux": + o = "linux" + case "windows": + o = "win32" + } + + // Get arch name + var a = "ia32" + if strings.ToLower(arch) == "amd64" || o == "darwin" { + a = "x64" + } else if strings.ToLower(arch) == "arm" && o == "linux" { + a = "armv7l" + } + + // Return url + return fmt.Sprintf("https://github.com/electron/electron/releases/download/v%s/electron-v%s-%s-%s.zip", VersionElectron, VersionElectron, o, a) +} + +// initAppExecutable initializes the app executable path +func (p *Paths) initAppExecutable(os, appName string) { + switch os { + case "darwin": + if appName == "" { + appName = "Electron" + } + p.appExecutable = filepath.Join(p.electronDirectory, appName+".app", "Contents", "MacOS", appName) + case "linux": + p.appExecutable = filepath.Join(p.electronDirectory, "electron") + case "windows": + p.appExecutable = filepath.Join(p.electronDirectory, "electron.exe") + } +} + +// AppExecutable returns the app executable path +func (p *Paths) AppExecutable() string { + return p.appExecutable +} + +// AppIconDarwinSrc returns the darwin app icon path +func (p *Paths) AppIconDarwinSrc() string { + return p.appIconDarwinSrc +} + +// BaseDirectory returns the base directory path +func (p *Paths) BaseDirectory() string { + return p.baseDirectory +} + +// AstilectronApplication returns the astilectron application path +func (p *Paths) AstilectronApplication() string { + return p.astilectronApplication +} + +// AstilectronDirectory returns the astilectron directory path +func (p *Paths) AstilectronDirectory() string { + return p.astilectronDirectory +} + +// AstilectronDownloadDst returns the astilectron download destination path +func (p *Paths) AstilectronDownloadDst() string { + return p.astilectronDownloadDst +} + +// AstilectronDownloadSrc returns the astilectron download source path +func (p *Paths) AstilectronDownloadSrc() string { + return p.astilectronDownloadSrc +} + +// AstilectronUnzipSrc returns the astilectron unzip source path +func (p *Paths) AstilectronUnzipSrc() string { + return p.astilectronUnzipSrc +} + +// ElectronDirectory returns the electron directory path +func (p *Paths) ElectronDirectory() string { + return p.electronDirectory +} + +// ElectronDownloadDst returns the electron download destination path +func (p *Paths) ElectronDownloadDst() string { + return p.electronDownloadDst +} + +// ElectronDownloadSrc returns the electron download source path +func (p *Paths) ElectronDownloadSrc() string { + return p.electronDownloadSrc +} + +// ElectronUnzipSrc returns the electron unzip source path +func (p *Paths) ElectronUnzipSrc() string { + return p.electronUnzipSrc +} + +// ProvisionStatus returns the provision status path +func (p *Paths) ProvisionStatus() string { + return p.provisionStatus +} + +// VendorDirectory returns the vendor directory path +func (p *Paths) VendorDirectory() string { + return p.vendorDirectory +} diff --git a/vendor/github.com/asticode/go-astilectron/paths_test.go b/vendor/github.com/asticode/go-astilectron/paths_test.go new file mode 100644 index 0000000..bafb699 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/paths_test.go @@ -0,0 +1,54 @@ +package astilectron + +import ( + "testing" + + "os" + + "path/filepath" + + "github.com/stretchr/testify/assert" +) + +func TestPaths(t *testing.T) { + ep, err := os.Executable() + ep = filepath.Dir(ep) + assert.NoError(t, err) + p, err := newPaths("linux", "amd64", Options{}) + assert.NoError(t, err) + assert.Equal(t, ep+"/vendor/electron/electron", p.AppExecutable()) + assert.Equal(t, "", p.AppIconDarwinSrc()) + assert.Equal(t, ep, p.BaseDirectory()) + assert.Equal(t, ep+"/vendor/astilectron/main.js", p.AstilectronApplication()) + assert.Equal(t, ep+"/vendor/astilectron", p.AstilectronDirectory()) + assert.Equal(t, ep+"/vendor/astilectron-v"+VersionAstilectron+".zip", p.AstilectronDownloadDst()) + assert.Equal(t, "https://github.com/asticode/astilectron/archive/v"+VersionAstilectron+".zip", p.AstilectronDownloadSrc()) + assert.Equal(t, ep+"/vendor/astilectron-v"+VersionAstilectron+".zip/astilectron-"+VersionAstilectron, p.AstilectronUnzipSrc()) + assert.Equal(t, ep+"/vendor/electron", p.ElectronDirectory()) + assert.Equal(t, ep+"/vendor/electron-v"+VersionElectron+".zip", p.ElectronDownloadDst()) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-x64.zip", p.ElectronDownloadSrc()) + assert.Equal(t, ep+"/vendor/electron-v"+VersionElectron+".zip", p.ElectronUnzipSrc()) + assert.Equal(t, ep+"/vendor/status.json", p.ProvisionStatus()) + assert.Equal(t, ep+"/vendor", p.VendorDirectory()) + p, err = newPaths("linux", "", Options{}) + assert.NoError(t, err) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-ia32.zip", p.ElectronDownloadSrc()) + p, err = newPaths("linux", "arm", Options{}) + assert.NoError(t, err) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-linux-armv7l.zip", p.ElectronDownloadSrc()) + p, err = newPaths("darwin", "", Options{BaseDirectoryPath: "/path/to/base/directory", AppIconDarwinPath: "/path/to/darwin/icon"}) + assert.NoError(t, err) + assert.Equal(t, "/path/to/base/directory/vendor/electron/Electron.app/Contents/MacOS/Electron", p.AppExecutable()) + assert.Equal(t, "/path/to/darwin/icon", p.AppIconDarwinSrc()) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-darwin-x64.zip", p.ElectronDownloadSrc()) + p, err = newPaths("darwin", "amd64", Options{AppName: "Test app", BaseDirectoryPath: "/path/to/base/directory"}) + assert.NoError(t, err) + assert.Equal(t, "/path/to/base/directory/vendor/electron/Test app.app/Contents/MacOS/Test app", p.AppExecutable()) + p, err = newPaths("windows", "amd64", Options{}) + assert.NoError(t, err) + assert.Equal(t, ep+"/vendor/electron/electron.exe", p.AppExecutable()) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-win32-x64.zip", p.ElectronDownloadSrc()) + p, err = newPaths("windows", "", Options{}) + assert.NoError(t, err) + assert.Equal(t, "https://github.com/electron/electron/releases/download/v"+VersionElectron+"/electron-v"+VersionElectron+"-win32-ia32.zip", p.ElectronDownloadSrc()) +} diff --git a/vendor/github.com/asticode/go-astilectron/provisioner.go b/vendor/github.com/asticode/go-astilectron/provisioner.go new file mode 100644 index 0000000..4f1e105 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/provisioner.go @@ -0,0 +1,355 @@ +package astilectron + +import ( + "context" + "encoding/json" + "io/ioutil" + "net/http" + "os" + "path/filepath" + "regexp" + + "github.com/asticode/go-astilog" + "github.com/asticode/go-astitools/os" + "github.com/asticode/go-astitools/regexp" + "github.com/pkg/errors" +) + +// Provision event names +const ( + EventNameProvisionAstilectronAlreadyProvisioned = "provision.astilectron.already.provisioned" + EventNameProvisionAstilectronFinished = "provision.astilectron.finished" + EventNameProvisionAstilectronMoved = "provision.astilectron.moved" + EventNameProvisionAstilectronUnzipped = "provision.astilectron.unzipped" + EventNameProvisionElectronAlreadyProvisioned = "provision.electron.already.provisioned" + EventNameProvisionElectronFinished = "provision.electron.finished" + EventNameProvisionElectronMoved = "provision.electron.moved" + EventNameProvisionElectronUnzipped = "provision.electron.unzipped" +) + +// Provision event names mapping keys +const ( + provisionEventNamesMappingKeyAlreadyProvisioned = "already.provisioned" + provisionEventNamesMappingKeyFinished = "finished" + provisionEventNamesMappingKeyMoved = "moved" + provisionEventNamesMappingKeyUnzipped = "unzipped" +) + +// Var +var ( + defaultHTTPClient = &http.Client{} + provisionEventNamesMapping = map[string]map[string]string{ + "Astilectron": { + provisionEventNamesMappingKeyAlreadyProvisioned: EventNameProvisionAstilectronAlreadyProvisioned, + provisionEventNamesMappingKeyFinished: EventNameProvisionAstilectronFinished, + provisionEventNamesMappingKeyMoved: EventNameProvisionAstilectronMoved, + provisionEventNamesMappingKeyUnzipped: EventNameProvisionAstilectronUnzipped, + }, + "Electron": { + provisionEventNamesMappingKeyAlreadyProvisioned: EventNameProvisionElectronAlreadyProvisioned, + provisionEventNamesMappingKeyFinished: EventNameProvisionElectronFinished, + provisionEventNamesMappingKeyMoved: EventNameProvisionElectronMoved, + provisionEventNamesMappingKeyUnzipped: EventNameProvisionElectronUnzipped, + }, + } + regexpDarwinInfoPList = regexp.MustCompile("Electron") +) + +// Provisioner represents an object capable of provisioning Astilectron +type Provisioner interface { + Provision(ctx context.Context, d Dispatcher, appName, os string, p Paths) error +} + +// mover is a function that moves a package +type mover func(ctx context.Context, p Paths) error + +// DefaultProvisioner represents the default provisioner +var DefaultProvisioner = &defaultProvisioner{ + moverAstilectron: func(ctx context.Context, p Paths) (err error) { + if err = Download(ctx, defaultHTTPClient, p.AstilectronDownloadSrc(), p.AstilectronDownloadDst()); err != nil { + return errors.Wrapf(err, "downloading %s into %s failed", p.AstilectronDownloadSrc(), p.AstilectronDownloadDst()) + } + return + }, + moverElectron: func(ctx context.Context, p Paths) (err error) { + if err = Download(ctx, defaultHTTPClient, p.ElectronDownloadSrc(), p.ElectronDownloadDst()); err != nil { + return errors.Wrapf(err, "downloading %s into %s failed", p.ElectronDownloadSrc(), p.ElectronDownloadDst()) + } + return + }, +} + +// defaultProvisioner represents the default provisioner +type defaultProvisioner struct { + moverAstilectron mover + moverElectron mover +} + +// Provision implements the provisioner interface +// TODO Package app using electron instead of downloading Electron + Astilectron separately +func (p *defaultProvisioner) Provision(ctx context.Context, d Dispatcher, appName, os string, paths Paths) (err error) { + // Retrieve provision status + var s ProvisionStatus + if s, err = p.ProvisionStatus(paths); err != nil { + err = errors.Wrap(err, "retrieving provisioning status failed") + return + } + defer p.updateProvisionStatus(paths, &s) + + // Provision astilectron + if err = p.provisionAstilectron(ctx, d, paths, s); err != nil { + err = errors.Wrap(err, "provisioning astilectron failed") + return + } + s.Astilectron = &ProvisionStatusPackage{Version: VersionAstilectron} + + // Provision electron + if err = p.provisionElectron(ctx, d, paths, s, appName, os); err != nil { + err = errors.Wrap(err, "provisioning electron failed") + return + } + s.Electron = &ProvisionStatusPackage{Version: VersionElectron} + return +} + +// ProvisionStatus represents the provision status +type ProvisionStatus struct { + Astilectron *ProvisionStatusPackage `json:"astilectron,omitempty"` + Electron *ProvisionStatusPackage `json:"electron,omitempty"` +} + +// ProvisionStatusPackage represents the provision status of a package +type ProvisionStatusPackage struct { + Version string `json:"version"` +} + +// ProvisionStatus returns the provision status +func (p *defaultProvisioner) ProvisionStatus(paths Paths) (s ProvisionStatus, err error) { + // Open the file + var f *os.File + if f, err = os.Open(paths.ProvisionStatus()); err != nil { + if !os.IsNotExist(err) { + err = errors.Wrapf(err, "opening file %s failed", paths.ProvisionStatus()) + } else { + err = nil + } + return + } + defer f.Close() + + // Unmarshal + if err = json.NewDecoder(f).Decode(&s); err != nil { + err = errors.Wrapf(err, "json decoding from %s failed", paths.ProvisionStatus()) + return + } + return +} + +// ProvisionStatus updates the provision status +func (p *defaultProvisioner) updateProvisionStatus(paths Paths, s *ProvisionStatus) (err error) { + // Create the file + var f *os.File + if f, err = os.Create(paths.ProvisionStatus()); err != nil { + err = errors.Wrapf(err, "creating file %s failed", paths.ProvisionStatus()) + return + } + defer f.Close() + + // Marshal + if err = json.NewEncoder(f).Encode(s); err != nil { + err = errors.Wrapf(err, "json encoding into %s failed", paths.ProvisionStatus()) + return + } + return +} + +// provisionAstilectron provisions astilectron +func (p *defaultProvisioner) provisionAstilectron(ctx context.Context, d Dispatcher, paths Paths, s ProvisionStatus) error { + return p.provisionPackage(ctx, d, paths, s.Astilectron, p.moverAstilectron, "Astilectron", VersionAstilectron, paths.AstilectronUnzipSrc(), paths.AstilectronDirectory(), nil) +} + +// provisionElectron provisions electron +func (p *defaultProvisioner) provisionElectron(ctx context.Context, d Dispatcher, paths Paths, s ProvisionStatus, appName, os string) error { + return p.provisionPackage(ctx, d, paths, s.Electron, p.moverElectron, "Electron", VersionElectron, paths.ElectronUnzipSrc(), paths.ElectronDirectory(), func() (err error) { + switch os { + case "darwin": + if err = p.provisionElectronFinishDarwin(appName, paths); err != nil { + return errors.Wrap(err, "finishing provisioning electron for darwin systems failed") + } + default: + astilog.Debug("System doesn't require finshing provisioning electron, moving on...") + } + return + }) +} + +// provisionPackage provisions a package +func (p *defaultProvisioner) provisionPackage(ctx context.Context, d Dispatcher, paths Paths, s *ProvisionStatusPackage, m mover, name, version, pathUnzipSrc, pathDirectory string, finish func() error) (err error) { + // Package has already been provisioned + if s != nil && s.Version == version { + astilog.Debugf("%s has already been provisioned to version %s, moving on...", name, version) + d.Dispatch(Event{Name: provisionEventNamesMapping[name][provisionEventNamesMappingKeyAlreadyProvisioned], TargetID: mainTargetID}) + return + } + astilog.Debugf("Provisioning %s...", name) + + // Remove previous install + astilog.Debugf("Removing directory %s", pathDirectory) + if err = os.RemoveAll(pathDirectory); err != nil && !os.IsNotExist(err) { + return errors.Wrapf(err, "removing %s failed", pathDirectory) + } + + // Move + if err = m(ctx, paths); err != nil { + return errors.Wrapf(err, "moving %s failed", name) + } + d.Dispatch(Event{Name: provisionEventNamesMapping[name][provisionEventNamesMappingKeyMoved], TargetID: mainTargetID}) + + // Create directory + astilog.Debugf("Creating directory %s", pathDirectory) + if err = os.MkdirAll(pathDirectory, 0755); err != nil { + return errors.Wrapf(err, "mkdirall %s failed", pathDirectory) + } + + // Unzip + if err = Unzip(ctx, pathUnzipSrc, pathDirectory); err != nil { + return errors.Wrapf(err, "unzipping %s into %s failed", pathUnzipSrc, pathDirectory) + } + d.Dispatch(Event{Name: provisionEventNamesMapping[name][provisionEventNamesMappingKeyUnzipped], TargetID: mainTargetID}) + + // Finish + if finish != nil { + if err = finish(); err != nil { + return errors.Wrap(err, "finishing failed") + } + } + d.Dispatch(Event{Name: provisionEventNamesMapping[name][provisionEventNamesMappingKeyFinished], TargetID: mainTargetID}) + return +} + +// provisionElectronFinishDarwin finishes provisioning electron for Darwin systems +// https://github.com/electron/electron/blob/v1.6.5/docs/tutorial/application-distribution.md#macos +func (p *defaultProvisioner) provisionElectronFinishDarwin(appName string, paths Paths) (err error) { + // Log + astilog.Debug("Finishing provisioning electron for darwin system") + + // Custom app icon + if paths.AppIconDarwinSrc() != "" { + if err = p.provisionElectronFinishDarwinCopy(paths); err != nil { + return errors.Wrap(err, "copying for darwin system finish failed") + } + } + + // Custom app name + if appName != "" { + // Replace + if err = p.provisionElectronFinishDarwinReplace(appName, paths); err != nil { + return errors.Wrap(err, "replacing for darwin system finish failed") + } + + // Rename + if err = p.provisionElectronFinishDarwinRename(appName, paths); err != nil { + return errors.Wrap(err, "renaming for darwin system finish failed") + } + } + return +} + +// provisionElectronFinishDarwinCopy copies the proper darwin files +func (p *defaultProvisioner) provisionElectronFinishDarwinCopy(paths Paths) (err error) { + // Icon + var src, dst = paths.AppIconDarwinSrc(), filepath.Join(paths.ElectronDirectory(), "Electron.app", "Contents", "Resources", "electron.icns") + if src != "" { + astilog.Debugf("Copying %s to %s", src, dst) + if err = astios.Copy(context.Background(), src, dst); err != nil { + return errors.Wrapf(err, "copying %s to %s failed", src, dst) + } + } + return +} + +// provisionElectronFinishDarwinReplace makes the proper replacements in the proper darwin files +func (p *defaultProvisioner) provisionElectronFinishDarwinReplace(appName string, paths Paths) (err error) { + for _, p := range []string{ + filepath.Join(paths.electronDirectory, "Electron.app", "Contents", "Info.plist"), + filepath.Join(paths.electronDirectory, "Electron.app", "Contents", "Frameworks", "Electron Helper EH.app", "Contents", "Info.plist"), + filepath.Join(paths.electronDirectory, "Electron.app", "Contents", "Frameworks", "Electron Helper NP.app", "Contents", "Info.plist"), + filepath.Join(paths.electronDirectory, "Electron.app", "Contents", "Frameworks", "Electron Helper.app", "Contents", "Info.plist"), + } { + // Log + astilog.Debugf("Replacing in %s", p) + + // Read file + var b []byte + if b, err = ioutil.ReadFile(p); err != nil { + return errors.Wrapf(err, "reading %s failed", p) + } + + // Open and truncate file + var f *os.File + if f, err = os.Create(p); err != nil { + return errors.Wrapf(err, "creating %s failed", p) + } + defer f.Close() + + // Replace + astiregexp.ReplaceAll(regexpDarwinInfoPList, &b, []byte(""+appName)) + + // Write + if _, err = f.Write(b); err != nil { + return errors.Wrapf(err, "writing to %s failed", p) + } + } + return +} + +// rename represents a rename +type rename struct { + src, dst string +} + +// provisionElectronFinishDarwinRename renames the proper darwin folders +func (p *defaultProvisioner) provisionElectronFinishDarwinRename(appName string, paths Paths) (err error) { + var appDirectory = filepath.Join(paths.electronDirectory, appName+".app") + var frameworksDirectory = filepath.Join(appDirectory, "Contents", "Frameworks") + var helperEH = filepath.Join(frameworksDirectory, appName+" Helper EH.app") + var helperNP = filepath.Join(frameworksDirectory, appName+" Helper NP.app") + var helper = filepath.Join(frameworksDirectory, appName+" Helper.app") + for _, r := range []rename{ + {src: filepath.Join(paths.electronDirectory, "Electron.app"), dst: appDirectory}, + {src: filepath.Join(appDirectory, "Contents", "MacOS", "Electron"), dst: paths.AppExecutable()}, + {src: filepath.Join(frameworksDirectory, "Electron Helper EH.app"), dst: helperEH}, + {src: filepath.Join(helperEH, "Contents", "MacOS", "Electron Helper EH"), dst: filepath.Join(helperEH, "Contents", "MacOS", appName+" Helper EH")}, + {src: filepath.Join(frameworksDirectory, "Electron Helper NP.app"), dst: filepath.Join(helperNP)}, + {src: filepath.Join(helperNP, "Contents", "MacOS", "Electron Helper NP"), dst: filepath.Join(helperNP, "Contents", "MacOS", appName+" Helper NP")}, + {src: filepath.Join(frameworksDirectory, "Electron Helper.app"), dst: filepath.Join(helper)}, + {src: filepath.Join(helper, "Contents", "MacOS", "Electron Helper"), dst: filepath.Join(helper, "Contents", "MacOS", appName+" Helper")}, + } { + astilog.Debugf("Renaming %s into %s", r.src, r.dst) + if err = os.Rename(r.src, r.dst); err != nil { + return errors.Wrapf(err, "renaming %s into %s failed", r.src, r.dst) + } + } + return +} + +// Disembedder is a functions that allows to disembed data from a path +type Disembedder func(src string) ([]byte, error) + +// NewDisembedderProvisioner creates a provisioner that can provision based on embedded data +func NewDisembedderProvisioner(d Disembedder, pathAstilectron, pathElectron string) Provisioner { + return &defaultProvisioner{ + moverAstilectron: func(ctx context.Context, p Paths) (err error) { + if err = Disembed(ctx, d, pathAstilectron, p.AstilectronDownloadDst()); err != nil { + return errors.Wrapf(err, "disembedding %s into %s failed", pathAstilectron, p.AstilectronDownloadDst()) + } + return + }, + moverElectron: func(ctx context.Context, p Paths) (err error) { + if err = Disembed(ctx, d, pathElectron, p.ElectronDownloadDst()); err != nil { + return errors.Wrapf(err, "disembedding %s into %s failed", pathElectron, p.ElectronDownloadDst()) + } + return + }, + } +} diff --git a/vendor/github.com/asticode/go-astilectron/provisioner_test.go b/vendor/github.com/asticode/go-astilectron/provisioner_test.go new file mode 100644 index 0000000..b41fff1 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/provisioner_test.go @@ -0,0 +1,139 @@ +package astilectron + +import ( + "context" + "io/ioutil" + "net/http/httptest" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" +) + +func testProvisionerSuccessful(t *testing.T, p Paths) { + _, err := os.Stat(p.AstilectronApplication()) + assert.NoError(t, err) + _, err = os.Stat(p.AppExecutable()) + assert.NoError(t, err) + b, err := ioutil.ReadFile(p.ProvisionStatus()) + assert.NoError(t, err) + assert.Equal(t, "{\"astilectron\":{\"version\":\""+VersionAstilectron+"\"},\"electron\":{\"version\":\""+VersionElectron+"\"}}\n", string(b)) +} + +func TestDefaultProvisioner(t *testing.T) { + // Init + var o = Options{BaseDirectoryPath: mockedTempPath()} + defer os.RemoveAll(o.BaseDirectoryPath) + var mh = &mockedHandler{} + var s = httptest.NewServer(mh) + var d = newDispatcher() + defer d.close() + go d.start() + + // Test linux + p, err := newPaths("linux", "amd64", o) + assert.NoError(t, err) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, "astilectron") + p.astilectronDownloadSrc = s.URL + "/provisioner/astilectron" + p.electronDownloadSrc = s.URL + "/provisioner/electron/linux" + err = DefaultProvisioner.Provision(context.Background(), *d, "", "linux", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) + + // Test nothing happens if provision status is up to date + mh.e = true + os.Remove(p.AstilectronDownloadDst()) + os.Remove(p.ElectronDownloadDst()) + err = DefaultProvisioner.Provision(context.Background(), *d, "", "linux", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) + + // Test windows + mh.e = false + os.RemoveAll(o.BaseDirectoryPath) + p, err = newPaths("windows", "amd64", o) + assert.NoError(t, err) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, "astilectron") + p.astilectronDownloadSrc = s.URL + "/provisioner/astilectron" + p.electronDownloadSrc = s.URL + "/provisioner/electron/windows" + err = DefaultProvisioner.Provision(context.Background(), *d, "", "windows", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) + + // Test darwin without custom app name + icon + os.RemoveAll(o.BaseDirectoryPath) + p, err = newPaths("darwin", "amd64", o) + assert.NoError(t, err) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, "astilectron") + p.astilectronDownloadSrc = s.URL + "/provisioner/astilectron" + p.electronDownloadSrc = s.URL + "/provisioner/electron/darwin" + err = DefaultProvisioner.Provision(context.Background(), *d, "", "darwin", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) + + // Test darwin with custom app name + icon + os.RemoveAll(o.BaseDirectoryPath) + o.AppName = "Test app" + o.AppIconDarwinPath = "testdata/provisioner/icon.icns" + p, err = newPaths("darwin", "amd64", o) + assert.NoError(t, err) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, "astilectron") + p.astilectronDownloadSrc = s.URL + "/provisioner/astilectron" + p.electronDownloadSrc = s.URL + "/provisioner/electron/darwin" + err = DefaultProvisioner.Provision(context.Background(), *d, o.AppName, "darwin", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) + // Rename + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "MacOS", o.AppName)) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper EH.app")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper EH.app", "Contents", "MacOS", o.AppName+" Helper EH")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper NP.app")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper NP.app", "Contents", "MacOS", o.AppName+" Helper NP")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper.app")) + assert.NoError(t, err) + _, err = os.Stat(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper.app", "Contents", "MacOS", o.AppName+" Helper")) + assert.NoError(t, err) + // Icon + b, err := ioutil.ReadFile(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Resources", "electron.icns")) + assert.NoError(t, err) + assert.Equal(t, "body", string(b)) + // Replace + b, err = ioutil.ReadFile(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Info.plist")) + assert.NoError(t, err) + assert.Equal(t, ""+o.AppName+" Test", string(b)) + b, err = ioutil.ReadFile(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper EH.app", "Contents", "Info.plist")) + assert.NoError(t, err) + assert.Equal(t, ""+o.AppName+" Test", string(b)) + b, err = ioutil.ReadFile(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper NP.app", "Contents", "Info.plist")) + assert.NoError(t, err) + assert.Equal(t, ""+o.AppName+" Test", string(b)) + b, err = ioutil.ReadFile(filepath.Join(p.ElectronDirectory(), o.AppName+".app", "Contents", "Frameworks", o.AppName+" Helper.app", "Contents", "Info.plist")) + assert.NoError(t, err) + assert.Equal(t, ""+o.AppName+" Test", string(b)) +} + +func TestNewDisembedderProvisioner(t *testing.T) { + // Init + var o = Options{BaseDirectoryPath: mockedTempPath()} + defer os.RemoveAll(o.BaseDirectoryPath) + var d = newDispatcher() + defer d.close() + go d.start() + p, err := newPaths("linux", "amd64", o) + assert.NoError(t, err) + p.astilectronUnzipSrc = filepath.Join(p.astilectronDownloadDst, "astilectron") + pvb := NewDisembedderProvisioner(mockedDisembedder, "astilectron", "electron/linux") + + // Test provision + err = pvb.Provision(context.Background(), *d, "", "linux", *p) + assert.NoError(t, err) + testProvisionerSuccessful(t, *p) +} diff --git a/vendor/github.com/asticode/go-astilectron/reader.go b/vendor/github.com/asticode/go-astilectron/reader.go new file mode 100644 index 0000000..2b3b54c --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/reader.go @@ -0,0 +1,67 @@ +package astilectron + +import ( + "bufio" + "bytes" + "io" + + "encoding/json" + + "strings" + + "github.com/asticode/go-astilog" +) + +// reader represents an object capable of reading in the TCP server +type reader struct { + d *Dispatcher + r io.ReadCloser +} + +// newReader creates a new reader +func newReader(d *Dispatcher, r io.ReadCloser) *reader { + return &reader{ + d: d, + r: r, + } +} + +// close closes the reader properly +func (r *reader) close() error { + return r.r.Close() +} + +// isEOFErr checks whether the error is an EOF error +// wsarecv is the error sent on Windows when the client closes its connection +func (r *reader) isEOFErr(err error) bool { + return err == io.EOF || strings.Contains(strings.ToLower(err.Error()), "wsarecv:") +} + +// read reads from stdout +func (r *reader) read() { + var reader = bufio.NewReader(r.r) + for { + // Read next line + var b []byte + var err error + if b, err = reader.ReadBytes('\n'); err != nil { + if !r.isEOFErr(err) { + astilog.Errorf("%s while reading", err) + continue + } + return + } + b = bytes.TrimSpace(b) + astilog.Debugf("Astilectron says: %s", b) + + // Unmarshal + var e Event + if err = json.Unmarshal(b, &e); err != nil { + astilog.Errorf("%s while unmarshaling %s", err, b) + continue + } + + // Dispatch + r.d.Dispatch(e) + } +} diff --git a/vendor/github.com/asticode/go-astilectron/reader_test.go b/vendor/github.com/asticode/go-astilectron/reader_test.go new file mode 100644 index 0000000..9a2487f --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/reader_test.go @@ -0,0 +1,63 @@ +package astilectron + +import ( + "bytes" + "io" + "sync" + "testing" + + "io/ioutil" + + "github.com/pkg/errors" + "github.com/stretchr/testify/assert" +) + +// mockedReader represents a mocked reader +type mockedReader struct { + *bytes.Buffer + c bool +} + +// Close implements the io.Close interface +func (r *mockedReader) Close() error { + r.c = true + return nil +} + +func TestReader_IsEOFErr(t *testing.T) { + var r = newReader(&Dispatcher{}, ioutil.NopCloser(&bytes.Buffer{})) + assert.True(t, r.isEOFErr(io.EOF)) + assert.True(t, r.isEOFErr(errors.New("read tcp 127.0.0.1:56093->127.0.0.1:56092: wsarecv: An existing connection was forcibly closed by the remote host."))) + assert.False(t, r.isEOFErr(errors.New("random error"))) +} + +func TestReader(t *testing.T) { + // Init + var mr = &mockedReader{Buffer: bytes.NewBuffer([]byte("{\"name\":\"1\",\"targetId\":\"1\"}\n{\n{\"name\":\"2\",\"targetId\":\"2\"}\n"))} + var d = newDispatcher() + defer d.close() + go d.start() + var wg = &sync.WaitGroup{} + var dispatched = []int{} + d.addListener("1", "1", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 1) + wg.Done() + return + }) + d.addListener("2", "2", func(e Event) (deleteListener bool) { + dispatched = append(dispatched, 2) + wg.Done() + return + }) + wg.Add(2) + var r = newReader(d, mr) + + // Test read + go r.read() + wg.Wait() + assert.Equal(t, []int{1, 2}, dispatched) + + // Test close + r.close() + assert.True(t, mr.c) +} diff --git a/vendor/github.com/asticode/go-astilectron/rectangle.go b/vendor/github.com/asticode/go-astilectron/rectangle.go new file mode 100644 index 0000000..79f9f38 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/rectangle.go @@ -0,0 +1,35 @@ +package astilectron + +// Position represents a position +type Position struct { + X, Y int +} + +// PositionOptions represents position options +type PositionOptions struct { + X *int `json:"x,omitempty"` + Y *int `json:"y,omitempty"` +} + +// Size represents a size +type Size struct { + Height, Width int +} + +// SizeOptions represents size options +type SizeOptions struct { + Height *int `json:"height,omitempty"` + Width *int `json:"width,omitempty"` +} + +// Rectangle represents a rectangle +type Rectangle struct { + Position + Size +} + +// RectangleOptions represents rectangle options +type RectangleOptions struct { + PositionOptions + SizeOptions +} diff --git a/vendor/github.com/asticode/go-astilectron/sub_menu.go b/vendor/github.com/asticode/go-astilectron/sub_menu.go new file mode 100644 index 0000000..3224162 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/sub_menu.go @@ -0,0 +1,178 @@ +package astilectron + +import ( + "context" + "fmt" + "strconv" + "strings" + + "github.com/asticode/go-astitools/context" +) + +// Sub menu event names +const ( + EventNameSubMenuCmdAppend = "sub.menu.cmd.append" + EventNameSubMenuCmdClosePopup = "sub.menu.cmd.close.popup" + EventNameSubMenuCmdInsert = "sub.menu.cmd.insert" + EventNameSubMenuCmdPopup = "sub.menu.cmd.popup" + EventNameSubMenuEventAppended = "sub.menu.event.appended" + EventNameSubMenuEventClosedPopup = "sub.menu.event.closed.popup" + EventNameSubMenuEventInserted = "sub.menu.event.inserted" + EventNameSubMenuEventPoppedUp = "sub.menu.event.popped.up" +) + +// SubMenu represents an exported sub menu +type SubMenu struct { + *subMenu +} + +// subMenu represents an internal sub menu +// We use this internal subMenu in SubMenu and Menu since all functions of subMenu should be in SubMenu and Menu but +// some functions of Menu shouldn't be in SubMenu and vice versa +type subMenu struct { + *object + items []*MenuItem + // We must store the root since everytime we update a sub menu we need to set the root menu all over again in electron + root interface{} +} + +// newSubMenu creates a new sub menu +func newSubMenu(parentCtx context.Context, root interface{}, items []*MenuItemOptions, c *asticontext.Canceller, d *Dispatcher, i *identifier, w *writer) *subMenu { + // Init + var m = &subMenu{ + object: newObject(parentCtx, c, d, i, w), + root: root, + } + + // Parse items + for _, o := range items { + m.items = append(m.items, newMenuItem(m.ctx, root, o, c, d, i, w)) + } + return m +} + +// toEvent returns the sub menu in the proper event format +func (m *subMenu) toEvent() (e *EventSubMenu) { + e = &EventSubMenu{ + ID: m.id, + RootID: mainTargetID, + } + if w, ok := m.root.(*Window); ok { + e.RootID = w.id + } + for _, i := range m.items { + e.Items = append(e.Items, i.toEvent()) + } + return +} + +// NewItem returns a new menu item +func (m *subMenu) NewItem(o *MenuItemOptions) *MenuItem { + return newMenuItem(m.ctx, m.root, o, m.c, m.d, m.i, m.w) +} + +// SubMenu returns the sub menu at the specified indexes +func (m *subMenu) SubMenu(indexes ...int) (s *SubMenu, err error) { + var is = m + var processedIndexes = []string{} + for _, index := range indexes { + if index >= len(is.items) { + return nil, fmt.Errorf("Submenu at %s has %d items, invalid index %d", strings.Join(processedIndexes, ":"), len(is.items), index) + } + s = is.items[index].s + processedIndexes = append(processedIndexes, strconv.Itoa(index)) + if s == nil { + return nil, fmt.Errorf("No submenu at %s", strings.Join(processedIndexes, ":")) + } + is = s.subMenu + } + return +} + +// Item returns the item at the specified indexes +func (m *subMenu) Item(indexes ...int) (mi *MenuItem, err error) { + var is = m + if len(indexes) > 1 { + var s *SubMenu + if s, err = m.SubMenu(indexes[:len(indexes)-1]...); err != nil { + return + } + is = s.subMenu + } + var index = indexes[len(indexes)-1] + if index >= len(is.items) { + return nil, fmt.Errorf("Submenu has %d items, invalid index %d", len(is.items), index) + } + mi = is.items[index] + return +} + +// Append appends a menu item into the sub menu +func (m *subMenu) Append(i *MenuItem) (err error) { + if err = m.isActionable(); err != nil { + return + } + if _, err = synchronousEvent(m.c, m, m.w, Event{Name: EventNameSubMenuCmdAppend, TargetID: m.id, MenuItem: i.toEvent()}, EventNameSubMenuEventAppended); err != nil { + return + } + m.items = append(m.items, i) + return +} + +// Insert inserts a menu item to the position of the sub menu +func (m *subMenu) Insert(pos int, i *MenuItem) (err error) { + if err = m.isActionable(); err != nil { + return + } + if pos > len(m.items) { + err = fmt.Errorf("Submenu has %d items, position %d is invalid", len(m.items), pos) + return + } + if _, err = synchronousEvent(m.c, m, m.w, Event{Name: EventNameSubMenuCmdInsert, TargetID: m.id, MenuItem: i.toEvent(), MenuItemPosition: PtrInt(pos)}, EventNameSubMenuEventInserted); err != nil { + return + } + m.items = append(m.items[:pos], append([]*MenuItem{i}, m.items[pos:]...)...) + return +} + +// MenuPopupOptions represents menu pop options +type MenuPopupOptions struct { + PositionOptions + PositioningItem *int `json:"positioningItem,omitempty"` +} + +// Popup pops up the menu as a context menu in the focused window +func (m *subMenu) Popup(o *MenuPopupOptions) error { + return m.PopupInWindow(nil, o) +} + +// PopupInWindow pops up the menu as a context menu in the specified window +func (m *subMenu) PopupInWindow(w *Window, o *MenuPopupOptions) (err error) { + if err = m.isActionable(); err != nil { + return + } + var e = Event{Name: EventNameSubMenuCmdPopup, TargetID: m.id, MenuPopupOptions: o} + if w != nil { + e.WindowID = w.id + } + _, err = synchronousEvent(m.c, m, m.w, e, EventNameSubMenuEventPoppedUp) + return +} + +// ClosePopup close the context menu in the focused window +func (m *subMenu) ClosePopup() error { + return m.ClosePopupInWindow(nil) +} + +// ClosePopupInWindow close the context menu in the specified window +func (m *subMenu) ClosePopupInWindow(w *Window) (err error) { + if err = m.isActionable(); err != nil { + return + } + var e = Event{Name: EventNameSubMenuCmdClosePopup, TargetID: m.id} + if w != nil { + e.WindowID = w.id + } + _, err = synchronousEvent(m.c, m, m.w, e, EventNameSubMenuEventClosedPopup) + return +} diff --git a/vendor/github.com/asticode/go-astilectron/sub_menu_test.go b/vendor/github.com/asticode/go-astilectron/sub_menu_test.go new file mode 100644 index 0000000..87f204f --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/sub_menu_test.go @@ -0,0 +1,114 @@ +package astilectron + +import ( + "context" + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestSubMenu_ToEvent(t *testing.T) { + // App sub menu + var s = newSubMenu(nil, nil, []*MenuItemOptions{{Label: PtrStr("1")}, {Label: PtrStr("2")}}, asticontext.NewCanceller(), newDispatcher(), newIdentifier(), nil) + e := s.toEvent() + assert.Equal(t, &EventSubMenu{ID: "1", Items: []*EventMenuItem{{ID: "2", Options: &MenuItemOptions{Label: PtrStr("1")}, RootID: "main"}, {ID: "3", Options: &MenuItemOptions{Label: PtrStr("2")}, RootID: "main"}}, RootID: "main"}, e) + + // Window sub menu + var i = newIdentifier() + w, err := newWindow(Options{}, "http://test.com", &WindowOptions{}, asticontext.NewCanceller(), newDispatcher(), i, nil) + assert.NoError(t, err) + s = newSubMenu(nil, w, []*MenuItemOptions{{Label: PtrStr("1")}, {Label: PtrStr("2")}}, asticontext.NewCanceller(), newDispatcher(), i, nil) + e = s.toEvent() + assert.Equal(t, &EventSubMenu{ID: "2", Items: []*EventMenuItem{{ID: "3", Options: &MenuItemOptions{Label: PtrStr("1")}, RootID: "1"}, {ID: "4", Options: &MenuItemOptions{Label: PtrStr("2")}, RootID: "1"}}, RootID: "1"}, e) +} + +func TestSubMenu_SubMenu(t *testing.T) { + var o = []*MenuItemOptions{ + {}, + {SubMenu: []*MenuItemOptions{ + {}, + {SubMenu: []*MenuItemOptions{ + {}, + {}, + {}, + }}, + {}, + }}, + {}, + } + var m = newMenu(context.Background(), nil, o, nil, newDispatcher(), newIdentifier(), nil) + s, err := m.SubMenu(0, 1) + assert.EqualError(t, err, "No submenu at 0") + s, err = m.SubMenu(1) + assert.NoError(t, err) + assert.Len(t, s.items, 3) + s, err = m.SubMenu(1, 0) + assert.EqualError(t, err, "No submenu at 1:0") + s, err = m.SubMenu(1, 1) + assert.NoError(t, err) + assert.Len(t, s.items, 3) + s, err = m.SubMenu(1, 3) + assert.EqualError(t, err, "Submenu at 1 has 3 items, invalid index 3") +} + +func TestSubMenu_Item(t *testing.T) { + var o = []*MenuItemOptions{ + {Label: PtrStr("1")}, + {Label: PtrStr("2"), SubMenu: []*MenuItemOptions{ + {Label: PtrStr("2-1")}, + {Label: PtrStr("2-2"), SubMenu: []*MenuItemOptions{ + {Label: PtrStr("2-2-1")}, + {Label: PtrStr("2-2-2")}, + {Label: PtrStr("2-2-3")}, + }}, + {Label: PtrStr("2-3")}, + }}, + {Label: PtrStr("3")}, + } + var m = newMenu(context.Background(), nil, o, nil, newDispatcher(), newIdentifier(), nil) + i, err := m.Item(3) + assert.EqualError(t, err, "Submenu has 3 items, invalid index 3") + i, err = m.Item(0) + assert.NoError(t, err) + assert.Equal(t, "1", *i.o.Label) + i, err = m.Item(1, 3) + assert.EqualError(t, err, "Submenu has 3 items, invalid index 3") + i, err = m.Item(1, 2) + assert.NoError(t, err) + assert.Equal(t, "2-3", *i.o.Label) + i, err = m.Item(1, 1, 0) + assert.NoError(t, err) + assert.Equal(t, "2-2-1", *i.o.Label) +} + +func TestSubMenu_Actions(t *testing.T) { + // Init + var c = asticontext.NewCanceller() + var d = newDispatcher() + go d.start() + var i = newIdentifier() + var wrt = &mockedWriter{} + var w = newWriter(wrt) + var s = newSubMenu(nil, nil, []*MenuItemOptions{{Label: PtrStr("0")}}, c, d, i, w) + + // Actions + var mi = s.NewItem(&MenuItemOptions{Label: PtrStr("1")}) + testObjectAction(t, func() error { return s.Append(mi) }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdAppend+"\",\"targetID\":\""+s.id+"\",\"menuItem\":{\"id\":\"3\",\"options\":{\"label\":\"1\"},\"rootId\":\"main\"}}\n", EventNameSubMenuEventAppended) + assert.Len(t, s.items, 2) + assert.Equal(t, "1", *s.items[1].o.Label) + mi = s.NewItem(&MenuItemOptions{Label: PtrStr("2")}) + err := s.Insert(3, mi) + assert.EqualError(t, err, "Submenu has 2 items, position 3 is invalid") + testObjectAction(t, func() error { return s.Insert(1, mi) }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdInsert+"\",\"targetID\":\""+s.id+"\",\"menuItem\":{\"id\":\"4\",\"options\":{\"label\":\"2\"},\"rootId\":\"main\"},\"menuItemPosition\":1}\n", EventNameSubMenuEventInserted) + assert.Len(t, s.items, 3) + assert.Equal(t, "2", *s.items[1].o.Label) + testObjectAction(t, func() error { + return s.Popup(&MenuPopupOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}}) + }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdPopup+"\",\"targetID\":\""+s.id+"\",\"menuPopupOptions\":{\"x\":1,\"y\":2}}\n", EventNameSubMenuEventPoppedUp) + testObjectAction(t, func() error { + return s.PopupInWindow(&Window{object: &object{id: "2"}}, &MenuPopupOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}}) + }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdPopup+"\",\"targetID\":\""+s.id+"\",\"menuPopupOptions\":{\"x\":1,\"y\":2},\"windowId\":\"2\"}\n", EventNameSubMenuEventPoppedUp) + testObjectAction(t, func() error { return s.ClosePopup() }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdClosePopup+"\",\"targetID\":\""+s.id+"\"}\n", EventNameSubMenuEventClosedPopup) + testObjectAction(t, func() error { return s.ClosePopupInWindow(&Window{object: &object{id: "2"}}) }, s.object, wrt, "{\"name\":\""+EventNameSubMenuCmdClosePopup+"\",\"targetID\":\""+s.id+"\",\"windowId\":\"2\"}\n", EventNameSubMenuEventClosedPopup) +} diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron.zip b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron.zip new file mode 100644 index 0000000..61efb51 Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron.zip differ diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron/main.js b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron/main.js new file mode 100644 index 0000000..4d312fb --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/astilectron/astilectron/main.js @@ -0,0 +1 @@ +package astilectron diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/Info.plist b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/Info.plist new file mode 100644 index 0000000..fd3fad3 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/Info.plist @@ -0,0 +1 @@ +Electron Test \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/MacOS/Electron Helper EH b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper EH.app/Contents/MacOS/Electron Helper EH new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/Info.plist b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/Info.plist new file mode 100644 index 0000000..fd3fad3 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/Info.plist @@ -0,0 +1 @@ +Electron Test \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/MacOS/Electron Helper NP b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper NP.app/Contents/MacOS/Electron Helper NP new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist new file mode 100644 index 0000000..fd3fad3 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/Info.plist @@ -0,0 +1 @@ +Electron Test \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Frameworks/Electron Helper.app/Contents/MacOS/Electron Helper new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Info.plist b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Info.plist new file mode 100644 index 0000000..fd3fad3 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/Info.plist @@ -0,0 +1 @@ +Electron Test \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/MacOS/Electron b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/Electron.app/Contents/MacOS/Electron new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/electron.zip b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/electron.zip new file mode 100644 index 0000000..63fb367 Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/darwin/electron.zip differ diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/linux/electron b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/linux/electron new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/linux/electron.zip b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/linux/electron.zip new file mode 100644 index 0000000..cfb931d Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/linux/electron.zip differ diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/windows/electron.exe b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/windows/electron.exe new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/windows/electron.zip b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/windows/electron.zip new file mode 100644 index 0000000..f221860 Binary files /dev/null and b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/electron/windows/electron.zip differ diff --git a/vendor/github.com/asticode/go-astilectron/testdata/provisioner/icon.icns b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/icon.icns new file mode 100644 index 0000000..fb4c35e --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/testdata/provisioner/icon.icns @@ -0,0 +1 @@ +body \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilectron/tray.go b/vendor/github.com/asticode/go-astilectron/tray.go new file mode 100644 index 0000000..3c818fc --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/tray.go @@ -0,0 +1,71 @@ +package astilectron + +import "github.com/asticode/go-astitools/context" + +// Tray event names +const ( + EventNameTrayCmdCreate = "tray.cmd.create" + EventNameTrayCmdDestroy = "tray.cmd.destroy" + EventNameTrayEventCreated = "tray.event.created" + EventNameTrayEventDestroyed = "tray.event.destroyed" +) + +// Tray represents a tray +type Tray struct { + *object + m *Menu + o *TrayOptions +} + +// TrayOptions represents tray options +// We must use pointers since GO doesn't handle optional fields whereas NodeJS does. Use PtrBool, PtrInt or PtrStr +// to fill the struct +// https://github.com/electron/electron/blob/v1.6.5/docs/api/tray.md +type TrayOptions struct { + Image *string `json:"image,omitempty"` + Tooltip *string `json:"tooltip,omitempty"` +} + +// newTray creates a new tray +func newTray(o *TrayOptions, c *asticontext.Canceller, d *Dispatcher, i *identifier, wrt *writer) (t *Tray) { + // Init + t = &Tray{ + o: o, + object: newObject(nil, c, d, i, wrt), + } + + // Make sure the tray's context is cancelled once the destroyed event is received + t.On(EventNameTrayEventDestroyed, func(e Event) (deleteListener bool) { + t.cancel() + return true + }) + return +} + +// Create creates the tray +func (t *Tray) Create() (err error) { + if err = t.isActionable(); err != nil { + return + } + var e = Event{Name: EventNameTrayCmdCreate, TargetID: t.id, TrayOptions: t.o} + if t.m != nil { + e.MenuID = t.m.id + } + _, err = synchronousEvent(t.c, t, t.w, e, EventNameTrayEventCreated) + return +} + +// Destroy destroys the tray +func (t *Tray) Destroy() (err error) { + if err = t.isActionable(); err != nil { + return + } + _, err = synchronousEvent(t.c, t, t.w, Event{Name: EventNameTrayCmdDestroy, TargetID: t.id}, EventNameTrayEventDestroyed) + return +} + +// NewMenu creates a new tray menu +func (t *Tray) NewMenu(i []*MenuItemOptions) *Menu { + t.m = newMenu(t.ctx, t, i, t.c, t.d, t.i, t.w) + return t.m +} diff --git a/vendor/github.com/asticode/go-astilectron/tray_test.go b/vendor/github.com/asticode/go-astilectron/tray_test.go new file mode 100644 index 0000000..a97d924 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/tray_test.go @@ -0,0 +1,27 @@ +package astilectron + +import ( + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestTray_Actions(t *testing.T) { + // Init + var c = asticontext.NewCanceller() + var d = newDispatcher() + go d.start() + var i = newIdentifier() + var wrt = &mockedWriter{} + var w = newWriter(wrt) + var tr = newTray(&TrayOptions{ + Image: PtrStr("/path/to/image"), + Tooltip: PtrStr("tooltip"), + }, c, d, i, w) + + // Actions + testObjectAction(t, func() error { return tr.Create() }, tr.object, wrt, "{\"name\":\""+EventNameTrayCmdCreate+"\",\"targetID\":\""+tr.id+"\",\"trayOptions\":{\"image\":\"/path/to/image\",\"tooltip\":\"tooltip\"}}\n", EventNameTrayEventCreated) + testObjectAction(t, func() error { return tr.Destroy() }, tr.object, wrt, "{\"name\":\""+EventNameTrayCmdDestroy+"\",\"targetID\":\""+tr.id+"\"}\n", EventNameTrayEventDestroyed) + assert.True(t, tr.IsDestroyed()) +} diff --git a/vendor/github.com/asticode/go-astilectron/window.go b/vendor/github.com/asticode/go-astilectron/window.go new file mode 100644 index 0000000..cfec030 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/window.go @@ -0,0 +1,335 @@ +package astilectron + +import ( + "net/url" + + "github.com/asticode/go-astitools/context" + "github.com/asticode/go-astitools/url" + "github.com/pkg/errors" +) + +// Window event names +const ( + EventNameWindowCmdBlur = "window.cmd.blur" + EventNameWindowCmdCenter = "window.cmd.center" + EventNameWindowCmdClose = "window.cmd.close" + EventNameWindowCmdCreate = "window.cmd.create" + EventNameWindowCmdDestroy = "window.cmd.destroy" + EventNameWindowCmdFocus = "window.cmd.focus" + EventNameWindowCmdHide = "window.cmd.hide" + EventNameWindowCmdMaximize = "window.cmd.maximize" + EventNameWindowCmdMessage = "window.cmd.message" + EventNameWindowCmdMinimize = "window.cmd.minimize" + EventNameWindowCmdMove = "window.cmd.move" + EventNameWindowCmdResize = "window.cmd.resize" + EventNameWindowCmdRestore = "window.cmd.restore" + EventNameWindowCmdShow = "window.cmd.show" + EventNameWindowCmdUnmaximize = "window.cmd.unmaximize" + EventNameWindowCmdWebContentsCloseDevTools = "window.cmd.web.contents.close.dev.tools" + EventNameWindowCmdWebContentsOpenDevTools = "window.cmd.web.contents.open.dev.tools" + EventNameWindowEventBlur = "window.event.blur" + EventNameWindowEventClosed = "window.event.closed" + EventNameWindowEventDidFinishLoad = "window.event.did.finish.load" + EventNameWindowEventFocus = "window.event.focus" + EventNameWindowEventHide = "window.event.hide" + EventNameWindowEventMaximize = "window.event.maximize" + EventNameWindowEventMessage = "window.event.message" + EventNameWindowEventMinimize = "window.event.minimize" + EventNameWindowEventMove = "window.event.move" + EventNameWindowEventReadyToShow = "window.event.ready.to.show" + EventNameWindowEventResize = "window.event.resize" + EventNameWindowEventRestore = "window.event.restore" + EventNameWindowEventShow = "window.event.show" + EventNameWindowEventUnmaximize = "window.event.unmaximize" + EventNameWindowEventUnresponsive = "window.event.unresponsive" +) + +// Title bar styles +var ( + TitleBarStyleDefault = PtrStr("default") + TitleBarStyleHidden = PtrStr("hidden") + TitleBarStyleHiddenInset = PtrStr("hidden-inset") +) + +// Window represents a window +// TODO Add missing window options +// TODO Add missing window methods +// TODO Add missing window events +type Window struct { + *object + o *WindowOptions + url *url.URL +} + +// WindowOptions represents window options +// We must use pointers since GO doesn't handle optional fields whereas NodeJS does. Use PtrBool, PtrInt or PtrStr +// to fill the struct +// https://github.com/electron/electron/blob/v1.6.5/docs/api/browser-window.md +type WindowOptions struct { + AcceptFirstMouse *bool `json:"acceptFirstMouse,omitempty"` + AlwaysOnTop *bool `json:"alwaysOnTop,omitempty"` + AutoHideMenuBar *bool `json:"autoHideMenuBar,omitempty"` + BackgroundColor *string `json:"backgroundColor,omitempty"` + Center *bool `json:"center,omitempty"` + Closable *bool `json:"closable,omitempty"` + DisableAutoHideCursor *bool `json:"disableAutoHideCursor,omitempty"` + EnableLargerThanScreen *bool `json:"enableLargerThanScreen,omitempty"` + Focusable *bool `json:"focusable,omitempty"` + Frame *bool `json:"frame,omitempty"` + Fullscreen *bool `json:"fullscreen,omitempty"` + Fullscreenable *bool `json:"fullscreenable,omitempty"` + HasShadow *bool `json:"hasShadow,omitempty"` + Height *int `json:"height,omitempty"` + Icon *string `json:"icon,omitempty"` + Kiosk *bool `json:"kiosk,omitempty"` + MaxHeight *int `json:"maxHeight,omitempty"` + Maximizable *bool `json:"maximizable,omitempty"` + MaxWidth *int `json:"maxWidth,omitempty"` + MinHeight *int `json:"minHeight,omitempty"` + Minimizable *bool `json:"minimizable,omitempty"` + MinWidth *int `json:"minWidth,omitempty"` + Modal *bool `json:"modal,omitempty"` + Movable *bool `json:"movable,omitempty"` + Resizable *bool `json:"resizable,omitempty"` + Show *bool `json:"show,omitempty"` + SkipTaskbar *bool `json:"skipTaskbar,omitempty"` + Title *string `json:"title,omitempty"` + TitleBarStyle *string `json:"titleBarStyle,omitempty"` + Transparent *bool `json:"transparent,omitempty"` + UseContentSize *bool `json:"useContentSize,omitempty"` + WebPreferences *WebPreferences `json:"webPreferences,omitempty"` + Width *int `json:"width,omitempty"` + X *int `json:"x,omitempty"` + Y *int `json:"y,omitempty"` +} + +// WebPreferences represents web preferences in window options. +// We must use pointers since GO doesn't handle optional fields whereas NodeJS does. +// Use PtrBool, PtrInt or PtrStr to fill the struct +type WebPreferences struct { + AllowRunningInsecureContent *bool `json:"allowRunningInsecureContent,omitempty"` + BackgroundThrottling *bool `json:"backgroundThrottling,omitempty"` + BlinkFeatures *string `json:"blinkFeatures,omitempty"` + ContextIsolation *bool `json:"contextIsolation,omitempty"` + DefaultEncoding *string `json:"defaultEncoding,omitempty"` + DefaultFontFamily map[string]interface{} `json:"defaultFontFamily,omitempty"` + DefaultFontSize *int `json:"defaultFontSize,omitempty"` + DefaultMonospaceFontSize *int `json:"defaultMonospaceFontSize,omitempty"` + DevTools *bool `json:"devTools,omitempty"` + DisableBlinkFeatures *string `json:"disableBlinkFeatures,omitempty"` + ExperimentalCanvasFeatures *bool `json:"experimentalCanvasFeatures,omitempty"` + ExperimentalFeatures *bool `json:"experimentalFeatures,omitempty"` + Images *bool `json:"images,omitempty"` + Javascript *bool `json:"javascript,omitempty"` + MinimumFontSize *int `json:"minimumFontSize,omitempty"` + NodeIntegration *bool `json:"nodeIntegration,omitempty"` + NodeIntegrationInWorker *bool `json:"nodeIntegrationInWorker,omitempty"` + Offscreen *bool `json:"offscreen,omitempty"` + Partition *string `json:"partition,omitempty"` + Plugins *bool `json:"plugins,omitempty"` + Preload *string `json:"preload,omitempty"` + Sandbox *bool `json:"sandbox,omitempty"` + ScrollBounce *bool `json:"scrollBounce,omitempty"` + Session map[string]interface{} `json:"session,omitempty"` + TextAreasAreResizable *bool `json:"textAreasAreResizable,omitempty"` + Webaudio *bool `json:"webaudio,omitempty"` + Webgl *bool `json:"webgl,omitempty"` + WebSecurity *bool `json:"webSecurity,omitempty"` + ZoomFactor *float64 `json:"zoomFactor,omitempty"` +} + +// newWindow creates a new window +func newWindow(o Options, url string, wo *WindowOptions, c *asticontext.Canceller, d *Dispatcher, i *identifier, wrt *writer) (w *Window, err error) { + // Init + w = &Window{ + o: wo, + object: newObject(nil, c, d, i, wrt), + } + + // Check app details + if wo.Icon == nil && o.AppIconDefaultPath != "" { + wo.Icon = PtrStr(o.AppIconDefaultPath) + } + if wo.Title == nil && o.AppName != "" { + wo.Title = PtrStr(o.AppName) + } + + // Make sure the window's context is cancelled once the closed event is received + w.On(EventNameWindowEventClosed, func(e Event) (deleteListener bool) { + w.cancel() + return true + }) + + // Parse url + if w.url, err = astiurl.Parse(url); err != nil { + err = errors.Wrapf(err, "parsing url %s failed", url) + return + } + return +} + +// NewMenu creates a new window menu +func (w *Window) NewMenu(i []*MenuItemOptions) *Menu { + return newMenu(w.ctx, w, i, w.c, w.d, w.i, w.w) +} + +// Blur blurs the window +func (w *Window) Blur() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdBlur, TargetID: w.id}, EventNameWindowEventBlur) + return +} + +// Center centers the window +func (w *Window) Center() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdCenter, TargetID: w.id}, EventNameWindowEventMove) + return +} + +// Close closes the window +func (w *Window) Close() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdClose, TargetID: w.id}, EventNameWindowEventClosed) + return +} + +// CloseDevTools closes the dev tools +func (w *Window) CloseDevTools() (err error) { + if err = w.isActionable(); err != nil { + return + } + return w.w.write(Event{Name: EventNameWindowCmdWebContentsCloseDevTools, TargetID: w.id}) +} + +// Create creates the window +// We wait for EventNameWindowEventDidFinishLoad since we need the web content to be fully loaded before being able to +// send messages to it +func (w *Window) Create() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdCreate, TargetID: w.id, URL: w.url.String(), WindowOptions: w.o}, EventNameWindowEventDidFinishLoad) + return +} + +// Destroy destroys the window +func (w *Window) Destroy() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdDestroy, TargetID: w.id}, EventNameWindowEventClosed) + return +} + +// Focus focuses on the window +func (w *Window) Focus() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdFocus, TargetID: w.id}, EventNameWindowEventFocus) + return +} + +// Hide hides the window +func (w *Window) Hide() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdHide, TargetID: w.id}, EventNameWindowEventHide) + return +} + +// OpenDevTools opens the dev tools +func (w *Window) OpenDevTools() (err error) { + if err = w.isActionable(); err != nil { + return + } + return w.w.write(Event{Name: EventNameWindowCmdWebContentsOpenDevTools, TargetID: w.id}) +} + +// Maximize maximizes the window +func (w *Window) Maximize() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdMaximize, TargetID: w.id}, EventNameWindowEventMaximize) + return +} + +// Minimize minimizes the window +func (w *Window) Minimize() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdMinimize, TargetID: w.id}, EventNameWindowEventMinimize) + return +} + +// Move moves the window +func (w *Window) Move(x, y int) (err error) { + if err = w.isActionable(); err != nil { + return + } + w.o.X = PtrInt(x) + w.o.Y = PtrInt(y) + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdMove, TargetID: w.id, WindowOptions: &WindowOptions{X: w.o.X, Y: w.o.Y}}, EventNameWindowEventMove) + return +} + +// MoveInDisplay moves the window in the proper display +func (w *Window) MoveInDisplay(d *Display, x, y int) error { + return w.Move(d.Bounds().X+x, d.Bounds().Y+y) +} + +// Resize resizes the window +func (w *Window) Resize(width, height int) (err error) { + if err = w.isActionable(); err != nil { + return + } + w.o.Height = PtrInt(height) + w.o.Width = PtrInt(width) + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdResize, TargetID: w.id, WindowOptions: &WindowOptions{Height: w.o.Height, Width: w.o.Width}}, EventNameWindowEventResize) + return +} + +// Restore restores the window +func (w *Window) Restore() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdRestore, TargetID: w.id}, EventNameWindowEventRestore) + return +} + +// Send sends a message to the inner JS of the Web content of the window +func (w *Window) Send(message interface{}) (err error) { + if err = w.isActionable(); err != nil { + return + } + return w.w.write(Event{Message: newEventMessage(message), Name: EventNameWindowCmdMessage, TargetID: w.id}) +} + +// Show shows the window +func (w *Window) Show() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdShow, TargetID: w.id}, EventNameWindowEventShow) + return +} + +// Unmaximize unmaximize the window +func (w *Window) Unmaximize() (err error) { + if err = w.isActionable(); err != nil { + return + } + _, err = synchronousEvent(w.c, w, w.w, Event{Name: EventNameWindowCmdUnmaximize, TargetID: w.id}, EventNameWindowEventUnmaximize) + return +} diff --git a/vendor/github.com/asticode/go-astilectron/window_test.go b/vendor/github.com/asticode/go-astilectron/window_test.go new file mode 100644 index 0000000..f48592d --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/window_test.go @@ -0,0 +1,68 @@ +package astilectron + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestNewWindow(t *testing.T) { + // Init + a, err := New(Options{AppName: "app name", AppIconDefaultPath: "/path/to/default/icon"}) + assert.NoError(t, err) + w, err := a.NewWindow("http://test.com", &WindowOptions{}) + assert.NoError(t, err) + + // Test app name + icon + assert.Equal(t, "app name", *w.o.Title) + assert.Equal(t, "/path/to/default/icon", *w.o.Icon) + + // Test in display + w, err = a.NewWindowInDisplay(newDisplay(&DisplayOptions{Bounds: &RectangleOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}, SizeOptions: SizeOptions{Height: PtrInt(5), Width: PtrInt(6)}}}, true), "http://test.com", &WindowOptions{X: PtrInt(3), Y: PtrInt(4)}) + assert.NoError(t, err) + assert.Equal(t, 4, *w.o.X) + assert.Equal(t, 6, *w.o.Y) + w, err = a.NewWindowInDisplay(newDisplay(&DisplayOptions{Bounds: &RectangleOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}, SizeOptions: SizeOptions{Height: PtrInt(5), Width: PtrInt(6)}}}, true), "http://test.com", &WindowOptions{}) + assert.NoError(t, err) + assert.Equal(t, 1, *w.o.X) + assert.Equal(t, 2, *w.o.Y) +} + +func TestWindow_Actions(t *testing.T) { + // Init + a, err := New(Options{}) + assert.NoError(t, err) + defer a.Close() + go a.dispatcher.start() + wrt := &mockedWriter{} + a.writer = newWriter(wrt) + w, err := a.NewWindow("http://test.com", &WindowOptions{}) + assert.NoError(t, err) + + // Actions + testObjectAction(t, func() error { return w.Blur() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdBlur+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventBlur) + testObjectAction(t, func() error { return w.Center() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdCenter+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventMove) + testObjectAction(t, func() error { return w.Close() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdClose+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventClosed) + assert.True(t, w.IsDestroyed()) + w, err = a.NewWindow("http://test.com", &WindowOptions{Center: PtrBool(true)}) + assert.NoError(t, err) + testObjectAction(t, func() error { return w.CloseDevTools() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdWebContentsCloseDevTools+"\",\"targetID\":\""+w.id+"\"}\n", "") + testObjectAction(t, func() error { return w.Create() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdCreate+"\",\"targetID\":\""+w.id+"\",\"url\":\"http://test.com\",\"windowOptions\":{\"center\":true}}\n", EventNameWindowEventDidFinishLoad) + testObjectAction(t, func() error { return w.Destroy() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdDestroy+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventClosed) + assert.True(t, w.IsDestroyed()) + w, err = a.NewWindow("http://test.com", &WindowOptions{}) + assert.NoError(t, err) + testObjectAction(t, func() error { return w.Focus() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdFocus+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventFocus) + testObjectAction(t, func() error { return w.Hide() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdHide+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventHide) + testObjectAction(t, func() error { return w.OpenDevTools() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdWebContentsOpenDevTools+"\",\"targetID\":\""+w.id+"\"}\n", "") + testObjectAction(t, func() error { return w.Maximize() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdMaximize+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventMaximize) + testObjectAction(t, func() error { return w.Minimize() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdMinimize+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventMinimize) + testObjectAction(t, func() error { return w.Move(3, 4) }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdMove+"\",\"targetID\":\""+w.id+"\",\"windowOptions\":{\"x\":3,\"y\":4}}\n", EventNameWindowEventMove) + var d = newDisplay(&DisplayOptions{Bounds: &RectangleOptions{PositionOptions: PositionOptions{X: PtrInt(1), Y: PtrInt(2)}, SizeOptions: SizeOptions{Height: PtrInt(1), Width: PtrInt(2)}}}, true) + testObjectAction(t, func() error { return w.MoveInDisplay(d, 3, 4) }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdMove+"\",\"targetID\":\""+w.id+"\",\"windowOptions\":{\"x\":4,\"y\":6}}\n", EventNameWindowEventMove) + testObjectAction(t, func() error { return w.Resize(1, 2) }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdResize+"\",\"targetID\":\""+w.id+"\",\"windowOptions\":{\"height\":2,\"width\":1}}\n", EventNameWindowEventResize) + testObjectAction(t, func() error { return w.Restore() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdRestore+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventRestore) + testObjectAction(t, func() error { return w.Send(true) }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdMessage+"\",\"targetID\":\""+w.id+"\",\"message\":true}\n", "") + testObjectAction(t, func() error { return w.Show() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdShow+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventShow) + testObjectAction(t, func() error { return w.Unmaximize() }, w.object, wrt, "{\"name\":\""+EventNameWindowCmdUnmaximize+"\",\"targetID\":\""+w.id+"\"}\n", EventNameWindowEventUnmaximize) +} diff --git a/vendor/github.com/asticode/go-astilectron/writer.go b/vendor/github.com/asticode/go-astilectron/writer.go new file mode 100644 index 0000000..087b526 --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/writer.go @@ -0,0 +1,42 @@ +package astilectron + +import ( + "encoding/json" + "io" + + "github.com/asticode/go-astilog" + "github.com/pkg/errors" +) + +// writer represents an object capable of writing in the TCP server +type writer struct { + w io.WriteCloser +} + +// newWriter creates a new writer +func newWriter(w io.WriteCloser) *writer { + return &writer{ + w: w, + } +} + +// close closes the writer properly +func (r *writer) close() error { + return r.w.Close() +} + +// write writes to the stdin +func (r *writer) write(e Event) (err error) { + // Marshal + var b []byte + if b, err = json.Marshal(e); err != nil { + return errors.Wrapf(err, "Marshaling %+v failed", e) + } + + // Write + astilog.Debugf("Sending to Astilectron: %s", b) + if _, err = r.w.Write(append(b, '\n')); err != nil { + return errors.Wrapf(err, "Writing %s failed", b) + } + return +} diff --git a/vendor/github.com/asticode/go-astilectron/writer_test.go b/vendor/github.com/asticode/go-astilectron/writer_test.go new file mode 100644 index 0000000..a14868d --- /dev/null +++ b/vendor/github.com/asticode/go-astilectron/writer_test.go @@ -0,0 +1,46 @@ +package astilectron + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +// mockedWriter represents a mocked writer +type mockedWriter struct { + c bool + fn func() + w []string +} + +// Close implements the io.Closer interface +func (w *mockedWriter) Close() error { + w.c = true + return nil +} + +// Write implements io.Writer interface +func (w *mockedWriter) Write(p []byte) (int, error) { + w.w = append(w.w, string(p)) + if w.fn != nil { + w.fn() + } + return len(p), nil +} + +// TestWriter tests the writer +func TestWriter(t *testing.T) { + // Init + var mw = &mockedWriter{} + var w = newWriter(mw) + + // Test write + err := w.write(Event{Name: "test", TargetID: "target_id"}) + assert.NoError(t, err) + assert.Equal(t, []string{"{\"name\":\"test\",\"targetID\":\"target_id\"}\n"}, mw.w) + + // Test close + err = w.close() + assert.NoError(t, err) + assert.True(t, mw.c) +} diff --git a/vendor/github.com/asticode/go-astilog/.gitignore b/vendor/github.com/asticode/go-astilog/.gitignore new file mode 100644 index 0000000..9f11b75 --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/.gitignore @@ -0,0 +1 @@ +.idea/ diff --git a/vendor/github.com/asticode/go-astilog/configuration.go b/vendor/github.com/asticode/go-astilog/configuration.go new file mode 100644 index 0000000..0c622f7 --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/configuration.go @@ -0,0 +1,23 @@ +package astilog + +import "flag" + +// Flags +var ( + AppName = flag.String("logger-app-name", "", "the logger's app name") + Verbose = flag.Bool("v", false, "if true, then log level is debug") +) + +// Configuration represents the configuration of the logger +type Configuration struct { + AppName string `toml:"app_name"` + Verbose bool `toml:"verbose"` +} + +// FlagConfig generates a Configuration based on flags +func FlagConfig() Configuration { + return Configuration{ + AppName: *AppName, + Verbose: *Verbose, + } +} diff --git a/vendor/github.com/asticode/go-astilog/logger.go b/vendor/github.com/asticode/go-astilog/logger.go new file mode 100644 index 0000000..03294b9 --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/logger.go @@ -0,0 +1,65 @@ +package astilog + +import ( + "io" + "os" + + "golang.org/x/crypto/ssh/terminal" + + "github.com/rs/xlog" + "github.com/sirupsen/logrus" +) + +// NopLogger returns a nop logger +func NopLogger() Logger { + return xlog.NopLogger +} + +// Logger represents a logger +type Logger interface { + Debug(v ...interface{}) + Debugf(format string, v ...interface{}) + Info(v ...interface{}) + Infof(format string, v ...interface{}) + Warn(v ...interface{}) + Warnf(format string, v ...interface{}) + Error(v ...interface{}) + Errorf(format string, v ...interface{}) + Fatal(v ...interface{}) + Fatalf(format string, v ...interface{}) +} + +// LoggerSetter represents a logger setter +type LoggerSetter interface { + SetLogger(l Logger) +} + +// New creates a new Logger +func New(c Configuration) Logger { + // Init + var l = logrus.New() + l.WithField("app_name", c.AppName) + l.Formatter = &logrus.TextFormatter{ForceColors: true} + l.Level = logrus.InfoLevel + l.Out = DefaultOut(c) + + // Formatter + if !isTerminal(os.Stdout) { + l.Formatter = &logrus.JSONFormatter{} + } + + // Verbose + if c.Verbose { + l.Level = logrus.DebugLevel + } + return l +} + +func isTerminal(w io.Writer) bool { + switch v := w.(type) { + case *os.File: + return terminal.IsTerminal(int(v.Fd())) + default: + return false + } +} diff --git a/vendor/github.com/asticode/go-astilog/out.go b/vendor/github.com/asticode/go-astilog/out.go new file mode 100644 index 0000000..18170f6 --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/out.go @@ -0,0 +1,14 @@ +// +build windows + +package astilog + +import ( + "io" + + colorable "github.com/mattn/go-colorable" +) + +// DefaultOut is the default out +func DefaultOut(c Configuration) io.Writer { + return colorable.NewColorableStdout() +} diff --git a/vendor/github.com/asticode/go-astilog/out_syslog.go b/vendor/github.com/asticode/go-astilog/out_syslog.go new file mode 100644 index 0000000..23e8f2b --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/out_syslog.go @@ -0,0 +1,23 @@ +// +build !windows + +package astilog + +import ( + "io" + "log/syslog" + "os" + + "github.com/pkg/errors" +) + +// DefaultOutput is the default output +func DefaultOut(c Configuration) (w io.Writer) { + if isTerminal(os.Stdout) { + return os.Stdout + } + var err error + if w, err = syslog.New(syslog.LOG_INFO|syslog.LOG_USER, c.AppName); err != nil { + panic(errors.Wrap(err, "new syslog failed")) + } + return +} diff --git a/vendor/github.com/asticode/go-astilog/readme.md b/vendor/github.com/asticode/go-astilog/readme.md new file mode 100644 index 0000000..c6bbef9 --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/readme.md @@ -0,0 +1,3 @@ +# Astilog + +Astilog is a wrapper on top of xlog to provide proper configuration \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astilog/std.go b/vendor/github.com/asticode/go-astilog/std.go new file mode 100644 index 0000000..a7065cf --- /dev/null +++ b/vendor/github.com/asticode/go-astilog/std.go @@ -0,0 +1,31 @@ +package astilog + +// Global logger +var gb = NopLogger() + +// FlagInit initializes the package based on flags +func FlagInit() { + SetLogger(New(FlagConfig())) +} + +// SetLogger sets the global logger +func SetLogger(l Logger) { + gb = l +} + +// GetLogger returns the global logger +func GetLogger() Logger { + return gb +} + +// Global logger shortcuts +func Debug(v ...interface{}) { gb.Debug(v...) } +func Debugf(format string, v ...interface{}) { gb.Debugf(format, v...) } +func Info(v ...interface{}) { gb.Info(v...) } +func Infof(format string, v ...interface{}) { gb.Infof(format, v...) } +func Warn(v ...interface{}) { gb.Warn(v...) } +func Warnf(format string, v ...interface{}) { gb.Warnf(format, v...) } +func Error(v ...interface{}) { gb.Error(v...) } +func Errorf(format string, v ...interface{}) { gb.Errorf(format, v...) } +func Fatal(v ...interface{}) { gb.Fatal(v...) } +func Fatalf(format string, v ...interface{}) { gb.Fatalf(format, v...) } diff --git a/vendor/github.com/asticode/go-astitools/.gitignore b/vendor/github.com/asticode/go-astitools/.gitignore new file mode 100644 index 0000000..723ef36 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/.gitignore @@ -0,0 +1 @@ +.idea \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astitools/byte/length.go b/vendor/github.com/asticode/go-astitools/byte/length.go new file mode 100644 index 0000000..fea7d4a --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/byte/length.go @@ -0,0 +1,17 @@ +package astibyte + +// ToLength forces the length of a []byte +func ToLength(i []byte, rpl byte, length int) []byte { + if len(i) == length { + return i + } else if len(i) > length { + return i[:length] + } else { + var o = make([]byte, length) + o = i + for idx := 0; idx < length-len(i); idx++ { + o = append(o, rpl) + } + return o + } +} diff --git a/vendor/github.com/asticode/go-astitools/byte/length_test.go b/vendor/github.com/asticode/go-astitools/byte/length_test.go new file mode 100644 index 0000000..8f0c04b --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/byte/length_test.go @@ -0,0 +1,15 @@ +package astibyte_test + +import ( + "testing" + + "github.com/asticode/go-astitools/byte" + "github.com/stretchr/testify/assert" +) + +func TestToLength(t *testing.T) { + assert.Equal(t, []byte("test"), astibyte.ToLength([]byte("test"), ' ', 4)) + assert.Equal(t, []byte("test"), astibyte.ToLength([]byte("testtest"), ' ', 4)) + assert.Equal(t, []byte("test "), astibyte.ToLength([]byte("test"), ' ', 6)) + assert.Equal(t, []byte(" "), astibyte.ToLength([]byte{}, ' ', 6)) +} diff --git a/vendor/github.com/asticode/go-astitools/byte/pad.go b/vendor/github.com/asticode/go-astitools/byte/pad.go new file mode 100644 index 0000000..d93d663 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/byte/pad.go @@ -0,0 +1,29 @@ +package astibyte + +// PadLeft adds n rpl to the left of i so that len is length +func PadLeft(i []byte, rpl byte, length int) []byte { + if len(i) >= length { + return i + } else { + var o = make([]byte, length) + o = i + for idx := 0; idx < length-len(i); idx++ { + o = append([]byte{rpl}, o...) + } + return o + } +} + +// PadRight adds n rpl to the right of i so that len is length +func PadRight(i []byte, rpl byte, length int) []byte { + if len(i) >= length { + return i + } else { + var o = make([]byte, length) + o = i + for idx := 0; idx < length-len(i); idx++ { + o = append(o, rpl) + } + return o + } +} diff --git a/vendor/github.com/asticode/go-astitools/byte/pad_test.go b/vendor/github.com/asticode/go-astitools/byte/pad_test.go new file mode 100644 index 0000000..1bcb490 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/byte/pad_test.go @@ -0,0 +1,20 @@ +package astibyte_test + +import ( + "testing" + + "github.com/asticode/go-astitools/byte" + "github.com/stretchr/testify/assert" +) + +func TestPadLeft(t *testing.T) { + assert.Equal(t, []byte("test"), astibyte.PadLeft([]byte("test"), ' ', 2)) + assert.Equal(t, []byte("test"), astibyte.PadLeft([]byte("test"), ' ', 4)) + assert.Equal(t, []byte(" test"), astibyte.PadLeft([]byte("test"), ' ', 6)) +} + +func TestPadRight(t *testing.T) { + assert.Equal(t, []byte("test"), astibyte.PadRight([]byte("test"), ' ', 2)) + assert.Equal(t, []byte("test"), astibyte.PadRight([]byte("test"), ' ', 4)) + assert.Equal(t, []byte("test "), astibyte.PadRight([]byte("test"), ' ', 6)) +} diff --git a/vendor/github.com/asticode/go-astitools/context/canceller.go b/vendor/github.com/asticode/go-astitools/context/canceller.go new file mode 100644 index 0000000..0afb1de --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/context/canceller.go @@ -0,0 +1,52 @@ +package asticontext + +import ( + "context" + "sync" +) + +// Canceller represents a context with a mutex +type Canceller struct { + ctx context.Context + cancel context.CancelFunc + mutex *sync.RWMutex +} + +// NewCanceller returns a new canceller +func NewCanceller() (c *Canceller) { + c = &Canceller{mutex: &sync.RWMutex{}} + c.Reset() + return +} + +// Cancel cancels the canceller context +func (c *Canceller) Cancel() { + c.mutex.Lock() + defer c.mutex.Unlock() + c.cancel() +} + +// Cancelled returns whether the canceller has cancelled the context +func (c *Canceller) Cancelled() bool { + return c.ctx.Err() != nil +} + +// Lock locks the canceller mutex +func (c *Canceller) Lock() { + c.mutex.Lock() +} + +// Lock locks the canceller mutex +func (c *Canceller) NewContext() (context.Context, context.CancelFunc) { + return context.WithCancel(c.ctx) +} + +// Reset resets the canceller context +func (c *Canceller) Reset() { + c.ctx, c.cancel = context.WithCancel(context.Background()) +} + +// Unlock unlocks the canceller mutex +func (c *Canceller) Unlock() { + c.mutex.Unlock() +} diff --git a/vendor/github.com/asticode/go-astitools/context/canceller_test.go b/vendor/github.com/asticode/go-astitools/context/canceller_test.go new file mode 100644 index 0000000..a917d34 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/context/canceller_test.go @@ -0,0 +1,46 @@ +package asticontext_test + +import ( + "sync" + "testing" + + "github.com/asticode/go-astitools/context" + "github.com/stretchr/testify/assert" +) + +func TestCanceller_Cancel(t *testing.T) { + var c = asticontext.NewCanceller() + var ctx1, cancel1 = c.NewContext() + var ctx2, cancel2 = c.NewContext() + defer cancel1() + defer cancel2() + var wg = &sync.WaitGroup{} + wg.Add(2) + var count int + go func() { + for { + select { + case <-ctx1.Done(): + count += 1 + wg.Done() + return + } + } + }() + go func() { + for { + select { + case <-ctx2.Done(): + count += 2 + wg.Done() + return + } + } + }() + c.Cancel() + wg.Wait() + assert.Equal(t, 3, count) + assert.True(t, c.Cancelled()) + c.Reset() + assert.False(t, c.Cancelled()) +} diff --git a/vendor/github.com/asticode/go-astitools/debug/stack.go b/vendor/github.com/asticode/go-astitools/debug/stack.go new file mode 100644 index 0000000..cd01a20 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/debug/stack.go @@ -0,0 +1,57 @@ +package astidebug + +import ( + "bytes" + "fmt" + "regexp" + "runtime/debug" + "strconv" +) + +// Vars +var ( + byteLineDelimiter = []byte("\n") + regexpFile = regexp.MustCompile("(.+)\\:(\\d+) \\+(.+)$") + regexpFunction = regexp.MustCompile("(.+)\\(.*\\)$") +) + +// DebugStack allows testing functions using it +var DebugStack = func() []byte { + return debug.Stack() +} + +// Stack represents a stack +type Stack []StackItem + +// StackItem represents a stack item +type StackItem struct { + Filename string + Function string + Line int +} + +// NewStack returns a new stack +func NewStack() (o Stack) { + var i = &StackItem{} + for _, line := range bytes.Split(DebugStack(), byteLineDelimiter) { + // Trim line + line = bytes.TrimSpace(line) + + // Check line type + var r [][]string + if r = regexpFunction.FindAllStringSubmatch(string(line), -1); len(r) > 0 && len(r[0]) > 1 { + i.Function = r[0][1] + } else if r = regexpFile.FindAllStringSubmatch(string(line), -1); len(r) > 0 && len(r[0]) > 2 { + i.Filename = r[0][1] + i.Line, _ = strconv.Atoi(r[0][2]) + o = append(o, *i) + i = &StackItem{} + } + } + return +} + +// String allows StackItem to implement the Stringer interface +func (i StackItem) String() string { + return fmt.Sprintf("function %s at %s:%d", i.Function, i.Filename, i.Line) +} diff --git a/vendor/github.com/asticode/go-astitools/debug/stack_test.go b/vendor/github.com/asticode/go-astitools/debug/stack_test.go new file mode 100644 index 0000000..2a83540 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/debug/stack_test.go @@ -0,0 +1,34 @@ +package astidebug_test + +import ( + "testing" + + "github.com/asticode/go-astitools/debug" + "github.com/stretchr/testify/assert" +) + +func mockStack() []byte { + return []byte(`goroutine 1 [running]: + runtime/astidebug.Stack(0xc42012e280, 0xc4200f8e17, 0xc4200f8d78) + /usr/local/go/src/runtime/debug/stack.go:24 +0x79 + github.com/asticode/myrepo.glob..func2(0x0, 0x0, 0xc4200f8da8) + /home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go:55 +0x22 + github.com/asticode/myrepo.(*MyStruct).LogMessage(0xc420105e00, 0x7a2108, 0x11, 0x7d0710, 0xc4200f8e60) + /home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go:70 +0x3b + github.com/asticode/myrepo.(*MyStruct).RUnlock.func1(0xc42001d980, 0xc4201dc000, 0x14, 0xc420105e00) + /home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go:147 +0x70 + github.com/asticode/myrepo.(*MyStruct).RUnlock(0xc420105e00, 0xc42001d980, 0xc4201dc000, 0x14) + /home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go:151 +0x3d + main.(*Worker).Retire(0xc4200f1800, 0x90cfa0, 0xc420018d70) + /home/asticode/projects/go/src/github.com/asticode/myproject/worker.go:174 +0x11d + main.main() + /home/asticode/projects/go/src/github.com/asticode/myproject/main.go:76 +0x571`) +} + +func TestNewStack(t *testing.T) { + astidebug.DebugStack = func() []byte { + return mockStack() + } + var s = astidebug.NewStack() + assert.Equal(t, astidebug.Stack{astidebug.StackItem{Filename: "/usr/local/go/src/runtime/debug/stack.go", Function: "runtime/astidebug.Stack", Line: 24}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go", Function: "github.com/asticode/myrepo.glob..func2", Line: 55}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go", Function: "github.com/asticode/myrepo.(*MyStruct).LogMessage", Line: 70}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go", Function: "github.com/asticode/myrepo.(*MyStruct).RUnlock.func1", Line: 147}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myrepo/sync.go", Function: "github.com/asticode/myrepo.(*MyStruct).RUnlock", Line: 151}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myproject/worker.go", Function: "main.(*Worker).Retire", Line: 174}, astidebug.StackItem{Filename: "/home/asticode/projects/go/src/github.com/asticode/myproject/main.go", Function: "main.main", Line: 76}}, s) +} diff --git a/vendor/github.com/asticode/go-astitools/exec/cmd.go b/vendor/github.com/asticode/go-astitools/exec/cmd.go new file mode 100644 index 0000000..bf5e9ec --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/exec/cmd.go @@ -0,0 +1,46 @@ +package astiexec + +import ( + "context" + "os/exec" + "strings" + "time" + + "github.com/asticode/go-astilog" +) + +// Cmd represents a command +type Cmd struct { + Args []string + ctx context.Context +} + +// NewCmd creates a new command +func NewCmd(ctx context.Context, args ...string) (cmd *Cmd) { + cmd = &Cmd{ + Args: args, + ctx: ctx, + } + return +} + +// String allows Cmd to implements the stringify interface +func (c *Cmd) String() string { + return strings.Join(c.Args, " ") +} + +// Exec executes a command +var Exec = func(cmd *Cmd) (o []byte, d time.Duration, err error) { + // Init + defer func(t time.Time) { + d = time.Since(t) + }(time.Now()) + + // Create exec command + execCmd := exec.CommandContext(cmd.ctx, cmd.Args[0], cmd.Args[1:]...) + + // Execute command + astilog.Debugf("Executing %s", cmd) + o, err = execCmd.CombinedOutput() + return +} diff --git a/vendor/github.com/asticode/go-astitools/exec/cmd_test.go b/vendor/github.com/asticode/go-astitools/exec/cmd_test.go new file mode 100644 index 0000000..3254070 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/exec/cmd_test.go @@ -0,0 +1,39 @@ +package astiexec_test + +import ( + "sync" + "testing" + "time" + + "github.com/asticode/go-astitools/exec" + "github.com/stretchr/testify/assert" + "golang.org/x/net/context" +) + +func TestWithTimeout(t *testing.T) { + // Success + var ctx, _ = context.WithTimeout(context.Background(), time.Second) + var cmd = astiexec.NewCmd(ctx, "sleep", "0.5") + assert.Equal(t, "sleep 0.5", cmd.String()) + _, _, err := astiexec.Exec(cmd) + assert.NoError(t, err) + + // Timeout + ctx, _ = context.WithTimeout(context.Background(), time.Millisecond) + cmd = astiexec.NewCmd(ctx, "sleep", "0.5") + _, _, err = astiexec.Exec(cmd) + assert.EqualError(t, err, "signal: killed") + + // Cancel + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + cmd = astiexec.NewCmd(ctx, "sleep", "0.5") + var wg = &sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + _, _, err = astiexec.Exec(cmd) + }() + cancel() + wg.Wait() + assert.EqualError(t, err, "context canceled") +} diff --git a/vendor/github.com/asticode/go-astitools/exec/writer.go b/vendor/github.com/asticode/go-astitools/exec/writer.go new file mode 100644 index 0000000..e7902a6 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/exec/writer.go @@ -0,0 +1,62 @@ +package astiexec + +import "bytes" + +// Vars +var ( + bytesEOL = []byte("\n") +) + +// StdWriter represents an object capable of writing what's coming out of stdout or stderr +type StdWriter struct { + buffer *bytes.Buffer + fn func(i []byte) +} + +// NewStdWriter creates a new StdWriter +func NewStdWriter(fn func(i []byte)) *StdWriter { + return &StdWriter{buffer: &bytes.Buffer{}, fn: fn} +} + +// Close closes the writer +func (w *StdWriter) Close() { + if w.buffer.Len() > 0 { + w.write(w.buffer.Bytes()) + } +} + +// Write implements the io.Writer interface +func (w *StdWriter) Write(i []byte) (n int, err error) { + // Update n to avoid broken pipe error + defer func() { + n = len(i) + }() + + // No EOL in the log, write in buffer + if bytes.Index(i, bytesEOL) == -1 { + w.buffer.Write(i) + return + } + + // Loop in items split by EOL + var items = bytes.Split(i, bytesEOL) + for i := 0; i < len(items)-1; i++ { + // If first item, add the buffer + if i == 0 { + items[i] = append(w.buffer.Bytes(), items[i]...) + w.buffer.Reset() + } + + // Log + w.write(items[i]) + } + + // Add remaining to buffer + w.buffer.Write(items[len(items)-1]) + return +} + +// write writes the input +func (w *StdWriter) write(i []byte) { + w.fn(i) +} diff --git a/vendor/github.com/asticode/go-astitools/exec/writer_test.go b/vendor/github.com/asticode/go-astitools/exec/writer_test.go new file mode 100644 index 0000000..9c18145 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/exec/writer_test.go @@ -0,0 +1,28 @@ +package astiexec_test + +import ( + "testing" + + "github.com/asticode/go-astitools/exec" + "github.com/stretchr/testify/assert" +) + +func TestStdWriter(t *testing.T) { + // Init + var o []string + var w = astiexec.NewStdWriter(func(i []byte) { + o = append(o, string(i)) + }) + + // No EOL + w.Write([]byte("bla bla ")) + assert.Empty(t, o) + + // Multi EOL + w.Write([]byte("bla \nbla bla\nbla")) + assert.Equal(t, []string{"bla bla bla ", "bla bla"}, o) + + // Close + w.Close() + assert.Equal(t, []string{"bla bla bla ", "bla bla", "bla"}, o) +} diff --git a/vendor/github.com/asticode/go-astitools/flag/flag.go b/vendor/github.com/asticode/go-astitools/flag/flag.go new file mode 100644 index 0000000..2e60daa --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/flag/flag.go @@ -0,0 +1,29 @@ +package astiflag + +import ( + "os" + "strings" +) + +// Subcommand retrieves the subcommand from the input Args +func Subcommand() (o string) { + if len(os.Args) >= 2 && os.Args[1][0] != '-' { + o = os.Args[1] + os.Args = append([]string{os.Args[0]}, os.Args[2:]...) + } + return +} + +// Strings represents a flag that can be set several times that will output a []string +type Strings []string + +// String implements the flag.Value interface +func (f *Strings) String() string { + return strings.Join(*f, ",") +} + +// Set implements the flag.Value interface +func (f *Strings) Set(i string) error { + *f = append(*f, i) + return nil +} diff --git a/vendor/github.com/asticode/go-astitools/flag/flag_test.go b/vendor/github.com/asticode/go-astitools/flag/flag_test.go new file mode 100644 index 0000000..866a024 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/flag/flag_test.go @@ -0,0 +1,18 @@ +package astiflag_test + +import ( + "os" + "testing" + + "github.com/asticode/go-astitools/flag" + "github.com/stretchr/testify/assert" +) + +func TestSubcommand(t *testing.T) { + os.Args = []string{"bite"} + assert.Equal(t, "", astiflag.Subcommand()) + os.Args = []string{"bite", "-caca"} + assert.Equal(t, "", astiflag.Subcommand()) + os.Args = []string{"bite", "caca"} + assert.Equal(t, "caca", astiflag.Subcommand()) +} diff --git a/vendor/github.com/asticode/go-astitools/flag/time.go b/vendor/github.com/asticode/go-astitools/flag/time.go new file mode 100644 index 0000000..2fc5373 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/flag/time.go @@ -0,0 +1,16 @@ +package astiflag + +import ( + "time" +) + +// Time represents a time flag +type Time struct { + time.Time +} + +// Set implements the flag.Value interface +func (f *Time) Set(i string) (err error) { + f.Time, err = time.Parse(time.RFC3339, i) + return +} diff --git a/vendor/github.com/asticode/go-astitools/flag/time_test.go b/vendor/github.com/asticode/go-astitools/flag/time_test.go new file mode 100644 index 0000000..6751e80 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/flag/time_test.go @@ -0,0 +1,18 @@ +package astiflag_test + +import ( + "testing" + "time" + + "github.com/asticode/go-astitools/flag" + "github.com/stretchr/testify/assert" +) + +func TestTime(t *testing.T) { + const tm = "2017-12-13T12:34:56+02:00" + ft := &astiflag.Time{} + err := ft.Set(tm) + assert.NoError(t, err) + at, _ := time.Parse(time.RFC3339, tm) + assert.Equal(t, at, ft.Time) +} diff --git a/vendor/github.com/asticode/go-astitools/http/http.go b/vendor/github.com/asticode/go-astitools/http/http.go new file mode 100644 index 0000000..b4d5da8 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/http/http.go @@ -0,0 +1,39 @@ +package astihttp + +import ( + "context" + "fmt" + "net/http" + "os" + + "github.com/asticode/go-astitools/io" + "github.com/pkg/errors" +) + +// Download is a cancellable function that downloads a src into a dst using a specific *http.Client +func Download(ctx context.Context, c *http.Client, src, dst string) (err error) { + // Create the dst file + var f *os.File + if f, err = os.Create(dst); err != nil { + return errors.Wrapf(err, "creating file %s failed", dst) + } + defer f.Close() + + // Send request + var resp *http.Response + if resp, err = c.Get(src); err != nil { + return errors.Wrapf(err, "getting %s failed", src) + } + defer resp.Body.Close() + + // Validate status code + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("getting %s returned %d status code", src, resp.StatusCode) + } + + // Copy + if _, err = astiio.Copy(ctx, resp.Body, f); err != nil { + return errors.Wrapf(err, "copying content from %s to %s failed", src, dst) + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/io/copy.go b/vendor/github.com/asticode/go-astitools/io/copy.go new file mode 100644 index 0000000..55f82d9 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/io/copy.go @@ -0,0 +1,11 @@ +package astiio + +import ( + "context" + "io" +) + +// Copy represents a cancellable copy +func Copy(ctx context.Context, src io.Reader, dst io.Writer) (int64, error) { + return io.Copy(dst, NewReader(ctx, src)) +} diff --git a/vendor/github.com/asticode/go-astitools/io/copy_test.go b/vendor/github.com/asticode/go-astitools/io/copy_test.go new file mode 100644 index 0000000..028f3b1 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/io/copy_test.go @@ -0,0 +1,58 @@ +package astiio_test + +import ( + "bytes" + "sync" + "testing" + + "github.com/asticode/go-astitools/io" + "github.com/stretchr/testify/assert" + "golang.org/x/net/context" +) + +// MockedReader is a mocked io.Reader +type MockedReader struct { + buf *bytes.Buffer + infinite bool +} + +// NewMockedReader creates a new mocked reader +func NewMockedReader(i string, infinite bool) MockedReader { + return MockedReader{buf: bytes.NewBuffer([]byte(i)), infinite: infinite} +} + +// Read allows MockedReader to implement the io.Reader interface +func (r MockedReader) Read(p []byte) (n int, err error) { + if r.infinite { + return + } + n, err = r.buf.Read(p) + return +} + +func TestCopy(t *testing.T) { + // Init + var w = &bytes.Buffer{} + var r1, r2 = NewMockedReader("testiocopy", true), NewMockedReader("testiocopy", false) + + // Test cancel + var nw int64 + var err error + var ctx, cancel = context.WithCancel(context.Background()) + var wg = &sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + nw, err = astiio.Copy(ctx, r1, w) + }() + cancel() + wg.Wait() + assert.EqualError(t, err, "context canceled") + + // Test success + w.Reset() + ctx = context.Background() + nw, err = astiio.Copy(ctx, r2, w) + assert.NoError(t, err) + assert.Equal(t, "testiocopy", w.String()) +} diff --git a/vendor/github.com/asticode/go-astitools/io/reader.go b/vendor/github.com/asticode/go-astitools/io/reader.go new file mode 100644 index 0000000..34feff1 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/io/reader.go @@ -0,0 +1,31 @@ +package astiio + +import ( + "context" + "io" +) + +// Reader represents a reader with a context +type Reader struct { + ctx context.Context + reader io.Reader +} + +// NewReader creates a new Reader +func NewReader(ctx context.Context, r io.Reader) *Reader { + return &Reader{ + ctx: ctx, + reader: r, + } +} + +// Read allows Reader to implement the io.Reader interface +func (r *Reader) Read(p []byte) (n int, err error) { + // Check context + if err = r.ctx.Err(); err != nil { + return + } + + // Read + return r.reader.Read(p) +} diff --git a/vendor/github.com/asticode/go-astitools/main.go b/vendor/github.com/asticode/go-astitools/main.go new file mode 100644 index 0000000..952db1f --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/main.go @@ -0,0 +1 @@ +package astitools diff --git a/vendor/github.com/asticode/go-astitools/map/map.go b/vendor/github.com/asticode/go-astitools/map/map.go new file mode 100644 index 0000000..ec7977c --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/map/map.go @@ -0,0 +1,54 @@ +package astimap + +// Map represents a bi-directional map +type Map struct { + defaultA interface{} + defaultB interface{} + mapAToB map[interface{}]interface{} + mapBToA map[interface{}]interface{} +} + +// NewMap builds a new *Map +func NewMap(defaultA, defaultB interface{}) *Map { + return &Map{ + defaultA: defaultA, + defaultB: defaultB, + mapAToB: make(map[interface{}]interface{}), + mapBToA: make(map[interface{}]interface{}), + } +} + +// A retrieves a based on b +func (m *Map) A(b interface{}) interface{} { + if a, ok := m.mapBToA[b]; ok { + return a + } + return m.defaultA +} + +// B retrieves b based on a +func (m *Map) B(a interface{}) interface{} { + if b, ok := m.mapAToB[a]; ok { + return b + } + return m.defaultB +} + +// InA checks whether a exists +func (m *Map) InA(a interface{}) (ok bool) { + _, ok = m.mapAToB[a] + return +} + +// InB checks whether b exists +func (m *Map) InB(b interface{}) (ok bool) { + _, ok = m.mapBToA[b] + return +} + +// Set sets a key/value couple +func (m *Map) Set(a, b interface{}) *Map { + m.mapAToB[a] = b + m.mapBToA[b] = a + return m +} diff --git a/vendor/github.com/asticode/go-astitools/os/copy.go b/vendor/github.com/asticode/go-astitools/os/copy.go new file mode 100644 index 0000000..3dd6a8c --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/os/copy.go @@ -0,0 +1,44 @@ +package astios + +import ( + "context" + "os" + + "github.com/asticode/go-astitools/io" +) + +// Copy is a cross partitions cancellable copy +func Copy(ctx context.Context, src, dst string) (err error) { + // Check context + if err = ctx.Err(); err != nil { + return + } + + // Open the source file + srcFile, err := os.Open(src) + if err != nil { + return + } + defer srcFile.Close() + + // Check context + if err = ctx.Err(); err != nil { + return + } + + // Create the destination file + dstFile, err := os.Create(dst) + if err != nil { + return + } + defer dstFile.Close() + + // Check context + if err = ctx.Err(); err != nil { + return + } + + // Copy the content + _, err = astiio.Copy(ctx, srcFile, dstFile) + return +} diff --git a/vendor/github.com/asticode/go-astitools/os/dir.go b/vendor/github.com/asticode/go-astitools/os/dir.go new file mode 100644 index 0000000..14fce2e --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/os/dir.go @@ -0,0 +1,38 @@ +package astios + +import ( + "io/ioutil" + "os" + + "github.com/pkg/errors" +) + +// TempDir creates a temp dir +func TempDir(prefix string) (path string, err error) { + // Create temp file + var f *os.File + if f, err = ioutil.TempFile(os.TempDir(), prefix); err != nil { + err = errors.Wrap(err, "creating temporary file failed") + return + } + path = f.Name() + + // Close temp file + if err = f.Close(); err != nil { + err = errors.Wrapf(err, "closing file %s failed", path) + return + } + + // Delete temp file + if err = os.Remove(path); err != nil { + err = errors.Wrapf(err, "removing %s failed", path) + return + } + + // Create temp dir + if err = os.MkdirAll(path, 0755); err != nil { + err = errors.Wrapf(err, "mkdirall of %s failed", path) + return + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/os/file.go b/vendor/github.com/asticode/go-astitools/os/file.go new file mode 100644 index 0000000..f1588da --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/os/file.go @@ -0,0 +1,27 @@ +package astios + +import ( + "io/ioutil" + "os" + + "github.com/pkg/errors" +) + +// TempFile writes a content to a temp file +func TempFile(i []byte) (name string, err error) { + // Create temp file + var f *os.File + if f, err = ioutil.TempFile(os.TempDir(), "astitools"); err != nil { + err = errors.Wrap(err, "creating temp file failed") + return + } + name = f.Name() + defer f.Close() + + // Write + if _, err = f.Write(i); err != nil { + err = errors.Wrapf(err, "writing to %s failed", name) + return + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/os/move.go b/vendor/github.com/asticode/go-astitools/os/move.go new file mode 100644 index 0000000..ce6e836 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/os/move.go @@ -0,0 +1,28 @@ +package astios + +import ( + "context" + "os" +) + +// Move is a cross partitions cancellable move even if files are on different partitions +func Move(ctx context.Context, src, dst string) (err error) { + // Check context + if err = ctx.Err(); err != nil { + return + } + + // Copy + if err = Copy(ctx, src, dst); err != nil { + return + } + + // Check context + if err = ctx.Err(); err != nil { + return + } + + // Delete + err = os.Remove(src) + return +} diff --git a/vendor/github.com/asticode/go-astitools/readme.md b/vendor/github.com/asticode/go-astitools/readme.md new file mode 100644 index 0000000..20ebfca --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/readme.md @@ -0,0 +1,3 @@ +# Astitools + +Astitools is a set of augmented functions for the GO programming language (http://golang.org). \ No newline at end of file diff --git a/vendor/github.com/asticode/go-astitools/regexp/replace.go b/vendor/github.com/asticode/go-astitools/regexp/replace.go new file mode 100644 index 0000000..5cb13b5 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/regexp/replace.go @@ -0,0 +1,31 @@ +package astiregexp + +import "regexp" + +// ReplaceAll replaces all matches from a source +func ReplaceAll(rgx *regexp.Regexp, src *[]byte, rpl []byte) { + // Find all matches + var start, end, delta, offset, i int + var l = len(rpl) + for _, indexes := range rgx.FindAllIndex(*src, -1) { + // Update indexes + start = indexes[0] + offset + end = indexes[1] + offset + delta = (end - start) - l + offset -= delta + + // Update src length + if delta < 0 { + // Insert + (*src) = append((*src)[:start], append(make([]byte, -delta), (*src)[start:]...)...) + } else if delta > 0 { + // Delete + (*src) = append((*src)[:start], (*src)[start+delta:]...) + } + + // Update src content + for i = 0; i < l; i++ { + (*src)[i+start] = rpl[i] + } + } +} diff --git a/vendor/github.com/asticode/go-astitools/regexp/replace_test.go b/vendor/github.com/asticode/go-astitools/regexp/replace_test.go new file mode 100644 index 0000000..3ae26c4 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/regexp/replace_test.go @@ -0,0 +1,23 @@ +package astiregexp_test + +import ( + "fmt" + "regexp" + "testing" + + "github.com/asticode/go-astitools/regexp" + "github.com/stretchr/testify/assert" +) + +func TestReplaceAll(t *testing.T) { + // Initialize + rgx := regexp.MustCompile("{[A-Za-z0-9_]+}") + src := []byte("/test/{m1}/test/{ma2}/test/{match3}") + rpl := []byte("valuevaluevaluevaluevaluevaluevalue") + + // Replace all + astiregexp.ReplaceAll(rgx, &src, rpl) + + // Assert + assert.Equal(t, fmt.Sprintf("/test/%s/test/%s/test/%s", string(rpl), string(rpl), string(rpl)), string(src)) +} diff --git a/vendor/github.com/asticode/go-astitools/slice/slice.go b/vendor/github.com/asticode/go-astitools/slice/slice.go new file mode 100644 index 0000000..4e834fd --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/slice/slice.go @@ -0,0 +1,11 @@ +package astislice + +// InStringSlice checks whether a string is in a string slice +func InStringSlice(i string, s []string) (found bool) { + for _, v := range s { + if v == i { + return true + } + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/slice/slice_test.go b/vendor/github.com/asticode/go-astitools/slice/slice_test.go new file mode 100644 index 0000000..f022078 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/slice/slice_test.go @@ -0,0 +1,13 @@ +package astislice_test + +import ( + "testing" + + "github.com/asticode/go-astitools/slice" + "github.com/stretchr/testify/assert" +) + +func TestInStringSlice(t *testing.T) { + assert.False(t, astislice.InStringSlice("test", []string{"test1", "test2"})) + assert.True(t, astislice.InStringSlice("test1", []string{"test1", "test2"})) +} diff --git a/vendor/github.com/asticode/go-astitools/sort/uint16.go b/vendor/github.com/asticode/go-astitools/sort/uint16.go new file mode 100644 index 0000000..49533ee --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/sort/uint16.go @@ -0,0 +1,13 @@ +package astisort + +import "sort" + +// Uint16 sorts a slice of uint16s in increasing order. +func Uint16(a []uint16) { sort.Sort(UInt16Slice(a)) } + +// UInt16Slice attaches the methods of Interface to []uint16, sorting in increasing order. +type UInt16Slice []uint16 + +func (p UInt16Slice) Len() int { return len(p) } +func (p UInt16Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p UInt16Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/asticode/go-astitools/sort/uint8.go b/vendor/github.com/asticode/go-astitools/sort/uint8.go new file mode 100644 index 0000000..09f6fcd --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/sort/uint8.go @@ -0,0 +1,13 @@ +package astisort + +import "sort" + +// Uint8 sorts a slice of uint8s in increasing order. +func Uint8(a []uint8) { sort.Sort(UInt8Slice(a)) } + +// UInt8Slice attaches the methods of Interface to []uint8, sorting in increasing order. +type UInt8Slice []uint8 + +func (p UInt8Slice) Len() int { return len(p) } +func (p UInt8Slice) Less(i, j int) bool { return p[i] < p[j] } +func (p UInt8Slice) Swap(i, j int) { p[i], p[j] = p[j], p[i] } diff --git a/vendor/github.com/asticode/go-astitools/string/length.go b/vendor/github.com/asticode/go-astitools/string/length.go new file mode 100644 index 0000000..0e186df --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/string/length.go @@ -0,0 +1,15 @@ +package astistring + +// ToLength forces the length of a string +func ToLength(i, rpl string, length int) string { + if len(i) == length { + return i + } else if len(i) > length { + return i[:length] + } else { + for idx := 0; idx <= length-len(i); idx++ { + i += rpl + } + return i + } +} diff --git a/vendor/github.com/asticode/go-astitools/string/length_test.go b/vendor/github.com/asticode/go-astitools/string/length_test.go new file mode 100644 index 0000000..11b7138 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/string/length_test.go @@ -0,0 +1,14 @@ +package astistring_test + +import ( + "testing" + + "github.com/asticode/go-astitools/string" + "github.com/stretchr/testify/assert" +) + +func TestToLength(t *testing.T) { + assert.Equal(t, "test", astistring.ToLength("test", " ", 4)) + assert.Equal(t, "test", astistring.ToLength("testtest", " ", 4)) + assert.Equal(t, "test ", astistring.ToLength("test", " ", 6)) +} diff --git a/vendor/github.com/asticode/go-astitools/string/rand.go b/vendor/github.com/asticode/go-astitools/string/rand.go new file mode 100644 index 0000000..330c376 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/string/rand.go @@ -0,0 +1,35 @@ +package astistring + +import ( + "math/rand" + "time" +) + +const ( + letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + letterIdxBits = 6 // 6 bits to represent a letter index + letterIdxMask = 1<= 0; { + if remain == 0 { + cache, remain = src.Int63(), letterIdxMax + } + if idx := int(cache & letterIdxMask); idx < len(letterBytes) { + b[i] = letterBytes[idx] + i-- + } + cache >>= letterIdxBits + remain-- + } + + return string(b) +} diff --git a/vendor/github.com/asticode/go-astitools/sync/mutex.go b/vendor/github.com/asticode/go-astitools/sync/mutex.go new file mode 100644 index 0000000..f8dffab --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/sync/mutex.go @@ -0,0 +1,83 @@ +package astisync + +import ( + "fmt" + "runtime" + "sync" + "time" + + "github.com/asticode/go-astilog" +) + +// RWMutex represents a RWMutex capable of logging its actions to ease deadlock debugging +type RWMutex struct { + lastSuccessfulLockCaller string + mutex *sync.RWMutex + name string +} + +// NewRWMutex creates a new RWMutex +func NewRWMutex(name string) *RWMutex { + return &RWMutex{ + mutex: &sync.RWMutex{}, + name: name, + } +} + +// Lock write locks the mutex +func (m *RWMutex) Lock() { + var caller string + if _, file, line, ok := runtime.Caller(1); ok { + caller = fmt.Sprintf("%s:%d", file, line) + } + astilog.Debugf("Requesting lock for %s at %s", m.name, caller) + m.mutex.Lock() + astilog.Debugf("Lock acquired for %s at %s", m.name, caller) + m.lastSuccessfulLockCaller = caller +} + +// Unlock write unlocks the mutex +func (m *RWMutex) Unlock() { + m.mutex.Unlock() + astilog.Debugf("Unlock executed for %s", m.name) +} + +// RLock read locks the mutex +func (m *RWMutex) RLock() { + var caller string + if _, file, line, ok := runtime.Caller(1); ok { + caller = fmt.Sprintf("%s:%d", file, line) + } + astilog.Debugf("Requesting rlock for %s at %s", m.name, caller) + m.mutex.RLock() + astilog.Debugf("RLock acquired for %s at %s", m.name, caller) + m.lastSuccessfulLockCaller = caller +} + +// RUnlock read unlocks the mutex +func (m *RWMutex) RUnlock() { + m.mutex.RUnlock() + astilog.Debugf("RUnlock executed for %s", m.name) +} + +// IsDeadlocked checks whether the mutex is deadlocked with a given timeout and returns the last caller +func (m *RWMutex) IsDeadlocked(timeout time.Duration) (o bool, c string) { + o = true + c = m.lastSuccessfulLockCaller + var channelLockAcquired = make(chan bool) + go func() { + m.mutex.Lock() + defer m.mutex.Unlock() + close(channelLockAcquired) + }() + for { + select { + case <-channelLockAcquired: + o = false + return + case <-time.After(timeout): + return + } + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/sync/mutex_test.go b/vendor/github.com/asticode/go-astitools/sync/mutex_test.go new file mode 100644 index 0000000..4115cbb --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/sync/mutex_test.go @@ -0,0 +1,19 @@ +package astisync_test + +import ( + "testing" + "time" + + "github.com/asticode/go-astitools/sync" + "github.com/stretchr/testify/assert" +) + +func TestRWMutex_IsDeadlocked(t *testing.T) { + var m = astisync.NewRWMutex("test") + d, _ := m.IsDeadlocked(time.Millisecond) + assert.False(t, d) + m.Lock() + d, c := m.IsDeadlocked(time.Millisecond) + assert.True(t, d) + assert.Contains(t, c, "github.com/asticode/go-astitools/sync/mutex_test.go:15") +} diff --git a/vendor/github.com/asticode/go-astitools/template/template.go b/vendor/github.com/asticode/go-astitools/template/template.go new file mode 100644 index 0000000..76b5a07 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/template/template.go @@ -0,0 +1,47 @@ +package astitemplate + +import ( + "fmt" + "io/ioutil" + "os" + "path/filepath" + "strings" + "text/template" +) + +// ParseDirectory parses a directory recursively +func ParseDirectory(i, ext string) (t *template.Template, err error) { + // Parse templates + i = filepath.Clean(i) + t = template.New("Root") + return t, filepath.Walk(i, func(path string, info os.FileInfo, e error) (err error) { + // Check input error + if e != nil { + err = e + return + } + + // Only process files + if info.IsDir() { + return + } + + // Check extension + if ext != "" && filepath.Ext(path) != ext { + return + } + + // Read file + var b []byte + if b, err = ioutil.ReadFile(path); err != nil { + return + } + + // Parse template + var c = t.New(filepath.ToSlash(strings.TrimPrefix(path, i))) + if _, err = c.Parse(string(b)); err != nil { + return fmt.Errorf("%s while parsing template %s", err, path) + } + return + }) +} diff --git a/vendor/github.com/asticode/go-astitools/template/template_test.go b/vendor/github.com/asticode/go-astitools/template/template_test.go new file mode 100644 index 0000000..dce5b1d --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/template/template_test.go @@ -0,0 +1,17 @@ +package astitemplate_test + +import ( + "testing" + + "github.com/asticode/go-astitools/template" + "github.com/stretchr/testify/assert" +) + +func TestParseDirectory(t *testing.T) { + tmpl, err := astitemplate.ParseDirectory("tests", "") + assert.NoError(t, err) + assert.Len(t, tmpl.Templates(), 4) + tmpl, err = astitemplate.ParseDirectory("tests", ".html") + assert.NoError(t, err) + assert.Len(t, tmpl.Templates(), 3) +} diff --git a/vendor/github.com/asticode/go-astitools/template/tests/subdir/template_4.html b/vendor/github.com/asticode/go-astitools/template/tests/subdir/template_4.html new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astitools/template/tests/template_1.html b/vendor/github.com/asticode/go-astitools/template/tests/template_1.html new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astitools/template/tests/template_2.css b/vendor/github.com/asticode/go-astitools/template/tests/template_2.css new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astitools/template/tests/template_3.html b/vendor/github.com/asticode/go-astitools/template/tests/template_3.html new file mode 100644 index 0000000..e69de29 diff --git a/vendor/github.com/asticode/go-astitools/time/sleep.go b/vendor/github.com/asticode/go-astitools/time/sleep.go new file mode 100644 index 0000000..abd9d76 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/time/sleep.go @@ -0,0 +1,20 @@ +package astitime + +import ( + "context" + "time" +) + +// Sleep is a cancellable sleep +func Sleep(ctx context.Context, d time.Duration) (err error) { + for { + select { + case <-time.After(d): + return + case <-ctx.Done(): + err = ctx.Err() + return + } + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/time/sleep_test.go b/vendor/github.com/asticode/go-astitools/time/sleep_test.go new file mode 100644 index 0000000..0a07c24 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/time/sleep_test.go @@ -0,0 +1,25 @@ +package astitime_test + +import ( + "sync" + "testing" + "time" + + "github.com/asticode/go-astitools/time" + "github.com/stretchr/testify/assert" + "golang.org/x/net/context" +) + +func TestSleep(t *testing.T) { + var ctx, cancel = context.WithCancel(context.Background()) + var err error + var wg = &sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + err = astitime.Sleep(ctx, time.Minute) + }() + cancel() + wg.Wait() + assert.EqualError(t, err, "context canceled") +} diff --git a/vendor/github.com/asticode/go-astitools/time/timestamp.go b/vendor/github.com/asticode/go-astitools/time/timestamp.go new file mode 100644 index 0000000..74c384e --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/time/timestamp.go @@ -0,0 +1,37 @@ +package astitime + +import ( + "strconv" + "time" +) + +// Timestamp represents a timestamp +type Timestamp struct { + time.Time +} + +// UnmarshalJSON implements the JSONUnmarshaler interface +func (t *Timestamp) UnmarshalJSON(text []byte) error { + return t.UnmarshalText(text) +} + +// UnmarshalText implements the TextUnmarshaler interface +func (t *Timestamp) UnmarshalText(text []byte) (err error) { + var i int + if i, err = strconv.Atoi(string(text)); err != nil { + return + } + t.Time = time.Unix(int64(i), 0) + return +} + +// MarshalJSON implements the JSONMarshaler interface +func (t Timestamp) MarshalJSON() ([]byte, error) { + return t.MarshalText() +} + +// MarshalText implements the TextMarshaler interface +func (t Timestamp) MarshalText() (text []byte, err error) { + text = []byte(strconv.Itoa(int(t.UTC().Unix()))) + return +} diff --git a/vendor/github.com/asticode/go-astitools/time/timestamp_test.go b/vendor/github.com/asticode/go-astitools/time/timestamp_test.go new file mode 100644 index 0000000..857ff39 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/time/timestamp_test.go @@ -0,0 +1,20 @@ +package astitime_test + +import ( + "encoding/json" + "testing" + "time" + + "github.com/asticode/go-astitools/time" + "github.com/stretchr/testify/assert" +) + +func TestTimestamp(t *testing.T) { + var tsp = astitime.Timestamp{} + err := json.Unmarshal([]byte("1495290215"), &tsp) + assert.NoError(t, err) + assert.Equal(t, time.Unix(1495290215, 0), tsp.Time) + b, err := json.Marshal(tsp) + assert.NoError(t, err) + assert.Equal(t, "1495290215", string(b)) +} diff --git a/vendor/github.com/asticode/go-astitools/url/url.go b/vendor/github.com/asticode/go-astitools/url/url.go new file mode 100644 index 0000000..f0ecb33 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/url/url.go @@ -0,0 +1,30 @@ +package astiurl + +import ( + "net/url" + "path/filepath" + + "github.com/pkg/errors" +) + +// Parse parses an URL (files included) +func Parse(i string) (o *url.URL, err error) { + // Basic parse + if o, err = url.Parse(i); err != nil { + err = errors.Wrapf(err, "basic parsing of url %s failed", i) + return + } + + // File + if o.Scheme == "" { + // Get absolute path + if i, err = filepath.Abs(i); err != nil { + err = errors.Wrapf(err, "getting absolute path of %s failed", i) + return + } + + // Set url + o = &url.URL{Path: i, Scheme: "file"} + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/worker/worker.go b/vendor/github.com/asticode/go-astitools/worker/worker.go new file mode 100644 index 0000000..b06bb6f --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/worker/worker.go @@ -0,0 +1,56 @@ +package astiworker + +import ( + "os" + "os/signal" + "syscall" + + "github.com/asticode/go-astilog" +) + +// Worker represents an object capable of blocking, handling signals and stopping +type Worker struct { + channelQuit chan bool +} + +// NewWorker builds a new worker +func NewWorker() *Worker { + astilog.Info("Starting Worker...") + return &Worker{channelQuit: make(chan bool)} +} + +// Close closes the worker +func (w Worker) Close() { + astilog.Info("Closing Worker...") +} + +// HandleSignals handles signals +func (w Worker) HandleSignals() { + ch := make(chan os.Signal, 1) + signal.Notify(ch, syscall.SIGABRT, syscall.SIGKILL, syscall.SIGINT, syscall.SIGQUIT, syscall.SIGTERM) + go func() { + for s := range ch { + astilog.Infof("Received signal %s", s) + w.Stop() + return + } + }() +} + +// Stop stops the Worker +func (w *Worker) Stop() { + astilog.Info("Stopping Worker...") + if w.channelQuit != nil { + close(w.channelQuit) + w.channelQuit = nil + } +} + +// Wait is a blocking pattern +func (w *Worker) Wait() { + astilog.Info("Worker is now waiting...") + if w.channelQuit == nil { + return + } + <-w.channelQuit +} diff --git a/vendor/github.com/asticode/go-astitools/zip/unzip.go b/vendor/github.com/asticode/go-astitools/zip/unzip.go new file mode 100644 index 0000000..24ac449 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/zip/unzip.go @@ -0,0 +1,115 @@ +package astizip + +import ( + "archive/zip" + "context" + "io" + "os" + "path/filepath" + "strings" + + "io/ioutil" + + "github.com/asticode/go-astitools/io" + "github.com/pkg/errors" +) + +// DefaultFileMode represents the default file mode +var DefaultFileMode os.FileMode = 0775 + +// Unzip unzips a src into a dst +// Possible src formats are /path/to/zip.zip or /path/to/zip.zip/internal/path if you only want to unzip files in +// /internal/path in the .zip archive +func Unzip(ctx context.Context, src, dst string) (err error) { + // Parse src path + var split = strings.Split(src, ".zip") + src = split[0] + ".zip" + var internalPath string + if len(split) >= 2 { + internalPath = split[1] + } + + // Open overall reader + var r *zip.ReadCloser + if r, err = zip.OpenReader(src); err != nil { + return errors.Wrapf(err, "opening overall zip reader on %s failed", src) + } + defer r.Close() + + // Loop through files to determine their type + var dirs, files, symlinks = make(map[string]*zip.File), make(map[string]*zip.File), make(map[string]*zip.File) + for _, f := range r.File { + // Validate internal path + var n = string(os.PathSeparator) + f.Name + if internalPath != "" && !strings.HasPrefix(n, internalPath) { + continue + } + var p = filepath.Join(dst, strings.TrimPrefix(n, internalPath)) + + // Check file type + if f.FileInfo().Mode()&os.ModeSymlink != 0 { + symlinks[p] = f + } else if f.FileInfo().IsDir() { + dirs[p] = f + } else { + files[p] = f + } + } + + // Create dirs + for p, f := range dirs { + if err = os.MkdirAll(p, f.FileInfo().Mode().Perm()); err != nil { + return errors.Wrapf(err, "mkdirall %s failed", p) + } + } + + // Create files + for p, f := range files { + // Open file reader + var fr io.ReadCloser + if fr, err = f.Open(); err != nil { + return errors.Wrapf(err, "opening zip reader on file %s failed", f.Name) + } + defer fr.Close() + + // Since dirs don't always come up we make sure the directory of the file exists with default + // file mode + if err = os.MkdirAll(filepath.Dir(p), DefaultFileMode); err != nil { + return errors.Wrapf(err, "mkdirall %s failed", filepath.Dir(p)) + } + + // Open the file + var fl *os.File + if fl, err = os.OpenFile(p, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, f.FileInfo().Mode().Perm()); err != nil { + return errors.Wrapf(err, "opening file %s failed", p) + } + defer fl.Close() + + // Copy + if _, err = astiio.Copy(ctx, fr, fl); err != nil { + return errors.Wrapf(err, "copying %s into %s failed", f.Name, p) + } + } + + // Create symlinks + for p, f := range symlinks { + // Open file reader + var fr io.ReadCloser + if fr, err = f.Open(); err != nil { + return errors.Wrapf(err, "opening zip reader on file %s failed", f.Name) + } + defer fr.Close() + + // If file is a symlink we retrieve the target path that is in the content of the file + var b []byte + if b, err = ioutil.ReadAll(fr); err != nil { + return errors.Wrapf(err, "ioutil.Readall on %s failed", f.Name) + } + + // Create the symlink + if err = os.Symlink(string(b), p); err != nil { + return errors.Wrapf(err, "creating symlink from %s to %s failed", string(b), p) + } + } + return +} diff --git a/vendor/github.com/asticode/go-astitools/zip/zip.go b/vendor/github.com/asticode/go-astitools/zip/zip.go new file mode 100644 index 0000000..a558e22 --- /dev/null +++ b/vendor/github.com/asticode/go-astitools/zip/zip.go @@ -0,0 +1,74 @@ +package astizip + +import ( + "archive/zip" + "context" + "io" + "os" + "path/filepath" + "strings" + + "github.com/asticode/go-astitools/io" +) + +// Zip zips a src into a dst +// dstRoot can be used to create root directories so that the content is zipped in /path/to/zip.zip/root/path +func Zip(ctx context.Context, src, dst, dstRoot string) (err error) { + // Create destination file + var dstFile *os.File + if dstFile, err = os.Create(dst); err != nil { + return err + } + defer dstFile.Close() + + // Create zip writer + var zw = zip.NewWriter(dstFile) + defer zw.Close() + + // Walk + filepath.Walk(src, func(path string, info os.FileInfo, e1 error) (e2 error) { + // Process error + if e1 != nil { + return e1 + } + + // Init header + var h *zip.FileHeader + if h, e2 = zip.FileInfoHeader(info); e2 != nil { + return + } + + // Set header info + h.Name = filepath.Join(dstRoot, strings.TrimPrefix(path, src)) + if info.IsDir() { + h.Name += "/" + } else { + h.Method = zip.Deflate + } + + // Create writer + var w io.Writer + if w, e2 = zw.CreateHeader(h); e2 != nil { + return + } + + // If path is dir, stop here + if info.IsDir() { + return + } + + // Open path + var walkFile *os.File + if walkFile, e2 = os.Open(path); e2 != nil { + return + } + defer walkFile.Close() + + // Copy + if _, e2 = astiio.Copy(ctx, walkFile, w); e2 != nil { + return + } + return + }) + return +} diff --git a/vendor/github.com/denisenkom/go-mssqldb/tds_go18_test.go b/vendor/github.com/denisenkom/go-mssqldb/tds_go18_test.go new file mode 100644 index 0000000..ae5f8b8 --- /dev/null +++ b/vendor/github.com/denisenkom/go-mssqldb/tds_go18_test.go @@ -0,0 +1,39 @@ +package mssql + +import ( + "testing" + "net/url" + "os" + "fmt" + "database/sql" +) + +func TestBadConnect(t *testing.T) { + t.Skip("still fails https://ci.appveyor.com/project/denisenkom/go-mssqldb/build/job/4jm8fmo1rywje9f9") + var badDSNs []string + + if parsed, err := url.Parse(os.Getenv("SQLSERVER_DSN")); err == nil { + parsed.User = url.UserPassword("baduser", "badpwd") + badDSNs = append(badDSNs, parsed.String()) + } + if len(os.Getenv("HOST")) > 0 && len(os.Getenv("INSTANCE")) > 0 { + badDSNs = append(badDSNs, + fmt.Sprintf( + "Server=%s\\%s;User ID=baduser;Password=badpwd", + os.Getenv("HOST"), os.Getenv("INSTANCE"), + ), + ) + } + SetLogger(testLogger{t}) + for _, badDsn := range badDSNs { + conn, err := sql.Open("mssql", badDsn) + if err != nil { + t.Error("Open connection failed:", err.Error()) + } + defer conn.Close() + err = conn.Ping() + if err == nil { + t.Error("Ping should fail for connection: ", badDsn) + } + } +} diff --git a/vendor/github.com/denisenkom/go-mssqldb/types_test.go b/vendor/github.com/denisenkom/go-mssqldb/types_test.go new file mode 100644 index 0000000..ec0bd73 --- /dev/null +++ b/vendor/github.com/denisenkom/go-mssqldb/types_test.go @@ -0,0 +1,28 @@ +package mssql + +import ( + "testing" + "reflect" + "time" +) + +func TestMakeGoLangScanType(t *testing.T) { + if (reflect.TypeOf(int64(0)) != makeGoLangScanType(typeInfo{TypeId: typeInt8})) { + t.Errorf("invalid type returned for typeDateTime") + } + if (reflect.TypeOf(float64(0)) != makeGoLangScanType(typeInfo{TypeId: typeFlt4})) { + t.Errorf("invalid type returned for typeDateTime") + } + if (reflect.TypeOf(float64(0)) != makeGoLangScanType(typeInfo{TypeId: typeFlt8})) { + t.Errorf("invalid type returned for typeDateTime") + } + if (reflect.TypeOf("") != makeGoLangScanType(typeInfo{TypeId: typeVarChar})) { + t.Errorf("invalid type returned for typeDateTime") + } + if (reflect.TypeOf(time.Time{}) != makeGoLangScanType(typeInfo{TypeId: typeDateTime})) { + t.Errorf("invalid type returned for typeDateTime") + } + if (reflect.TypeOf(time.Time{}) != makeGoLangScanType(typeInfo{TypeId: typeDateTim4})) { + t.Errorf("invalid type returned for typeDateTim4") + } +} diff --git a/vendor/github.com/go-xorm/xorm/session_exist.go b/vendor/github.com/go-xorm/xorm/session_exist.go new file mode 100644 index 0000000..049c1dd --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_exist.go @@ -0,0 +1,77 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "errors" + "fmt" + "reflect" + + "github.com/go-xorm/builder" +) + +// Exist returns true if the record exist otherwise return false +func (session *Session) Exist(bean ...interface{}) (bool, error) { + if session.isAutoClose { + defer session.Close() + } + + var sqlStr string + var args []interface{} + var err error + + if session.statement.RawSQL == "" { + if len(bean) == 0 { + tableName := session.statement.TableName() + if len(tableName) <= 0 { + return false, ErrTableNotFound + } + + if session.statement.cond.IsValid() { + condSQL, condArgs, err := builder.ToSQL(session.statement.cond) + if err != nil { + return false, err + } + + sqlStr = fmt.Sprintf("SELECT * FROM %s WHERE %s LIMIT 1", tableName, condSQL) + args = condArgs + } else { + sqlStr = fmt.Sprintf("SELECT * FROM %s LIMIT 1", tableName) + args = []interface{}{} + } + } else { + beanValue := reflect.ValueOf(bean[0]) + if beanValue.Kind() != reflect.Ptr { + return false, errors.New("needs a pointer") + } + + if beanValue.Elem().Kind() == reflect.Struct { + if err := session.statement.setRefValue(beanValue.Elem()); err != nil { + return false, err + } + } + + if len(session.statement.TableName()) <= 0 { + return false, ErrTableNotFound + } + session.statement.Limit(1) + sqlStr, args, err = session.statement.genGetSQL(bean[0]) + if err != nil { + return false, err + } + } + } else { + sqlStr = session.statement.RawSQL + args = session.statement.RawParams + } + + rows, err := session.queryRows(sqlStr, args...) + if err != nil { + return false, err + } + defer rows.Close() + + return rows.Next(), nil +} diff --git a/vendor/github.com/go-xorm/xorm/session_exist_test.go b/vendor/github.com/go-xorm/xorm/session_exist_test.go new file mode 100644 index 0000000..857bf4a --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_exist_test.go @@ -0,0 +1,76 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestExistStruct(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type RecordExist struct { + Id int64 + Name string + } + + assertSync(t, new(RecordExist)) + + has, err := testEngine.Exist(new(RecordExist)) + assert.NoError(t, err) + assert.False(t, has) + + cnt, err := testEngine.Insert(&RecordExist{ + Name: "test1", + }) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + has, err = testEngine.Exist(new(RecordExist)) + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.Exist(&RecordExist{ + Name: "test1", + }) + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.Exist(&RecordExist{ + Name: "test2", + }) + assert.NoError(t, err) + assert.False(t, has) + + has, err = testEngine.Where("name = ?", "test1").Exist(&RecordExist{}) + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.Where("name = ?", "test2").Exist(&RecordExist{}) + assert.NoError(t, err) + assert.False(t, has) + + has, err = testEngine.SQL("select * from record_exist where name = ?", "test1").Exist() + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.SQL("select * from record_exist where name = ?", "test2").Exist() + assert.NoError(t, err) + assert.False(t, has) + + has, err = testEngine.Table("record_exist").Exist() + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.Table("record_exist").Where("name = ?", "test1").Exist() + assert.NoError(t, err) + assert.True(t, has) + + has, err = testEngine.Table("record_exist").Where("name = ?", "test2").Exist() + assert.NoError(t, err) + assert.False(t, has) +} diff --git a/vendor/github.com/go-xorm/xorm/session_query.go b/vendor/github.com/go-xorm/xorm/session_query.go new file mode 100644 index 0000000..989efdf --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_query.go @@ -0,0 +1,182 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "fmt" + "reflect" + "strconv" + "time" + + "github.com/go-xorm/core" +) + +// Query runs a raw sql and return records as []map[string][]byte +func (session *Session) Query(sqlStr string, args ...interface{}) ([]map[string][]byte, error) { + if session.isAutoClose { + defer session.Close() + } + + return session.queryBytes(sqlStr, args...) +} + +func reflect2value(rawValue *reflect.Value) (str string, err error) { + aa := reflect.TypeOf((*rawValue).Interface()) + vv := reflect.ValueOf((*rawValue).Interface()) + switch aa.Kind() { + case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64: + str = strconv.FormatInt(vv.Int(), 10) + case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64: + str = strconv.FormatUint(vv.Uint(), 10) + case reflect.Float32, reflect.Float64: + str = strconv.FormatFloat(vv.Float(), 'f', -1, 64) + case reflect.String: + str = vv.String() + case reflect.Array, reflect.Slice: + switch aa.Elem().Kind() { + case reflect.Uint8: + data := rawValue.Interface().([]byte) + str = string(data) + default: + err = fmt.Errorf("Unsupported struct type %v", vv.Type().Name()) + } + // time type + case reflect.Struct: + if aa.ConvertibleTo(core.TimeType) { + str = vv.Convert(core.TimeType).Interface().(time.Time).Format(time.RFC3339Nano) + } else { + err = fmt.Errorf("Unsupported struct type %v", vv.Type().Name()) + } + case reflect.Bool: + str = strconv.FormatBool(vv.Bool()) + case reflect.Complex128, reflect.Complex64: + str = fmt.Sprintf("%v", vv.Complex()) + /* TODO: unsupported types below + case reflect.Map: + case reflect.Ptr: + case reflect.Uintptr: + case reflect.UnsafePointer: + case reflect.Chan, reflect.Func, reflect.Interface: + */ + default: + err = fmt.Errorf("Unsupported struct type %v", vv.Type().Name()) + } + return +} + +func value2String(rawValue *reflect.Value) (data string, err error) { + data, err = reflect2value(rawValue) + if err != nil { + return + } + return +} + +func row2mapStr(rows *core.Rows, fields []string) (resultsMap map[string]string, err error) { + result := make(map[string]string) + scanResultContainers := make([]interface{}, len(fields)) + for i := 0; i < len(fields); i++ { + var scanResultContainer interface{} + scanResultContainers[i] = &scanResultContainer + } + if err := rows.Scan(scanResultContainers...); err != nil { + return nil, err + } + + for ii, key := range fields { + rawValue := reflect.Indirect(reflect.ValueOf(scanResultContainers[ii])) + // if row is null then as empty string + if rawValue.Interface() == nil { + result[key] = "" + continue + } + + if data, err := value2String(&rawValue); err == nil { + result[key] = data + } else { + return nil, err + } + } + return result, nil +} + +func rows2Strings(rows *core.Rows) (resultsSlice []map[string]string, err error) { + fields, err := rows.Columns() + if err != nil { + return nil, err + } + for rows.Next() { + result, err := row2mapStr(rows, fields) + if err != nil { + return nil, err + } + resultsSlice = append(resultsSlice, result) + } + + return resultsSlice, nil +} + +// QueryString runs a raw sql and return records as []map[string]string +func (session *Session) QueryString(sqlStr string, args ...interface{}) ([]map[string]string, error) { + if session.isAutoClose { + defer session.Close() + } + + rows, err := session.queryRows(sqlStr, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + return rows2Strings(rows) +} + +func row2mapInterface(rows *core.Rows, fields []string) (resultsMap map[string]interface{}, err error) { + resultsMap = make(map[string]interface{}, len(fields)) + scanResultContainers := make([]interface{}, len(fields)) + for i := 0; i < len(fields); i++ { + var scanResultContainer interface{} + scanResultContainers[i] = &scanResultContainer + } + if err := rows.Scan(scanResultContainers...); err != nil { + return nil, err + } + + for ii, key := range fields { + resultsMap[key] = reflect.Indirect(reflect.ValueOf(scanResultContainers[ii])).Interface() + } + return +} + +func rows2Interfaces(rows *core.Rows) (resultsSlice []map[string]interface{}, err error) { + fields, err := rows.Columns() + if err != nil { + return nil, err + } + for rows.Next() { + result, err := row2mapInterface(rows, fields) + if err != nil { + return nil, err + } + resultsSlice = append(resultsSlice, result) + } + + return resultsSlice, nil +} + +// QueryInterface runs a raw sql and return records as []map[string]interface{} +func (session *Session) QueryInterface(sqlStr string, args ...interface{}) ([]map[string]interface{}, error) { + if session.isAutoClose { + defer session.Close() + } + + rows, err := session.queryRows(sqlStr, args...) + if err != nil { + return nil, err + } + defer rows.Close() + + return rows2Interfaces(rows) +} diff --git a/vendor/github.com/go-xorm/xorm/session_query_test.go b/vendor/github.com/go-xorm/xorm/session_query_test.go new file mode 100644 index 0000000..61a0a7f --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_query_test.go @@ -0,0 +1,112 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "fmt" + "strconv" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestQueryString(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type GetVar struct { + Id int64 `xorm:"autoincr pk"` + Msg string `xorm:"varchar(255)"` + Age int + Money float32 + Created time.Time `xorm:"created"` + } + + assert.NoError(t, testEngine.Sync2(new(GetVar))) + + var data = GetVar{ + Msg: "hi", + Age: 28, + Money: 1.5, + } + _, err := testEngine.InsertOne(data) + assert.NoError(t, err) + + records, err := testEngine.QueryString("select * from get_var") + assert.NoError(t, err) + assert.Equal(t, 1, len(records)) + assert.Equal(t, 5, len(records[0])) + assert.Equal(t, "1", records[0]["id"]) + assert.Equal(t, "hi", records[0]["msg"]) + assert.Equal(t, "28", records[0]["age"]) + assert.Equal(t, "1.5", records[0]["money"]) +} + +func toString(i interface{}) string { + switch i.(type) { + case []byte: + return string(i.([]byte)) + case string: + return i.(string) + } + return fmt.Sprintf("%v", i) +} + +func toInt64(i interface{}) int64 { + switch i.(type) { + case []byte: + n, _ := strconv.ParseInt(string(i.([]byte)), 10, 64) + return n + case int: + return int64(i.(int)) + case int64: + return i.(int64) + } + return 0 +} + +func toFloat64(i interface{}) float64 { + switch i.(type) { + case []byte: + n, _ := strconv.ParseFloat(string(i.([]byte)), 64) + return n + case float64: + return i.(float64) + case float32: + return float64(i.(float32)) + } + return 0 +} + +func TestQueryInterface(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type GetVarInterface struct { + Id int64 `xorm:"autoincr pk"` + Msg string `xorm:"varchar(255)"` + Age int + Money float32 + Created time.Time `xorm:"created"` + } + + assert.NoError(t, testEngine.Sync2(new(GetVarInterface))) + + var data = GetVarInterface{ + Msg: "hi", + Age: 28, + Money: 1.5, + } + _, err := testEngine.InsertOne(data) + assert.NoError(t, err) + + records, err := testEngine.QueryInterface("select * from get_var_interface") + assert.NoError(t, err) + assert.Equal(t, 1, len(records)) + assert.Equal(t, 5, len(records[0])) + assert.EqualValues(t, 1, toInt64(records[0]["id"])) + assert.Equal(t, "hi", toString(records[0]["msg"])) + assert.EqualValues(t, 28, toInt64(records[0]["age"])) + assert.EqualValues(t, 1.5, toFloat64(records[0]["money"])) +} diff --git a/vendor/github.com/go-xorm/xorm/session_stats.go b/vendor/github.com/go-xorm/xorm/session_stats.go new file mode 100644 index 0000000..c2cac83 --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_stats.go @@ -0,0 +1,98 @@ +// Copyright 2016 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "database/sql" + "errors" + "reflect" +) + +// Count counts the records. bean's non-empty fields +// are conditions. +func (session *Session) Count(bean ...interface{}) (int64, error) { + if session.isAutoClose { + defer session.Close() + } + + var sqlStr string + var args []interface{} + var err error + if session.statement.RawSQL == "" { + sqlStr, args, err = session.statement.genCountSQL(bean...) + if err != nil { + return 0, err + } + } else { + sqlStr = session.statement.RawSQL + args = session.statement.RawParams + } + + var total int64 + err = session.queryRow(sqlStr, args...).Scan(&total) + if err == sql.ErrNoRows || err == nil { + return total, nil + } + + return 0, err +} + +// sum call sum some column. bean's non-empty fields are conditions. +func (session *Session) sum(res interface{}, bean interface{}, columnNames ...string) error { + if session.isAutoClose { + defer session.Close() + } + + v := reflect.ValueOf(res) + if v.Kind() != reflect.Ptr { + return errors.New("need a pointer to a variable") + } + + var isSlice = v.Elem().Kind() == reflect.Slice + var sqlStr string + var args []interface{} + var err error + if len(session.statement.RawSQL) == 0 { + sqlStr, args, err = session.statement.genSumSQL(bean, columnNames...) + if err != nil { + return err + } + } else { + sqlStr = session.statement.RawSQL + args = session.statement.RawParams + } + + if isSlice { + err = session.queryRow(sqlStr, args...).ScanSlice(res) + } else { + err = session.queryRow(sqlStr, args...).Scan(res) + } + if err == sql.ErrNoRows || err == nil { + return nil + } + return err +} + +// Sum call sum some column. bean's non-empty fields are conditions. +func (session *Session) Sum(bean interface{}, columnName string) (res float64, err error) { + return res, session.sum(&res, bean, columnName) +} + +// SumInt call sum some column. bean's non-empty fields are conditions. +func (session *Session) SumInt(bean interface{}, columnName string) (res int64, err error) { + return res, session.sum(&res, bean, columnName) +} + +// Sums call sum some columns. bean's non-empty fields are conditions. +func (session *Session) Sums(bean interface{}, columnNames ...string) ([]float64, error) { + var res = make([]float64, len(columnNames), len(columnNames)) + return res, session.sum(&res, bean, columnNames...) +} + +// SumsInt sum specify columns and return as []int64 instead of []float64 +func (session *Session) SumsInt(bean interface{}, columnNames ...string) ([]int64, error) { + var res = make([]int64, len(columnNames), len(columnNames)) + return res, session.sum(&res, bean, columnNames...) +} diff --git a/vendor/github.com/go-xorm/xorm/session_stats_test.go b/vendor/github.com/go-xorm/xorm/session_stats_test.go new file mode 100644 index 0000000..73f30e1 --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_stats_test.go @@ -0,0 +1,160 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "fmt" + "strconv" + "testing" + + "github.com/go-xorm/builder" + "github.com/stretchr/testify/assert" +) + +func isFloatEq(i, j float64, precision int) bool { + return fmt.Sprintf("%."+strconv.Itoa(precision)+"f", i) == fmt.Sprintf("%."+strconv.Itoa(precision)+"f", j) +} + +func TestSum(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type SumStruct struct { + Int int + Float float32 + } + + var ( + cases = []SumStruct{ + {1, 6.2}, + {2, 5.3}, + {92, -0.2}, + } + ) + + var i int + var f float32 + for _, v := range cases { + i += v.Int + f += v.Float + } + + assert.NoError(t, testEngine.Sync2(new(SumStruct))) + + cnt, err := testEngine.Insert(cases) + assert.NoError(t, err) + assert.EqualValues(t, 3, cnt) + + colInt := testEngine.ColumnMapper.Obj2Table("Int") + colFloat := testEngine.ColumnMapper.Obj2Table("Float") + + sumInt, err := testEngine.Sum(new(SumStruct), colInt) + assert.NoError(t, err) + assert.EqualValues(t, int(sumInt), i) + + sumFloat, err := testEngine.Sum(new(SumStruct), colFloat) + assert.NoError(t, err) + assert.Condition(t, func() bool { + return isFloatEq(sumFloat, float64(f), 2) + }) + + sums, err := testEngine.Sums(new(SumStruct), colInt, colFloat) + assert.NoError(t, err) + assert.EqualValues(t, 2, len(sums)) + assert.EqualValues(t, i, int(sums[0])) + assert.Condition(t, func() bool { + return isFloatEq(sums[1], float64(f), 2) + }) + + sumsInt, err := testEngine.SumsInt(new(SumStruct), colInt) + assert.NoError(t, err) + assert.EqualValues(t, 1, len(sumsInt)) + assert.EqualValues(t, i, int(sumsInt[0])) +} + +func TestSumCustomColumn(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type SumStruct struct { + Int int + Float float32 + } + + var ( + cases = []SumStruct{ + {1, 6.2}, + {2, 5.3}, + {92, -0.2}, + } + ) + + assert.NoError(t, testEngine.Sync2(new(SumStruct))) + + cnt, err := testEngine.Insert(cases) + assert.NoError(t, err) + assert.EqualValues(t, 3, cnt) + + sumInt, err := testEngine.Sum(new(SumStruct), + "CASE WHEN `int` <= 2 THEN `int` ELSE 0 END") + assert.NoError(t, err) + assert.EqualValues(t, 3, int(sumInt)) +} + +func TestCount(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type UserinfoCount struct { + Departname string + } + assert.NoError(t, testEngine.Sync2(new(UserinfoCount))) + + colName := testEngine.ColumnMapper.Obj2Table("Departname") + var cond builder.Cond = builder.Eq{ + "`" + colName + "`": "dev", + } + + total, err := testEngine.Where(cond).Count(new(UserinfoCount)) + assert.NoError(t, err) + assert.EqualValues(t, 0, total) + + cnt, err := testEngine.Insert(&UserinfoCount{ + Departname: "dev", + }) + assert.NoError(t, err) + assert.EqualValues(t, 1, cnt) + + total, err = testEngine.Where(cond).Count(new(UserinfoCount)) + assert.NoError(t, err) + assert.EqualValues(t, 1, total) + + total, err = testEngine.Where(cond).Table("userinfo_count").Count() + assert.NoError(t, err) + assert.EqualValues(t, 1, total) + + total, err = testEngine.Table("userinfo_count").Count() + assert.NoError(t, err) + assert.EqualValues(t, 1, total) +} + +func TestSQLCount(t *testing.T) { + assert.NoError(t, prepareEngine()) + + type UserinfoCount2 struct { + Id int64 + Departname string + } + + type UserinfoBooks struct { + Id int64 + Pid int64 + IsOpen bool + } + + assertSync(t, new(UserinfoCount2), new(UserinfoBooks)) + + total, err := testEngine.SQL("SELECT count(id) FROM userinfo_count2"). + Count() + assert.NoError(t, err) + assert.EqualValues(t, 0, total) +} diff --git a/vendor/github.com/go-xorm/xorm/session_test.go b/vendor/github.com/go-xorm/xorm/session_test.go new file mode 100644 index 0000000..d003274 --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/session_test.go @@ -0,0 +1,23 @@ +// Copyright 2017 The Xorm Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package xorm + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestClose(t *testing.T) { + assert.NoError(t, prepareEngine()) + + sess1 := testEngine.NewSession() + sess1.Close() + assert.True(t, sess1.IsClosed()) + + sess2 := testEngine.Where("a = ?", 1) + sess2.Close() + assert.True(t, sess2.IsClosed()) +} diff --git a/vendor/github.com/go-xorm/xorm/test_mymysql.sh b/vendor/github.com/go-xorm/xorm/test_mymysql.sh new file mode 100755 index 0000000..f7780d1 --- /dev/null +++ b/vendor/github.com/go-xorm/xorm/test_mymysql.sh @@ -0,0 +1 @@ +go test -db=mymysql -conn_str="xorm_test/root/" \ No newline at end of file diff --git a/vendor/github.com/labstack/echo/.travis.yml b/vendor/github.com/labstack/echo/.travis.yml index f75e70b..951c2d3 100644 --- a/vendor/github.com/labstack/echo/.travis.yml +++ b/vendor/github.com/labstack/echo/.travis.yml @@ -1,7 +1,7 @@ language: go go: - - 1.7.x - 1.8.x + - 1.9.x - tip install: - make dependency diff --git a/vendor/github.com/labstack/echo/echo.go b/vendor/github.com/labstack/echo/echo.go index d6b3f51..b06bc92 100644 --- a/vendor/github.com/labstack/echo/echo.go +++ b/vendor/github.com/labstack/echo/echo.go @@ -95,6 +95,7 @@ type ( HTTPError struct { Code int Message interface{} + Inner error // Stores the error returned by an external dependency } // MiddlewareFunc defines a function to process middleware. @@ -321,6 +322,9 @@ func (e *Echo) DefaultHTTPErrorHandler(err error, c Context) { msg = he.Message } else if e.Debug { msg = err.Error() + if he.Inner != nil { + msg = fmt.Sprintf("%v, %v", err, he.Inner) + } } else { msg = http.StatusText(code) } @@ -330,16 +334,15 @@ func (e *Echo) DefaultHTTPErrorHandler(err error, c Context) { if !c.Response().Committed { if c.Request().Method == HEAD { // Issue #608 - if err := c.NoContent(code); err != nil { - goto ERROR - } + err = c.NoContent(code) } else { - if err := c.JSON(code, msg); err != nil { - goto ERROR - } + err = c.JSON(code, msg) + } + if err != nil { + e.Logger.Error(err) } } -ERROR: + e.Logger.Error(err) } diff --git a/vendor/github.com/labstack/echo/middleware/jwt.go b/vendor/github.com/labstack/echo/middleware/jwt.go index 96a6640..47d885b 100644 --- a/vendor/github.com/labstack/echo/middleware/jwt.go +++ b/vendor/github.com/labstack/echo/middleware/jwt.go @@ -1,7 +1,6 @@ package middleware import ( - "errors" "fmt" "net/http" "reflect" @@ -57,6 +56,12 @@ const ( AlgorithmHS256 = "HS256" ) +// Errors +var ( + ErrJWTMissing = echo.NewHTTPError(http.StatusBadRequest, "Missing or malformed jwt") + ErrJWTInvalid = echo.NewHTTPError(http.StatusUnauthorized, "Invalid or expired jwt") +) + var ( // DefaultJWTConfig is the default JWT auth middleware config. DefaultJWTConfig = JWTConfig{ @@ -134,7 +139,7 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFunc { auth, err := extractor(c) if err != nil { - return echo.NewHTTPError(http.StatusBadRequest, err.Error()) + return err } token := new(jwt.Token) // Issue #647, #656 @@ -150,7 +155,11 @@ func JWTWithConfig(config JWTConfig) echo.MiddlewareFunc { c.Set(config.ContextKey, token) return next(c) } - return echo.ErrUnauthorized + return &echo.HTTPError{ + Code: ErrJWTInvalid.Code, + Message: ErrJWTInvalid.Message, + Inner: err, + } } } } @@ -163,7 +172,7 @@ func jwtFromHeader(header string, authScheme string) jwtExtractor { if len(auth) > l+1 && auth[:l] == authScheme { return auth[l+1:], nil } - return "", errors.New("Missing or invalid jwt in the request header") + return "", ErrJWTMissing } } @@ -172,7 +181,7 @@ func jwtFromQuery(param string) jwtExtractor { return func(c echo.Context) (string, error) { token := c.QueryParam(param) if token == "" { - return "", errors.New("Missing jwt in the query string") + return "", ErrJWTMissing } return token, nil } @@ -183,7 +192,7 @@ func jwtFromCookie(name string) jwtExtractor { return func(c echo.Context) (string, error) { cookie, err := c.Cookie(name) if err != nil { - return "", errors.New("Missing jwt in the cookie") + return "", ErrJWTMissing } return cookie.Value, nil } diff --git a/vendor/github.com/mattn/go-colorable/cmd/colorable/colorable.go b/vendor/github.com/mattn/go-colorable/cmd/colorable/colorable.go new file mode 100644 index 0000000..8790477 --- /dev/null +++ b/vendor/github.com/mattn/go-colorable/cmd/colorable/colorable.go @@ -0,0 +1,12 @@ +package main + +import ( + "io" + "os" + + "github.com/mattn/go-colorable" +) + +func main() { + io.Copy(colorable.NewColorableStdout(), os.Stdin) +} diff --git a/vendor/github.com/pkg/errors/.gitignore b/vendor/github.com/pkg/errors/.gitignore new file mode 100644 index 0000000..daf913b --- /dev/null +++ b/vendor/github.com/pkg/errors/.gitignore @@ -0,0 +1,24 @@ +# Compiled Object files, Static and Dynamic libs (Shared Objects) +*.o +*.a +*.so + +# Folders +_obj +_test + +# Architecture specific extensions/prefixes +*.[568vq] +[568vq].out + +*.cgo1.go +*.cgo2.c +_cgo_defun.c +_cgo_gotypes.go +_cgo_export.* + +_testmain.go + +*.exe +*.test +*.prof diff --git a/vendor/github.com/pkg/errors/.travis.yml b/vendor/github.com/pkg/errors/.travis.yml new file mode 100644 index 0000000..bf3eed6 --- /dev/null +++ b/vendor/github.com/pkg/errors/.travis.yml @@ -0,0 +1,12 @@ +language: go +go_import_path: github.com/pkg/errors +go: + - 1.4.x + - 1.5.x + - 1.6.x + - 1.7.x + - 1.8.x + - tip + +script: + - go test -v ./... diff --git a/vendor/github.com/pkg/errors/LICENSE b/vendor/github.com/pkg/errors/LICENSE new file mode 100644 index 0000000..835ba3e --- /dev/null +++ b/vendor/github.com/pkg/errors/LICENSE @@ -0,0 +1,23 @@ +Copyright (c) 2015, Dave Cheney +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/vendor/github.com/pkg/errors/README.md b/vendor/github.com/pkg/errors/README.md new file mode 100644 index 0000000..273db3c --- /dev/null +++ b/vendor/github.com/pkg/errors/README.md @@ -0,0 +1,52 @@ +# errors [![Travis-CI](https://travis-ci.org/pkg/errors.svg)](https://travis-ci.org/pkg/errors) [![AppVeyor](https://ci.appveyor.com/api/projects/status/b98mptawhudj53ep/branch/master?svg=true)](https://ci.appveyor.com/project/davecheney/errors/branch/master) [![GoDoc](https://godoc.org/github.com/pkg/errors?status.svg)](http://godoc.org/github.com/pkg/errors) [![Report card](https://goreportcard.com/badge/github.com/pkg/errors)](https://goreportcard.com/report/github.com/pkg/errors) + +Package errors provides simple error handling primitives. + +`go get github.com/pkg/errors` + +The traditional error handling idiom in Go is roughly akin to +```go +if err != nil { + return err +} +``` +which applied recursively up the call stack results in error reports without context or debugging information. The errors package allows programmers to add context to the failure path in their code in a way that does not destroy the original value of the error. + +## Adding context to an error + +The errors.Wrap function returns a new error that adds context to the original error. For example +```go +_, err := ioutil.ReadAll(r) +if err != nil { + return errors.Wrap(err, "read failed") +} +``` +## Retrieving the cause of an error + +Using `errors.Wrap` constructs a stack of errors, adding context to the preceding error. Depending on the nature of the error it may be necessary to reverse the operation of errors.Wrap to retrieve the original error for inspection. Any error value which implements this interface can be inspected by `errors.Cause`. +```go +type causer interface { + Cause() error +} +``` +`errors.Cause` will recursively retrieve the topmost error which does not implement `causer`, which is assumed to be the original cause. For example: +```go +switch err := errors.Cause(err).(type) { +case *MyError: + // handle specifically +default: + // unknown error +} +``` + +[Read the package documentation for more information](https://godoc.org/github.com/pkg/errors). + +## Contributing + +We welcome pull requests, bug fixes and issue reports. With that said, the bar for adding new symbols to this package is intentionally set high. + +Before proposing a change, please discuss your change by raising an issue. + +## Licence + +BSD-2-Clause diff --git a/vendor/github.com/pkg/errors/appveyor.yml b/vendor/github.com/pkg/errors/appveyor.yml new file mode 100644 index 0000000..a932ead --- /dev/null +++ b/vendor/github.com/pkg/errors/appveyor.yml @@ -0,0 +1,32 @@ +version: build-{build}.{branch} + +clone_folder: C:\gopath\src\github.com\pkg\errors +shallow_clone: true # for startup speed + +environment: + GOPATH: C:\gopath + +platform: + - x64 + +# http://www.appveyor.com/docs/installed-software +install: + # some helpful output for debugging builds + - go version + - go env + # pre-installed MinGW at C:\MinGW is 32bit only + # but MSYS2 at C:\msys64 has mingw64 + - set PATH=C:\msys64\mingw64\bin;%PATH% + - gcc --version + - g++ --version + +build_script: + - go install -v ./... + +test_script: + - set PATH=C:\gopath\bin;%PATH% + - go test -v ./... + +#artifacts: +# - path: '%GOPATH%\bin\*.exe' +deploy: off diff --git a/vendor/github.com/pkg/errors/bench_test.go b/vendor/github.com/pkg/errors/bench_test.go new file mode 100644 index 0000000..903b5f2 --- /dev/null +++ b/vendor/github.com/pkg/errors/bench_test.go @@ -0,0 +1,63 @@ +// +build go1.7 + +package errors + +import ( + "fmt" + "testing" + + stderrors "errors" +) + +func noErrors(at, depth int) error { + if at >= depth { + return stderrors.New("no error") + } + return noErrors(at+1, depth) +} + +func yesErrors(at, depth int) error { + if at >= depth { + return New("ye error") + } + return yesErrors(at+1, depth) +} + +// GlobalE is an exported global to store the result of benchmark results, +// preventing the compiler from optimising the benchmark functions away. +var GlobalE error + +func BenchmarkErrors(b *testing.B) { + type run struct { + stack int + std bool + } + runs := []run{ + {10, false}, + {10, true}, + {100, false}, + {100, true}, + {1000, false}, + {1000, true}, + } + for _, r := range runs { + part := "pkg/errors" + if r.std { + part = "errors" + } + name := fmt.Sprintf("%s-stack-%d", part, r.stack) + b.Run(name, func(b *testing.B) { + var err error + f := yesErrors + if r.std { + f = noErrors + } + b.ReportAllocs() + for i := 0; i < b.N; i++ { + err = f(0, r.stack) + } + b.StopTimer() + GlobalE = err + }) + } +} diff --git a/vendor/github.com/pkg/errors/errors.go b/vendor/github.com/pkg/errors/errors.go new file mode 100644 index 0000000..842ee80 --- /dev/null +++ b/vendor/github.com/pkg/errors/errors.go @@ -0,0 +1,269 @@ +// Package errors provides simple error handling primitives. +// +// The traditional error handling idiom in Go is roughly akin to +// +// if err != nil { +// return err +// } +// +// which applied recursively up the call stack results in error reports +// without context or debugging information. The errors package allows +// programmers to add context to the failure path in their code in a way +// that does not destroy the original value of the error. +// +// Adding context to an error +// +// The errors.Wrap function returns a new error that adds context to the +// original error by recording a stack trace at the point Wrap is called, +// and the supplied message. For example +// +// _, err := ioutil.ReadAll(r) +// if err != nil { +// return errors.Wrap(err, "read failed") +// } +// +// If additional control is required the errors.WithStack and errors.WithMessage +// functions destructure errors.Wrap into its component operations of annotating +// an error with a stack trace and an a message, respectively. +// +// Retrieving the cause of an error +// +// Using errors.Wrap constructs a stack of errors, adding context to the +// preceding error. Depending on the nature of the error it may be necessary +// to reverse the operation of errors.Wrap to retrieve the original error +// for inspection. Any error value which implements this interface +// +// type causer interface { +// Cause() error +// } +// +// can be inspected by errors.Cause. errors.Cause will recursively retrieve +// the topmost error which does not implement causer, which is assumed to be +// the original cause. For example: +// +// switch err := errors.Cause(err).(type) { +// case *MyError: +// // handle specifically +// default: +// // unknown error +// } +// +// causer interface is not exported by this package, but is considered a part +// of stable public API. +// +// Formatted printing of errors +// +// All error values returned from this package implement fmt.Formatter and can +// be formatted by the fmt package. The following verbs are supported +// +// %s print the error. If the error has a Cause it will be +// printed recursively +// %v see %s +// %+v extended format. Each Frame of the error's StackTrace will +// be printed in detail. +// +// Retrieving the stack trace of an error or wrapper +// +// New, Errorf, Wrap, and Wrapf record a stack trace at the point they are +// invoked. This information can be retrieved with the following interface. +// +// type stackTracer interface { +// StackTrace() errors.StackTrace +// } +// +// Where errors.StackTrace is defined as +// +// type StackTrace []Frame +// +// The Frame type represents a call site in the stack trace. Frame supports +// the fmt.Formatter interface that can be used for printing information about +// the stack trace of this error. For example: +// +// if err, ok := err.(stackTracer); ok { +// for _, f := range err.StackTrace() { +// fmt.Printf("%+s:%d", f) +// } +// } +// +// stackTracer interface is not exported by this package, but is considered a part +// of stable public API. +// +// See the documentation for Frame.Format for more details. +package errors + +import ( + "fmt" + "io" +) + +// New returns an error with the supplied message. +// New also records the stack trace at the point it was called. +func New(message string) error { + return &fundamental{ + msg: message, + stack: callers(), + } +} + +// Errorf formats according to a format specifier and returns the string +// as a value that satisfies error. +// Errorf also records the stack trace at the point it was called. +func Errorf(format string, args ...interface{}) error { + return &fundamental{ + msg: fmt.Sprintf(format, args...), + stack: callers(), + } +} + +// fundamental is an error that has a message and a stack, but no caller. +type fundamental struct { + msg string + *stack +} + +func (f *fundamental) Error() string { return f.msg } + +func (f *fundamental) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + io.WriteString(s, f.msg) + f.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, f.msg) + case 'q': + fmt.Fprintf(s, "%q", f.msg) + } +} + +// WithStack annotates err with a stack trace at the point WithStack was called. +// If err is nil, WithStack returns nil. +func WithStack(err error) error { + if err == nil { + return nil + } + return &withStack{ + err, + callers(), + } +} + +type withStack struct { + error + *stack +} + +func (w *withStack) Cause() error { return w.error } + +func (w *withStack) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v", w.Cause()) + w.stack.Format(s, verb) + return + } + fallthrough + case 's': + io.WriteString(s, w.Error()) + case 'q': + fmt.Fprintf(s, "%q", w.Error()) + } +} + +// Wrap returns an error annotating err with a stack trace +// at the point Wrap is called, and the supplied message. +// If err is nil, Wrap returns nil. +func Wrap(err error, message string) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: message, + } + return &withStack{ + err, + callers(), + } +} + +// Wrapf returns an error annotating err with a stack trace +// at the point Wrapf is call, and the format specifier. +// If err is nil, Wrapf returns nil. +func Wrapf(err error, format string, args ...interface{}) error { + if err == nil { + return nil + } + err = &withMessage{ + cause: err, + msg: fmt.Sprintf(format, args...), + } + return &withStack{ + err, + callers(), + } +} + +// WithMessage annotates err with a new message. +// If err is nil, WithMessage returns nil. +func WithMessage(err error, message string) error { + if err == nil { + return nil + } + return &withMessage{ + cause: err, + msg: message, + } +} + +type withMessage struct { + cause error + msg string +} + +func (w *withMessage) Error() string { return w.msg + ": " + w.cause.Error() } +func (w *withMessage) Cause() error { return w.cause } + +func (w *withMessage) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + if s.Flag('+') { + fmt.Fprintf(s, "%+v\n", w.Cause()) + io.WriteString(s, w.msg) + return + } + fallthrough + case 's', 'q': + io.WriteString(s, w.Error()) + } +} + +// Cause returns the underlying cause of the error, if possible. +// An error value has a cause if it implements the following +// interface: +// +// type causer interface { +// Cause() error +// } +// +// If the error does not implement Cause, the original error will +// be returned. If the error is nil, nil will be returned without further +// investigation. +func Cause(err error) error { + type causer interface { + Cause() error + } + + for err != nil { + cause, ok := err.(causer) + if !ok { + break + } + err = cause.Cause() + } + return err +} diff --git a/vendor/github.com/pkg/errors/errors_test.go b/vendor/github.com/pkg/errors/errors_test.go new file mode 100644 index 0000000..c4e6eef --- /dev/null +++ b/vendor/github.com/pkg/errors/errors_test.go @@ -0,0 +1,225 @@ +package errors + +import ( + "errors" + "fmt" + "io" + "reflect" + "testing" +) + +func TestNew(t *testing.T) { + tests := []struct { + err string + want error + }{ + {"", fmt.Errorf("")}, + {"foo", fmt.Errorf("foo")}, + {"foo", New("foo")}, + {"string with format specifiers: %v", errors.New("string with format specifiers: %v")}, + } + + for _, tt := range tests { + got := New(tt.err) + if got.Error() != tt.want.Error() { + t.Errorf("New.Error(): got: %q, want %q", got, tt.want) + } + } +} + +func TestWrapNil(t *testing.T) { + got := Wrap(nil, "no error") + if got != nil { + t.Errorf("Wrap(nil, \"no error\"): got %#v, expected nil", got) + } +} + +func TestWrap(t *testing.T) { + tests := []struct { + err error + message string + want string + }{ + {io.EOF, "read error", "read error: EOF"}, + {Wrap(io.EOF, "read error"), "client error", "client error: read error: EOF"}, + } + + for _, tt := range tests { + got := Wrap(tt.err, tt.message).Error() + if got != tt.want { + t.Errorf("Wrap(%v, %q): got: %v, want %v", tt.err, tt.message, got, tt.want) + } + } +} + +type nilError struct{} + +func (nilError) Error() string { return "nil error" } + +func TestCause(t *testing.T) { + x := New("error") + tests := []struct { + err error + want error + }{{ + // nil error is nil + err: nil, + want: nil, + }, { + // explicit nil error is nil + err: (error)(nil), + want: nil, + }, { + // typed nil is nil + err: (*nilError)(nil), + want: (*nilError)(nil), + }, { + // uncaused error is unaffected + err: io.EOF, + want: io.EOF, + }, { + // caused error returns cause + err: Wrap(io.EOF, "ignored"), + want: io.EOF, + }, { + err: x, // return from errors.New + want: x, + }, { + WithMessage(nil, "whoops"), + nil, + }, { + WithMessage(io.EOF, "whoops"), + io.EOF, + }, { + WithStack(nil), + nil, + }, { + WithStack(io.EOF), + io.EOF, + }} + + for i, tt := range tests { + got := Cause(tt.err) + if !reflect.DeepEqual(got, tt.want) { + t.Errorf("test %d: got %#v, want %#v", i+1, got, tt.want) + } + } +} + +func TestWrapfNil(t *testing.T) { + got := Wrapf(nil, "no error") + if got != nil { + t.Errorf("Wrapf(nil, \"no error\"): got %#v, expected nil", got) + } +} + +func TestWrapf(t *testing.T) { + tests := []struct { + err error + message string + want string + }{ + {io.EOF, "read error", "read error: EOF"}, + {Wrapf(io.EOF, "read error without format specifiers"), "client error", "client error: read error without format specifiers: EOF"}, + {Wrapf(io.EOF, "read error with %d format specifier", 1), "client error", "client error: read error with 1 format specifier: EOF"}, + } + + for _, tt := range tests { + got := Wrapf(tt.err, tt.message).Error() + if got != tt.want { + t.Errorf("Wrapf(%v, %q): got: %v, want %v", tt.err, tt.message, got, tt.want) + } + } +} + +func TestErrorf(t *testing.T) { + tests := []struct { + err error + want string + }{ + {Errorf("read error without format specifiers"), "read error without format specifiers"}, + {Errorf("read error with %d format specifier", 1), "read error with 1 format specifier"}, + } + + for _, tt := range tests { + got := tt.err.Error() + if got != tt.want { + t.Errorf("Errorf(%v): got: %q, want %q", tt.err, got, tt.want) + } + } +} + +func TestWithStackNil(t *testing.T) { + got := WithStack(nil) + if got != nil { + t.Errorf("WithStack(nil): got %#v, expected nil", got) + } +} + +func TestWithStack(t *testing.T) { + tests := []struct { + err error + want string + }{ + {io.EOF, "EOF"}, + {WithStack(io.EOF), "EOF"}, + } + + for _, tt := range tests { + got := WithStack(tt.err).Error() + if got != tt.want { + t.Errorf("WithStack(%v): got: %v, want %v", tt.err, got, tt.want) + } + } +} + +func TestWithMessageNil(t *testing.T) { + got := WithMessage(nil, "no error") + if got != nil { + t.Errorf("WithMessage(nil, \"no error\"): got %#v, expected nil", got) + } +} + +func TestWithMessage(t *testing.T) { + tests := []struct { + err error + message string + want string + }{ + {io.EOF, "read error", "read error: EOF"}, + {WithMessage(io.EOF, "read error"), "client error", "client error: read error: EOF"}, + } + + for _, tt := range tests { + got := WithMessage(tt.err, tt.message).Error() + if got != tt.want { + t.Errorf("WithMessage(%v, %q): got: %q, want %q", tt.err, tt.message, got, tt.want) + } + } +} + +// errors.New, etc values are not expected to be compared by value +// but the change in errors#27 made them incomparable. Assert that +// various kinds of errors have a functional equality operator, even +// if the result of that equality is always false. +func TestErrorEquality(t *testing.T) { + vals := []error{ + nil, + io.EOF, + errors.New("EOF"), + New("EOF"), + Errorf("EOF"), + Wrap(io.EOF, "EOF"), + Wrapf(io.EOF, "EOF%d", 2), + WithMessage(nil, "whoops"), + WithMessage(io.EOF, "whoops"), + WithStack(io.EOF), + WithStack(nil), + } + + for i := range vals { + for j := range vals { + _ = vals[i] == vals[j] // mustn't panic + } + } +} diff --git a/vendor/github.com/pkg/errors/example_test.go b/vendor/github.com/pkg/errors/example_test.go new file mode 100644 index 0000000..c1fc13e --- /dev/null +++ b/vendor/github.com/pkg/errors/example_test.go @@ -0,0 +1,205 @@ +package errors_test + +import ( + "fmt" + + "github.com/pkg/errors" +) + +func ExampleNew() { + err := errors.New("whoops") + fmt.Println(err) + + // Output: whoops +} + +func ExampleNew_printf() { + err := errors.New("whoops") + fmt.Printf("%+v", err) + + // Example output: + // whoops + // github.com/pkg/errors_test.ExampleNew_printf + // /home/dfc/src/github.com/pkg/errors/example_test.go:17 + // testing.runExample + // /home/dfc/go/src/testing/example.go:114 + // testing.RunExamples + // /home/dfc/go/src/testing/example.go:38 + // testing.(*M).Run + // /home/dfc/go/src/testing/testing.go:744 + // main.main + // /github.com/pkg/errors/_test/_testmain.go:106 + // runtime.main + // /home/dfc/go/src/runtime/proc.go:183 + // runtime.goexit + // /home/dfc/go/src/runtime/asm_amd64.s:2059 +} + +func ExampleWithMessage() { + cause := errors.New("whoops") + err := errors.WithMessage(cause, "oh noes") + fmt.Println(err) + + // Output: oh noes: whoops +} + +func ExampleWithStack() { + cause := errors.New("whoops") + err := errors.WithStack(cause) + fmt.Println(err) + + // Output: whoops +} + +func ExampleWithStack_printf() { + cause := errors.New("whoops") + err := errors.WithStack(cause) + fmt.Printf("%+v", err) + + // Example Output: + // whoops + // github.com/pkg/errors_test.ExampleWithStack_printf + // /home/fabstu/go/src/github.com/pkg/errors/example_test.go:55 + // testing.runExample + // /usr/lib/go/src/testing/example.go:114 + // testing.RunExamples + // /usr/lib/go/src/testing/example.go:38 + // testing.(*M).Run + // /usr/lib/go/src/testing/testing.go:744 + // main.main + // github.com/pkg/errors/_test/_testmain.go:106 + // runtime.main + // /usr/lib/go/src/runtime/proc.go:183 + // runtime.goexit + // /usr/lib/go/src/runtime/asm_amd64.s:2086 + // github.com/pkg/errors_test.ExampleWithStack_printf + // /home/fabstu/go/src/github.com/pkg/errors/example_test.go:56 + // testing.runExample + // /usr/lib/go/src/testing/example.go:114 + // testing.RunExamples + // /usr/lib/go/src/testing/example.go:38 + // testing.(*M).Run + // /usr/lib/go/src/testing/testing.go:744 + // main.main + // github.com/pkg/errors/_test/_testmain.go:106 + // runtime.main + // /usr/lib/go/src/runtime/proc.go:183 + // runtime.goexit + // /usr/lib/go/src/runtime/asm_amd64.s:2086 +} + +func ExampleWrap() { + cause := errors.New("whoops") + err := errors.Wrap(cause, "oh noes") + fmt.Println(err) + + // Output: oh noes: whoops +} + +func fn() error { + e1 := errors.New("error") + e2 := errors.Wrap(e1, "inner") + e3 := errors.Wrap(e2, "middle") + return errors.Wrap(e3, "outer") +} + +func ExampleCause() { + err := fn() + fmt.Println(err) + fmt.Println(errors.Cause(err)) + + // Output: outer: middle: inner: error + // error +} + +func ExampleWrap_extended() { + err := fn() + fmt.Printf("%+v\n", err) + + // Example output: + // error + // github.com/pkg/errors_test.fn + // /home/dfc/src/github.com/pkg/errors/example_test.go:47 + // github.com/pkg/errors_test.ExampleCause_printf + // /home/dfc/src/github.com/pkg/errors/example_test.go:63 + // testing.runExample + // /home/dfc/go/src/testing/example.go:114 + // testing.RunExamples + // /home/dfc/go/src/testing/example.go:38 + // testing.(*M).Run + // /home/dfc/go/src/testing/testing.go:744 + // main.main + // /github.com/pkg/errors/_test/_testmain.go:104 + // runtime.main + // /home/dfc/go/src/runtime/proc.go:183 + // runtime.goexit + // /home/dfc/go/src/runtime/asm_amd64.s:2059 + // github.com/pkg/errors_test.fn + // /home/dfc/src/github.com/pkg/errors/example_test.go:48: inner + // github.com/pkg/errors_test.fn + // /home/dfc/src/github.com/pkg/errors/example_test.go:49: middle + // github.com/pkg/errors_test.fn + // /home/dfc/src/github.com/pkg/errors/example_test.go:50: outer +} + +func ExampleWrapf() { + cause := errors.New("whoops") + err := errors.Wrapf(cause, "oh noes #%d", 2) + fmt.Println(err) + + // Output: oh noes #2: whoops +} + +func ExampleErrorf_extended() { + err := errors.Errorf("whoops: %s", "foo") + fmt.Printf("%+v", err) + + // Example output: + // whoops: foo + // github.com/pkg/errors_test.ExampleErrorf + // /home/dfc/src/github.com/pkg/errors/example_test.go:101 + // testing.runExample + // /home/dfc/go/src/testing/example.go:114 + // testing.RunExamples + // /home/dfc/go/src/testing/example.go:38 + // testing.(*M).Run + // /home/dfc/go/src/testing/testing.go:744 + // main.main + // /github.com/pkg/errors/_test/_testmain.go:102 + // runtime.main + // /home/dfc/go/src/runtime/proc.go:183 + // runtime.goexit + // /home/dfc/go/src/runtime/asm_amd64.s:2059 +} + +func Example_stackTrace() { + type stackTracer interface { + StackTrace() errors.StackTrace + } + + err, ok := errors.Cause(fn()).(stackTracer) + if !ok { + panic("oops, err does not implement stackTracer") + } + + st := err.StackTrace() + fmt.Printf("%+v", st[0:2]) // top two frames + + // Example output: + // github.com/pkg/errors_test.fn + // /home/dfc/src/github.com/pkg/errors/example_test.go:47 + // github.com/pkg/errors_test.Example_stackTrace + // /home/dfc/src/github.com/pkg/errors/example_test.go:127 +} + +func ExampleCause_printf() { + err := errors.Wrap(func() error { + return func() error { + return errors.Errorf("hello %s", fmt.Sprintf("world")) + }() + }(), "failed") + + fmt.Printf("%v", err) + + // Output: failed: hello world +} diff --git a/vendor/github.com/pkg/errors/format_test.go b/vendor/github.com/pkg/errors/format_test.go new file mode 100644 index 0000000..15fd7d8 --- /dev/null +++ b/vendor/github.com/pkg/errors/format_test.go @@ -0,0 +1,535 @@ +package errors + +import ( + "errors" + "fmt" + "io" + "regexp" + "strings" + "testing" +) + +func TestFormatNew(t *testing.T) { + tests := []struct { + error + format string + want string + }{{ + New("error"), + "%s", + "error", + }, { + New("error"), + "%v", + "error", + }, { + New("error"), + "%+v", + "error\n" + + "github.com/pkg/errors.TestFormatNew\n" + + "\t.+/github.com/pkg/errors/format_test.go:26", + }, { + New("error"), + "%q", + `"error"`, + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.error, tt.format, tt.want) + } +} + +func TestFormatErrorf(t *testing.T) { + tests := []struct { + error + format string + want string + }{{ + Errorf("%s", "error"), + "%s", + "error", + }, { + Errorf("%s", "error"), + "%v", + "error", + }, { + Errorf("%s", "error"), + "%+v", + "error\n" + + "github.com/pkg/errors.TestFormatErrorf\n" + + "\t.+/github.com/pkg/errors/format_test.go:56", + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.error, tt.format, tt.want) + } +} + +func TestFormatWrap(t *testing.T) { + tests := []struct { + error + format string + want string + }{{ + Wrap(New("error"), "error2"), + "%s", + "error2: error", + }, { + Wrap(New("error"), "error2"), + "%v", + "error2: error", + }, { + Wrap(New("error"), "error2"), + "%+v", + "error\n" + + "github.com/pkg/errors.TestFormatWrap\n" + + "\t.+/github.com/pkg/errors/format_test.go:82", + }, { + Wrap(io.EOF, "error"), + "%s", + "error: EOF", + }, { + Wrap(io.EOF, "error"), + "%v", + "error: EOF", + }, { + Wrap(io.EOF, "error"), + "%+v", + "EOF\n" + + "error\n" + + "github.com/pkg/errors.TestFormatWrap\n" + + "\t.+/github.com/pkg/errors/format_test.go:96", + }, { + Wrap(Wrap(io.EOF, "error1"), "error2"), + "%+v", + "EOF\n" + + "error1\n" + + "github.com/pkg/errors.TestFormatWrap\n" + + "\t.+/github.com/pkg/errors/format_test.go:103\n", + }, { + Wrap(New("error with space"), "context"), + "%q", + `"context: error with space"`, + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.error, tt.format, tt.want) + } +} + +func TestFormatWrapf(t *testing.T) { + tests := []struct { + error + format string + want string + }{{ + Wrapf(io.EOF, "error%d", 2), + "%s", + "error2: EOF", + }, { + Wrapf(io.EOF, "error%d", 2), + "%v", + "error2: EOF", + }, { + Wrapf(io.EOF, "error%d", 2), + "%+v", + "EOF\n" + + "error2\n" + + "github.com/pkg/errors.TestFormatWrapf\n" + + "\t.+/github.com/pkg/errors/format_test.go:134", + }, { + Wrapf(New("error"), "error%d", 2), + "%s", + "error2: error", + }, { + Wrapf(New("error"), "error%d", 2), + "%v", + "error2: error", + }, { + Wrapf(New("error"), "error%d", 2), + "%+v", + "error\n" + + "github.com/pkg/errors.TestFormatWrapf\n" + + "\t.+/github.com/pkg/errors/format_test.go:149", + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.error, tt.format, tt.want) + } +} + +func TestFormatWithStack(t *testing.T) { + tests := []struct { + error + format string + want []string + }{{ + WithStack(io.EOF), + "%s", + []string{"EOF"}, + }, { + WithStack(io.EOF), + "%v", + []string{"EOF"}, + }, { + WithStack(io.EOF), + "%+v", + []string{"EOF", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:175"}, + }, { + WithStack(New("error")), + "%s", + []string{"error"}, + }, { + WithStack(New("error")), + "%v", + []string{"error"}, + }, { + WithStack(New("error")), + "%+v", + []string{"error", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:189", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:189"}, + }, { + WithStack(WithStack(io.EOF)), + "%+v", + []string{"EOF", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:197", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:197"}, + }, { + WithStack(WithStack(Wrapf(io.EOF, "message"))), + "%+v", + []string{"EOF", + "message", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:205", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:205", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:205"}, + }, { + WithStack(Errorf("error%d", 1)), + "%+v", + []string{"error1", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:216", + "github.com/pkg/errors.TestFormatWithStack\n" + + "\t.+/github.com/pkg/errors/format_test.go:216"}, + }} + + for i, tt := range tests { + testFormatCompleteCompare(t, i, tt.error, tt.format, tt.want, true) + } +} + +func TestFormatWithMessage(t *testing.T) { + tests := []struct { + error + format string + want []string + }{{ + WithMessage(New("error"), "error2"), + "%s", + []string{"error2: error"}, + }, { + WithMessage(New("error"), "error2"), + "%v", + []string{"error2: error"}, + }, { + WithMessage(New("error"), "error2"), + "%+v", + []string{ + "error", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:244", + "error2"}, + }, { + WithMessage(io.EOF, "addition1"), + "%s", + []string{"addition1: EOF"}, + }, { + WithMessage(io.EOF, "addition1"), + "%v", + []string{"addition1: EOF"}, + }, { + WithMessage(io.EOF, "addition1"), + "%+v", + []string{"EOF", "addition1"}, + }, { + WithMessage(WithMessage(io.EOF, "addition1"), "addition2"), + "%v", + []string{"addition2: addition1: EOF"}, + }, { + WithMessage(WithMessage(io.EOF, "addition1"), "addition2"), + "%+v", + []string{"EOF", "addition1", "addition2"}, + }, { + Wrap(WithMessage(io.EOF, "error1"), "error2"), + "%+v", + []string{"EOF", "error1", "error2", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:272"}, + }, { + WithMessage(Errorf("error%d", 1), "error2"), + "%+v", + []string{"error1", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:278", + "error2"}, + }, { + WithMessage(WithStack(io.EOF), "error"), + "%+v", + []string{ + "EOF", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:285", + "error"}, + }, { + WithMessage(Wrap(WithStack(io.EOF), "inside-error"), "outside-error"), + "%+v", + []string{ + "EOF", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:293", + "inside-error", + "github.com/pkg/errors.TestFormatWithMessage\n" + + "\t.+/github.com/pkg/errors/format_test.go:293", + "outside-error"}, + }} + + for i, tt := range tests { + testFormatCompleteCompare(t, i, tt.error, tt.format, tt.want, true) + } +} + +func TestFormatGeneric(t *testing.T) { + starts := []struct { + err error + want []string + }{ + {New("new-error"), []string{ + "new-error", + "github.com/pkg/errors.TestFormatGeneric\n" + + "\t.+/github.com/pkg/errors/format_test.go:315"}, + }, {Errorf("errorf-error"), []string{ + "errorf-error", + "github.com/pkg/errors.TestFormatGeneric\n" + + "\t.+/github.com/pkg/errors/format_test.go:319"}, + }, {errors.New("errors-new-error"), []string{ + "errors-new-error"}, + }, + } + + wrappers := []wrapper{ + { + func(err error) error { return WithMessage(err, "with-message") }, + []string{"with-message"}, + }, { + func(err error) error { return WithStack(err) }, + []string{ + "github.com/pkg/errors.(func·002|TestFormatGeneric.func2)\n\t" + + ".+/github.com/pkg/errors/format_test.go:333", + }, + }, { + func(err error) error { return Wrap(err, "wrap-error") }, + []string{ + "wrap-error", + "github.com/pkg/errors.(func·003|TestFormatGeneric.func3)\n\t" + + ".+/github.com/pkg/errors/format_test.go:339", + }, + }, { + func(err error) error { return Wrapf(err, "wrapf-error%d", 1) }, + []string{ + "wrapf-error1", + "github.com/pkg/errors.(func·004|TestFormatGeneric.func4)\n\t" + + ".+/github.com/pkg/errors/format_test.go:346", + }, + }, + } + + for s := range starts { + err := starts[s].err + want := starts[s].want + testFormatCompleteCompare(t, s, err, "%+v", want, false) + testGenericRecursive(t, err, want, wrappers, 3) + } +} + +func testFormatRegexp(t *testing.T, n int, arg interface{}, format, want string) { + got := fmt.Sprintf(format, arg) + gotLines := strings.SplitN(got, "\n", -1) + wantLines := strings.SplitN(want, "\n", -1) + + if len(wantLines) > len(gotLines) { + t.Errorf("test %d: wantLines(%d) > gotLines(%d):\n got: %q\nwant: %q", n+1, len(wantLines), len(gotLines), got, want) + return + } + + for i, w := range wantLines { + match, err := regexp.MatchString(w, gotLines[i]) + if err != nil { + t.Fatal(err) + } + if !match { + t.Errorf("test %d: line %d: fmt.Sprintf(%q, err):\n got: %q\nwant: %q", n+1, i+1, format, got, want) + } + } +} + +var stackLineR = regexp.MustCompile(`\.`) + +// parseBlocks parses input into a slice, where: +// - incase entry contains a newline, its a stacktrace +// - incase entry contains no newline, its a solo line. +// +// Detecting stack boundaries only works incase the WithStack-calls are +// to be found on the same line, thats why it is optionally here. +// +// Example use: +// +// for _, e := range blocks { +// if strings.ContainsAny(e, "\n") { +// // Match as stack +// } else { +// // Match as line +// } +// } +// +func parseBlocks(input string, detectStackboundaries bool) ([]string, error) { + var blocks []string + + stack := "" + wasStack := false + lines := map[string]bool{} // already found lines + + for _, l := range strings.Split(input, "\n") { + isStackLine := stackLineR.MatchString(l) + + switch { + case !isStackLine && wasStack: + blocks = append(blocks, stack, l) + stack = "" + lines = map[string]bool{} + case isStackLine: + if wasStack { + // Detecting two stacks after another, possible cause lines match in + // our tests due to WithStack(WithStack(io.EOF)) on same line. + if detectStackboundaries { + if lines[l] { + if len(stack) == 0 { + return nil, errors.New("len of block must not be zero here") + } + + blocks = append(blocks, stack) + stack = l + lines = map[string]bool{l: true} + continue + } + } + + stack = stack + "\n" + l + } else { + stack = l + } + lines[l] = true + case !isStackLine && !wasStack: + blocks = append(blocks, l) + default: + return nil, errors.New("must not happen") + } + + wasStack = isStackLine + } + + // Use up stack + if stack != "" { + blocks = append(blocks, stack) + } + return blocks, nil +} + +func testFormatCompleteCompare(t *testing.T, n int, arg interface{}, format string, want []string, detectStackBoundaries bool) { + gotStr := fmt.Sprintf(format, arg) + + got, err := parseBlocks(gotStr, detectStackBoundaries) + if err != nil { + t.Fatal(err) + } + + if len(got) != len(want) { + t.Fatalf("test %d: fmt.Sprintf(%s, err) -> wrong number of blocks: got(%d) want(%d)\n got: %s\nwant: %s\ngotStr: %q", + n+1, format, len(got), len(want), prettyBlocks(got), prettyBlocks(want), gotStr) + } + + for i := range got { + if strings.ContainsAny(want[i], "\n") { + // Match as stack + match, err := regexp.MatchString(want[i], got[i]) + if err != nil { + t.Fatal(err) + } + if !match { + t.Fatalf("test %d: block %d: fmt.Sprintf(%q, err):\ngot:\n%q\nwant:\n%q\nall-got:\n%s\nall-want:\n%s\n", + n+1, i+1, format, got[i], want[i], prettyBlocks(got), prettyBlocks(want)) + } + } else { + // Match as message + if got[i] != want[i] { + t.Fatalf("test %d: fmt.Sprintf(%s, err) at block %d got != want:\n got: %q\nwant: %q", n+1, format, i+1, got[i], want[i]) + } + } + } +} + +type wrapper struct { + wrap func(err error) error + want []string +} + +func prettyBlocks(blocks []string, prefix ...string) string { + var out []string + + for _, b := range blocks { + out = append(out, fmt.Sprintf("%v", b)) + } + + return " " + strings.Join(out, "\n ") +} + +func testGenericRecursive(t *testing.T, beforeErr error, beforeWant []string, list []wrapper, maxDepth int) { + if len(beforeWant) == 0 { + panic("beforeWant must not be empty") + } + for _, w := range list { + if len(w.want) == 0 { + panic("want must not be empty") + } + + err := w.wrap(beforeErr) + + // Copy required cause append(beforeWant, ..) modified beforeWant subtly. + beforeCopy := make([]string, len(beforeWant)) + copy(beforeCopy, beforeWant) + + beforeWant := beforeCopy + last := len(beforeWant) - 1 + var want []string + + // Merge two stacks behind each other. + if strings.ContainsAny(beforeWant[last], "\n") && strings.ContainsAny(w.want[0], "\n") { + want = append(beforeWant[:last], append([]string{beforeWant[last] + "((?s).*)" + w.want[0]}, w.want[1:]...)...) + } else { + want = append(beforeWant, w.want...) + } + + testFormatCompleteCompare(t, maxDepth, err, "%+v", want, false) + if maxDepth > 0 { + testGenericRecursive(t, err, want, list, maxDepth-1) + } + } +} diff --git a/vendor/github.com/pkg/errors/stack.go b/vendor/github.com/pkg/errors/stack.go new file mode 100644 index 0000000..cbe3f3e --- /dev/null +++ b/vendor/github.com/pkg/errors/stack.go @@ -0,0 +1,186 @@ +package errors + +import ( + "fmt" + "io" + "path" + "runtime" + "strings" +) + +// Frame represents a program counter inside a stack frame. +type Frame uintptr + +// pc returns the program counter for this frame; +// multiple frames may have the same PC value. +func (f Frame) pc() uintptr { return uintptr(f) - 1 } + +// file returns the full path to the file that contains the +// function for this Frame's pc. +func (f Frame) file() string { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return "unknown" + } + file, _ := fn.FileLine(f.pc()) + return file +} + +// line returns the line number of source code of the +// function for this Frame's pc. +func (f Frame) line() int { + fn := runtime.FuncForPC(f.pc()) + if fn == nil { + return 0 + } + _, line := fn.FileLine(f.pc()) + return line +} + +// Format formats the frame according to the fmt.Formatter interface. +// +// %s source file +// %d source line +// %n function name +// %v equivalent to %s:%d +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+s path of source file relative to the compile time GOPATH +// %+v equivalent to %+s:%d +func (f Frame) Format(s fmt.State, verb rune) { + switch verb { + case 's': + switch { + case s.Flag('+'): + pc := f.pc() + fn := runtime.FuncForPC(pc) + if fn == nil { + io.WriteString(s, "unknown") + } else { + file, _ := fn.FileLine(pc) + fmt.Fprintf(s, "%s\n\t%s", fn.Name(), file) + } + default: + io.WriteString(s, path.Base(f.file())) + } + case 'd': + fmt.Fprintf(s, "%d", f.line()) + case 'n': + name := runtime.FuncForPC(f.pc()).Name() + io.WriteString(s, funcname(name)) + case 'v': + f.Format(s, 's') + io.WriteString(s, ":") + f.Format(s, 'd') + } +} + +// StackTrace is stack of Frames from innermost (newest) to outermost (oldest). +type StackTrace []Frame + +// Format formats the stack of Frames according to the fmt.Formatter interface. +// +// %s lists source files for each Frame in the stack +// %v lists the source file and line number for each Frame in the stack +// +// Format accepts flags that alter the printing of some verbs, as follows: +// +// %+v Prints filename, function, and line number for each Frame in the stack. +func (st StackTrace) Format(s fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case s.Flag('+'): + for _, f := range st { + fmt.Fprintf(s, "\n%+v", f) + } + case s.Flag('#'): + fmt.Fprintf(s, "%#v", []Frame(st)) + default: + fmt.Fprintf(s, "%v", []Frame(st)) + } + case 's': + fmt.Fprintf(s, "%s", []Frame(st)) + } +} + +// stack represents a stack of program counters. +type stack []uintptr + +func (s *stack) Format(st fmt.State, verb rune) { + switch verb { + case 'v': + switch { + case st.Flag('+'): + for _, pc := range *s { + f := Frame(pc) + fmt.Fprintf(st, "\n%+v", f) + } + } + } +} + +func (s *stack) StackTrace() StackTrace { + f := make([]Frame, len(*s)) + for i := 0; i < len(f); i++ { + f[i] = Frame((*s)[i]) + } + return f +} + +func callers() *stack { + const depth = 32 + var pcs [depth]uintptr + n := runtime.Callers(3, pcs[:]) + var st stack = pcs[0:n] + return &st +} + +// funcname removes the path prefix component of a function's name reported by func.Name(). +func funcname(name string) string { + i := strings.LastIndex(name, "/") + name = name[i+1:] + i = strings.Index(name, ".") + return name[i+1:] +} + +func trimGOPATH(name, file string) string { + // Here we want to get the source file path relative to the compile time + // GOPATH. As of Go 1.6.x there is no direct way to know the compiled + // GOPATH at runtime, but we can infer the number of path segments in the + // GOPATH. We note that fn.Name() returns the function name qualified by + // the import path, which does not include the GOPATH. Thus we can trim + // segments from the beginning of the file path until the number of path + // separators remaining is one more than the number of path separators in + // the function name. For example, given: + // + // GOPATH /home/user + // file /home/user/src/pkg/sub/file.go + // fn.Name() pkg/sub.Type.Method + // + // We want to produce: + // + // pkg/sub/file.go + // + // From this we can easily see that fn.Name() has one less path separator + // than our desired output. We count separators from the end of the file + // path until it finds two more than in the function name and then move + // one character forward to preserve the initial path segment without a + // leading separator. + const sep = "/" + goal := strings.Count(name, sep) + 2 + i := len(file) + for n := 0; n < goal; n++ { + i = strings.LastIndex(file[:i], sep) + if i == -1 { + // not enough separators found, set i so that the slice expression + // below leaves file unmodified + i = -len(sep) + break + } + } + // get back to 0 or trim the leading separator + file = file[i+len(sep):] + return file +} diff --git a/vendor/github.com/pkg/errors/stack_test.go b/vendor/github.com/pkg/errors/stack_test.go new file mode 100644 index 0000000..510c27a --- /dev/null +++ b/vendor/github.com/pkg/errors/stack_test.go @@ -0,0 +1,292 @@ +package errors + +import ( + "fmt" + "runtime" + "testing" +) + +var initpc, _, _, _ = runtime.Caller(0) + +func TestFrameLine(t *testing.T) { + var tests = []struct { + Frame + want int + }{{ + Frame(initpc), + 9, + }, { + func() Frame { + var pc, _, _, _ = runtime.Caller(0) + return Frame(pc) + }(), + 20, + }, { + func() Frame { + var pc, _, _, _ = runtime.Caller(1) + return Frame(pc) + }(), + 28, + }, { + Frame(0), // invalid PC + 0, + }} + + for _, tt := range tests { + got := tt.Frame.line() + want := tt.want + if want != got { + t.Errorf("Frame(%v): want: %v, got: %v", uintptr(tt.Frame), want, got) + } + } +} + +type X struct{} + +func (x X) val() Frame { + var pc, _, _, _ = runtime.Caller(0) + return Frame(pc) +} + +func (x *X) ptr() Frame { + var pc, _, _, _ = runtime.Caller(0) + return Frame(pc) +} + +func TestFrameFormat(t *testing.T) { + var tests = []struct { + Frame + format string + want string + }{{ + Frame(initpc), + "%s", + "stack_test.go", + }, { + Frame(initpc), + "%+s", + "github.com/pkg/errors.init\n" + + "\t.+/github.com/pkg/errors/stack_test.go", + }, { + Frame(0), + "%s", + "unknown", + }, { + Frame(0), + "%+s", + "unknown", + }, { + Frame(initpc), + "%d", + "9", + }, { + Frame(0), + "%d", + "0", + }, { + Frame(initpc), + "%n", + "init", + }, { + func() Frame { + var x X + return x.ptr() + }(), + "%n", + `\(\*X\).ptr`, + }, { + func() Frame { + var x X + return x.val() + }(), + "%n", + "X.val", + }, { + Frame(0), + "%n", + "", + }, { + Frame(initpc), + "%v", + "stack_test.go:9", + }, { + Frame(initpc), + "%+v", + "github.com/pkg/errors.init\n" + + "\t.+/github.com/pkg/errors/stack_test.go:9", + }, { + Frame(0), + "%v", + "unknown:0", + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.Frame, tt.format, tt.want) + } +} + +func TestFuncname(t *testing.T) { + tests := []struct { + name, want string + }{ + {"", ""}, + {"runtime.main", "main"}, + {"github.com/pkg/errors.funcname", "funcname"}, + {"funcname", "funcname"}, + {"io.copyBuffer", "copyBuffer"}, + {"main.(*R).Write", "(*R).Write"}, + } + + for _, tt := range tests { + got := funcname(tt.name) + want := tt.want + if got != want { + t.Errorf("funcname(%q): want: %q, got %q", tt.name, want, got) + } + } +} + +func TestTrimGOPATH(t *testing.T) { + var tests = []struct { + Frame + want string + }{{ + Frame(initpc), + "github.com/pkg/errors/stack_test.go", + }} + + for i, tt := range tests { + pc := tt.Frame.pc() + fn := runtime.FuncForPC(pc) + file, _ := fn.FileLine(pc) + got := trimGOPATH(fn.Name(), file) + testFormatRegexp(t, i, got, "%s", tt.want) + } +} + +func TestStackTrace(t *testing.T) { + tests := []struct { + err error + want []string + }{{ + New("ooh"), []string{ + "github.com/pkg/errors.TestStackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:172", + }, + }, { + Wrap(New("ooh"), "ahh"), []string{ + "github.com/pkg/errors.TestStackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:177", // this is the stack of Wrap, not New + }, + }, { + Cause(Wrap(New("ooh"), "ahh")), []string{ + "github.com/pkg/errors.TestStackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:182", // this is the stack of New + }, + }, { + func() error { return New("ooh") }(), []string{ + `github.com/pkg/errors.(func·009|TestStackTrace.func1)` + + "\n\t.+/github.com/pkg/errors/stack_test.go:187", // this is the stack of New + "github.com/pkg/errors.TestStackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:187", // this is the stack of New's caller + }, + }, { + Cause(func() error { + return func() error { + return Errorf("hello %s", fmt.Sprintf("world")) + }() + }()), []string{ + `github.com/pkg/errors.(func·010|TestStackTrace.func2.1)` + + "\n\t.+/github.com/pkg/errors/stack_test.go:196", // this is the stack of Errorf + `github.com/pkg/errors.(func·011|TestStackTrace.func2)` + + "\n\t.+/github.com/pkg/errors/stack_test.go:197", // this is the stack of Errorf's caller + "github.com/pkg/errors.TestStackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:198", // this is the stack of Errorf's caller's caller + }, + }} + for i, tt := range tests { + x, ok := tt.err.(interface { + StackTrace() StackTrace + }) + if !ok { + t.Errorf("expected %#v to implement StackTrace() StackTrace", tt.err) + continue + } + st := x.StackTrace() + for j, want := range tt.want { + testFormatRegexp(t, i, st[j], "%+v", want) + } + } +} + +func stackTrace() StackTrace { + const depth = 8 + var pcs [depth]uintptr + n := runtime.Callers(1, pcs[:]) + var st stack = pcs[0:n] + return st.StackTrace() +} + +func TestStackTraceFormat(t *testing.T) { + tests := []struct { + StackTrace + format string + want string + }{{ + nil, + "%s", + `\[\]`, + }, { + nil, + "%v", + `\[\]`, + }, { + nil, + "%+v", + "", + }, { + nil, + "%#v", + `\[\]errors.Frame\(nil\)`, + }, { + make(StackTrace, 0), + "%s", + `\[\]`, + }, { + make(StackTrace, 0), + "%v", + `\[\]`, + }, { + make(StackTrace, 0), + "%+v", + "", + }, { + make(StackTrace, 0), + "%#v", + `\[\]errors.Frame{}`, + }, { + stackTrace()[:2], + "%s", + `\[stack_test.go stack_test.go\]`, + }, { + stackTrace()[:2], + "%v", + `\[stack_test.go:225 stack_test.go:272\]`, + }, { + stackTrace()[:2], + "%+v", + "\n" + + "github.com/pkg/errors.stackTrace\n" + + "\t.+/github.com/pkg/errors/stack_test.go:225\n" + + "github.com/pkg/errors.TestStackTraceFormat\n" + + "\t.+/github.com/pkg/errors/stack_test.go:276", + }, { + stackTrace()[:2], + "%#v", + `\[\]errors.Frame{stack_test.go:225, stack_test.go:284}`, + }} + + for i, tt := range tests { + testFormatRegexp(t, i, tt.StackTrace, tt.format, tt.want) + } +} diff --git a/vendor/github.com/rs/xhandler/.travis.yml b/vendor/github.com/rs/xhandler/.travis.yml new file mode 100644 index 0000000..d5c1dca --- /dev/null +++ b/vendor/github.com/rs/xhandler/.travis.yml @@ -0,0 +1,7 @@ +language: go +go: +- 1.8 +- tip +matrix: + allow_failures: + - go: tip diff --git a/vendor/github.com/rs/xhandler/LICENSE b/vendor/github.com/rs/xhandler/LICENSE new file mode 100644 index 0000000..47c5e9d --- /dev/null +++ b/vendor/github.com/rs/xhandler/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 Olivier Poitrey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/rs/xhandler/README.md b/vendor/github.com/rs/xhandler/README.md new file mode 100644 index 0000000..91c594b --- /dev/null +++ b/vendor/github.com/rs/xhandler/README.md @@ -0,0 +1,134 @@ +# XHandler + +[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/xhandler) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/xhandler/master/LICENSE) [![Build Status](https://travis-ci.org/rs/xhandler.svg?branch=master)](https://travis-ci.org/rs/xhandler) [![Coverage](http://gocover.io/_badge/github.com/rs/xhandler)](http://gocover.io/github.com/rs/xhandler) + +XHandler is a bridge between [net/context](https://godoc.org/golang.org/x/net/context) and `http.Handler`. + +It lets you enforce `net/context` in your handlers without sacrificing compatibility with existing `http.Handlers` nor imposing a specific router. + +Thanks to `net/context` deadline management, `xhandler` is able to enforce a per request deadline and will cancel the context when the client closes the connection unexpectedly. + +You may create your own `net/context` aware handler pretty much the same way as you would do with http.Handler. + +Read more about xhandler on [Dailymotion engineering blog](http://engineering.dailymotion.com/our-way-to-go/). + +## Installing + + go get -u github.com/rs/xhandler + +## Usage + +```go +package main + +import ( + "log" + "net/http" + "time" + + "github.com/rs/cors" + "github.com/rs/xhandler" + "golang.org/x/net/context" +) + +type myMiddleware struct { + next xhandler.HandlerC +} + +func (h myMiddleware) ServeHTTPC(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx = context.WithValue(ctx, "test", "World") + h.next.ServeHTTPC(ctx, w, r) +} + +func main() { + c := xhandler.Chain{} + + // Add close notifier handler so context is cancelled when the client closes + // the connection + c.UseC(xhandler.CloseHandler) + + // Add timeout handler + c.UseC(xhandler.TimeoutHandler(2 * time.Second)) + + // Middleware putting something in the context + c.UseC(func(next xhandler.HandlerC) xhandler.HandlerC { + return myMiddleware{next: next} + }) + + // Mix it with a non-context-aware middleware handler + c.Use(cors.Default().Handler) + + // Final handler (using handlerFuncC), reading from the context + xh := xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + value := ctx.Value("test").(string) + w.Write([]byte("Hello " + value)) + }) + + // Bridge context aware handlers with http.Handler using xhandler.Handle() + http.Handle("/test", c.Handler(xh)) + + if err := http.ListenAndServe(":8080", nil); err != nil { + log.Fatal(err) + } +} +``` + +### Using xmux + +Xhandler comes with an optional context aware [muxer](https://github.com/rs/xmux) forked from [httprouter](https://github.com/julienschmidt/httprouter): + +```go +package main + +import ( + "fmt" + "log" + "net/http" + "time" + + "github.com/rs/xhandler" + "github.com/rs/xmux" + "golang.org/x/net/context" +) + +func main() { + c := xhandler.Chain{} + + // Append a context-aware middleware handler + c.UseC(xhandler.CloseHandler) + + // Another context-aware middleware handler + c.UseC(xhandler.TimeoutHandler(2 * time.Second)) + + mux := xmux.New() + + // Use c.Handler to terminate the chain with your final handler + mux.GET("/welcome/:name", xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "Welcome %s!", xmux.Params(ctx).Get("name")) + })) + + if err := http.ListenAndServe(":8080", c.Handler(mux)); err != nil { + log.Fatal(err) + } +} +``` + +See [xmux](https://github.com/rs/xmux) for more examples. + +## Context Aware Middleware + +Here is a list of `net/context` aware middleware handlers implementing `xhandler.HandlerC` interface. + +Feel free to put up a PR linking your middleware if you have built one: + +| Middleware | Author | Description | +| ---------- | ------ | ----------- | +| [xmux](https://github.com/rs/xmux) | [Olivier Poitrey](https://github.com/rs) | HTTP request muxer | +| [xlog](https://github.com/rs/xlog) | [Olivier Poitrey](https://github.com/rs) | HTTP handler logger | +| [xstats](https://github.com/rs/xstats) | [Olivier Poitrey](https://github.com/rs) | A generic client for service instrumentation | +| [xaccess](https://github.com/rs/xaccess) | [Olivier Poitrey](https://github.com/rs) | HTTP handler access logger with [xlog](https://github.com/rs/xlog) and [xstats](https://github.com/rs/xstats) | +| [cors](https://github.com/rs/cors) | [Olivier Poitrey](https://github.com/rs) | [Cross Origin Resource Sharing](http://www.w3.org/TR/cors/) (CORS) support | + +## Licenses + +All source code is licensed under the [MIT License](https://raw.github.com/rs/xhandler/master/LICENSE). diff --git a/vendor/github.com/rs/xhandler/chain.go b/vendor/github.com/rs/xhandler/chain.go new file mode 100644 index 0000000..f39bb91 --- /dev/null +++ b/vendor/github.com/rs/xhandler/chain.go @@ -0,0 +1,121 @@ +package xhandler + +import ( + "net/http" + + "context" +) + +// Chain is a helper for chaining middleware handlers together for easier +// management. +type Chain []func(next HandlerC) HandlerC + +// Add appends a variable number of additional middleware handlers +// to the middleware chain. Middleware handlers can either be +// context-aware or non-context aware handlers with the appropriate +// function signatures. +func (c *Chain) Add(f ...interface{}) { + for _, h := range f { + switch v := h.(type) { + case func(http.Handler) http.Handler: + c.Use(v) + case func(HandlerC) HandlerC: + c.UseC(v) + default: + panic("Adding invalid handler to the middleware chain") + } + } +} + +// With creates a new middleware chain from an existing chain, +// extending it with additional middleware. Middleware handlers +// can either be context-aware or non-context aware handlers +// with the appropriate function signatures. +func (c *Chain) With(f ...interface{}) *Chain { + n := make(Chain, len(*c)) + copy(n, *c) + n.Add(f...) + return &n +} + +// UseC appends a context-aware handler to the middleware chain. +func (c *Chain) UseC(f func(next HandlerC) HandlerC) { + *c = append(*c, f) +} + +// Use appends a standard http.Handler to the middleware chain without +// losing track of the context when inserted between two context aware handlers. +// +// Caveat: the f function will be called on each request so you are better off putting +// any initialization sequence outside of this function. +func (c *Chain) Use(f func(next http.Handler) http.Handler) { + xf := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + n := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + next.ServeHTTPC(ctx, w, r) + }) + f(n).ServeHTTP(w, r) + }) + } + *c = append(*c, xf) +} + +// Handler wraps the provided final handler with all the middleware appended to +// the chain and returns a new standard http.Handler instance. +// The context.Background() context is injected automatically. +func (c Chain) Handler(xh HandlerC) http.Handler { + ctx := context.Background() + return c.HandlerCtx(ctx, xh) +} + +// HandlerFC is a helper to provide a function (HandlerFuncC) to Handler(). +// +// HandlerFC is equivalent to: +// c.Handler(xhandler.HandlerFuncC(xhc)) +func (c Chain) HandlerFC(xhf HandlerFuncC) http.Handler { + ctx := context.Background() + return c.HandlerCtx(ctx, HandlerFuncC(xhf)) +} + +// HandlerH is a helper to provide a standard http handler (http.HandlerFunc) +// to Handler(). Your final handler won't have access to the context though. +func (c Chain) HandlerH(h http.Handler) http.Handler { + ctx := context.Background() + return c.HandlerCtx(ctx, HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + h.ServeHTTP(w, r) + })) +} + +// HandlerF is a helper to provide a standard http handler function +// (http.HandlerFunc) to Handler(). Your final handler won't have access +// to the context though. +func (c Chain) HandlerF(hf http.HandlerFunc) http.Handler { + ctx := context.Background() + return c.HandlerCtx(ctx, HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + hf(w, r) + })) +} + +// HandlerCtx wraps the provided final handler with all the middleware appended to +// the chain and returns a new standard http.Handler instance. +func (c Chain) HandlerCtx(ctx context.Context, xh HandlerC) http.Handler { + return New(ctx, c.HandlerC(xh)) +} + +// HandlerC wraps the provided final handler with all the middleware appended to +// the chain and returns a HandlerC instance. +func (c Chain) HandlerC(xh HandlerC) HandlerC { + for i := len(c) - 1; i >= 0; i-- { + xh = c[i](xh) + } + return xh +} + +// HandlerCF wraps the provided final handler func with all the middleware appended to +// the chain and returns a HandlerC instance. +// +// HandlerCF is equivalent to: +// c.HandlerC(xhandler.HandlerFuncC(xhc)) +func (c Chain) HandlerCF(xhc HandlerFuncC) HandlerC { + return c.HandlerC(HandlerFuncC(xhc)) +} diff --git a/vendor/github.com/rs/xhandler/chain_example_test.go b/vendor/github.com/rs/xhandler/chain_example_test.go new file mode 100644 index 0000000..f12d6a4 --- /dev/null +++ b/vendor/github.com/rs/xhandler/chain_example_test.go @@ -0,0 +1,86 @@ +package xhandler_test + +import ( + "fmt" + "net/http" + "strings" + "time" + + "context" + + "github.com/rs/cors" + "github.com/rs/xhandler" +) + +func ExampleChain() { + c := xhandler.Chain{} + // Append a context-aware middleware handler + c.UseC(xhandler.CloseHandler) + + // Mix it with a non-context-aware middleware handler + c.Use(cors.Default().Handler) + + // Another context-aware middleware handler + c.UseC(xhandler.TimeoutHandler(2 * time.Second)) + + mux := http.NewServeMux() + + // Use c.Handler to terminate the chain with your final handler + mux.Handle("/", c.Handler(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "Welcome to the home page!") + }))) + + // You can reuse the same chain for other handlers + mux.Handle("/api", c.Handler(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "Welcome to the API!") + }))) +} + +func ExampleAddChain() { + c := xhandler.Chain{} + + close := xhandler.CloseHandler + cors := cors.Default().Handler + timeout := xhandler.TimeoutHandler(2 * time.Second) + auth := func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + if v := ctx.Value("Authorization"); v == nil { + http.Error(w, "Not authorized", http.StatusUnauthorized) + return + } + next.ServeHTTPC(ctx, w, r) + }) + } + + c.Add(close, cors, timeout) + + mux := http.NewServeMux() + + // Use c.Handler to terminate the chain with your final handler + mux.Handle("/", c.Handler(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "Welcome to the home page!") + }))) + + // Create a new chain from an existing one, and add route-specific middleware to it + protected := c.With(auth) + + mux.Handle("/admin", protected.Handler(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "protected endpoint!") + }))) +} + +func ExampleIf() { + c := xhandler.Chain{} + + // Add a timeout handler only if the URL path matches a prefix + c.UseC(xhandler.If( + func(ctx context.Context, w http.ResponseWriter, r *http.Request) bool { + return strings.HasPrefix(r.URL.Path, "/with-timeout/") + }, + xhandler.TimeoutHandler(2*time.Second), + )) + + http.Handle("/", c.Handler(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, req *http.Request) { + fmt.Fprintf(w, "Welcome to the home page!") + }))) +} diff --git a/vendor/github.com/rs/xhandler/chain_test.go b/vendor/github.com/rs/xhandler/chain_test.go new file mode 100644 index 0000000..eb0b5bb --- /dev/null +++ b/vendor/github.com/rs/xhandler/chain_test.go @@ -0,0 +1,212 @@ +package xhandler + +import ( + "net/http" + "net/http/httptest" + "testing" + + "context" + + "github.com/stretchr/testify/assert" +) + +var testRequest, _ = http.NewRequest("GET", "/", nil) + +func TestAppendHandlerC(t *testing.T) { + init := 0 + h1 := func(next HandlerC) HandlerC { + init++ + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx = context.WithValue(ctx, "test", 1) + next.ServeHTTPC(ctx, w, r) + }) + } + h2 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx = context.WithValue(ctx, "test", 2) + next.ServeHTTPC(ctx, w, r) + }) + } + c := Chain{} + c.UseC(h1) + c.UseC(h2) + assert.Len(t, c, 2) + + h := c.Handler(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + // Test ordering + assert.Equal(t, 2, ctx.Value("test"), "second handler should overwrite first handler's context value") + })) + + h.ServeHTTP(nil, testRequest) + h.ServeHTTP(nil, testRequest) + assert.Equal(t, 1, init, "handler init called once") +} + +func TestAppendHandler(t *testing.T) { + init := 0 + h1 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx = context.WithValue(ctx, "test", 1) + next.ServeHTTPC(ctx, w, r) + }) + } + h2 := func(next http.Handler) http.Handler { + init++ + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Change r and w values + w = httptest.NewRecorder() + r = &http.Request{} + next.ServeHTTP(w, r) + }) + } + c := Chain{} + c.UseC(h1) + c.Use(h2) + assert.Len(t, c, 2) + + h := c.Handler(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + // Test ordering + assert.Equal(t, 1, ctx.Value("test"), + "the first handler value should be pass through the second (non-aware) one") + // Test r and w overwrite + assert.NotNil(t, w) + assert.NotNil(t, r) + })) + + h.ServeHTTP(nil, testRequest) + h.ServeHTTP(nil, testRequest) + // There's no safe way to not initialize non ctx aware handlers on each request :/ + //assert.Equal(t, 1, init, "handler init called once") +} + +func TestChainHandlerC(t *testing.T) { + handlerCalls := 0 + h1 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 1) + next.ServeHTTPC(ctx, w, r) + }) + } + h2 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 2) + next.ServeHTTPC(ctx, w, r) + }) + } + + c := Chain{} + c.UseC(h1) + c.UseC(h2) + h := c.HandlerC(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + + assert.Equal(t, 2, ctx.Value("test"), + "second handler should overwrite first handler's context value") + assert.Equal(t, 1, ctx.Value("mainCtx"), + "the mainCtx value should be pass through") + })) + + mainCtx := context.WithValue(context.Background(), "mainCtx", 1) + h.ServeHTTPC(mainCtx, nil, testRequest) + + assert.Equal(t, 3, handlerCalls, "all handler called once") +} + +func TestAdd(t *testing.T) { + handlerCalls := 0 + h1 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 1) + next.ServeHTTPC(ctx, w, r) + }) + } + h2 := func(next http.Handler) http.Handler { + handlerCalls++ + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Change r and w values + w = httptest.NewRecorder() + r = &http.Request{} + next.ServeHTTP(w, r) + }) + } + h3 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 2) + next.ServeHTTPC(ctx, w, r) + }) + } + + c := Chain{} + c.Add(h1, h2, h3) + h := c.HandlerC(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + + assert.Equal(t, 2, ctx.Value("test"), + "third handler should overwrite first handler's context value") + assert.Equal(t, 1, ctx.Value("mainCtx"), + "the mainCtx value should be pass through") + })) + + mainCtx := context.WithValue(context.Background(), "mainCtx", 1) + h.ServeHTTPC(mainCtx, nil, testRequest) + assert.Equal(t, 4, handlerCalls, "all handler called once") +} + +func TestWith(t *testing.T) { + handlerCalls := 0 + h1 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 1) + next.ServeHTTPC(ctx, w, r) + }) + } + h2 := func(next http.Handler) http.Handler { + handlerCalls++ + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Change r and w values + w = httptest.NewRecorder() + r = &http.Request{} + next.ServeHTTP(w, r) + }) + } + h3 := func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + ctx = context.WithValue(ctx, "test", 2) + next.ServeHTTPC(ctx, w, r) + }) + } + + c := Chain{} + c.Add(h1) + d := c.With(h2, h3) + + h := c.HandlerC(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + + assert.Equal(t, 1, ctx.Value("test"), + "third handler should not overwrite the first handler's context value") + assert.Equal(t, 1, ctx.Value("mainCtx"), + "the mainCtx value should be pass through") + })) + i := d.HandlerC(HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + handlerCalls++ + + assert.Equal(t, 2, ctx.Value("test"), + "third handler should overwrite first handler's context value") + assert.Equal(t, 1, ctx.Value("mainCtx"), + "the mainCtx value should be pass through") + })) + + mainCtx := context.WithValue(context.Background(), "mainCtx", 1) + h.ServeHTTPC(mainCtx, nil, testRequest) + assert.Equal(t, 2, handlerCalls, "all handlers called once") + handlerCalls = 0 + i.ServeHTTPC(mainCtx, nil, testRequest) + assert.Equal(t, 4, handlerCalls, "all handler called once") +} diff --git a/vendor/github.com/rs/xhandler/middleware.go b/vendor/github.com/rs/xhandler/middleware.go new file mode 100644 index 0000000..106538a --- /dev/null +++ b/vendor/github.com/rs/xhandler/middleware.go @@ -0,0 +1,59 @@ +package xhandler + +import ( + "net/http" + "time" + + "context" +) + +// CloseHandler returns a Handler, cancelling the context when the client +// connection closes unexpectedly. +func CloseHandler(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + // Cancel the context if the client closes the connection + if wcn, ok := w.(http.CloseNotifier); ok { + var cancel context.CancelFunc + ctx, cancel = context.WithCancel(ctx) + defer cancel() + + notify := wcn.CloseNotify() + go func() { + select { + case <-notify: + cancel() + case <-ctx.Done(): + } + }() + } + + next.ServeHTTPC(ctx, w, r) + }) +} + +// TimeoutHandler returns a Handler which adds a timeout to the context. +// +// Child handlers have the responsability of obeying the context deadline and to return +// an appropriate error (or not) response in case of timeout. +func TimeoutHandler(timeout time.Duration) func(next HandlerC) HandlerC { + return func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx, _ = context.WithTimeout(ctx, timeout) + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// If is a special handler that will skip insert the condNext handler only if a condition +// applies at runtime. +func If(cond func(ctx context.Context, w http.ResponseWriter, r *http.Request) bool, condNext func(next HandlerC) HandlerC) func(next HandlerC) HandlerC { + return func(next HandlerC) HandlerC { + return HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + if cond(ctx, w, r) { + condNext(next).ServeHTTPC(ctx, w, r) + } else { + next.ServeHTTPC(ctx, w, r) + } + }) + } +} diff --git a/vendor/github.com/rs/xhandler/middleware_test.go b/vendor/github.com/rs/xhandler/middleware_test.go new file mode 100644 index 0000000..3689085 --- /dev/null +++ b/vendor/github.com/rs/xhandler/middleware_test.go @@ -0,0 +1,89 @@ +package xhandler + +import ( + "log" + "net/http" + "net/http/httptest" + "testing" + "time" + + "context" + + "github.com/stretchr/testify/assert" +) + +func TestTimeoutHandler(t *testing.T) { + ctx := context.WithValue(context.Background(), contextKey, "value") + xh := TimeoutHandler(time.Second)(&handler{}) + h := New(ctx, xh) + w := httptest.NewRecorder() + r, err := http.NewRequest("GET", "http://example.com/foo", nil) + if err != nil { + log.Fatal(err) + } + h.ServeHTTP(w, r) + assert.Equal(t, "value with deadline", w.Body.String()) +} + +type closeNotifyWriter struct { + *httptest.ResponseRecorder + closed bool +} + +func (w *closeNotifyWriter) CloseNotify() <-chan bool { + notify := make(chan bool, 1) + if w.closed { + // return an already "closed" notifier + notify <- true + } + return notify +} + +func TestCloseHandlerClientClose(t *testing.T) { + ctx := context.WithValue(context.Background(), contextKey, "value") + xh := CloseHandler(&handler{}) + h := New(ctx, xh) + w := &closeNotifyWriter{ResponseRecorder: httptest.NewRecorder(), closed: true} + r, err := http.NewRequest("GET", "http://example.com/foo", nil) + if err != nil { + log.Fatal(err) + } + h.ServeHTTP(w, r) + assert.Equal(t, "value canceled", w.Body.String()) +} + +func TestCloseHandlerRequestEnds(t *testing.T) { + ctx := context.WithValue(context.Background(), contextKey, "value") + xh := CloseHandler(&handler{}) + h := New(ctx, xh) + w := &closeNotifyWriter{ResponseRecorder: httptest.NewRecorder(), closed: false} + r, err := http.NewRequest("GET", "http://example.com/foo", nil) + if err != nil { + log.Fatal(err) + } + h.ServeHTTP(w, r) + assert.Equal(t, "value", w.Body.String()) +} + +func TestIf(t *testing.T) { + trueHandler := HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + assert.Equal(t, "/true", r.URL.Path) + }) + falseHandler := HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + assert.NotEqual(t, "/true", r.URL.Path) + }) + ctx := context.WithValue(context.Background(), contextKey, "value") + xh := If( + func(ctx context.Context, w http.ResponseWriter, r *http.Request) bool { + return r.URL.Path == "/true" + }, + func(next HandlerC) HandlerC { + return trueHandler + }, + )(falseHandler) + h := New(ctx, xh) + r, _ := http.NewRequest("GET", "http://example.com/true", nil) + h.ServeHTTP(nil, r) + r, _ = http.NewRequest("GET", "http://example.com/false", nil) + h.ServeHTTP(nil, r) +} diff --git a/vendor/github.com/rs/xhandler/new.go b/vendor/github.com/rs/xhandler/new.go new file mode 100644 index 0000000..55465ae --- /dev/null +++ b/vendor/github.com/rs/xhandler/new.go @@ -0,0 +1,19 @@ +// +build go1.7 + +package xhandler + +import ( + "net/http" + + "context" +) + + +// New creates a conventional http.Handler injecting the provided root +// context to sub handlers. This handler is used as a bridge between conventional +// http.Handler and context aware handlers. +func New(ctx context.Context, h HandlerC) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTPC(ctx, w, r.WithContext(ctx)) + }) +} diff --git a/vendor/github.com/rs/xhandler/new_pre17.go b/vendor/github.com/rs/xhandler/new_pre17.go new file mode 100644 index 0000000..feea61e --- /dev/null +++ b/vendor/github.com/rs/xhandler/new_pre17.go @@ -0,0 +1,19 @@ +// +build !go1.7 + +package xhandler + +import ( + "net/http" + + "golang.org/x/net/context" +) + + +// New creates a conventional http.Handler injecting the provided root +// context to sub handlers. This handler is used as a bridge between conventional +// http.Handler and context aware handlers. +func New(ctx context.Context, h HandlerC) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + h.ServeHTTPC(ctx, w, r) + }) +} diff --git a/vendor/github.com/rs/xhandler/xhandler.go b/vendor/github.com/rs/xhandler/xhandler.go new file mode 100644 index 0000000..fa51631 --- /dev/null +++ b/vendor/github.com/rs/xhandler/xhandler.go @@ -0,0 +1,34 @@ +// Package xhandler provides a bridge between http.Handler and net/context. +// +// xhandler enforces net/context in your handlers without sacrificing +// compatibility with existing http.Handlers nor imposing a specific router. +// +// Thanks to net/context deadline management, xhandler is able to enforce +// a per request deadline and will cancel the context in when the client close +// the connection unexpectedly. +// +// You may create net/context aware middlewares pretty much the same way as +// you would with http.Handler. +package xhandler // import "github.com/rs/xhandler" + +import ( + "net/http" + + "context" +) + +// HandlerC is a net/context aware http.Handler +type HandlerC interface { + ServeHTTPC(context.Context, http.ResponseWriter, *http.Request) +} + +// HandlerFuncC type is an adapter to allow the use of ordinary functions +// as an xhandler.Handler. If f is a function with the appropriate signature, +// xhandler.HandlerFuncC(f) is a xhandler.Handler object that calls f. +type HandlerFuncC func(context.Context, http.ResponseWriter, *http.Request) + +// ServeHTTPC calls f(ctx, w, r). +func (f HandlerFuncC) ServeHTTPC(ctx context.Context, w http.ResponseWriter, r *http.Request) { + f(ctx, w, r) +} + diff --git a/vendor/github.com/rs/xhandler/xhandler_example_test.go b/vendor/github.com/rs/xhandler/xhandler_example_test.go new file mode 100644 index 0000000..d7470f5 --- /dev/null +++ b/vendor/github.com/rs/xhandler/xhandler_example_test.go @@ -0,0 +1,68 @@ +package xhandler_test + +import ( + "log" + "net/http" + "time" + + "context" + + "github.com/rs/xhandler" +) + +type key int + +const contextKey key = 0 + +func newContext(ctx context.Context, value string) context.Context { + return context.WithValue(ctx, contextKey, value) +} + +func fromContext(ctx context.Context) (string, bool) { + value, ok := ctx.Value(contextKey).(string) + return value, ok +} + +func ExampleHandle() { + var xh xhandler.HandlerC + xh = xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + value, _ := fromContext(ctx) + w.Write([]byte("Hello " + value)) + }) + + xh = (func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + ctx = newContext(ctx, "World") + next.ServeHTTPC(ctx, w, r) + }) + })(xh) + + ctx := context.Background() + // Bridge context aware handlers with http.Handler using xhandler.Handle() + http.Handle("/", xhandler.New(ctx, xh)) + + if err := http.ListenAndServe(":8080", nil); err != nil { + log.Fatal(err) + } +} + +func ExampleHandleTimeout() { + var xh xhandler.HandlerC + xh = xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + w.Write([]byte("Hello World")) + if _, ok := ctx.Deadline(); ok { + w.Write([]byte(" with deadline")) + } + }) + + // This handler adds a timeout to the handler + xh = xhandler.TimeoutHandler(5 * time.Second)(xh) + + ctx := context.Background() + // Bridge context aware handlers with http.Handler using xhandler.Handle() + http.Handle("/", xhandler.New(ctx, xh)) + + if err := http.ListenAndServe(":8080", nil); err != nil { + log.Fatal(err) + } +} diff --git a/vendor/github.com/rs/xhandler/xhandler_test.go b/vendor/github.com/rs/xhandler/xhandler_test.go new file mode 100644 index 0000000..583e4e1 --- /dev/null +++ b/vendor/github.com/rs/xhandler/xhandler_test.go @@ -0,0 +1,66 @@ +package xhandler + +import ( + "log" + "net/http" + "net/http/httptest" + "testing" + "time" + + "context" + + "github.com/stretchr/testify/assert" +) + +type handler struct{} + +type key int + +const contextKey key = 0 + +func newContext(ctx context.Context, value string) context.Context { + return context.WithValue(ctx, contextKey, value) +} + +func fromContext(ctx context.Context) (string, bool) { + value, ok := ctx.Value(contextKey).(string) + return value, ok +} + +func (h handler) ServeHTTPC(ctx context.Context, w http.ResponseWriter, r *http.Request) { + // Leave other go routines a chance to run + time.Sleep(time.Nanosecond) + value, _ := fromContext(ctx) + if _, ok := ctx.Deadline(); ok { + value += " with deadline" + } + if ctx.Err() == context.Canceled { + value += " canceled" + } + w.Write([]byte(value)) +} + +func TestHandle(t *testing.T) { + ctx := context.WithValue(context.Background(), contextKey, "value") + h := New(ctx, &handler{}) + w := httptest.NewRecorder() + r, err := http.NewRequest("GET", "http://example.com/foo", nil) + if err != nil { + log.Fatal(err) + } + h.ServeHTTP(w, r) + assert.Equal(t, "value", w.Body.String()) +} + +func TestHandlerFunc(t *testing.T) { + ok := false + xh := HandlerFuncC(func(context.Context, http.ResponseWriter, *http.Request) { + ok = true + }) + r, err := http.NewRequest("GET", "http://example.com/foo", nil) + if err != nil { + log.Fatal(err) + } + xh.ServeHTTPC(context.Background(), nil, r) + assert.True(t, ok) +} diff --git a/vendor/github.com/rs/xhandler/xmux/README.md b/vendor/github.com/rs/xhandler/xmux/README.md new file mode 100644 index 0000000..6ea3c0f --- /dev/null +++ b/vendor/github.com/rs/xhandler/xmux/README.md @@ -0,0 +1 @@ +Xmux did move to it's [own repository](https://github.com/rs/xmux/blob/master/README.md) diff --git a/vendor/github.com/rs/xid/.travis.yml b/vendor/github.com/rs/xid/.travis.yml new file mode 100644 index 0000000..b65c7a9 --- /dev/null +++ b/vendor/github.com/rs/xid/.travis.yml @@ -0,0 +1,7 @@ +language: go +go: +- 1.5 +- tip +matrix: + allow_failures: + - go: tip diff --git a/vendor/github.com/rs/xid/LICENSE b/vendor/github.com/rs/xid/LICENSE new file mode 100644 index 0000000..47c5e9d --- /dev/null +++ b/vendor/github.com/rs/xid/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 Olivier Poitrey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/rs/xid/README.md b/vendor/github.com/rs/xid/README.md new file mode 100644 index 0000000..b475c7f --- /dev/null +++ b/vendor/github.com/rs/xid/README.md @@ -0,0 +1,107 @@ +# Globally Unique ID Generator + +[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/xid) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/xid/master/LICENSE) [![Build Status](https://travis-ci.org/rs/xid.svg?branch=master)](https://travis-ci.org/rs/xid) [![Coverage](http://gocover.io/_badge/github.com/rs/xid)](http://gocover.io/github.com/rs/xid) + +Package xid is a globally unique id generator library, ready to be used safely directly in your server code. + +Xid is using Mongo Object ID algorithm to generate globally unique ids with a different serialization (bast64) to make it shorter when transported as a string: +https://docs.mongodb.org/manual/reference/object-id/ + +- 4-byte value representing the seconds since the Unix epoch, +- 3-byte machine identifier, +- 2-byte process id, and +- 3-byte counter, starting with a random value. + +The binary representation of the id is compatible with Mongo 12 bytes Object IDs. +The string representation is using base32 hex (w/o padding) for better space efficiency +when stored in that form (20 bytes). The hex variant of base32 is used to retain the +sortable property of the id. + +Xid doesn't use base64 because case sensitivity and the 2 non alphanum chars may be an +issue when transported as a string between various systems. Base36 wasn't retained either +because 1/ it's not standard 2/ the resulting size is not predictable (not bit aligned) +and 3/ it would not remain sortable. To validate a base32 `xid`, expect a 20 chars long, +all lowercase sequence of `a` to `v` letters and `0` to `9` numbers (`[0-9a-v]{20}`). + +UUIDs are 16 bytes (128 bits) and 36 chars as string representation. Twitter Snowflake +ids are 8 bytes (64 bits) but require machine/data-center configuration and/or central +generator servers. xid stands in between with 12 bytes (96 bits) and a more compact +URL-safe string representation (20 chars). No configuration or central generator server +is required so it can be used directly in server's code. + +| Name | Binary Size | String Size | Features +|-------------|-------------|----------------|---------------- +| [UUID] | 16 bytes | 36 chars | configuration free, not sortable +| [shortuuid] | 16 bytes | 22 chars | configuration free, not sortable +| [Snowflake] | 8 bytes | up to 20 chars | needs machin/DC configuration, needs central server, sortable +| [MongoID] | 12 bytes | 24 chars | configuration free, sortable +| xid | 12 bytes | 20 chars | configuration free, sortable + +[UUID]: https://en.wikipedia.org/wiki/Universally_unique_identifier +[shortuuid]: https://github.com/stochastic-technologies/shortuuid +[Snowflake]: https://blog.twitter.com/2010/announcing-snowflake +[MongoID]: https://docs.mongodb.org/manual/reference/object-id/ + +Features: + +- Size: 12 bytes (96 bits), smaller than UUID, larger than snowflake +- Base32 hex encoded by default (20 chars when transported as printable string, still sortable) +- Non configured, you don't need set a unique machine and/or data center id +- K-ordered +- Embedded time with 1 second precision +- Unicity guaranteed for 16,777,216 (24 bits) unique ids per second and per host/process +- Lock-free (i.e.: unlike UUIDv1 and v2) + +Best used with [xlog](https://github.com/rs/xlog)'s +[RequestIDHandler](https://godoc.org/github.com/rs/xlog#RequestIDHandler). + +References: + +- http://www.slideshare.net/davegardnerisme/unique-id-generation-in-distributed-systems +- https://en.wikipedia.org/wiki/Universally_unique_identifier +- https://blog.twitter.com/2010/announcing-snowflake +- Python port by [Graham Abbott](https://github.com/graham): https://github.com/graham/python_xid + +## Install + + go get github.com/rs/xid + +## Usage + +```go +guid := xid.New() + +println(guid.String()) +// Output: 9m4e2mr0ui3e8a215n4g +``` + +Get `xid` embedded info: + +```go +guid.Machine() +guid.Pid() +guid.Time() +guid.Counter() +``` + +## Benchmark + +Benchmark against Go [Maxim Bublis](https://github.com/satori)'s [UUID](https://github.com/satori/go.uuid). + +``` +BenchmarkXID 20000000 91.1 ns/op 32 B/op 1 allocs/op +BenchmarkXID-2 20000000 55.9 ns/op 32 B/op 1 allocs/op +BenchmarkXID-4 50000000 32.3 ns/op 32 B/op 1 allocs/op +BenchmarkUUIDv1 10000000 204 ns/op 48 B/op 1 allocs/op +BenchmarkUUIDv1-2 10000000 160 ns/op 48 B/op 1 allocs/op +BenchmarkUUIDv1-4 10000000 195 ns/op 48 B/op 1 allocs/op +BenchmarkUUIDv4 1000000 1503 ns/op 64 B/op 2 allocs/op +BenchmarkUUIDv4-2 1000000 1427 ns/op 64 B/op 2 allocs/op +BenchmarkUUIDv4-4 1000000 1452 ns/op 64 B/op 2 allocs/op +``` + +Note: UUIDv1 requires a global lock, hence the performence degrading as we add more CPUs. + +## Licenses + +All source code is licensed under the [MIT License](https://raw.github.com/rs/xid/master/LICENSE). diff --git a/vendor/github.com/rs/xid/id.go b/vendor/github.com/rs/xid/id.go new file mode 100644 index 0000000..e76f9ef --- /dev/null +++ b/vendor/github.com/rs/xid/id.go @@ -0,0 +1,264 @@ +// Package xid is a globally unique id generator suited for web scale +// +// Xid is using Mongo Object ID algorithm to generate globally unique ids: +// https://docs.mongodb.org/manual/reference/object-id/ +// +// - 4-byte value representing the seconds since the Unix epoch, +// - 3-byte machine identifier, +// - 2-byte process id, and +// - 3-byte counter, starting with a random value. +// +// The binary representation of the id is compatible with Mongo 12 bytes Object IDs. +// The string representation is using base32 hex (w/o padding) for better space efficiency +// when stored in that form (20 bytes). The hex variant of base32 is used to retain the +// sortable property of the id. +// +// Xid doesn't use base64 because case sensitivity and the 2 non alphanum chars may be an +// issue when transported as a string between various systems. Base36 wasn't retained either +// because 1/ it's not standard 2/ the resulting size is not predictable (not bit aligned) +// and 3/ it would not remain sortable. To validate a base32 `xid`, expect a 20 chars long, +// all lowercase sequence of `a` to `v` letters and `0` to `9` numbers (`[0-9a-v]{20}`). +// +// UUID is 16 bytes (128 bits), snowflake is 8 bytes (64 bits), xid stands in between +// with 12 bytes with a more compact string representation ready for the web and no +// required configuration or central generation server. +// +// Features: +// +// - Size: 12 bytes (96 bits), smaller than UUID, larger than snowflake +// - Base32 hex encoded by default (16 bytes storage when transported as printable string) +// - Non configured, you don't need set a unique machine and/or data center id +// - K-ordered +// - Embedded time with 1 second precision +// - Unicity guaranted for 16,777,216 (24 bits) unique ids per second and per host/process +// +// Best used with xlog's RequestIDHandler (https://godoc.org/github.com/rs/xlog#RequestIDHandler). +// +// References: +// +// - http://www.slideshare.net/davegardnerisme/unique-id-generation-in-distributed-systems +// - https://en.wikipedia.org/wiki/Universally_unique_identifier +// - https://blog.twitter.com/2010/announcing-snowflake +package xid + +import ( + "crypto/md5" + "crypto/rand" + "database/sql/driver" + "encoding/binary" + "errors" + "fmt" + "os" + "sync/atomic" + "time" +) + +// Code inspired from mgo/bson ObjectId + +// ID represents a unique request id +type ID [rawLen]byte + +const ( + encodedLen = 20 // string encoded len + decodedLen = 15 // len after base32 decoding with the padded data + rawLen = 12 // binary raw len + + // encoding stores a custom version of the base32 encoding with lower case + // letters. + encoding = "0123456789abcdefghijklmnopqrstuv" +) + +// ErrInvalidID is returned when trying to unmarshal an invalid ID +var ErrInvalidID = errors.New("xid: invalid ID") + +// objectIDCounter is atomically incremented when generating a new ObjectId +// using NewObjectId() function. It's used as a counter part of an id. +// This id is initialized with a random value. +var objectIDCounter = randInt() + +// machineId stores machine id generated once and used in subsequent calls +// to NewObjectId function. +var machineID = readMachineID() + +// pid stores the current process id +var pid = os.Getpid() + +// dec is the decoding map for base32 encoding +var dec [256]byte + +func init() { + for i := 0; i < len(dec); i++ { + dec[i] = 0xFF + } + for i := 0; i < len(encoding); i++ { + dec[encoding[i]] = byte(i) + } +} + +// readMachineId generates machine id and puts it into the machineId global +// variable. If this function fails to get the hostname, it will cause +// a runtime error. +func readMachineID() []byte { + id := make([]byte, 3) + if hostname, err := os.Hostname(); err == nil { + hw := md5.New() + hw.Write([]byte(hostname)) + copy(id, hw.Sum(nil)) + } else { + // Fallback to rand number if machine id can't be gathered + if _, randErr := rand.Reader.Read(id); randErr != nil { + panic(fmt.Errorf("xid: cannot get hostname nor generate a random number: %v; %v", err, randErr)) + } + } + return id +} + +// randInt generates a random uint32 +func randInt() uint32 { + b := make([]byte, 3) + if _, err := rand.Reader.Read(b); err != nil { + panic(fmt.Errorf("xid: cannot generate random number: %v;", err)) + } + return uint32(b[0])<<16 | uint32(b[1])<<8 | uint32(b[2]) +} + +// New generates a globaly unique ID +func New() ID { + var id ID + // Timestamp, 4 bytes, big endian + binary.BigEndian.PutUint32(id[:], uint32(time.Now().Unix())) + // Machine, first 3 bytes of md5(hostname) + id[4] = machineID[0] + id[5] = machineID[1] + id[6] = machineID[2] + // Pid, 2 bytes, specs don't specify endianness, but we use big endian. + id[7] = byte(pid >> 8) + id[8] = byte(pid) + // Increment, 3 bytes, big endian + i := atomic.AddUint32(&objectIDCounter, 1) + id[9] = byte(i >> 16) + id[10] = byte(i >> 8) + id[11] = byte(i) + return id +} + +// FromString reads an ID from its string representation +func FromString(id string) (ID, error) { + i := &ID{} + err := i.UnmarshalText([]byte(id)) + return *i, err +} + +// String returns a base32 hex lowercased with no padding representation of the id (char set is 0-9, a-v). +func (id ID) String() string { + text := make([]byte, encodedLen) + encode(text, id[:]) + return string(text) +} + +// MarshalText implements encoding/text TextMarshaler interface +func (id ID) MarshalText() ([]byte, error) { + text := make([]byte, encodedLen) + encode(text, id[:]) + return text, nil +} + +// encode by unrolling the stdlib base32 algorithm + removing all safe checks +func encode(dst, id []byte) { + dst[0] = encoding[id[0]>>3] + dst[1] = encoding[(id[1]>>6)&0x1F|(id[0]<<2)&0x1F] + dst[2] = encoding[(id[1]>>1)&0x1F] + dst[3] = encoding[(id[2]>>4)&0x1F|(id[1]<<4)&0x1F] + dst[4] = encoding[id[3]>>7|(id[2]<<1)&0x1F] + dst[5] = encoding[(id[3]>>2)&0x1F] + dst[6] = encoding[id[4]>>5|(id[3]<<3)&0x1F] + dst[7] = encoding[id[4]&0x1F] + dst[8] = encoding[id[5]>>3] + dst[9] = encoding[(id[6]>>6)&0x1F|(id[5]<<2)&0x1F] + dst[10] = encoding[(id[6]>>1)&0x1F] + dst[11] = encoding[(id[7]>>4)&0x1F|(id[6]<<4)&0x1F] + dst[12] = encoding[id[8]>>7|(id[7]<<1)&0x1F] + dst[13] = encoding[(id[8]>>2)&0x1F] + dst[14] = encoding[(id[9]>>5)|(id[8]<<3)&0x1F] + dst[15] = encoding[id[9]&0x1F] + dst[16] = encoding[id[10]>>3] + dst[17] = encoding[(id[11]>>6)&0x1F|(id[10]<<2)&0x1F] + dst[18] = encoding[(id[11]>>1)&0x1F] + dst[19] = encoding[(id[11]<<4)&0x1F] +} + +// UnmarshalText implements encoding/text TextUnmarshaler interface +func (id *ID) UnmarshalText(text []byte) error { + if len(text) != encodedLen { + return ErrInvalidID + } + for _, c := range text { + if dec[c] == 0xFF { + return ErrInvalidID + } + } + decode(id, text) + return nil +} + +// decode by unrolling the stdlib base32 algorithm + removing all safe checks +func decode(id *ID, src []byte) { + id[0] = dec[src[0]]<<3 | dec[src[1]]>>2 + id[1] = dec[src[1]]<<6 | dec[src[2]]<<1 | dec[src[3]]>>4 + id[2] = dec[src[3]]<<4 | dec[src[4]]>>1 + id[3] = dec[src[4]]<<7 | dec[src[5]]<<2 | dec[src[6]]>>3 + id[4] = dec[src[6]]<<5 | dec[src[7]] + id[5] = dec[src[8]]<<3 | dec[src[9]]>>2 + id[6] = dec[src[9]]<<6 | dec[src[10]]<<1 | dec[src[11]]>>4 + id[7] = dec[src[11]]<<4 | dec[src[12]]>>1 + id[8] = dec[src[12]]<<7 | dec[src[13]]<<2 | dec[src[14]]>>3 + id[9] = dec[src[14]]<<5 | dec[src[15]] + id[10] = dec[src[16]]<<3 | dec[src[17]]>>2 + id[11] = dec[src[17]]<<6 | dec[src[18]]<<1 | dec[src[19]]>>4 +} + +// Time returns the timestamp part of the id. +// It's a runtime error to call this method with an invalid id. +func (id ID) Time() time.Time { + // First 4 bytes of ObjectId is 32-bit big-endian seconds from epoch. + secs := int64(binary.BigEndian.Uint32(id[0:4])) + return time.Unix(secs, 0) +} + +// Machine returns the 3-byte machine id part of the id. +// It's a runtime error to call this method with an invalid id. +func (id ID) Machine() []byte { + return id[4:7] +} + +// Pid returns the process id part of the id. +// It's a runtime error to call this method with an invalid id. +func (id ID) Pid() uint16 { + return binary.BigEndian.Uint16(id[7:9]) +} + +// Counter returns the incrementing value part of the id. +// It's a runtime error to call this method with an invalid id. +func (id ID) Counter() int32 { + b := id[9:12] + // Counter is stored as big-endian 3-byte value + return int32(uint32(b[0])<<16 | uint32(b[1])<<8 | uint32(b[2])) +} + +// Value implements the driver.Valuer interface. +func (id ID) Value() (driver.Value, error) { + b, err := id.MarshalText() + return string(b), err +} + +// Scan implements the sql.Scanner interface. +func (id *ID) Scan(value interface{}) (err error) { + switch val := value.(type) { + case string: + return id.UnmarshalText([]byte(val)) + case []byte: + return id.UnmarshalText(val) + default: + return fmt.Errorf("xid: scanning unsupported type: %T", value) + } +} diff --git a/vendor/github.com/rs/xid/id_test.go b/vendor/github.com/rs/xid/id_test.go new file mode 100644 index 0000000..799c224 --- /dev/null +++ b/vendor/github.com/rs/xid/id_test.go @@ -0,0 +1,198 @@ +package xid + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +const strInvalidID = "xid: invalid ID" + +type IDParts struct { + id ID + timestamp int64 + machine []byte + pid uint16 + counter int32 +} + +var IDs = []IDParts{ + IDParts{ + ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9}, + 1300816219, + []byte{0x60, 0xf4, 0x86}, + 0xe428, + 4271561, + }, + IDParts{ + ID{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + 0, + []byte{0x00, 0x00, 0x00}, + 0x0000, + 0, + }, + IDParts{ + ID{0x00, 0x00, 0x00, 0x00, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0x00, 0x00, 0x01}, + 0, + []byte{0xaa, 0xbb, 0xcc}, + 0xddee, + 1, + }, +} + +func TestIDPartsExtraction(t *testing.T) { + for i, v := range IDs { + assert.Equal(t, v.id.Time(), time.Unix(v.timestamp, 0), "#%d timestamp", i) + assert.Equal(t, v.id.Machine(), v.machine, "#%d machine", i) + assert.Equal(t, v.id.Pid(), v.pid, "#%d pid", i) + assert.Equal(t, v.id.Counter(), v.counter, "#%d counter", i) + } +} + +func TestNew(t *testing.T) { + // Generate 10 ids + ids := make([]ID, 10) + for i := 0; i < 10; i++ { + ids[i] = New() + } + for i := 1; i < 10; i++ { + prevID := ids[i-1] + id := ids[i] + // Test for uniqueness among all other 9 generated ids + for j, tid := range ids { + if j != i { + assert.NotEqual(t, id, tid, "Generated ID is not unique") + } + } + // Check that timestamp was incremented and is within 30 seconds of the previous one + secs := id.Time().Sub(prevID.Time()).Seconds() + assert.Equal(t, (secs >= 0 && secs <= 30), true, "Wrong timestamp in generated ID") + // Check that machine ids are the same + assert.Equal(t, id.Machine(), prevID.Machine()) + // Check that pids are the same + assert.Equal(t, id.Pid(), prevID.Pid()) + // Test for proper increment + delta := int(id.Counter() - prevID.Counter()) + assert.Equal(t, delta, 1, "Wrong increment in generated ID") + } +} + +func TestIDString(t *testing.T) { + id := ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9} + assert.Equal(t, "9m4e2mr0ui3e8a215n4g", id.String()) +} + +func TestFromString(t *testing.T) { + id, err := FromString("9m4e2mr0ui3e8a215n4g") + assert.NoError(t, err) + assert.Equal(t, ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9}, id) +} + +func TestFromStringInvalid(t *testing.T) { + id, err := FromString("invalid") + assert.EqualError(t, err, strInvalidID) + assert.Equal(t, ID{}, id) +} + +type jsonType struct { + ID *ID + Str string +} + +func TestIDJSONMarshaling(t *testing.T) { + id := ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9} + v := jsonType{ID: &id, Str: "test"} + data, err := json.Marshal(&v) + assert.NoError(t, err) + assert.Equal(t, `{"ID":"9m4e2mr0ui3e8a215n4g","Str":"test"}`, string(data)) +} + +func TestIDJSONUnmarshaling(t *testing.T) { + data := []byte(`{"ID":"9m4e2mr0ui3e8a215n4g","Str":"test"}`) + v := jsonType{} + err := json.Unmarshal(data, &v) + assert.NoError(t, err) + assert.Equal(t, ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9}, *v.ID) +} + +func TestIDJSONUnmarshalingError(t *testing.T) { + v := jsonType{} + err := json.Unmarshal([]byte(`{"ID":"9M4E2MR0UI3E8A215N4G"}`), &v) + assert.EqualError(t, err, strInvalidID) + err = json.Unmarshal([]byte(`{"ID":"TYjhW2D0huQoQS"}`), &v) + assert.EqualError(t, err, strInvalidID) + err = json.Unmarshal([]byte(`{"ID":"TYjhW2D0huQoQS3kdk"}`), &v) + assert.EqualError(t, err, strInvalidID) +} + +func TestIDDriverValue(t *testing.T) { + id := ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9} + data, err := id.Value() + assert.NoError(t, err) + assert.Equal(t, "9m4e2mr0ui3e8a215n4g", data) +} + +func TestIDDriverScan(t *testing.T) { + id := ID{} + err := id.Scan("9m4e2mr0ui3e8a215n4g") + assert.NoError(t, err) + assert.Equal(t, ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9}, id) +} + +func TestIDDriverScanError(t *testing.T) { + id := ID{} + err := id.Scan(0) + assert.EqualError(t, err, "xid: scanning unsupported type: int") + err = id.Scan("0") + assert.EqualError(t, err, strInvalidID) +} + +func TestIDDriverScanByteFromDatabase(t *testing.T) { + id := ID{} + bs := []byte("9m4e2mr0ui3e8a215n4g") + err := id.Scan(bs) + assert.NoError(t, err) + assert.Equal(t, ID{0x4d, 0x88, 0xe1, 0x5b, 0x60, 0xf4, 0x86, 0xe4, 0x28, 0x41, 0x2d, 0xc9}, id) +} + +func BenchmarkNew(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + _ = New() + } + }) +} + +func BenchmarkNewString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + _ = New().String() + } + }) +} + +func BenchmarkFromString(b *testing.B) { + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + _, _ = FromString("9m4e2mr0ui3e8a215n4g") + } + }) +} + +// func BenchmarkUUIDv1(b *testing.B) { +// b.RunParallel(func(pb *testing.PB) { +// for pb.Next() { +// _ = uuid.NewV1().String() +// } +// }) +// } + +// func BenchmarkUUIDv4(b *testing.B) { +// b.RunParallel(func(pb *testing.PB) { +// for pb.Next() { +// _ = uuid.NewV4().String() +// } +// }) +// } diff --git a/vendor/github.com/rs/xlog/.travis.yml b/vendor/github.com/rs/xlog/.travis.yml new file mode 100644 index 0000000..96da367 --- /dev/null +++ b/vendor/github.com/rs/xlog/.travis.yml @@ -0,0 +1,10 @@ +language: go +go: +- 1.7 +- 1.8 +- tip +matrix: + allow_failures: + - go: tip +script: + go test -v -race -cpu=1,2,4 ./... diff --git a/vendor/github.com/rs/xlog/LICENSE b/vendor/github.com/rs/xlog/LICENSE new file mode 100644 index 0000000..47c5e9d --- /dev/null +++ b/vendor/github.com/rs/xlog/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 Olivier Poitrey + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/rs/xlog/README.md b/vendor/github.com/rs/xlog/README.md new file mode 100644 index 0000000..8df8f57 --- /dev/null +++ b/vendor/github.com/rs/xlog/README.md @@ -0,0 +1,211 @@ +:warning: **Check [zerolog](https://github.com/rs/zerolog), the successor of xlog.** + + +# HTTP Handler Logger + +[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/github.com/rs/xlog) [![license](http://img.shields.io/badge/license-MIT-red.svg?style=flat)](https://raw.githubusercontent.com/rs/xlog/master/LICENSE) [![Build Status](https://travis-ci.org/rs/xlog.svg?branch=master)](https://travis-ci.org/rs/xlog) [![Coverage](http://gocover.io/_badge/github.com/rs/xlog)](http://gocover.io/github.com/rs/xlog) + +`xlog` is a logger for [net/context](https://godoc.org/golang.org/x/net/context) aware HTTP applications. + +Unlike most loggers, `xlog` will never block your application because one its outputs is lagging. The log commands are connected to their outputs through a buffered channel and will prefer to discard messages if the buffer get full. All message formatting, serialization and transport happen in a dedicated go routine. + +Read more about `xlog` on [Dailymotion engineering blog](http://engineering.dailymotion.com/our-way-to-go/). + +![](screenshot.png) + +## Features + +- Per request log context +- Per request and/or per message key/value fields +- Log levels (Debug, Info, Warn, Error) +- Color output when terminal is detected +- Custom output (JSON, [logfmt](https://github.com/kr/logfmt), …) +- Automatic gathering of request context like User-Agent, IP etc. +- Drops message rather than blocking execution +- Easy access logging thru [github.com/rs/xaccess](https://github.com/rs/xaccess) + +Works with both Go 1.7+ (with `net/context` support) and Go 1.6 if used with [github.com/rs/xhandler](https://github.com/rs/xhandler). + +## Install + + go get github.com/rs/xlog + +## Usage + +```go +c := alice.New() + +host, _ := os.Hostname() +conf := xlog.Config{ + // Log info level and higher + Level: xlog.LevelInfo, + // Set some global env fields + Fields: xlog.F{ + "role": "my-service", + "host": host, + }, + // Output everything on console + Output: xlog.NewOutputChannel(xlog.NewConsoleOutput()), +} + +// Install the logger handler +c = c.Append(xlog.NewHandler(conf)) + +// Optionally plug the xlog handler's input to Go's default logger +log.SetFlags(0) +xlogger := xlog.New(conf) +log.SetOutput(xlogger) + +// Install some provided extra handler to set some request's context fields. +// Thanks to those handler, all our logs will come with some pre-populated fields. +c = c.Append(xlog.MethodHandler("method")) +c = c.Append(xlog.URLHandler("url")) +c = c.Append(xlog.RemoteAddrHandler("ip")) +c = c.Append(xlog.UserAgentHandler("user_agent")) +c = c.Append(xlog.RefererHandler("referer")) +c = c.Append(xlog.RequestIDHandler("req_id", "Request-Id")) + +// Here is your final handler +h := c.Then(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Get the logger from the request's context. You can safely assume it + // will be always there: if the handler is removed, xlog.FromContext + // will return a NopLogger + l := xlog.FromRequest(r) + + // Then log some errors + if err := errors.New("some error from elsewhere"); err != nil { + l.Errorf("Here is an error: %v", err) + } + + // Or some info with fields + l.Info("Something happend", xlog.F{ + "user": "current user id", + "status": "ok", + }) + // Output: + // { + // "message": "Something happend", + // "level": "info", + // "file": "main.go:34", + // "time": time.Time{...}, + // "user": "current user id", + // "status": "ok", + // "ip": "1.2.3.4", + // "user-agent": "Mozilla/1.2.3...", + // "referer": "http://somewhere.com/path", + // "role": "my-service", + // "host": "somehost" + // } +})) +http.Handle("/", h) + +if err := http.ListenAndServe(":8080", nil); err != nil { + xlogger.Fatal(err) +} +``` + +### Copy Logger + +You may want to get a copy of the current logger to pass a modified version to a function without touching the original: + +```go +l := xlog.FromContext(ctx) +l2 := xlog.Copy(l) +l2.SetField("foo", "bar") +``` + +Make sure you copy a request context logger if you plan to use it in a go routine that may still exist after the end of the current request. Contextual loggers are reused after each requests to lower the pressure on the garbage collector. If you would use such a logger in a go routine, you may end up using a logger from another request/context or worse, a nil pointer: + +```go +l := xlog.FromContext(ctx) +l2 := xlog.Copy(l) +go func() { + // use the safe copy + l2.Info("something") +}() +``` + +### Global Logger + +You may use the standard Go logger and plug `xlog` as it's output as `xlog` implements `io.Writer`: + +```go +xlogger := xlog.New(conf) +log.SetOutput(xlogger) +``` + +This has the advantage to make all your existing code or libraries already using Go's standard logger to use `xlog` with no change. The drawback though, is that you won't have control on the logging level and won't be able to add custom fields (other than ones set on the logger itself via configuration or `SetFields()`) for those messages. + +Another option for code you manage but which is outside of a HTTP request handler is to use the `xlog` provided default logger: + +```go +xlog.Debugf("some message with %s", variable, xlog.F{"and": "field support"}) +``` + +This way you have access to all the possibilities offered by `xlog` without having to carry the logger instance around. The default global logger has no fields set and has its output set to the console with no buffering channel. You may want to change that using the `xlog.SetLogger()` method: + +```go +xlog.SetLogger(xlog.New(xlog.Config{ + Level: xlog.LevelInfo, + Output: xlog.NewConsoleOutput(), + Fields: xlog.F{ + "role": "my-service", + }, +})) +``` + +### Configure Output + +By default, output is setup to output debug and info message on `STDOUT` and warning and errors to `STDERR`. You can easily change this setup. + +XLog output can be customized using composable output handlers. Thanks to the [LevelOutput](https://godoc.org/github.com/rs/xlog#LevelOutput), [MultiOutput](https://godoc.org/github.com/rs/xlog#MultiOutput) and [FilterOutput](https://godoc.org/github.com/rs/xlog#FilterOutput), it is easy to route messages precisely. + +```go +conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.MultiOutput{ + // Send all logs with field type=mymodule to a remote syslog + 0: xlog.FilterOutput{ + Cond: func(fields map[string]interface{}) bool { + return fields["type"] == "mymodule" + }, + Output: xlog.NewSyslogOutput("tcp", "1.2.3.4:1234", "mymodule"), + }, + // Setup different output per log level + 1: xlog.LevelOutput{ + // Send errors to the console + Error: xlog.NewConsoleOutput(), + // Send syslog output for error level + Info: xlog.NewSyslogOutput("", "", ""), + }, + }), +}) + +h = xlog.NewHandler(conf) +``` + +#### Built-in Output Modules + +| Name | Description | +|------|-------------| +| [OutputChannel](https://godoc.org/github.com/rs/xlog#OutputChannel) | Buffers messages before sending. This output should always be the output directly set to xlog's configuration. +| [MultiOutput](https://godoc.org/github.com/rs/xlog#MultiOutput) | Routes the same message to several outputs. If one or more outputs return error, the last error is returned. +| [FilterOutput](https://godoc.org/github.com/rs/xlog#FilterOutput) | Tests a condition on the message and forward it to the child output if true. +| [LevelOutput](https://godoc.org/github.com/rs/xlog#LevelOutput) | Routes messages per level outputs. +| [ConsoleOutput](https://godoc.org/github.com/rs/xlog#NewConsoleOutput) | Prints messages in a human readable form on the stdout with color when supported. Fallback to logfmt output if the stdout isn't a terminal. +| [JSONOutput](https://godoc.org/github.com/rs/xlog#NewJSONOutput) | Serialize messages in JSON. +| [LogfmtOutput](https://godoc.org/github.com/rs/xlog#NewLogfmtOutput) | Serialize messages using Heroku like [logfmt](https://github.com/kr/logfmt). +| [LogstashOutput](https://godoc.org/github.com/rs/xlog#NewLogstashOutput) | Serialize JSON message using Logstash 2.0 (schema v1) structured format. +| [SyslogOutput](https://godoc.org/github.com/rs/xlog#NewSyslogOutput) | Send messages to syslog. +| [UIDOutput](https://godoc.org/github.com/rs/xlog#NewUIDOutput) | Append a globally unique id to every message and forward it to the next output. + +## Third Party Extensions + +| Project | Author | Description | +|---------|--------|-------------| +| [gRPClog](https://github.com/clawio/grpcxlog) | [Hugo González Labrador](https://github.com/labkode) | An adapter to use xlog as the logger for grpclog. +| [xlog-nsq](https://github.com/rs/xlog-nsq) | [Olivier Poitrey](https://github.com/rs) | An xlog to [NSQ](http://nsq.io) output. +| [xlog-sentry](https://github.com/trong/xlog-sentry) | [trong](https://github.com/trong) | An xlog to [Sentry](https://getsentry.com/) output. + +## Licenses + +All source code is licensed under the [MIT License](https://raw.github.com/rs/xlog/master/LICENSE). diff --git a/vendor/github.com/rs/xlog/handler.go b/vendor/github.com/rs/xlog/handler.go new file mode 100644 index 0000000..311b613 --- /dev/null +++ b/vendor/github.com/rs/xlog/handler.go @@ -0,0 +1,189 @@ +// +build go1.7 + +package xlog + +import ( + "context" + "net" + "net/http" + + "github.com/rs/xid" +) + +type key int + +const ( + logKey key = iota + idKey +) + +// IDFromContext returns the unique id associated to the request if any. +func IDFromContext(ctx context.Context) (xid.ID, bool) { + id, ok := ctx.Value(idKey).(xid.ID) + return id, ok +} + +// IDFromRequest returns the unique id accociated to the request if any. +func IDFromRequest(r *http.Request) (xid.ID, bool) { + if r == nil { + return xid.ID{}, false + } + return IDFromContext(r.Context()) +} + +// FromContext gets the logger out of the context. +// If not logger is stored in the context, a NopLogger is returned. +func FromContext(ctx context.Context) Logger { + if ctx == nil { + return NopLogger + } + l, ok := ctx.Value(logKey).(Logger) + if !ok { + return NopLogger + } + return l +} + +// FromRequest gets the logger in the request's context. +// This is a shortcut for xlog.FromContext(r.Context()) +func FromRequest(r *http.Request) Logger { + if r == nil { + return NopLogger + } + return FromContext(r.Context()) +} + +// NewContext returns a copy of the parent context and associates it with the provided logger. +func NewContext(ctx context.Context, l Logger) context.Context { + return context.WithValue(ctx, logKey, l) +} + +// NewHandler instanciates a new xlog HTTP handler. +// +// If not configured, the output is set to NewConsoleOutput() by default. +func NewHandler(c Config) func(http.Handler) http.Handler { + if c.Output == nil { + c.Output = NewOutputChannel(NewConsoleOutput()) + } + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var l Logger + if r != nil { + l = New(c) + r = r.WithContext(NewContext(r.Context(), l)) + } + next.ServeHTTP(w, r) + if l, ok := l.(*logger); ok { + l.close() + } + }) + } +} + +// URLHandler returns a handler setting the request's URL as a field +// to the current context's logger using the passed name as field name. +func URLHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromContext(r.Context()) + l.SetField(name, r.URL.String()) + next.ServeHTTP(w, r) + }) + } +} + +// MethodHandler returns a handler setting the request's method as a field +// to the current context's logger using the passed name as field name. +func MethodHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromContext(r.Context()) + l.SetField(name, r.Method) + next.ServeHTTP(w, r) + }) + } +} + +// RequestHandler returns a handler setting the request's method and URL as a field +// to the current context's logger using the passed name as field name. +func RequestHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromContext(r.Context()) + l.SetField(name, r.Method+" "+r.URL.String()) + next.ServeHTTP(w, r) + }) + } +} + +// RemoteAddrHandler returns a handler setting the request's remote address as a field +// to the current context's logger using the passed name as field name. +func RemoteAddrHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if host, _, err := net.SplitHostPort(r.RemoteAddr); err == nil { + l := FromContext(r.Context()) + l.SetField(name, host) + } + next.ServeHTTP(w, r) + }) + } +} + +// UserAgentHandler returns a handler setting the request's client's user-agent as +// a field to the current context's logger using the passed name as field name. +func UserAgentHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if ua := r.Header.Get("User-Agent"); ua != "" { + l := FromContext(r.Context()) + l.SetField(name, ua) + } + next.ServeHTTP(w, r) + }) + } +} + +// RefererHandler returns a handler setting the request's referer header as +// a field to the current context's logger using the passed name as field name. +func RefererHandler(name string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if ref := r.Header.Get("Referer"); ref != "" { + l := FromContext(r.Context()) + l.SetField(name, ref) + } + next.ServeHTTP(w, r) + }) + } +} + +// RequestIDHandler returns a handler setting a unique id to the request which can +// be gathered using IDFromContext(ctx). This generated id is added as a field to the +// logger using the passed name as field name. The id is also added as a response +// header if the headerName is not empty. +// +// The generated id is a URL safe base64 encoded mongo object-id-like unique id. +// Mongo unique id generation algorithm has been selected as a trade-off between +// size and ease of use: UUID is less space efficient and snowflake requires machine +// configuration. +func RequestIDHandler(name, headerName string) func(next http.Handler) http.Handler { + return func(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + id, ok := IDFromContext(ctx) + if !ok { + id = xid.New() + ctx = context.WithValue(ctx, idKey, id) + r = r.WithContext(ctx) + } + if name != "" { + FromContext(ctx).SetField(name, id) + } + if headerName != "" { + w.Header().Set(headerName, id.String()) + } + next.ServeHTTP(w, r) + }) + } +} diff --git a/vendor/github.com/rs/xlog/handler_examples_test.go b/vendor/github.com/rs/xlog/handler_examples_test.go new file mode 100644 index 0000000..2b02cff --- /dev/null +++ b/vendor/github.com/rs/xlog/handler_examples_test.go @@ -0,0 +1,65 @@ +// +build go1.7 + +package xlog_test + +import ( + "errors" + "log" + "net/http" + "os" + + "github.com/justinas/alice" + "github.com/rs/xlog" +) + +func Example_handler() { + c := alice.New() + + host, _ := os.Hostname() + conf := xlog.Config{ + // Set some global env fields + Fields: xlog.F{ + "role": "my-service", + "host": host, + }, + } + + // Install the logger handler with default output on the console + c = c.Append(xlog.NewHandler(conf)) + + // Plug the xlog handler's input to Go's default logger + log.SetFlags(0) + log.SetOutput(xlog.New(conf)) + + // Install some provided extra handler to set some request's context fields. + // Thanks to those handler, all our logs will come with some pre-populated fields. + c = c.Append(xlog.RemoteAddrHandler("ip")) + c = c.Append(xlog.UserAgentHandler("user_agent")) + c = c.Append(xlog.RefererHandler("referer")) + c = c.Append(xlog.RequestIDHandler("req_id", "Request-Id")) + + // Here is your final handler + h := c.Then(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + // Get the logger from the request's context. You can safely assume it + // will be always there: if the handler is removed, xlog.FromContext + // will return a NopLogger + l := xlog.FromRequest(r) + + // Then log some errors + if err := errors.New("some error from elsewhere"); err != nil { + l.Errorf("Here is an error: %v", err) + } + + // Or some info with fields + l.Info("Something happend", xlog.F{ + "user": "current user id", + "status": "ok", + }) + })) + http.Handle("/", h) + + if err := http.ListenAndServe(":8080", nil); err != nil { + log.SetOutput(os.Stderr) // make sure we print to console + log.Fatal(err) + } +} diff --git a/vendor/github.com/rs/xlog/handler_pre17.go b/vendor/github.com/rs/xlog/handler_pre17.go new file mode 100644 index 0000000..4dbc880 --- /dev/null +++ b/vendor/github.com/rs/xlog/handler_pre17.go @@ -0,0 +1,162 @@ +// +build !go1.7 + +package xlog + +import ( + "net" + "net/http" + + "github.com/rs/xhandler" + "github.com/rs/xid" + "golang.org/x/net/context" +) + +type key int + +const ( + logKey key = iota + idKey +) + +// IDFromContext returns the unique id associated to the request if any. +func IDFromContext(ctx context.Context) (xid.ID, bool) { + id, ok := ctx.Value(idKey).(xid.ID) + return id, ok +} + +// FromContext gets the logger out of the context. +// If not logger is stored in the context, a NopLogger is returned. +func FromContext(ctx context.Context) Logger { + if ctx == nil { + return NopLogger + } + l, ok := ctx.Value(logKey).(Logger) + if !ok { + return NopLogger + } + return l +} + +// NewContext returns a copy of the parent context and associates it with the provided logger. +func NewContext(ctx context.Context, l Logger) context.Context { + return context.WithValue(ctx, logKey, l) +} + +// NewHandler instanciates a new xlog HTTP handler. +// +// If not configured, the output is set to NewConsoleOutput() by default. +func NewHandler(c Config) func(xhandler.HandlerC) xhandler.HandlerC { + if c.Output == nil { + c.Output = NewOutputChannel(NewConsoleOutput()) + } + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := New(c) + ctx = NewContext(ctx, l) + next.ServeHTTPC(ctx, w, r) + if l, ok := l.(*logger); ok { + l.close() + } + }) + } +} + +// URLHandler returns a handler setting the request's URL as a field +// to the current context's logger using the passed name as field name. +func URLHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + FromContext(ctx).SetField(name, r.URL.String()) + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// MethodHandler returns a handler setting the request's method as a field +// to the current context's logger using the passed name as field name. +func MethodHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + FromContext(ctx).SetField(name, r.Method) + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// RequestHandler returns a handler setting the request's method and URL as a field +// to the current context's logger using the passed name as field name. +func RequestHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + FromContext(ctx).SetField(name, r.Method+" "+r.URL.String()) + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// RemoteAddrHandler returns a handler setting the request's remote address as a field +// to the current context's logger using the passed name as field name. +func RemoteAddrHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + if host, _, err := net.SplitHostPort(r.RemoteAddr); err == nil { + FromContext(ctx).SetField(name, host) + } + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// UserAgentHandler returns a handler setting the request's client's user-agent as +// a field to the current context's logger using the passed name as field name. +func UserAgentHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + if ua := r.Header.Get("User-Agent"); ua != "" { + FromContext(ctx).SetField(name, ua) + } + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// RefererHandler returns a handler setting the request's referer header as +// a field to the current context's logger using the passed name as field name. +func RefererHandler(name string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + if ref := r.Header.Get("Referer"); ref != "" { + FromContext(ctx).SetField(name, ref) + } + next.ServeHTTPC(ctx, w, r) + }) + } +} + +// RequestIDHandler returns a handler setting a unique id to the request which can +// be gathered using IDFromContext(ctx). This generated id is added as a field to the +// logger using the passed name as field name. The id is also added as a response +// header if the headerName is not empty. +// +// The generated id is a URL safe base64 encoded mongo object-id-like unique id. +// Mongo unique id generation algorithm has been selected as a trade-off between +// size and ease of use: UUID is less space efficient and snowflake requires machine +// configuration. +func RequestIDHandler(name, headerName string) func(next xhandler.HandlerC) xhandler.HandlerC { + return func(next xhandler.HandlerC) xhandler.HandlerC { + return xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + id, ok := IDFromContext(ctx) + if !ok { + id = xid.New() + ctx = context.WithValue(ctx, idKey, id) + } + if name != "" { + FromContext(ctx).SetField(name, id) + } + if headerName != "" { + w.Header().Set(headerName, id.String()) + } + next.ServeHTTPC(ctx, w, r) + }) + } +} diff --git a/vendor/github.com/rs/xlog/handler_pre17_test.go b/vendor/github.com/rs/xlog/handler_pre17_test.go new file mode 100644 index 0000000..ee8c737 --- /dev/null +++ b/vendor/github.com/rs/xlog/handler_pre17_test.go @@ -0,0 +1,147 @@ +// +build !go1.7 + +package xlog + +import ( + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/rs/xhandler" + "github.com/stretchr/testify/assert" + "golang.org/x/net/context" +) + +func TestFromContext(t *testing.T) { + assert.Equal(t, NopLogger, FromContext(nil)) + assert.Equal(t, NopLogger, FromContext(context.Background())) + l := &logger{} + ctx := NewContext(context.Background(), l) + assert.Equal(t, l, FromContext(ctx)) +} + +func TestNewHandler(t *testing.T) { + c := Config{ + Level: LevelInfo, + Fields: F{"foo": "bar"}, + Output: NewOutputChannel(&testOutput{}), + } + lh := NewHandler(c) + h := lh(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx) + assert.NotNil(t, l) + assert.NotEqual(t, NopLogger, l) + if l, ok := l.(*logger); assert.True(t, ok) { + assert.Equal(t, LevelInfo, l.level) + assert.Equal(t, c.Output, l.output) + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + } + })) + h.ServeHTTPC(context.Background(), nil, nil) +} + +func TestURLHandler(t *testing.T) { + r := &http.Request{ + URL: &url.URL{Path: "/path", RawQuery: "foo=bar"}, + } + h := URLHandler("url")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"url": "/path?foo=bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestMethodHandler(t *testing.T) { + r := &http.Request{ + Method: "POST", + } + h := MethodHandler("method")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"method": "POST"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestRequestHandler(t *testing.T) { + r := &http.Request{ + Method: "POST", + URL: &url.URL{Path: "/path", RawQuery: "foo=bar"}, + } + h := RequestHandler("request")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"request": "POST /path?foo=bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestRemoteAddrHandler(t *testing.T) { + r := &http.Request{ + RemoteAddr: "1.2.3.4:1234", + } + h := RemoteAddrHandler("ip")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"ip": "1.2.3.4"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestRemoteAddrHandlerIPv6(t *testing.T) { + r := &http.Request{ + RemoteAddr: "[2001:db8:a0b:12f0::1]:1234", + } + h := RemoteAddrHandler("ip")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"ip": "2001:db8:a0b:12f0::1"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestUserAgentHandler(t *testing.T) { + r := &http.Request{ + Header: http.Header{ + "User-Agent": []string{"some user agent string"}, + }, + } + h := UserAgentHandler("ua")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"ua": "some user agent string"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestRefererHandler(t *testing.T) { + r := &http.Request{ + Header: http.Header{ + "Referer": []string{"http://foo.com/bar"}, + }, + } + h := RefererHandler("ua")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + assert.Equal(t, F{"ua": "http://foo.com/bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTPC(context.Background(), nil, r) +} + +func TestRequestIDHandler(t *testing.T) { + r := &http.Request{} + h := RequestIDHandler("id", "Request-Id")(xhandler.HandlerFuncC(func(ctx context.Context, w http.ResponseWriter, r *http.Request) { + l := FromContext(ctx).(*logger) + if id, ok := IDFromContext(ctx); assert.True(t, ok) { + assert.Equal(t, l.fields["id"], id) + assert.Len(t, id.String(), 20) + assert.Equal(t, id.String(), w.Header().Get("Request-Id")) + } + assert.Len(t, l.fields["id"], 12) + })) + h = NewHandler(Config{})(h) + w := httptest.NewRecorder() + h.ServeHTTPC(context.Background(), w, r) +} diff --git a/vendor/github.com/rs/xlog/handler_test.go b/vendor/github.com/rs/xlog/handler_test.go new file mode 100644 index 0000000..69d3438 --- /dev/null +++ b/vendor/github.com/rs/xlog/handler_test.go @@ -0,0 +1,146 @@ +// +build go1.7 + +package xlog + +import ( + "context" + "net/http" + "net/http/httptest" + "net/url" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestFromContext(t *testing.T) { + assert.Equal(t, NopLogger, FromContext(nil)) + assert.Equal(t, NopLogger, FromContext(context.Background())) + l := &logger{} + ctx := NewContext(context.Background(), l) + assert.Equal(t, l, FromContext(ctx)) +} + +func TestNewHandler(t *testing.T) { + c := Config{ + Level: LevelInfo, + Fields: F{"foo": "bar"}, + Output: NewOutputChannel(&testOutput{}), + } + lh := NewHandler(c) + h := lh(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r) + assert.NotNil(t, l) + assert.NotEqual(t, NopLogger, l) + if l, ok := l.(*logger); assert.True(t, ok) { + assert.Equal(t, LevelInfo, l.level) + assert.Equal(t, c.Output, l.output) + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + } + })) + h.ServeHTTP(nil, &http.Request{}) +} + +func TestURLHandler(t *testing.T) { + r := &http.Request{ + URL: &url.URL{Path: "/path", RawQuery: "foo=bar"}, + } + h := URLHandler("url")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"url": "/path?foo=bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestMethodHandler(t *testing.T) { + r := &http.Request{ + Method: "POST", + } + h := MethodHandler("method")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"method": "POST"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestRequestHandler(t *testing.T) { + r := &http.Request{ + Method: "POST", + URL: &url.URL{Path: "/path", RawQuery: "foo=bar"}, + } + h := RequestHandler("request")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"request": "POST /path?foo=bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestRemoteAddrHandler(t *testing.T) { + r := &http.Request{ + RemoteAddr: "1.2.3.4:1234", + } + h := RemoteAddrHandler("ip")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"ip": "1.2.3.4"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestRemoteAddrHandlerIPv6(t *testing.T) { + r := &http.Request{ + RemoteAddr: "[2001:db8:a0b:12f0::1]:1234", + } + h := RemoteAddrHandler("ip")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"ip": "2001:db8:a0b:12f0::1"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestUserAgentHandler(t *testing.T) { + r := &http.Request{ + Header: http.Header{ + "User-Agent": []string{"some user agent string"}, + }, + } + h := UserAgentHandler("ua")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"ua": "some user agent string"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestRefererHandler(t *testing.T) { + r := &http.Request{ + Header: http.Header{ + "Referer": []string{"http://foo.com/bar"}, + }, + } + h := RefererHandler("ua")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + assert.Equal(t, F{"ua": "http://foo.com/bar"}, F(l.fields)) + })) + h = NewHandler(Config{})(h) + h.ServeHTTP(nil, r) +} + +func TestRequestIDHandler(t *testing.T) { + r := &http.Request{} + h := RequestIDHandler("id", "Request-Id")(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + l := FromRequest(r).(*logger) + if id, ok := IDFromRequest(r); assert.True(t, ok) { + assert.Equal(t, l.fields["id"], id) + assert.Len(t, id.String(), 20) + assert.Equal(t, id.String(), w.Header().Get("Request-Id")) + } + assert.Len(t, l.fields["id"], 12) + })) + h = NewHandler(Config{})(h) + w := httptest.NewRecorder() + h.ServeHTTP(w, r) +} diff --git a/vendor/github.com/rs/xlog/internal/term/LICENSE b/vendor/github.com/rs/xlog/internal/term/LICENSE new file mode 100755 index 0000000..f090cb4 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Simon Eskildsen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/rs/xlog/internal/term/term.go b/vendor/github.com/rs/xlog/internal/term/term.go new file mode 100755 index 0000000..78833f3 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term.go @@ -0,0 +1,12 @@ +// Based on ssh/terminal: +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!appengine darwin freebsd openbsd + +package term + +type fder interface { + Fd() uintptr +} diff --git a/vendor/github.com/rs/xlog/internal/term/term_appengine.go b/vendor/github.com/rs/xlog/internal/term/term_appengine.go new file mode 100755 index 0000000..b023121 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_appengine.go @@ -0,0 +1,15 @@ +// Based on ssh/terminal: +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build appengine + +package term + +import "io" + +// IsTerminal always returns false on AppEngine. +func IsTerminal(w io.Writer) bool { + return false +} diff --git a/vendor/github.com/rs/xlog/internal/term/term_darwin.go b/vendor/github.com/rs/xlog/internal/term/term_darwin.go new file mode 100755 index 0000000..459cf54 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_darwin.go @@ -0,0 +1,10 @@ +// Based on ssh/terminal: +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package term + +import "syscall" + +const ioctlReadTermios = syscall.TIOCGETA diff --git a/vendor/github.com/rs/xlog/internal/term/term_freebsd.go b/vendor/github.com/rs/xlog/internal/term/term_freebsd.go new file mode 100755 index 0000000..791d5c6 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_freebsd.go @@ -0,0 +1,7 @@ +package term + +import ( + "syscall" +) + +const ioctlReadTermios = syscall.TIOCGETA diff --git a/vendor/github.com/rs/xlog/internal/term/term_linux.go b/vendor/github.com/rs/xlog/internal/term/term_linux.go new file mode 100755 index 0000000..ffeab4d --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_linux.go @@ -0,0 +1,12 @@ +// Based on ssh/terminal: +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine + +package term + +import "syscall" + +const ioctlReadTermios = syscall.TCGETS diff --git a/vendor/github.com/rs/xlog/internal/term/term_notwindows.go b/vendor/github.com/rs/xlog/internal/term/term_notwindows.go new file mode 100755 index 0000000..9c72558 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_notwindows.go @@ -0,0 +1,25 @@ +// Based on ssh/terminal: +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build linux,!appengine darwin freebsd openbsd + +package term + +import ( + "io" + "syscall" + "unsafe" +) + +// IsTerminal returns true if w writes to a terminal. +func IsTerminal(w io.Writer) bool { + fw, ok := w.(fder) + if !ok { + return false + } + var termios syscall.Termios + _, _, err := syscall.Syscall6(syscall.SYS_IOCTL, fw.Fd(), ioctlReadTermios, uintptr(unsafe.Pointer(&termios)), 0, 0, 0) + return err == 0 +} diff --git a/vendor/github.com/rs/xlog/internal/term/term_openbsd.go b/vendor/github.com/rs/xlog/internal/term/term_openbsd.go new file mode 100755 index 0000000..f993166 --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_openbsd.go @@ -0,0 +1,5 @@ +package term + +import "syscall" + +const ioctlReadTermios = syscall.TIOCGETA diff --git a/vendor/github.com/rs/xlog/internal/term/term_windows.go b/vendor/github.com/rs/xlog/internal/term/term_windows.go new file mode 100644 index 0000000..1f218cc --- /dev/null +++ b/vendor/github.com/rs/xlog/internal/term/term_windows.go @@ -0,0 +1,33 @@ +// Based on ssh/terminal: +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package term + +import ( + "io" + "syscall" + "unsafe" +) + +var kernel32 = syscall.NewLazyDLL("kernel32.dll") + +var ( + procGetConsoleMode = kernel32.NewProc("GetConsoleMode") +) + +// IsTerminal returns true if w writes to a terminal. +func IsTerminal(w io.Writer) bool { + fw, ok := w.(interface { + Fd() uintptr + }) + if !ok { + return false + } + var st uint32 + r, _, e := syscall.Syscall(procGetConsoleMode.Addr(), 2, fw.Fd(), uintptr(unsafe.Pointer(&st)), 0) + return r != 0 && e == 0 +} diff --git a/vendor/github.com/rs/xlog/levels.go b/vendor/github.com/rs/xlog/levels.go new file mode 100644 index 0000000..302ea53 --- /dev/null +++ b/vendor/github.com/rs/xlog/levels.go @@ -0,0 +1,99 @@ +package xlog + +import ( + "bytes" + "fmt" + "strconv" +) + +// Level defines log levels +type Level int + +// Log levels +const ( + LevelDebug Level = iota + LevelInfo + LevelWarn + LevelError + LevelFatal +) + +// Log level strings +var ( + levelDebug = "debug" + levelInfo = "info" + levelWarn = "warn" + levelError = "error" + levelFatal = "fatal" + + levelBytesDebug = []byte(levelDebug) + levelBytesInfo = []byte(levelInfo) + levelBytesWarn = []byte(levelWarn) + levelBytesError = []byte(levelError) + levelBytesFatal = []byte(levelFatal) +) + +// LevelFromString returns the level based on its string representation +func LevelFromString(t string) (Level, error) { + l := Level(0) + err := (&l).UnmarshalText([]byte(t)) + return l, err +} + +// UnmarshalText lets Level implements the TextUnmarshaler interface used by encoding packages +func (l *Level) UnmarshalText(text []byte) (err error) { + if bytes.Equal(text, levelBytesDebug) { + *l = LevelDebug + } else if bytes.Equal(text, levelBytesInfo) { + *l = LevelInfo + } else if bytes.Equal(text, levelBytesWarn) { + *l = LevelWarn + } else if bytes.Equal(text, levelBytesError) { + *l = LevelError + } else if bytes.Equal(text, levelBytesFatal) { + *l = LevelFatal + } else { + err = fmt.Errorf("Uknown level %v", string(text)) + } + return +} + +// String returns the string representation of the level. +func (l Level) String() string { + var t string + switch l { + case LevelDebug: + t = levelDebug + case LevelInfo: + t = levelInfo + case LevelWarn: + t = levelWarn + case LevelError: + t = levelError + case LevelFatal: + t = levelFatal + default: + t = strconv.FormatInt(int64(l), 10) + } + return t +} + +// MarshalText lets Level implements the TextMarshaler interface used by encoding packages +func (l Level) MarshalText() ([]byte, error) { + var t []byte + switch l { + case LevelDebug: + t = levelBytesDebug + case LevelInfo: + t = levelBytesInfo + case LevelWarn: + t = levelBytesWarn + case LevelError: + t = levelBytesError + case LevelFatal: + t = levelBytesFatal + default: + t = []byte(strconv.FormatInt(int64(l), 10)) + } + return t, nil +} diff --git a/vendor/github.com/rs/xlog/levels_test.go b/vendor/github.com/rs/xlog/levels_test.go new file mode 100644 index 0000000..99ca0d9 --- /dev/null +++ b/vendor/github.com/rs/xlog/levels_test.go @@ -0,0 +1,77 @@ +package xlog + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestLevelFromString(t *testing.T) { + l, err := LevelFromString("debug") + assert.NoError(t, err) + assert.Equal(t, LevelDebug, l) + l, err = LevelFromString("info") + assert.NoError(t, err) + assert.Equal(t, LevelInfo, l) + l, err = LevelFromString("warn") + assert.NoError(t, err) + assert.Equal(t, LevelWarn, l) + l, err = LevelFromString("error") + assert.NoError(t, err) + assert.Equal(t, LevelError, l) + l, err = LevelFromString("fatal") + assert.NoError(t, err) + assert.Equal(t, LevelFatal, l) + _, err = LevelFromString("foo") + assert.Error(t, err, "") +} + +func TestLevelUnmarshalerText(t *testing.T) { + l := Level(-1) + err := l.UnmarshalText([]byte("debug")) + assert.NoError(t, err) + assert.Equal(t, LevelDebug, l) + err = l.UnmarshalText([]byte("info")) + assert.NoError(t, err) + assert.Equal(t, LevelInfo, l) + err = l.UnmarshalText([]byte("warn")) + assert.NoError(t, err) + assert.Equal(t, LevelWarn, l) + err = l.UnmarshalText([]byte("error")) + assert.NoError(t, err) + assert.Equal(t, LevelError, l) + err = l.UnmarshalText([]byte("fatal")) + assert.NoError(t, err) + assert.Equal(t, LevelFatal, l) + assert.Error(t, l.UnmarshalText([]byte("invalid"))) +} + +func TestLevelString(t *testing.T) { + assert.Equal(t, "debug", LevelDebug.String()) + assert.Equal(t, "info", LevelInfo.String()) + assert.Equal(t, "warn", LevelWarn.String()) + assert.Equal(t, "error", LevelError.String()) + assert.Equal(t, "fatal", LevelFatal.String()) + assert.Equal(t, "10", Level(10).String()) +} + +func TestLevelMarshalerText(t *testing.T) { + b, err := LevelDebug.MarshalText() + assert.NoError(t, err) + assert.Equal(t, string(levelBytesDebug), string(b)) + b, err = LevelInfo.MarshalText() + assert.NoError(t, err) + assert.Equal(t, string(levelBytesInfo), string(b)) + b, err = LevelWarn.MarshalText() + assert.NoError(t, err) + assert.Equal(t, string(levelBytesWarn), string(b)) + b, err = LevelError.MarshalText() + assert.NoError(t, err) + assert.Equal(t, string(levelBytesError), string(b)) + b, err = LevelFatal.MarshalText() + assert.NoError(t, err) + assert.Equal(t, string(levelBytesFatal), string(b)) + b, err = Level(10).MarshalText() + assert.NoError(t, err) + assert.Equal(t, "10", string(b)) +} diff --git a/vendor/github.com/rs/xlog/nop.go b/vendor/github.com/rs/xlog/nop.go new file mode 100644 index 0000000..1575a61 --- /dev/null +++ b/vendor/github.com/rs/xlog/nop.go @@ -0,0 +1,42 @@ +package xlog + +type nop struct{} + +// NopLogger is an no-op implementation of xlog.Logger +var NopLogger = &nop{} + +func (n nop) SetField(name string, value interface{}) {} + +func (n nop) GetFields() F { return map[string]interface{}{} } + +func (n nop) OutputF(level Level, calldepth int, msg string, fields map[string]interface{}) {} + +func (n nop) Debug(v ...interface{}) {} + +func (n nop) Debugf(format string, v ...interface{}) {} + +func (n nop) Info(v ...interface{}) {} + +func (n nop) Infof(format string, v ...interface{}) {} + +func (n nop) Warn(v ...interface{}) {} + +func (n nop) Warnf(format string, v ...interface{}) {} + +func (n nop) Error(v ...interface{}) {} + +func (n nop) Errorf(format string, v ...interface{}) {} + +func (n nop) Fatal(v ...interface{}) { + exit1() +} + +func (n nop) Fatalf(format string, v ...interface{}) { + exit1() +} + +func (n nop) Write(p []byte) (int, error) { return len(p), nil } + +func (n nop) Output(calldepth int, s string) error { + return nil +} diff --git a/vendor/github.com/rs/xlog/nop_test.go b/vendor/github.com/rs/xlog/nop_test.go new file mode 100644 index 0000000..25a12b7 --- /dev/null +++ b/vendor/github.com/rs/xlog/nop_test.go @@ -0,0 +1,22 @@ +package xlog + +import "testing" + +func TestNopLogger(t *testing.T) { + // cheap cover score upper + NopLogger.SetField("name", "value") + NopLogger.OutputF(LevelInfo, 0, "", nil) + NopLogger.Debug() + NopLogger.Debugf("format") + NopLogger.Info() + NopLogger.Infof("format") + NopLogger.Warn() + NopLogger.Warnf("format") + NopLogger.Error() + NopLogger.Errorf("format") + exit1 = func() {} + NopLogger.Fatal() + NopLogger.Fatalf("format") + NopLogger.Write([]byte{}) + NopLogger.Output(0, "") +} diff --git a/vendor/github.com/rs/xlog/output.go b/vendor/github.com/rs/xlog/output.go new file mode 100644 index 0000000..86106c1 --- /dev/null +++ b/vendor/github.com/rs/xlog/output.go @@ -0,0 +1,391 @@ +package xlog + +import ( + "bytes" + "encoding/json" + "errors" + "io" + "os" + "sort" + "strings" + "sync" + "time" + + "github.com/rs/xid" + "github.com/rs/xlog/internal/term" +) + +// Output sends a log message fields to a destination. +type Output interface { + Write(fields map[string]interface{}) error +} + +// OutputFunc is an adapter to allow the use of ordinary functions as Output handlers. +// If it is a function with the appropriate signature, OutputFunc(f) is a Output object +// that calls f on Write(). +type OutputFunc func(fields map[string]interface{}) error + +func (of OutputFunc) Write(fields map[string]interface{}) error { + return of(fields) +} + +// OutputChannel is a send buffered channel between xlog and an Output. +type OutputChannel struct { + input chan map[string]interface{} + output Output + stop chan struct{} +} + +// ErrBufferFull is returned when the output channel buffer is full and messages +// are discarded. +var ErrBufferFull = errors.New("buffer full") + +// NewOutputChannel creates a consumer buffered channel for the given output +// with a default buffer of 100 messages. +func NewOutputChannel(o Output) *OutputChannel { + return NewOutputChannelBuffer(o, 100) +} + +// NewOutputChannelBuffer creates a consumer buffered channel for the given output +// with a customizable buffer size. +func NewOutputChannelBuffer(o Output, bufSize int) *OutputChannel { + oc := &OutputChannel{ + input: make(chan map[string]interface{}, bufSize), + output: o, + stop: make(chan struct{}), + } + + go func() { + for { + select { + case msg := <-oc.input: + if err := o.Write(msg); err != nil { + critialLogger.Print("cannot write log message: ", err.Error()) + } + case <-oc.stop: + close(oc.stop) + return + } + } + }() + + return oc +} + +// Write implements the Output interface +func (oc *OutputChannel) Write(fields map[string]interface{}) (err error) { + select { + case oc.input <- fields: + // Sent with success + default: + // Channel is full, message dropped + err = ErrBufferFull + } + return err +} + +// Flush flushes all the buffered message to the output +func (oc *OutputChannel) Flush() { + for { + select { + case msg := <-oc.input: + if err := oc.output.Write(msg); err != nil { + critialLogger.Print("cannot write log message: ", err.Error()) + } + default: + return + } + } +} + +// Close closes the output channel and release the consumer's go routine. +func (oc *OutputChannel) Close() { + if oc.stop == nil { + return + } + oc.stop <- struct{}{} + <-oc.stop + oc.stop = nil + oc.Flush() +} + +// Discard is an Output that discards all log message going thru it. +var Discard = OutputFunc(func(fields map[string]interface{}) error { + return nil +}) + +var bufPool = &sync.Pool{ + New: func() interface{} { + return &bytes.Buffer{} + }, +} + +// MultiOutput routes the same message to serveral outputs. +// If one or more outputs return an error, the last error is returned. +type MultiOutput []Output + +func (m MultiOutput) Write(fields map[string]interface{}) (err error) { + for _, o := range m { + e := o.Write(fields) + if e != nil { + err = e + } + } + return +} + +// FilterOutput test a condition on the message and forward it to the child output +// if it returns true. +type FilterOutput struct { + Cond func(fields map[string]interface{}) bool + Output Output +} + +func (f FilterOutput) Write(fields map[string]interface{}) (err error) { + if f.Output == nil { + return + } + if f.Cond(fields) { + return f.Output.Write(fields) + } + return +} + +// LevelOutput routes messages to different output based on the message's level. +type LevelOutput struct { + Debug Output + Info Output + Warn Output + Error Output + Fatal Output +} + +func (l LevelOutput) Write(fields map[string]interface{}) error { + var o Output + switch fields[KeyLevel] { + case "debug": + o = l.Debug + case "info": + o = l.Info + case "warn": + o = l.Warn + case "error": + o = l.Error + case "fatal": + o = l.Fatal + } + if o != nil { + return o.Write(fields) + } + return nil +} + +// RecorderOutput stores the raw messages in it's Messages field. This output is useful for testing. +type RecorderOutput struct { + Messages []F +} + +func (l *RecorderOutput) Write(fields map[string]interface{}) error { + if l.Messages == nil { + l.Messages = []F{fields} + } else { + l.Messages = append(l.Messages, fields) + } + return nil +} + +// Reset empty the output from stored messages +func (l *RecorderOutput) Reset() { + l.Messages = []F{} +} + +type consoleOutput struct { + w io.Writer +} + +var isTerminal = term.IsTerminal + +// NewConsoleOutput returns a Output printing message in a colored human readable form on the +// stderr. If the stderr is not on a terminal, a LogfmtOutput is returned instead. +func NewConsoleOutput() Output { + return NewConsoleOutputW(os.Stderr, NewLogfmtOutput(os.Stderr)) +} + +// NewConsoleOutputW returns a Output printing message in a colored human readable form with +// the provided writer. If the writer is not on a terminal, the noTerm output is returned. +func NewConsoleOutputW(w io.Writer, noTerm Output) Output { + if isTerminal(w) { + return consoleOutput{w: w} + } + return noTerm +} + +func (o consoleOutput) Write(fields map[string]interface{}) error { + buf := bufPool.Get().(*bytes.Buffer) + defer func() { + buf.Reset() + bufPool.Put(buf) + }() + if ts, ok := fields[KeyTime].(time.Time); ok { + buf.Write([]byte(ts.Format("2006/01/02 15:04:05 "))) + } + if lvl, ok := fields[KeyLevel].(string); ok { + levelColor := blue + switch lvl { + case "debug": + levelColor = gray + case "warn": + levelColor = yellow + case "error": + levelColor = red + } + colorPrint(buf, strings.ToUpper(lvl[0:4]), levelColor) + buf.WriteByte(' ') + } + if msg, ok := fields[KeyMessage].(string); ok { + msg = strings.Replace(msg, "\n", "\\n", -1) + buf.Write([]byte(msg)) + } + // Gather field keys + keys := []string{} + for k := range fields { + switch k { + case KeyLevel, KeyMessage, KeyTime: + continue + } + keys = append(keys, k) + } + // Sort fields by key names + sort.Strings(keys) + // Print fields using logfmt format + for _, k := range keys { + buf.WriteByte(' ') + colorPrint(buf, k, green) + buf.WriteByte('=') + if err := writeValue(buf, fields[k]); err != nil { + return err + } + } + buf.WriteByte('\n') + _, err := o.w.Write(buf.Bytes()) + return err +} + +type logfmtOutput struct { + w io.Writer +} + +// NewLogfmtOutput returns a new output using logstash JSON schema v1 +func NewLogfmtOutput(w io.Writer) Output { + return logfmtOutput{w: w} +} + +func (o logfmtOutput) Write(fields map[string]interface{}) error { + buf := bufPool.Get().(*bytes.Buffer) + defer func() { + buf.Reset() + bufPool.Put(buf) + }() + // Gather field keys + keys := []string{} + for k := range fields { + switch k { + case KeyLevel, KeyMessage, KeyTime: + continue + } + keys = append(keys, k) + } + // Sort fields by key names + sort.Strings(keys) + // Prepend default fields in a specific order + keys = append([]string{KeyLevel, KeyMessage, KeyTime}, keys...) + l := len(keys) + for i, k := range keys { + buf.Write([]byte(k)) + buf.WriteByte('=') + if err := writeValue(buf, fields[k]); err != nil { + return err + } + if i+1 < l { + buf.WriteByte(' ') + } else { + buf.WriteByte('\n') + } + } + _, err := o.w.Write(buf.Bytes()) + return err +} + +// NewJSONOutput returns a new JSON output with the given writer. +func NewJSONOutput(w io.Writer) Output { + enc := json.NewEncoder(w) + return OutputFunc(func(fields map[string]interface{}) error { + return enc.Encode(fields) + }) +} + +// NewLogstashOutput returns an output to generate logstash friendly JSON format. +func NewLogstashOutput(w io.Writer) Output { + return OutputFunc(func(fields map[string]interface{}) error { + lsf := map[string]interface{}{ + "@version": 1, + } + for k, v := range fields { + switch k { + case KeyTime: + k = "@timestamp" + case KeyLevel: + if s, ok := v.(string); ok { + v = strings.ToUpper(s) + } + } + if t, ok := v.(time.Time); ok { + lsf[k] = t.Format(time.RFC3339) + } else { + lsf[k] = v + } + } + b, err := json.Marshal(lsf) + if err != nil { + return err + } + _, err = w.Write(b) + return err + }) +} + +// NewUIDOutput returns an output filter adding a globally unique id (using github.com/rs/xid) +// to all message going thru this output. The o parameter defines the next output to pass data +// to. +func NewUIDOutput(field string, o Output) Output { + return OutputFunc(func(fields map[string]interface{}) error { + fields[field] = xid.New().String() + return o.Write(fields) + }) +} + +// NewTrimOutput trims any field of type string with a value length greater than maxLen +// to maxLen. +func NewTrimOutput(maxLen int, o Output) Output { + return OutputFunc(func(fields map[string]interface{}) error { + for k, v := range fields { + if s, ok := v.(string); ok && len(s) > maxLen { + fields[k] = s[:maxLen] + } + } + return o.Write(fields) + }) +} + +// NewTrimFieldsOutput trims listed field fields of type string with a value length greater than maxLen +// to maxLen. +func NewTrimFieldsOutput(trimFields []string, maxLen int, o Output) Output { + return OutputFunc(func(fields map[string]interface{}) error { + for _, f := range trimFields { + if s, ok := fields[f].(string); ok && len(s) > maxLen { + fields[f] = s[:maxLen] + } + } + return o.Write(fields) + }) +} diff --git a/vendor/github.com/rs/xlog/output_examples_test.go b/vendor/github.com/rs/xlog/output_examples_test.go new file mode 100644 index 0000000..e26ec22 --- /dev/null +++ b/vendor/github.com/rs/xlog/output_examples_test.go @@ -0,0 +1,97 @@ +package xlog_test + +import ( + "log/syslog" + + "github.com/rs/xlog" +) + +func Example_combinedOutputs() { + conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.MultiOutput{ + // Output interesting messages to console + 0: xlog.FilterOutput{ + Cond: func(fields map[string]interface{}) bool { + val, found := fields["type"] + return found && val == "interesting" + }, + Output: xlog.NewConsoleOutput(), + }, + // Also setup by-level loggers + 1: xlog.LevelOutput{ + // Send debug messages to console if they match type + Debug: xlog.FilterOutput{ + Cond: func(fields map[string]interface{}) bool { + val, found := fields["type"] + return found && val == "interesting" + }, + Output: xlog.NewConsoleOutput(), + }, + }, + // Also send everything over syslog + 2: xlog.NewSyslogOutput("", "", ""), + }), + } + + lh := xlog.NewHandler(conf) + _ = lh +} + +func ExampleMultiOutput() { + conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.MultiOutput{ + // Output everything to console + 0: xlog.NewConsoleOutput(), + // and also to local syslog + 1: xlog.NewSyslogOutput("", "", ""), + }), + } + lh := xlog.NewHandler(conf) + _ = lh +} + +func ExampleFilterOutput() { + conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.FilterOutput{ + // Match messages containing a field type = interesting + Cond: func(fields map[string]interface{}) bool { + val, found := fields["type"] + return found && val == "interesting" + }, + // Output matching messages to the console + Output: xlog.NewConsoleOutput(), + }), + } + + lh := xlog.NewHandler(conf) + _ = lh +} + +func ExampleLevelOutput() { + conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.LevelOutput{ + // Send debug message to console + Debug: xlog.NewConsoleOutput(), + // and error messages to syslog + Error: xlog.NewSyslogOutput("", "", ""), + // other levels are discarded + }), + } + + lh := xlog.NewHandler(conf) + _ = lh +} + +func ExampleNewSyslogWriter() { + conf := xlog.Config{ + Output: xlog.NewOutputChannel(xlog.LevelOutput{ + Debug: xlog.NewLogstashOutput(xlog.NewSyslogWriter("", "", syslog.LOG_LOCAL0|syslog.LOG_DEBUG, "")), + Info: xlog.NewLogstashOutput(xlog.NewSyslogWriter("", "", syslog.LOG_LOCAL0|syslog.LOG_INFO, "")), + Warn: xlog.NewLogstashOutput(xlog.NewSyslogWriter("", "", syslog.LOG_LOCAL0|syslog.LOG_WARNING, "")), + Error: xlog.NewLogstashOutput(xlog.NewSyslogWriter("", "", syslog.LOG_LOCAL0|syslog.LOG_ERR, "")), + }), + } + + lh := xlog.NewHandler(conf) + _ = lh +} diff --git a/vendor/github.com/rs/xlog/output_syslog.go b/vendor/github.com/rs/xlog/output_syslog.go new file mode 100644 index 0000000..2acbf1c --- /dev/null +++ b/vendor/github.com/rs/xlog/output_syslog.go @@ -0,0 +1,40 @@ +// +build !windows + +package xlog + +import ( + "io" + "log/syslog" +) + +// NewSyslogOutput returns JSONOutputs in a LevelOutput with writers set to syslog +// with the proper priority added to a LOG_USER facility. +// If network and address are empty, Dial will connect to the local syslog server. +func NewSyslogOutput(network, address, tag string) Output { + return NewSyslogOutputFacility(network, address, tag, syslog.LOG_USER) +} + +// NewSyslogOutputFacility returns JSONOutputs in a LevelOutput with writers set to syslog +// with the proper priority added to the passed facility. +// If network and address are empty, Dial will connect to the local syslog server. +func NewSyslogOutputFacility(network, address, tag string, facility syslog.Priority) Output { + o := LevelOutput{ + Debug: NewJSONOutput(NewSyslogWriter(network, address, facility|syslog.LOG_DEBUG, tag)), + Info: NewJSONOutput(NewSyslogWriter(network, address, facility|syslog.LOG_INFO, tag)), + Warn: NewJSONOutput(NewSyslogWriter(network, address, facility|syslog.LOG_WARNING, tag)), + Error: NewJSONOutput(NewSyslogWriter(network, address, facility|syslog.LOG_ERR, tag)), + } + return o +} + +// NewSyslogWriter returns a writer ready to be used with output modules. +// If network and address are empty, Dial will connect to the local syslog server. +func NewSyslogWriter(network, address string, prio syslog.Priority, tag string) io.Writer { + s, err := syslog.Dial(network, address, prio, tag) + if err != nil { + m := "syslog dial error: " + err.Error() + critialLogger.Print(m) + panic(m) + } + return s +} diff --git a/vendor/github.com/rs/xlog/output_test.go b/vendor/github.com/rs/xlog/output_test.go new file mode 100644 index 0000000..6982763 --- /dev/null +++ b/vendor/github.com/rs/xlog/output_test.go @@ -0,0 +1,351 @@ +package xlog + +import ( + "bytes" + "errors" + "io" + "io/ioutil" + "log" + "os" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +type testOutput struct { + err error + w chan map[string]interface{} +} + +func newTestOutput() *testOutput { + return &testOutput{w: make(chan map[string]interface{}, 10)} +} + +func newTestOutputErr(err error) *testOutput { + return &testOutput{w: make(chan map[string]interface{}, 10), err: err} +} + +func (o *testOutput) Write(fields map[string]interface{}) (err error) { + o.w <- fields + return o.err +} + +func (o *testOutput) reset() { + o.w = make(chan map[string]interface{}, 10) +} + +func (o *testOutput) empty() bool { + select { + case <-o.w: + return false + default: + return true + } +} + +func (o *testOutput) get() map[string]interface{} { + select { + case last := <-o.w: + return last + case <-time.After(2 * time.Second): + return nil + } +} + +func TestOutputChannel(t *testing.T) { + o := newTestOutput() + oc := NewOutputChannel(o) + defer oc.Close() + oc.input <- F{"foo": "bar"} + assert.Equal(t, F{"foo": "bar"}, F(o.get())) +} + +func TestOutputChannelError(t *testing.T) { + // Trigger error path + r, w := io.Pipe() + go func() { + critialLoggerMux.Lock() + defer critialLoggerMux.Unlock() + oldCritialLogger := critialLogger + critialLogger = log.New(w, "", 0) + o := newTestOutputErr(errors.New("some error")) + oc := NewOutputChannel(o) + oc.input <- F{"foo": "bar"} + o.get() + oc.Close() + critialLogger = oldCritialLogger + w.Close() + }() + b, err := ioutil.ReadAll(r) + assert.NoError(t, err) + assert.Contains(t, string(b), "cannot write log message: some error") +} + +func TestOutputChannelClose(t *testing.T) { + oc := NewOutputChannel(newTestOutput()) + defer oc.Close() + assert.NotNil(t, oc.stop) + oc.Close() + assert.Nil(t, oc.stop) + oc.Close() +} + +func TestDiscard(t *testing.T) { + assert.NoError(t, Discard.Write(F{})) +} + +func TestMultiOutput(t *testing.T) { + o1 := newTestOutput() + o2 := newTestOutput() + mo := MultiOutput{o1, o2} + err := mo.Write(F{"foo": "bar"}) + assert.NoError(t, err) + assert.Equal(t, F{"foo": "bar"}, F(<-o1.w)) + assert.Equal(t, F{"foo": "bar"}, F(<-o2.w)) +} + +func TestMultiOutputWithError(t *testing.T) { + o1 := newTestOutputErr(errors.New("some error")) + o2 := newTestOutput() + mo := MultiOutput{o1, o2} + err := mo.Write(F{"foo": "bar"}) + assert.EqualError(t, err, "some error") + // Still send data to all outputs + assert.Equal(t, F{"foo": "bar"}, F(<-o1.w)) + assert.Equal(t, F{"foo": "bar"}, F(<-o2.w)) +} + +func TestFilterOutput(t *testing.T) { + o := newTestOutput() + f := FilterOutput{ + Cond: func(fields map[string]interface{}) bool { + return fields["foo"] == "bar" + }, + Output: o, + } + err := f.Write(F{"foo": "bar"}) + assert.NoError(t, err) + assert.Equal(t, F{"foo": "bar"}, F(o.get())) + + o.reset() + err = f.Write(F{"foo": "baz"}) + assert.NoError(t, err) + assert.True(t, o.empty()) + + f.Output = nil + err = f.Write(F{"foo": "baz"}) + assert.NoError(t, err) +} + +func TestLevelOutput(t *testing.T) { + oInfo := newTestOutput() + oError := newTestOutput() + oFatal := newTestOutput() + oWarn := &testOutput{err: errors.New("some error")} + reset := func() { + oInfo.reset() + oError.reset() + oFatal.reset() + oWarn.reset() + } + l := LevelOutput{ + Info: oInfo, + Error: oError, + Fatal: oFatal, + Warn: oWarn, + } + + err := l.Write(F{"level": "fatal", "foo": "bar"}) + assert.NoError(t, err) + assert.True(t, oInfo.empty()) + assert.True(t, oError.empty()) + assert.Equal(t, F{"level": "fatal", "foo": "bar"}, F(<-oFatal.w)) + assert.True(t, oWarn.empty()) + + reset() + err = l.Write(F{"level": "error", "foo": "bar"}) + assert.NoError(t, err) + assert.True(t, oInfo.empty()) + assert.Equal(t, F{"level": "error", "foo": "bar"}, F(<-oError.w)) + assert.True(t, oFatal.empty()) + assert.True(t, oWarn.empty()) + + reset() + err = l.Write(F{"level": "info", "foo": "bar"}) + assert.NoError(t, err) + assert.Equal(t, F{"level": "info", "foo": "bar"}, F(<-oInfo.w)) + assert.True(t, oFatal.empty()) + assert.True(t, oError.empty()) + assert.True(t, oWarn.empty()) + + reset() + err = l.Write(F{"level": "warn", "foo": "bar"}) + assert.EqualError(t, err, "some error") + assert.True(t, oInfo.empty()) + assert.True(t, oError.empty()) + assert.True(t, oFatal.empty()) + assert.Equal(t, F{"level": "warn", "foo": "bar"}, F(<-oWarn.w)) + + reset() + err = l.Write(F{"level": "debug", "foo": "bar"}) + assert.NoError(t, err) + assert.True(t, oInfo.empty()) + assert.True(t, oError.empty()) + assert.True(t, oFatal.empty()) + assert.True(t, oWarn.empty()) + + reset() + err = l.Write(F{"foo": "bar"}) + assert.NoError(t, err) + assert.True(t, oInfo.empty()) + assert.True(t, oError.empty()) + assert.True(t, oFatal.empty()) + assert.True(t, oWarn.empty()) +} + +func TestSyslogOutput(t *testing.T) { + buf := bytes.NewBuffer(nil) + critialLoggerMux.Lock() + oldCritialLogger := critialLogger + critialLogger = log.New(buf, "", 0) + defer func() { + critialLogger = oldCritialLogger + critialLoggerMux.Unlock() + }() + m := NewSyslogOutput("udp", "127.0.0.1:1234", "mytag") + assert.IsType(t, LevelOutput{}, m) + assert.Panics(t, func() { + NewSyslogOutput("tcp", "an invalid host name", "mytag") + }) + assert.Regexp(t, "syslog dial error: dial tcp:.*missing port in address.*", buf.String()) +} + +func TestRecorderOutput(t *testing.T) { + o := RecorderOutput{} + o.Write(F{"foo": "bar"}) + o.Write(F{"bar": "baz"}) + assert.Equal(t, []F{{"foo": "bar"}, {"bar": "baz"}}, o.Messages) + o.Reset() + assert.Equal(t, []F{}, o.Messages) +} + +func TestNewConsoleOutput(t *testing.T) { + old := isTerminal + defer func() { isTerminal = old }() + isTerminal = func(w io.Writer) bool { return true } + c := NewConsoleOutput() + if assert.IsType(t, consoleOutput{}, c) { + assert.Equal(t, os.Stderr, c.(consoleOutput).w) + } + isTerminal = func(w io.Writer) bool { return false } + c = NewConsoleOutput() + if assert.IsType(t, logfmtOutput{}, c) { + assert.Equal(t, os.Stderr, c.(logfmtOutput).w) + } +} + +func TestNewConsoleOutputW(t *testing.T) { + b := bytes.NewBuffer([]byte{}) + c := NewConsoleOutputW(b, NewLogfmtOutput(b)) + assert.IsType(t, logfmtOutput{}, c) + old := isTerminal + defer func() { isTerminal = old }() + isTerminal = func(w io.Writer) bool { return true } + c = NewConsoleOutputW(b, NewLogfmtOutput(b)) + if assert.IsType(t, consoleOutput{}, c) { + assert.Equal(t, b, c.(consoleOutput).w) + } +} + +func TestConsoleOutput(t *testing.T) { + buf := &bytes.Buffer{} + c := consoleOutput{w: buf} + err := c.Write(F{"message": "some message", "level": "info", "time": time.Date(2000, 1, 2, 3, 4, 5, 0, time.UTC), "foo": "bar"}) + assert.NoError(t, err) + assert.Equal(t, "2000/01/02 03:04:05 \x1b[34mINFO\x1b[0m some message \x1b[32mfoo\x1b[0m=bar\n", buf.String()) + buf.Reset() + err = c.Write(F{"message": "some debug", "level": "debug"}) + assert.NoError(t, err) + assert.Equal(t, "\x1b[37mDEBU\x1b[0m some debug\n", buf.String()) + buf.Reset() + err = c.Write(F{"message": "some warning", "level": "warn"}) + assert.NoError(t, err) + assert.Equal(t, "\x1b[33mWARN\x1b[0m some warning\n", buf.String()) + buf.Reset() + err = c.Write(F{"message": "some error", "level": "error"}) + assert.NoError(t, err) + assert.Equal(t, "\x1b[31mERRO\x1b[0m some error\n", buf.String()) +} + +func TestLogfmtOutput(t *testing.T) { + buf := &bytes.Buffer{} + c := NewLogfmtOutput(buf) + err := c.Write(F{ + "time": time.Date(2000, 1, 2, 3, 4, 5, 0, time.UTC), + "message": "some message", + "level": "info", + "string": "foo", + "null": nil, + "quoted": "needs \" quotes", + "err": errors.New("error"), + "errq": errors.New("error with \" quote"), + }) + assert.NoError(t, err) + assert.Equal(t, "level=info message=\"some message\" time=\"2000-01-02 03:04:05 +0000 UTC\" err=error errq=\"error with \\\" quote\" null=null quoted=\"needs \\\" quotes\" string=foo\n", buf.String()) +} + +func TestJSONOutput(t *testing.T) { + buf := &bytes.Buffer{} + j := NewJSONOutput(buf) + err := j.Write(F{"message": "some message", "level": "info", "foo": "bar"}) + assert.NoError(t, err) + assert.Equal(t, "{\"foo\":\"bar\",\"level\":\"info\",\"message\":\"some message\"}\n", buf.String()) +} + +func TestLogstashOutput(t *testing.T) { + buf := &bytes.Buffer{} + o := NewLogstashOutput(buf) + err := o.Write(F{ + "message": "some message", + "level": "info", + "time": time.Date(2000, 1, 2, 3, 4, 5, 0, time.UTC), + "file": "test.go:234", + "foo": "bar", + }) + assert.NoError(t, err) + assert.Equal(t, "{\"@timestamp\":\"2000-01-02T03:04:05Z\",\"@version\":1,\"file\":\"test.go:234\",\"foo\":\"bar\",\"level\":\"INFO\",\"message\":\"some message\"}", buf.String()) +} + +func TestUIDOutput(t *testing.T) { + o := newTestOutput() + i := NewUIDOutput("id", o) + err := i.Write(F{"message": "some message", "level": "info", "foo": "bar"}) + last := o.get() + assert.NoError(t, err) + assert.NotNil(t, last["id"]) + assert.Len(t, last["id"], 20) +} + +func TestTrimOutput(t *testing.T) { + o := newTestOutput() + i := NewTrimOutput(10, o) + err := i.Write(F{"short": "short", "long": "too long message", "number": 20}) + last := o.get() + assert.NoError(t, err) + assert.Equal(t, "short", last["short"]) + assert.Equal(t, "too long m", last["long"]) + assert.Equal(t, 20, last["number"]) +} + +func TestTrimFieldsOutput(t *testing.T) { + o := newTestOutput() + i := NewTrimFieldsOutput([]string{"short", "trim", "number"}, 10, o) + err := i.Write(F{"short": "short", "long": "too long message", "trim": "too long message", "number": 20}) + last := o.get() + assert.NoError(t, err) + assert.Equal(t, "short", last["short"]) + assert.Equal(t, "too long m", last["trim"]) + assert.Equal(t, "too long message", last["long"]) + assert.Equal(t, 20, last["number"]) +} diff --git a/vendor/github.com/rs/xlog/screenshot.png b/vendor/github.com/rs/xlog/screenshot.png new file mode 100644 index 0000000..3bbbddd Binary files /dev/null and b/vendor/github.com/rs/xlog/screenshot.png differ diff --git a/vendor/github.com/rs/xlog/std.go b/vendor/github.com/rs/xlog/std.go new file mode 100644 index 0000000..623177e --- /dev/null +++ b/vendor/github.com/rs/xlog/std.go @@ -0,0 +1,104 @@ +package xlog + +import "fmt" + +var std = New(Config{ + Output: NewConsoleOutput(), +}) + +// SetLogger changes the global logger instance +func SetLogger(logger Logger) { + std = logger +} + +// Debug calls the Debug() method on the default logger +func Debug(v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelDebug, 2, fmt.Sprint(v...), f) +} + +// Debugf calls the Debugf() method on the default logger +func Debugf(format string, v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelDebug, 2, fmt.Sprintf(format, v...), f) +} + +// Info calls the Info() method on the default logger +func Info(v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelInfo, 2, fmt.Sprint(v...), f) +} + +// Infof calls the Infof() method on the default logger +func Infof(format string, v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelInfo, 2, fmt.Sprintf(format, v...), f) +} + +// Warn calls the Warn() method on the default logger +func Warn(v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelWarn, 2, fmt.Sprint(v...), f) +} + +// Warnf calls the Warnf() method on the default logger +func Warnf(format string, v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelWarn, 2, fmt.Sprintf(format, v...), f) +} + +// Error calls the Error() method on the default logger +func Error(v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelError, 2, fmt.Sprint(v...), f) +} + +// Errorf calls the Errorf() method on the default logger +// +// Go vet users: you may append %v at the end of you format when using xlog.F{} as a last +// argument to workaround go vet false alarm. +func Errorf(format string, v ...interface{}) { + f := extractFields(&v) + if f != nil { + // Let user add a %v at the end of the message when fields are passed to satisfy go vet + l := len(format) + if l > 2 && format[l-2] == '%' && format[l-1] == 'v' { + format = format[0 : l-2] + } + } + std.OutputF(LevelError, 2, fmt.Sprintf(format, v...), f) +} + +// Fatal calls the Fatal() method on the default logger +func Fatal(v ...interface{}) { + f := extractFields(&v) + std.OutputF(LevelFatal, 2, fmt.Sprint(v...), f) + if l, ok := std.(*logger); ok { + if o, ok := l.output.(*OutputChannel); ok { + o.Close() + } + } + exit1() +} + +// Fatalf calls the Fatalf() method on the default logger +// +// Go vet users: you may append %v at the end of you format when using xlog.F{} as a last +// argument to workaround go vet false alarm. +func Fatalf(format string, v ...interface{}) { + f := extractFields(&v) + if f != nil { + // Let user add a %v at the end of the message when fields are passed to satisfy go vet + l := len(format) + if l > 2 && format[l-2] == '%' && format[l-1] == 'v' { + format = format[0 : l-2] + } + } + std.OutputF(LevelFatal, 2, fmt.Sprintf(format, v...), f) + if l, ok := std.(*logger); ok { + if o, ok := l.output.(*OutputChannel); ok { + o.Close() + } + } + exit1() +} diff --git a/vendor/github.com/rs/xlog/std_example_test.go b/vendor/github.com/rs/xlog/std_example_test.go new file mode 100644 index 0000000..784aebc --- /dev/null +++ b/vendor/github.com/rs/xlog/std_example_test.go @@ -0,0 +1,13 @@ +package xlog_test + +import "github.com/rs/xlog" + +func ExampleSetLogger() { + xlog.SetLogger(xlog.New(xlog.Config{ + Level: xlog.LevelInfo, + Output: xlog.NewConsoleOutput(), + Fields: xlog.F{ + "role": "my-service", + }, + })) +} diff --git a/vendor/github.com/rs/xlog/std_test.go b/vendor/github.com/rs/xlog/std_test.go new file mode 100644 index 0000000..90759a7 --- /dev/null +++ b/vendor/github.com/rs/xlog/std_test.go @@ -0,0 +1,125 @@ +package xlog + +import ( + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestGlobalLogger(t *testing.T) { + o := newTestOutput() + oldStd := std + defer func() { std = oldStd }() + SetLogger(New(Config{Output: o})) + Debug("test") + last := o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "debug", last["level"]) + o.reset() + Debugf("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "debug", last["level"]) + o.reset() + Info("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "info", last["level"]) + o.reset() + Infof("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "info", last["level"]) + o.reset() + Warn("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "warn", last["level"]) + o.reset() + Warnf("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "warn", last["level"]) + o.reset() + Error("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "error", last["level"]) + o.reset() + Errorf("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "error", last["level"]) + o.reset() + oldExit := exit1 + exit1 = func() {} + defer func() { exit1 = oldExit }() + Fatal("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "fatal", last["level"]) + o.reset() + Fatalf("test") + last = o.get() + assert.Equal(t, "test", last["message"]) + assert.Equal(t, "fatal", last["level"]) + o.reset() +} + +func TestStdError(t *testing.T) { + o := newTestOutput() + oldStd := std + defer func() { std = oldStd }() + SetLogger(New(Config{Output: o})) + Error("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "std_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "error", "message": "test", "foo": "bar"}, last) +} + +func TestStdErrorf(t *testing.T) { + o := newTestOutput() + oldStd := std + defer func() { std = oldStd }() + SetLogger(New(Config{Output: o})) + Errorf("test %d%v", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "std_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "error", "message": "test 1", "foo": "bar"}, last) +} + +func TestStdFatal(t *testing.T) { + e := exit1 + exited := 0 + exit1 = func() { exited++ } + defer func() { exit1 = e }() + o := newTestOutput() + oldStd := std + defer func() { std = oldStd }() + SetLogger(New(Config{Output: o})) + Fatal("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "std_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "fatal", "message": "test", "foo": "bar"}, last) + assert.Equal(t, 1, exited) +} + +func TestStdFatalf(t *testing.T) { + e := exit1 + exited := 0 + exit1 = func() { exited++ } + defer func() { exit1 = e }() + o := newTestOutput() + oldStd := std + defer func() { std = oldStd }() + SetLogger(New(Config{Output: o})) + Fatalf("test %d%v", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "std_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "fatal", "message": "test 1", "foo": "bar"}, last) + assert.Equal(t, 1, exited) +} diff --git a/vendor/github.com/rs/xlog/util.go b/vendor/github.com/rs/xlog/util.go new file mode 100644 index 0000000..4382be1 --- /dev/null +++ b/vendor/github.com/rs/xlog/util.go @@ -0,0 +1,53 @@ +package xlog + +import ( + "encoding/json" + "fmt" + "io" + "strings" +) + +type color int + +const ( + red color = 31 + green color = 32 + yellow color = 33 + blue color = 34 + gray color = 37 +) + +func colorPrint(w io.Writer, s string, c color) { + w.Write([]byte{0x1b, '[', byte('0' + c/10), byte('0' + c%10), 'm'}) + w.Write([]byte(s)) + w.Write([]byte("\x1b[0m")) +} + +func needsQuotedValueRune(r rune) bool { + return r <= ' ' || r == '=' || r == '"' +} + +// writeValue writes a value on the writer in a logfmt compatible way +func writeValue(w io.Writer, v interface{}) (err error) { + switch v := v.(type) { + case nil: + _, err = w.Write([]byte("null")) + case string: + if strings.IndexFunc(v, needsQuotedValueRune) != -1 { + var b []byte + b, err = json.Marshal(v) + if err == nil { + w.Write(b) + } + } else { + _, err = w.Write([]byte(v)) + } + case error: + s := v.Error() + err = writeValue(w, s) + default: + s := fmt.Sprint(v) + err = writeValue(w, s) + } + return +} diff --git a/vendor/github.com/rs/xlog/util_test.go b/vendor/github.com/rs/xlog/util_test.go new file mode 100644 index 0000000..2e4d3fe --- /dev/null +++ b/vendor/github.com/rs/xlog/util_test.go @@ -0,0 +1,56 @@ +package xlog + +import ( + "bytes" + "errors" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func TestColorPrint(t *testing.T) { + buf := &bytes.Buffer{} + colorPrint(buf, "test", red) + assert.Equal(t, "\x1b[31mtest\x1b[0m", buf.String()) + buf.Reset() + colorPrint(buf, "test", green) + assert.Equal(t, "\x1b[32mtest\x1b[0m", buf.String()) + buf.Reset() + colorPrint(buf, "test", yellow) + assert.Equal(t, "\x1b[33mtest\x1b[0m", buf.String()) + buf.Reset() + colorPrint(buf, "test", blue) + assert.Equal(t, "\x1b[34mtest\x1b[0m", buf.String()) + buf.Reset() + colorPrint(buf, "test", gray) + assert.Equal(t, "\x1b[37mtest\x1b[0m", buf.String()) +} + +func TestNeedsQuotedValueRune(t *testing.T) { + assert.True(t, needsQuotedValueRune('=')) + assert.True(t, needsQuotedValueRune('"')) + assert.True(t, needsQuotedValueRune(' ')) + assert.False(t, needsQuotedValueRune('a')) + assert.False(t, needsQuotedValueRune('\'')) +} + +func TestWriteValue(t *testing.T) { + buf := &bytes.Buffer{} + write := func(v interface{}) string { + buf.Reset() + err := writeValue(buf, v) + if err == nil { + return buf.String() + } + return "" + } + assert.Equal(t, `foobar`, write(`foobar`)) + assert.Equal(t, `"foo=bar"`, write(`foo=bar`)) + assert.Equal(t, `"foo bar"`, write(`foo bar`)) + assert.Equal(t, `"foo\"bar"`, write(`foo"bar`)) + assert.Equal(t, `"foo\nbar"`, write("foo\nbar")) + assert.Equal(t, `null`, write(nil)) + assert.Equal(t, `"2000-01-02 03:04:05 +0000 UTC"`, write(time.Date(2000, 1, 2, 3, 4, 5, 0, time.UTC))) + assert.Equal(t, `"error \"with quote\""`, write(errors.New(`error "with quote"`))) +} diff --git a/vendor/github.com/rs/xlog/xlog.go b/vendor/github.com/rs/xlog/xlog.go new file mode 100644 index 0000000..ba7cee4 --- /dev/null +++ b/vendor/github.com/rs/xlog/xlog.go @@ -0,0 +1,349 @@ +// Package xlog is a logger coupled with HTTP net/context aware middleware. +// +// Unlike most loggers, xlog will never block your application because one its +// outputs is lagging. The log commands are connected to their outputs through +// a buffered channel and will prefer to discard messages if the buffer get full. +// All message formatting, serialization and transport happen in a dedicated go +// routine. +// +// Features: +// +// - Per request log context +// - Per request and/or per message key/value fields +// - Log levels (Debug, Info, Warn, Error) +// - Color output when terminal is detected +// - Custom output (JSON, logfmt, …) +// - Automatic gathering of request context like User-Agent, IP etc. +// - Drops message rather than blocking execution +// - Easy access logging thru github.com/rs/xaccess +// +// It works best in combination with github.com/rs/xhandler. +package xlog // import "github.com/rs/xlog" + +import ( + "fmt" + "io" + "log" + "os" + "path" + "runtime" + "strconv" + "strings" + "sync" + "time" +) + +// Logger defines the interface for a xlog compatible logger +type Logger interface { + // Implements io.Writer so it can be set a output of log.Logger + io.Writer + + // SetField sets a field on the logger's context. All future messages on this logger + // will have this field set. + SetField(name string, value interface{}) + // GetFields returns all the fields set on the logger + GetFields() F + // Debug logs a debug message. If last parameter is a map[string]string, it's content + // is added as fields to the message. + Debug(v ...interface{}) + // Debug logs a debug message with format. If last parameter is a map[string]string, + // it's content is added as fields to the message. + Debugf(format string, v ...interface{}) + // Info logs a info message. If last parameter is a map[string]string, it's content + // is added as fields to the message. + Info(v ...interface{}) + // Info logs a info message with format. If last parameter is a map[string]string, + // it's content is added as fields to the message. + Infof(format string, v ...interface{}) + // Warn logs a warning message. If last parameter is a map[string]string, it's content + // is added as fields to the message. + Warn(v ...interface{}) + // Warn logs a warning message with format. If last parameter is a map[string]string, + // it's content is added as fields to the message. + Warnf(format string, v ...interface{}) + // Error logs an error message. If last parameter is a map[string]string, it's content + // is added as fields to the message. + Error(v ...interface{}) + // Error logs an error message with format. If last parameter is a map[string]string, + // it's content is added as fields to the message. + Errorf(format string, v ...interface{}) + // Fatal logs an error message followed by a call to os.Exit(1). If last parameter is a + // map[string]string, it's content is added as fields to the message. + Fatal(v ...interface{}) + // Fatalf logs an error message with format followed by a call to ox.Exit(1). If last + // parameter is a map[string]string, it's content is added as fields to the message. + Fatalf(format string, v ...interface{}) + // Output mimics std logger interface + Output(calldepth int, s string) error + // OutputF outputs message with fields. + OutputF(level Level, calldepth int, msg string, fields map[string]interface{}) +} + +// LoggerCopier defines a logger with copy support +type LoggerCopier interface { + // Copy returns a copy of the logger + Copy() Logger +} + +// Config defines logger's configuration +type Config struct { + // Level is the maximum level to output, logs with lower level are discarded. + Level Level + // Fields defines default fields to use with all messages. + Fields map[string]interface{} + // Output to use to write log messages to. + // + // You should always wrap your output with an OutputChannel otherwise your + // logger will be connected to its output synchronously. + Output Output + // DisablePooling removes the use of a sync.Pool for cases where logger + // instances are needed beyond the scope of a request handler. This option + // puts a greater pressure on GC and increases the amount of memory allocated + // and freed. Use only if persistent loggers are a requirement. + DisablePooling bool +} + +// F represents a set of log message fields +type F map[string]interface{} + +type logger struct { + level Level + output Output + fields F + disablePooling bool +} + +// Common field names for log messages. +const ( + KeyTime = "time" + KeyMessage = "message" + KeyLevel = "level" + KeyFile = "file" +) + +var now = time.Now +var exit1 = func() { os.Exit(1) } + +// critialLogger is a logger to use when xlog is not able to deliver a message +var critialLogger = log.New(os.Stderr, "xlog: ", log.Ldate|log.Ltime|log.LUTC|log.Lshortfile) + +var loggerPool = &sync.Pool{ + New: func() interface{} { + return &logger{} + }, +} + +// New manually creates a logger. +// +// This function should only be used out of a request. Use FromContext in request. +func New(c Config) Logger { + var l *logger + if c.DisablePooling { + l = &logger{} + } else { + l = loggerPool.Get().(*logger) + } + l.level = c.Level + l.output = c.Output + if l.output == nil { + l.output = NewOutputChannel(NewConsoleOutput()) + } + for k, v := range c.Fields { + l.SetField(k, v) + } + l.disablePooling = c.DisablePooling + return l +} + +// Copy returns a copy of the passed logger if the logger implements +// LoggerCopier or the NopLogger otherwise. +func Copy(l Logger) Logger { + if l, ok := l.(LoggerCopier); ok { + return l.Copy() + } + return NopLogger +} + +// Copy returns a copy of the logger +func (l *logger) Copy() Logger { + l2 := &logger{ + level: l.level, + output: l.output, + fields: map[string]interface{}{}, + disablePooling: l.disablePooling, + } + for k, v := range l.fields { + l2.fields[k] = v + } + return l2 +} + +// close returns the logger to the pool for reuse +func (l *logger) close() { + if !l.disablePooling { + l.level = 0 + l.output = nil + l.fields = nil + loggerPool.Put(l) + } +} + +func (l *logger) send(level Level, calldepth int, msg string, fields map[string]interface{}) { + if level < l.level || l.output == nil { + return + } + data := make(map[string]interface{}, 4+len(fields)+len(l.fields)) + data[KeyTime] = now() + data[KeyLevel] = level.String() + data[KeyMessage] = msg + if _, file, line, ok := runtime.Caller(calldepth); ok { + data[KeyFile] = path.Base(file) + ":" + strconv.FormatInt(int64(line), 10) + } + for k, v := range fields { + data[k] = v + } + if l.fields != nil { + for k, v := range l.fields { + data[k] = v + } + } + if err := l.output.Write(data); err != nil { + critialLogger.Print("send error: ", err.Error()) + } +} + +func extractFields(v *[]interface{}) map[string]interface{} { + if l := len(*v); l > 0 { + if f, ok := (*v)[l-1].(map[string]interface{}); ok { + *v = (*v)[:l-1] + return f + } + if f, ok := (*v)[l-1].(F); ok { + *v = (*v)[:l-1] + return f + } + } + return nil +} + +// SetField implements Logger interface +func (l *logger) SetField(name string, value interface{}) { + if l.fields == nil { + l.fields = map[string]interface{}{} + } + l.fields[name] = value +} + +// GetFields implements Logger interface +func (l *logger) GetFields() F { + return l.fields +} + +// Output implements Logger interface +func (l *logger) OutputF(level Level, calldepth int, msg string, fields map[string]interface{}) { + l.send(level, calldepth+1, msg, fields) +} + +// Debug implements Logger interface +func (l *logger) Debug(v ...interface{}) { + f := extractFields(&v) + l.send(LevelDebug, 2, fmt.Sprint(v...), f) +} + +// Debugf implements Logger interface +func (l *logger) Debugf(format string, v ...interface{}) { + f := extractFields(&v) + l.send(LevelDebug, 2, fmt.Sprintf(format, v...), f) +} + +// Info implements Logger interface +func (l *logger) Info(v ...interface{}) { + f := extractFields(&v) + l.send(LevelInfo, 2, fmt.Sprint(v...), f) +} + +// Infof implements Logger interface +func (l *logger) Infof(format string, v ...interface{}) { + f := extractFields(&v) + l.send(LevelInfo, 2, fmt.Sprintf(format, v...), f) +} + +// Warn implements Logger interface +func (l *logger) Warn(v ...interface{}) { + f := extractFields(&v) + l.send(LevelWarn, 2, fmt.Sprint(v...), f) +} + +// Warnf implements Logger interface +func (l *logger) Warnf(format string, v ...interface{}) { + f := extractFields(&v) + l.send(LevelWarn, 2, fmt.Sprintf(format, v...), f) +} + +// Error implements Logger interface +func (l *logger) Error(v ...interface{}) { + f := extractFields(&v) + l.send(LevelError, 2, fmt.Sprint(v...), f) +} + +// Errorf implements Logger interface +// +// Go vet users: you may append %v at the end of you format when using xlog.F{} as a last +// argument to workaround go vet false alarm. +func (l *logger) Errorf(format string, v ...interface{}) { + f := extractFields(&v) + if f != nil { + // Let user add a %v at the end of the message when fields are passed to satisfy go vet + l := len(format) + if l > 2 && format[l-2] == '%' && format[l-1] == 'v' { + format = format[0 : l-2] + } + } + l.send(LevelError, 2, fmt.Sprintf(format, v...), f) +} + +// Fatal implements Logger interface +func (l *logger) Fatal(v ...interface{}) { + f := extractFields(&v) + l.send(LevelFatal, 2, fmt.Sprint(v...), f) + if o, ok := l.output.(*OutputChannel); ok { + o.Close() + } + exit1() +} + +// Fatalf implements Logger interface +// +// Go vet users: you may append %v at the end of you format when using xlog.F{} as a last +// argument to workaround go vet false alarm. +func (l *logger) Fatalf(format string, v ...interface{}) { + f := extractFields(&v) + if f != nil { + // Let user add a %v at the end of the message when fields are passed to satisfy go vet + l := len(format) + if l > 2 && format[l-2] == '%' && format[l-1] == 'v' { + format = format[0 : l-2] + } + } + l.send(LevelFatal, 2, fmt.Sprintf(format, v...), f) + if o, ok := l.output.(*OutputChannel); ok { + o.Close() + } + exit1() +} + +// Write implements io.Writer interface +func (l *logger) Write(p []byte) (int, error) { + msg := strings.TrimRight(string(p), "\n") + l.send(LevelInfo, 4, msg, nil) + if o, ok := l.output.(*OutputChannel); ok { + o.Flush() + } + return len(p), nil +} + +// Output implements common logger interface +func (l *logger) Output(calldepth int, s string) error { + l.send(LevelInfo, 2, s, nil) + return nil +} diff --git a/vendor/github.com/rs/xlog/xlog_bench_test.go b/vendor/github.com/rs/xlog/xlog_bench_test.go new file mode 100644 index 0000000..cbc13d4 --- /dev/null +++ b/vendor/github.com/rs/xlog/xlog_bench_test.go @@ -0,0 +1,12 @@ +package xlog + +import "testing" + +func BenchmarkSend(b *testing.B) { + l := New(Config{Output: Discard, Fields: F{"a": "b"}}).(*logger) + b.ResetTimer() + b.ReportAllocs() + for i := 0; i < b.N; i++ { + l.send(0, 0, "test", F{"foo": "bar", "bar": "baz"}) + } +} diff --git a/vendor/github.com/rs/xlog/xlog_examples_test.go b/vendor/github.com/rs/xlog/xlog_examples_test.go new file mode 100644 index 0000000..3f59445 --- /dev/null +++ b/vendor/github.com/rs/xlog/xlog_examples_test.go @@ -0,0 +1,41 @@ +// +build go1.7 + +package xlog_test + +import ( + "context" + "errors" + "log" + + "github.com/rs/xlog" +) + +func Example_log() { + ctx := context.TODO() + l := xlog.FromContext(ctx) + + // Log a simple message + l.Debug("message") + + if err := errors.New("some error"); err != nil { + l.Errorf("Some error happened: %v", err) + } + + // With optional fields + l.Debugf("foo %s", "bar", xlog.F{ + "field": "value", + }) +} + +func Example_stdlog() { + // Define logger conf + conf := xlog.Config{ + Output: xlog.NewConsoleOutput(), + } + + // Remove timestamp and other decorations of the std logger + log.SetFlags(0) + + // Plug a xlog instance to Go's std logger + log.SetOutput(xlog.New(conf)) +} diff --git a/vendor/github.com/rs/xlog/xlog_test.go b/vendor/github.com/rs/xlog/xlog_test.go new file mode 100644 index 0000000..a42357b --- /dev/null +++ b/vendor/github.com/rs/xlog/xlog_test.go @@ -0,0 +1,322 @@ +package xlog + +import ( + "io" + "io/ioutil" + "log" + "sync" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +var fakeNow = time.Date(0, 0, 0, 0, 0, 0, 0, time.Local) +var critialLoggerMux = sync.Mutex{} + +func init() { + now = func() time.Time { + return fakeNow + } +} + +func TestNew(t *testing.T) { + oc := NewOutputChannel(newTestOutput()) + defer oc.Close() + c := Config{ + Level: LevelError, + Output: oc, + Fields: F{"foo": "bar"}, + } + L := New(c) + l, ok := L.(*logger) + if assert.True(t, ok) { + assert.Equal(t, LevelError, l.level) + assert.Equal(t, c.Output, l.output) + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + // Ensure l.fields is a clone + c.Fields["bar"] = "baz" + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + assert.Equal(t, false, l.disablePooling) + l.close() + } +} + +func TestNewPoolDisabled(t *testing.T) { + oc := NewOutputChannel(newTestOutput()) + defer oc.Close() + originalPool := loggerPool + defer func(p *sync.Pool) { + loggerPool = originalPool + }(originalPool) + loggerPool = &sync.Pool{ + New: func() interface{} { + assert.Fail(t, "pool used when disabled") + return nil + }, + } + c := Config{ + Level: LevelError, + Output: oc, + Fields: F{"foo": "bar"}, + DisablePooling: true, + } + L := New(c) + l, ok := L.(*logger) + if assert.True(t, ok) { + assert.Equal(t, LevelError, l.level) + assert.Equal(t, c.Output, l.output) + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + // Ensure l.fields is a clone + c.Fields["bar"] = "baz" + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + assert.Equal(t, true, l.disablePooling) + l.close() + // Assert again to ensure close does not remove internal state + assert.Equal(t, LevelError, l.level) + assert.Equal(t, c.Output, l.output) + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + // Ensure l.fields is a clone + c.Fields["bar"] = "baz" + assert.Equal(t, F{"foo": "bar"}, F(l.fields)) + assert.Equal(t, true, l.disablePooling) + } +} + +func TestCopy(t *testing.T) { + oc := NewOutputChannel(newTestOutput()) + defer oc.Close() + c := Config{ + Level: LevelError, + Output: oc, + Fields: F{"foo": "bar"}, + } + l := New(c).(*logger) + l2 := Copy(l).(*logger) + assert.Equal(t, l.output, l2.output) + assert.Equal(t, l.level, l2.level) + assert.Equal(t, l.fields, l2.fields) + l2.SetField("bar", "baz") + assert.Equal(t, F{"foo": "bar"}, l.fields) + assert.Equal(t, F{"foo": "bar", "bar": "baz"}, l2.fields) + + assert.Equal(t, NopLogger, Copy(NopLogger)) + assert.Equal(t, NopLogger, Copy(nil)) +} + +func TestNewDefautOutput(t *testing.T) { + L := New(Config{}) + l, ok := L.(*logger) + if assert.True(t, ok) { + assert.NotNil(t, l.output) + l.close() + } +} + +func TestSend(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.send(LevelDebug, 1, "test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "debug", "message": "test", "foo": "bar"}, last) + + l.SetField("bar", "baz") + l.send(LevelInfo, 1, "test", F{"foo": "bar"}) + last = <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "info", "message": "test", "foo": "bar", "bar": "baz"}, last) + + l = New(Config{Output: o, Level: 1}).(*logger) + o.reset() + l.send(0, 2, "test", F{"foo": "bar"}) + assert.True(t, o.empty()) +} + +func TestSendDrop(t *testing.T) { + t.Skip() + r, w := io.Pipe() + go func() { + critialLoggerMux.Lock() + defer critialLoggerMux.Unlock() + oldCritialLogger := critialLogger + critialLogger = log.New(w, "", 0) + o := newTestOutput() + oc := NewOutputChannelBuffer(Discard, 1) + l := New(Config{Output: oc}).(*logger) + l.send(LevelDebug, 2, "test", F{"foo": "bar"}) + l.send(LevelDebug, 2, "test", F{"foo": "bar"}) + l.send(LevelDebug, 2, "test", F{"foo": "bar"}) + o.get() + o.get() + o.get() + oc.Close() + critialLogger = oldCritialLogger + w.Close() + }() + b, err := ioutil.ReadAll(r) + assert.NoError(t, err) + assert.Contains(t, string(b), "send error: buffer full") +} + +func TestExtractFields(t *testing.T) { + v := []interface{}{"a", 1, map[string]interface{}{"foo": "bar"}} + f := extractFields(&v) + assert.Equal(t, map[string]interface{}{"foo": "bar"}, f) + assert.Equal(t, []interface{}{"a", 1}, v) + + v = []interface{}{map[string]interface{}{"foo": "bar"}, "a", 1} + f = extractFields(&v) + assert.Nil(t, f) + assert.Equal(t, []interface{}{map[string]interface{}{"foo": "bar"}, "a", 1}, v) + + v = []interface{}{"a", 1, F{"foo": "bar"}} + f = extractFields(&v) + assert.Equal(t, map[string]interface{}{"foo": "bar"}, f) + assert.Equal(t, []interface{}{"a", 1}, v) + + v = []interface{}{} + f = extractFields(&v) + assert.Nil(t, f) + assert.Equal(t, []interface{}{}, v) +} + +func TestGetFields(t *testing.T) { + oc := NewOutputChannelBuffer(Discard, 1) + l := New(Config{Output: oc}).(*logger) + l.SetField("k", "v") + assert.Equal(t, F{"k": "v"}, l.GetFields()) +} + +func TestDebug(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Debug("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "debug", "message": "test", "foo": "bar"}, last) +} + +func TestDebugf(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Debugf("test %d", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "debug", "message": "test 1", "foo": "bar"}, last) +} + +func TestInfo(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Info("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "info", "message": "test", "foo": "bar"}, last) +} + +func TestInfof(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Infof("test %d", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "info", "message": "test 1", "foo": "bar"}, last) +} + +func TestWarn(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Warn("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "warn", "message": "test", "foo": "bar"}, last) +} + +func TestWarnf(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Warnf("test %d", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "warn", "message": "test 1", "foo": "bar"}, last) +} + +func TestError(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Error("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "error", "message": "test", "foo": "bar"}, last) +} + +func TestErrorf(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Errorf("test %d%v", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "error", "message": "test 1", "foo": "bar"}, last) +} + +func TestFatal(t *testing.T) { + e := exit1 + exited := 0 + exit1 = func() { exited++ } + defer func() { exit1 = e }() + o := newTestOutput() + l := New(Config{Output: NewOutputChannel(o)}).(*logger) + l.Fatal("test", F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "fatal", "message": "test", "foo": "bar"}, last) + assert.Equal(t, 1, exited) +} + +func TestFatalf(t *testing.T) { + e := exit1 + exited := 0 + exit1 = func() { exited++ } + defer func() { exit1 = e }() + o := newTestOutput() + l := New(Config{Output: NewOutputChannel(o)}).(*logger) + l.Fatalf("test %d%v", 1, F{"foo": "bar"}) + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "fatal", "message": "test 1", "foo": "bar"}, last) + assert.Equal(t, 1, exited) +} + +func TestWrite(t *testing.T) { + o := newTestOutput() + xl := New(Config{Output: NewOutputChannel(o)}).(*logger) + l := log.New(xl, "prefix ", 0) + l.Printf("test") + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "info", "message": "prefix test"}, last) +} + +func TestOutput(t *testing.T) { + o := newTestOutput() + l := New(Config{Output: o}).(*logger) + l.Output(2, "test") + last := <-o.w + assert.Contains(t, last["file"], "log_test.go:") + delete(last, "file") + assert.Equal(t, map[string]interface{}{"time": fakeNow, "level": "info", "message": "test"}, last) +} diff --git a/vendor/github.com/sirupsen/logrus/.gitignore b/vendor/github.com/sirupsen/logrus/.gitignore new file mode 100644 index 0000000..66be63a --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/.gitignore @@ -0,0 +1 @@ +logrus diff --git a/vendor/github.com/sirupsen/logrus/.travis.yml b/vendor/github.com/sirupsen/logrus/.travis.yml new file mode 100644 index 0000000..a23296a --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/.travis.yml @@ -0,0 +1,15 @@ +language: go +go: + - 1.6.x + - 1.7.x + - 1.8.x + - tip +env: + - GOMAXPROCS=4 GORACE=halt_on_error=1 +install: + - go get github.com/stretchr/testify/assert + - go get gopkg.in/gemnasium/logrus-airbrake-hook.v2 + - go get golang.org/x/sys/unix + - go get golang.org/x/sys/windows +script: + - go test -race -v ./... diff --git a/vendor/github.com/sirupsen/logrus/CHANGELOG.md b/vendor/github.com/sirupsen/logrus/CHANGELOG.md new file mode 100644 index 0000000..8236d8b --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/CHANGELOG.md @@ -0,0 +1,113 @@ +# 1.0.3 + +* Replace example files with testable examples + +# 1.0.2 + +* bug: quote non-string values in text formatter (#583) +* Make (*Logger) SetLevel a public method + +# 1.0.1 + +* bug: fix escaping in text formatter (#575) + +# 1.0.0 + +* Officially changed name to lower-case +* bug: colors on Windows 10 (#541) +* bug: fix race in accessing level (#512) + +# 0.11.5 + +* feature: add writer and writerlevel to entry (#372) + +# 0.11.4 + +* bug: fix undefined variable on solaris (#493) + +# 0.11.3 + +* formatter: configure quoting of empty values (#484) +* formatter: configure quoting character (default is `"`) (#484) +* bug: fix not importing io correctly in non-linux environments (#481) + +# 0.11.2 + +* bug: fix windows terminal detection (#476) + +# 0.11.1 + +* bug: fix tty detection with custom out (#471) + +# 0.11.0 + +* performance: Use bufferpool to allocate (#370) +* terminal: terminal detection for app-engine (#343) +* feature: exit handler (#375) + +# 0.10.0 + +* feature: Add a test hook (#180) +* feature: `ParseLevel` is now case-insensitive (#326) +* feature: `FieldLogger` interface that generalizes `Logger` and `Entry` (#308) +* performance: avoid re-allocations on `WithFields` (#335) + +# 0.9.0 + +* logrus/text_formatter: don't emit empty msg +* logrus/hooks/airbrake: move out of main repository +* logrus/hooks/sentry: move out of main repository +* logrus/hooks/papertrail: move out of main repository +* logrus/hooks/bugsnag: move out of main repository +* logrus/core: run tests with `-race` +* logrus/core: detect TTY based on `stderr` +* logrus/core: support `WithError` on logger +* logrus/core: Solaris support + +# 0.8.7 + +* logrus/core: fix possible race (#216) +* logrus/doc: small typo fixes and doc improvements + + +# 0.8.6 + +* hooks/raven: allow passing an initialized client + +# 0.8.5 + +* logrus/core: revert #208 + +# 0.8.4 + +* formatter/text: fix data race (#218) + +# 0.8.3 + +* logrus/core: fix entry log level (#208) +* logrus/core: improve performance of text formatter by 40% +* logrus/core: expose `LevelHooks` type +* logrus/core: add support for DragonflyBSD and NetBSD +* formatter/text: print structs more verbosely + +# 0.8.2 + +* logrus: fix more Fatal family functions + +# 0.8.1 + +* logrus: fix not exiting on `Fatalf` and `Fatalln` + +# 0.8.0 + +* logrus: defaults to stderr instead of stdout +* hooks/sentry: add special field for `*http.Request` +* formatter/text: ignore Windows for colors + +# 0.7.3 + +* formatter/\*: allow configuration of timestamp layout + +# 0.7.2 + +* formatter/text: Add configuration option for time format (#158) diff --git a/vendor/github.com/sirupsen/logrus/LICENSE b/vendor/github.com/sirupsen/logrus/LICENSE new file mode 100644 index 0000000..f090cb4 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Simon Eskildsen + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/vendor/github.com/sirupsen/logrus/README.md b/vendor/github.com/sirupsen/logrus/README.md new file mode 100644 index 0000000..5f656c3 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/README.md @@ -0,0 +1,507 @@ +# Logrus :walrus: [![Build Status](https://travis-ci.org/sirupsen/logrus.svg?branch=master)](https://travis-ci.org/sirupsen/logrus) [![GoDoc](https://godoc.org/github.com/sirupsen/logrus?status.svg)](https://godoc.org/github.com/sirupsen/logrus) + +Logrus is a structured logger for Go (golang), completely API compatible with +the standard library logger. + +**Seeing weird case-sensitive problems?** It's in the past been possible to +import Logrus as both upper- and lower-case. Due to the Go package environment, +this caused issues in the community and we needed a standard. Some environments +experienced problems with the upper-case variant, so the lower-case was decided. +Everything using `logrus` will need to use the lower-case: +`github.com/sirupsen/logrus`. Any package that isn't, should be changed. + +To fix Glide, see [these +comments](https://github.com/sirupsen/logrus/issues/553#issuecomment-306591437). +For an in-depth explanation of the casing issue, see [this +comment](https://github.com/sirupsen/logrus/issues/570#issuecomment-313933276). + +**Are you interested in assisting in maintaining Logrus?** Currently I have a +lot of obligations, and I am unable to provide Logrus with the maintainership it +needs. If you'd like to help, please reach out to me at `simon at author's +username dot com`. + +Nicely color-coded in development (when a TTY is attached, otherwise just +plain text): + +![Colored](http://i.imgur.com/PY7qMwd.png) + +With `log.SetFormatter(&log.JSONFormatter{})`, for easy parsing by logstash +or Splunk: + +```json +{"animal":"walrus","level":"info","msg":"A group of walrus emerges from the +ocean","size":10,"time":"2014-03-10 19:57:38.562264131 -0400 EDT"} + +{"level":"warning","msg":"The group's number increased tremendously!", +"number":122,"omg":true,"time":"2014-03-10 19:57:38.562471297 -0400 EDT"} + +{"animal":"walrus","level":"info","msg":"A giant walrus appears!", +"size":10,"time":"2014-03-10 19:57:38.562500591 -0400 EDT"} + +{"animal":"walrus","level":"info","msg":"Tremendously sized cow enters the ocean.", +"size":9,"time":"2014-03-10 19:57:38.562527896 -0400 EDT"} + +{"level":"fatal","msg":"The ice breaks!","number":100,"omg":true, +"time":"2014-03-10 19:57:38.562543128 -0400 EDT"} +``` + +With the default `log.SetFormatter(&log.TextFormatter{})` when a TTY is not +attached, the output is compatible with the +[logfmt](http://godoc.org/github.com/kr/logfmt) format: + +```text +time="2015-03-26T01:27:38-04:00" level=debug msg="Started observing beach" animal=walrus number=8 +time="2015-03-26T01:27:38-04:00" level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 +time="2015-03-26T01:27:38-04:00" level=warning msg="The group's number increased tremendously!" number=122 omg=true +time="2015-03-26T01:27:38-04:00" level=debug msg="Temperature changes" temperature=-4 +time="2015-03-26T01:27:38-04:00" level=panic msg="It's over 9000!" animal=orca size=9009 +time="2015-03-26T01:27:38-04:00" level=fatal msg="The ice breaks!" err=&{0x2082280c0 map[animal:orca size:9009] 2015-03-26 01:27:38.441574009 -0400 EDT panic It's over 9000!} number=100 omg=true +exit status 1 +``` + +#### Case-sensitivity + +The organization's name was changed to lower-case--and this will not be changed +back. If you are getting import conflicts due to case sensitivity, please use +the lower-case import: `github.com/sirupsen/logrus`. + +#### Example + +The simplest way to use Logrus is simply the package-level exported logger: + +```go +package main + +import ( + log "github.com/sirupsen/logrus" +) + +func main() { + log.WithFields(log.Fields{ + "animal": "walrus", + }).Info("A walrus appears") +} +``` + +Note that it's completely api-compatible with the stdlib logger, so you can +replace your `log` imports everywhere with `log "github.com/sirupsen/logrus"` +and you'll now have the flexibility of Logrus. You can customize it all you +want: + +```go +package main + +import ( + "os" + log "github.com/sirupsen/logrus" +) + +func init() { + // Log as JSON instead of the default ASCII formatter. + log.SetFormatter(&log.JSONFormatter{}) + + // Output to stdout instead of the default stderr + // Can be any io.Writer, see below for File example + log.SetOutput(os.Stdout) + + // Only log the warning severity or above. + log.SetLevel(log.WarnLevel) +} + +func main() { + log.WithFields(log.Fields{ + "animal": "walrus", + "size": 10, + }).Info("A group of walrus emerges from the ocean") + + log.WithFields(log.Fields{ + "omg": true, + "number": 122, + }).Warn("The group's number increased tremendously!") + + log.WithFields(log.Fields{ + "omg": true, + "number": 100, + }).Fatal("The ice breaks!") + + // A common pattern is to re-use fields between logging statements by re-using + // the logrus.Entry returned from WithFields() + contextLogger := log.WithFields(log.Fields{ + "common": "this is a common field", + "other": "I also should be logged always", + }) + + contextLogger.Info("I'll be logged with common and other field") + contextLogger.Info("Me too") +} +``` + +For more advanced usage such as logging to multiple locations from the same +application, you can also create an instance of the `logrus` Logger: + +```go +package main + +import ( + "os" + "github.com/sirupsen/logrus" +) + +// Create a new instance of the logger. You can have any number of instances. +var log = logrus.New() + +func main() { + // The API for setting attributes is a little different than the package level + // exported logger. See Godoc. + log.Out = os.Stdout + + // You could set this to any `io.Writer` such as a file + // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) + // if err == nil { + // log.Out = file + // } else { + // log.Info("Failed to log to file, using default stderr") + // } + + log.WithFields(logrus.Fields{ + "animal": "walrus", + "size": 10, + }).Info("A group of walrus emerges from the ocean") +} +``` + +#### Fields + +Logrus encourages careful, structured logging through logging fields instead of +long, unparseable error messages. For example, instead of: `log.Fatalf("Failed +to send event %s to topic %s with key %d")`, you should log the much more +discoverable: + +```go +log.WithFields(log.Fields{ + "event": event, + "topic": topic, + "key": key, +}).Fatal("Failed to send event") +``` + +We've found this API forces you to think about logging in a way that produces +much more useful logging messages. We've been in countless situations where just +a single added field to a log statement that was already there would've saved us +hours. The `WithFields` call is optional. + +In general, with Logrus using any of the `printf`-family functions should be +seen as a hint you should add a field, however, you can still use the +`printf`-family functions with Logrus. + +#### Default Fields + +Often it's helpful to have fields _always_ attached to log statements in an +application or parts of one. For example, you may want to always log the +`request_id` and `user_ip` in the context of a request. Instead of writing +`log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip})` on +every line, you can create a `logrus.Entry` to pass around instead: + +```go +requestLogger := log.WithFields(log.Fields{"request_id": request_id, "user_ip": user_ip}) +requestLogger.Info("something happened on that request") # will log request_id and user_ip +requestLogger.Warn("something not great happened") +``` + +#### Hooks + +You can add hooks for logging levels. For example to send errors to an exception +tracking service on `Error`, `Fatal` and `Panic`, info to StatsD or log to +multiple places simultaneously, e.g. syslog. + +Logrus comes with [built-in hooks](hooks/). Add those, or your custom hook, in +`init`: + +```go +import ( + log "github.com/sirupsen/logrus" + "gopkg.in/gemnasium/logrus-airbrake-hook.v2" // the package is named "aibrake" + logrus_syslog "github.com/sirupsen/logrus/hooks/syslog" + "log/syslog" +) + +func init() { + + // Use the Airbrake hook to report errors that have Error severity or above to + // an exception tracker. You can create custom hooks, see the Hooks section. + log.AddHook(airbrake.NewHook(123, "xyz", "production")) + + hook, err := logrus_syslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") + if err != nil { + log.Error("Unable to connect to local syslog daemon") + } else { + log.AddHook(hook) + } +} +``` +Note: Syslog hook also support connecting to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). For the detail, please check the [syslog hook README](hooks/syslog/README.md). + +| Hook | Description | +| ----- | ----------- | +| [Airbrake "legacy"](https://github.com/gemnasium/logrus-airbrake-legacy-hook) | Send errors to an exception tracking service compatible with the Airbrake API V2. Uses [`airbrake-go`](https://github.com/tobi/airbrake-go) behind the scenes. | +| [Airbrake](https://github.com/gemnasium/logrus-airbrake-hook) | Send errors to the Airbrake API V3. Uses the official [`gobrake`](https://github.com/airbrake/gobrake) behind the scenes. | +| [Amazon Kinesis](https://github.com/evalphobia/logrus_kinesis) | Hook for logging to [Amazon Kinesis](https://aws.amazon.com/kinesis/) | +| [Amqp-Hook](https://github.com/vladoatanasov/logrus_amqp) | Hook for logging to Amqp broker (Like RabbitMQ) | +| [AzureTableHook](https://github.com/kpfaulkner/azuretablehook/) | Hook for logging to Azure Table Storage| +| [Bugsnag](https://github.com/Shopify/logrus-bugsnag/blob/master/bugsnag.go) | Send errors to the Bugsnag exception tracking service. | +| [DeferPanic](https://github.com/deferpanic/dp-logrus) | Hook for logging to DeferPanic | +| [Discordrus](https://github.com/kz/discordrus) | Hook for logging to [Discord](https://discordapp.com/) | +| [ElasticSearch](https://github.com/sohlich/elogrus) | Hook for logging to ElasticSearch| +| [Firehose](https://github.com/beaubrewer/logrus_firehose) | Hook for logging to [Amazon Firehose](https://aws.amazon.com/kinesis/firehose/) +| [Fluentd](https://github.com/evalphobia/logrus_fluent) | Hook for logging to fluentd | +| [Go-Slack](https://github.com/multiplay/go-slack) | Hook for logging to [Slack](https://slack.com) | +| [Graylog](https://github.com/gemnasium/logrus-graylog-hook) | Hook for logging to [Graylog](http://graylog2.org/) | +| [Hiprus](https://github.com/nubo/hiprus) | Send errors to a channel in hipchat. | +| [Honeybadger](https://github.com/agonzalezro/logrus_honeybadger) | Hook for sending exceptions to Honeybadger | +| [InfluxDB](https://github.com/Abramovic/logrus_influxdb) | Hook for logging to influxdb | +| [Influxus](http://github.com/vlad-doru/influxus) | Hook for concurrently logging to [InfluxDB](http://influxdata.com/) | +| [Journalhook](https://github.com/wercker/journalhook) | Hook for logging to `systemd-journald` | +| [KafkaLogrus](https://github.com/tracer0tong/kafkalogrus) | Hook for logging to Kafka | +| [LFShook](https://github.com/rifflock/lfshook) | Hook for logging to the local filesystem | +| [Logentries](https://github.com/jcftang/logentriesrus) | Hook for logging to [Logentries](https://logentries.com/) | +| [Logentrus](https://github.com/puddingfactory/logentrus) | Hook for logging to [Logentries](https://logentries.com/) | +| [Logmatic.io](https://github.com/logmatic/logmatic-go) | Hook for logging to [Logmatic.io](http://logmatic.io/) | +| [Logrusly](https://github.com/sebest/logrusly) | Send logs to [Loggly](https://www.loggly.com/) | +| [Logstash](https://github.com/bshuster-repo/logrus-logstash-hook) | Hook for logging to [Logstash](https://www.elastic.co/products/logstash) | +| [Mail](https://github.com/zbindenren/logrus_mail) | Hook for sending exceptions via mail | +| [Mattermost](https://github.com/shuLhan/mattermost-integration/tree/master/hooks/logrus) | Hook for logging to [Mattermost](https://mattermost.com/) | +| [Mongodb](https://github.com/weekface/mgorus) | Hook for logging to mongodb | +| [NATS-Hook](https://github.com/rybit/nats_logrus_hook) | Hook for logging to [NATS](https://nats.io) | +| [Octokit](https://github.com/dorajistyle/logrus-octokit-hook) | Hook for logging to github via octokit | +| [Papertrail](https://github.com/polds/logrus-papertrail-hook) | Send errors to the [Papertrail](https://papertrailapp.com) hosted logging service via UDP. | +| [PostgreSQL](https://github.com/gemnasium/logrus-postgresql-hook) | Send logs to [PostgreSQL](http://postgresql.org) | +| [Pushover](https://github.com/toorop/logrus_pushover) | Send error via [Pushover](https://pushover.net) | +| [Raygun](https://github.com/squirkle/logrus-raygun-hook) | Hook for logging to [Raygun.io](http://raygun.io/) | +| [Redis-Hook](https://github.com/rogierlommers/logrus-redis-hook) | Hook for logging to a ELK stack (through Redis) | +| [Rollrus](https://github.com/heroku/rollrus) | Hook for sending errors to rollbar | +| [Scribe](https://github.com/sagar8192/logrus-scribe-hook) | Hook for logging to [Scribe](https://github.com/facebookarchive/scribe)| +| [Sentry](https://github.com/evalphobia/logrus_sentry) | Send errors to the Sentry error logging and aggregation service. | +| [Slackrus](https://github.com/johntdyer/slackrus) | Hook for Slack chat. | +| [Stackdriver](https://github.com/knq/sdhook) | Hook for logging to [Google Stackdriver](https://cloud.google.com/logging/) | +| [Sumorus](https://github.com/doublefree/sumorus) | Hook for logging to [SumoLogic](https://www.sumologic.com/)| +| [Syslog](https://github.com/sirupsen/logrus/blob/master/hooks/syslog/syslog.go) | Send errors to remote syslog server. Uses standard library `log/syslog` behind the scenes. | +| [Syslog TLS](https://github.com/shinji62/logrus-syslog-ng) | Send errors to remote syslog server with TLS support. | +| [Telegram](https://github.com/rossmcdonald/telegram_hook) | Hook for logging errors to [Telegram](https://telegram.org/) | +| [TraceView](https://github.com/evalphobia/logrus_appneta) | Hook for logging to [AppNeta TraceView](https://www.appneta.com/products/traceview/) | +| [Typetalk](https://github.com/dragon3/logrus-typetalk-hook) | Hook for logging to [Typetalk](https://www.typetalk.in/) | +| [logz.io](https://github.com/ripcurld00d/logrus-logzio-hook) | Hook for logging to [logz.io](https://logz.io), a Log as a Service using Logstash | +| [SQS-Hook](https://github.com/tsarpaul/logrus_sqs) | Hook for logging to [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/sqs/) | + +#### Level logging + +Logrus has six logging levels: Debug, Info, Warning, Error, Fatal and Panic. + +```go +log.Debug("Useful debugging information.") +log.Info("Something noteworthy happened!") +log.Warn("You should probably take a look at this.") +log.Error("Something failed but I'm not quitting.") +// Calls os.Exit(1) after logging +log.Fatal("Bye.") +// Calls panic() after logging +log.Panic("I'm bailing.") +``` + +You can set the logging level on a `Logger`, then it will only log entries with +that severity or anything above it: + +```go +// Will log anything that is info or above (warn, error, fatal, panic). Default. +log.SetLevel(log.InfoLevel) +``` + +It may be useful to set `log.Level = logrus.DebugLevel` in a debug or verbose +environment if your application has that. + +#### Entries + +Besides the fields added with `WithField` or `WithFields` some fields are +automatically added to all logging events: + +1. `time`. The timestamp when the entry was created. +2. `msg`. The logging message passed to `{Info,Warn,Error,Fatal,Panic}` after + the `AddFields` call. E.g. `Failed to send event.` +3. `level`. The logging level. E.g. `info`. + +#### Environments + +Logrus has no notion of environment. + +If you wish for hooks and formatters to only be used in specific environments, +you should handle that yourself. For example, if your application has a global +variable `Environment`, which is a string representation of the environment you +could do: + +```go +import ( + log "github.com/sirupsen/logrus" +) + +init() { + // do something here to set environment depending on an environment variable + // or command-line flag + if Environment == "production" { + log.SetFormatter(&log.JSONFormatter{}) + } else { + // The TextFormatter is default, you don't actually have to do this. + log.SetFormatter(&log.TextFormatter{}) + } +} +``` + +This configuration is how `logrus` was intended to be used, but JSON in +production is mostly only useful if you do log aggregation with tools like +Splunk or Logstash. + +#### Formatters + +The built-in logging formatters are: + +* `logrus.TextFormatter`. Logs the event in colors if stdout is a tty, otherwise + without colors. + * *Note:* to force colored output when there is no TTY, set the `ForceColors` + field to `true`. To force no colored output even if there is a TTY set the + `DisableColors` field to `true`. For Windows, see + [github.com/mattn/go-colorable](https://github.com/mattn/go-colorable). + * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#TextFormatter). +* `logrus.JSONFormatter`. Logs fields as JSON. + * All options are listed in the [generated docs](https://godoc.org/github.com/sirupsen/logrus#JSONFormatter). + +Third party logging formatters: + +* [`FluentdFormatter`](https://github.com/joonix/log). Formats entries that can by parsed by Kubernetes and Google Container Engine. +* [`logstash`](https://github.com/bshuster-repo/logrus-logstash-hook). Logs fields as [Logstash](http://logstash.net) Events. +* [`prefixed`](https://github.com/x-cray/logrus-prefixed-formatter). Displays log entry source along with alternative layout. +* [`zalgo`](https://github.com/aybabtme/logzalgo). Invoking the P͉̫o̳̼̊w̖͈̰͎e̬͔̭͂r͚̼̹̲ ̫͓͉̳͈ō̠͕͖̚f̝͍̠ ͕̲̞͖͑Z̖̫̤̫ͪa͉̬͈̗l͖͎g̳̥o̰̥̅!̣͔̲̻͊̄ ̙̘̦̹̦. + +You can define your formatter by implementing the `Formatter` interface, +requiring a `Format` method. `Format` takes an `*Entry`. `entry.Data` is a +`Fields` type (`map[string]interface{}`) with all your fields as well as the +default ones (see Entries section above): + +```go +type MyJSONFormatter struct { +} + +log.SetFormatter(new(MyJSONFormatter)) + +func (f *MyJSONFormatter) Format(entry *Entry) ([]byte, error) { + // Note this doesn't include Time, Level and Message which are available on + // the Entry. Consult `godoc` on information about those fields or read the + // source of the official loggers. + serialized, err := json.Marshal(entry.Data) + if err != nil { + return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) + } + return append(serialized, '\n'), nil +} +``` + +#### Logger as an `io.Writer` + +Logrus can be transformed into an `io.Writer`. That writer is the end of an `io.Pipe` and it is your responsibility to close it. + +```go +w := logger.Writer() +defer w.Close() + +srv := http.Server{ + // create a stdlib log.Logger that writes to + // logrus.Logger. + ErrorLog: log.New(w, "", 0), +} +``` + +Each line written to that writer will be printed the usual way, using formatters +and hooks. The level for those entries is `info`. + +This means that we can override the standard library logger easily: + +```go +logger := logrus.New() +logger.Formatter = &logrus.JSONFormatter{} + +// Use logrus for standard log output +// Note that `log` here references stdlib's log +// Not logrus imported under the name `log`. +log.SetOutput(logger.Writer()) +``` + +#### Rotation + +Log rotation is not provided with Logrus. Log rotation should be done by an +external program (like `logrotate(8)`) that can compress and delete old log +entries. It should not be a feature of the application-level logger. + +#### Tools + +| Tool | Description | +| ---- | ----------- | +|[Logrus Mate](https://github.com/gogap/logrus_mate)|Logrus mate is a tool for Logrus to manage loggers, you can initial logger's level, hook and formatter by config file, the logger will generated with different config at different environment.| +|[Logrus Viper Helper](https://github.com/heirko/go-contrib/tree/master/logrusHelper)|An Helper around Logrus to wrap with spf13/Viper to load configuration with fangs! And to simplify Logrus configuration use some behavior of [Logrus Mate](https://github.com/gogap/logrus_mate). [sample](https://github.com/heirko/iris-contrib/blob/master/middleware/logrus-logger/example) | + +#### Testing + +Logrus has a built in facility for asserting the presence of log messages. This is implemented through the `test` hook and provides: + +* decorators for existing logger (`test.NewLocal` and `test.NewGlobal`) which basically just add the `test` hook +* a test logger (`test.NewNullLogger`) that just records log messages (and does not output any): + +```go +import( + "github.com/sirupsen/logrus" + "github.com/sirupsen/logrus/hooks/test" + "github.com/stretchr/testify/assert" + "testing" +) + +func TestSomething(t*testing.T){ + logger, hook := test.NewNullLogger() + logger.Error("Helloerror") + + assert.Equal(t, 1, len(hook.Entries)) + assert.Equal(t, logrus.ErrorLevel, hook.LastEntry().Level) + assert.Equal(t, "Helloerror", hook.LastEntry().Message) + + hook.Reset() + assert.Nil(t, hook.LastEntry()) +} +``` + +#### Fatal handlers + +Logrus can register one or more functions that will be called when any `fatal` +level message is logged. The registered handlers will be executed before +logrus performs a `os.Exit(1)`. This behavior may be helpful if callers need +to gracefully shutdown. Unlike a `panic("Something went wrong...")` call which can be intercepted with a deferred `recover` a call to `os.Exit(1)` can not be intercepted. + +``` +... +handler := func() { + // gracefully shutdown something... +} +logrus.RegisterExitHandler(handler) +... +``` + +#### Thread safety + +By default Logger is protected by mutex for concurrent writes, this mutex is invoked when calling hooks and writing logs. +If you are sure such locking is not needed, you can call logger.SetNoLock() to disable the locking. + +Situation when locking is not needed includes: + +* You have no hooks registered, or hooks calling is already thread-safe. + +* Writing to logger.Out is already thread-safe, for example: + + 1) logger.Out is protected by locks. + + 2) logger.Out is a os.File handler opened with `O_APPEND` flag, and every write is smaller than 4k. (This allow multi-thread/multi-process writing) + + (Refer to http://www.notthewizard.com/2014/06/17/are-files-appends-really-atomic/) diff --git a/vendor/github.com/sirupsen/logrus/alt_exit.go b/vendor/github.com/sirupsen/logrus/alt_exit.go new file mode 100644 index 0000000..8af9063 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/alt_exit.go @@ -0,0 +1,64 @@ +package logrus + +// The following code was sourced and modified from the +// https://github.com/tebeka/atexit package governed by the following license: +// +// Copyright (c) 2012 Miki Tebeka . +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +import ( + "fmt" + "os" +) + +var handlers = []func(){} + +func runHandler(handler func()) { + defer func() { + if err := recover(); err != nil { + fmt.Fprintln(os.Stderr, "Error: Logrus exit handler error:", err) + } + }() + + handler() +} + +func runHandlers() { + for _, handler := range handlers { + runHandler(handler) + } +} + +// Exit runs all the Logrus atexit handlers and then terminates the program using os.Exit(code) +func Exit(code int) { + runHandlers() + os.Exit(code) +} + +// RegisterExitHandler adds a Logrus Exit handler, call logrus.Exit to invoke +// all handlers. The handlers will also be invoked when any Fatal log entry is +// made. +// +// This method is useful when a caller wishes to use logrus to log a fatal +// message but also needs to gracefully shutdown. An example usecase could be +// closing database connections, or sending a alert that the application is +// closing. +func RegisterExitHandler(handler func()) { + handlers = append(handlers, handler) +} diff --git a/vendor/github.com/sirupsen/logrus/alt_exit_test.go b/vendor/github.com/sirupsen/logrus/alt_exit_test.go new file mode 100644 index 0000000..a08b1a8 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/alt_exit_test.go @@ -0,0 +1,83 @@ +package logrus + +import ( + "io/ioutil" + "log" + "os" + "os/exec" + "path/filepath" + "testing" + "time" +) + +func TestRegister(t *testing.T) { + current := len(handlers) + RegisterExitHandler(func() {}) + if len(handlers) != current+1 { + t.Fatalf("expected %d handlers, got %d", current+1, len(handlers)) + } +} + +func TestHandler(t *testing.T) { + tempDir, err := ioutil.TempDir("", "test_handler") + if err != nil { + log.Fatalf("can't create temp dir. %q", err) + } + defer os.RemoveAll(tempDir) + + gofile := filepath.Join(tempDir, "gofile.go") + if err := ioutil.WriteFile(gofile, testprog, 0666); err != nil { + t.Fatalf("can't create go file. %q", err) + } + + outfile := filepath.Join(tempDir, "outfile.out") + arg := time.Now().UTC().String() + err = exec.Command("go", "run", gofile, outfile, arg).Run() + if err == nil { + t.Fatalf("completed normally, should have failed") + } + + data, err := ioutil.ReadFile(outfile) + if err != nil { + t.Fatalf("can't read output file %s. %q", outfile, err) + } + + if string(data) != arg { + t.Fatalf("bad data. Expected %q, got %q", data, arg) + } +} + +var testprog = []byte(` +// Test program for atexit, gets output file and data as arguments and writes +// data to output file in atexit handler. +package main + +import ( + "github.com/sirupsen/logrus" + "flag" + "fmt" + "io/ioutil" +) + +var outfile = "" +var data = "" + +func handler() { + ioutil.WriteFile(outfile, []byte(data), 0666) +} + +func badHandler() { + n := 0 + fmt.Println(1/n) +} + +func main() { + flag.Parse() + outfile = flag.Arg(0) + data = flag.Arg(1) + + logrus.RegisterExitHandler(handler) + logrus.RegisterExitHandler(badHandler) + logrus.Fatal("Bye bye") +} +`) diff --git a/vendor/github.com/sirupsen/logrus/appveyor.yml b/vendor/github.com/sirupsen/logrus/appveyor.yml new file mode 100644 index 0000000..b4ffca2 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/appveyor.yml @@ -0,0 +1,14 @@ +version: "{build}" +platform: x64 +clone_folder: c:\gopath\src\github.com\sirupsen\logrus +environment: + GOPATH: c:\gopath +branches: + only: + - master +install: + - set PATH=%GOPATH%\bin;c:\go\bin;%PATH% + - go version +build_script: + - go get -t + - go test diff --git a/vendor/github.com/sirupsen/logrus/doc.go b/vendor/github.com/sirupsen/logrus/doc.go new file mode 100644 index 0000000..da67aba --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/doc.go @@ -0,0 +1,26 @@ +/* +Package logrus is a structured logger for Go, completely API compatible with the standard library logger. + + +The simplest way to use Logrus is simply the package-level exported logger: + + package main + + import ( + log "github.com/sirupsen/logrus" + ) + + func main() { + log.WithFields(log.Fields{ + "animal": "walrus", + "number": 1, + "size": 10, + }).Info("A walrus appears") + } + +Output: + time="2015-09-07T08:48:33Z" level=info msg="A walrus appears" animal=walrus number=1 size=10 + +For a full guide visit https://github.com/sirupsen/logrus +*/ +package logrus diff --git a/vendor/github.com/sirupsen/logrus/entry.go b/vendor/github.com/sirupsen/logrus/entry.go new file mode 100644 index 0000000..1fad45e --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/entry.go @@ -0,0 +1,279 @@ +package logrus + +import ( + "bytes" + "fmt" + "os" + "sync" + "time" +) + +var bufferPool *sync.Pool + +func init() { + bufferPool = &sync.Pool{ + New: func() interface{} { + return new(bytes.Buffer) + }, + } +} + +// Defines the key when adding errors using WithError. +var ErrorKey = "error" + +// An entry is the final or intermediate Logrus logging entry. It contains all +// the fields passed with WithField{,s}. It's finally logged when Debug, Info, +// Warn, Error, Fatal or Panic is called on it. These objects can be reused and +// passed around as much as you wish to avoid field duplication. +type Entry struct { + Logger *Logger + + // Contains all the fields set by the user. + Data Fields + + // Time at which the log entry was created + Time time.Time + + // Level the log entry was logged at: Debug, Info, Warn, Error, Fatal or Panic + // This field will be set on entry firing and the value will be equal to the one in Logger struct field. + Level Level + + // Message passed to Debug, Info, Warn, Error, Fatal or Panic + Message string + + // When formatter is called in entry.log(), an Buffer may be set to entry + Buffer *bytes.Buffer +} + +func NewEntry(logger *Logger) *Entry { + return &Entry{ + Logger: logger, + // Default is three fields, give a little extra room + Data: make(Fields, 5), + } +} + +// Returns the string representation from the reader and ultimately the +// formatter. +func (entry *Entry) String() (string, error) { + serialized, err := entry.Logger.Formatter.Format(entry) + if err != nil { + return "", err + } + str := string(serialized) + return str, nil +} + +// Add an error as single field (using the key defined in ErrorKey) to the Entry. +func (entry *Entry) WithError(err error) *Entry { + return entry.WithField(ErrorKey, err) +} + +// Add a single field to the Entry. +func (entry *Entry) WithField(key string, value interface{}) *Entry { + return entry.WithFields(Fields{key: value}) +} + +// Add a map of fields to the Entry. +func (entry *Entry) WithFields(fields Fields) *Entry { + data := make(Fields, len(entry.Data)+len(fields)) + for k, v := range entry.Data { + data[k] = v + } + for k, v := range fields { + data[k] = v + } + return &Entry{Logger: entry.Logger, Data: data} +} + +// This function is not declared with a pointer value because otherwise +// race conditions will occur when using multiple goroutines +func (entry Entry) log(level Level, msg string) { + var buffer *bytes.Buffer + entry.Time = time.Now() + entry.Level = level + entry.Message = msg + + entry.Logger.mu.Lock() + err := entry.Logger.Hooks.Fire(level, &entry) + entry.Logger.mu.Unlock() + if err != nil { + entry.Logger.mu.Lock() + fmt.Fprintf(os.Stderr, "Failed to fire hook: %v\n", err) + entry.Logger.mu.Unlock() + } + buffer = bufferPool.Get().(*bytes.Buffer) + buffer.Reset() + defer bufferPool.Put(buffer) + entry.Buffer = buffer + serialized, err := entry.Logger.Formatter.Format(&entry) + entry.Buffer = nil + if err != nil { + entry.Logger.mu.Lock() + fmt.Fprintf(os.Stderr, "Failed to obtain reader, %v\n", err) + entry.Logger.mu.Unlock() + } else { + entry.Logger.mu.Lock() + _, err = entry.Logger.Out.Write(serialized) + if err != nil { + fmt.Fprintf(os.Stderr, "Failed to write to log, %v\n", err) + } + entry.Logger.mu.Unlock() + } + + // To avoid Entry#log() returning a value that only would make sense for + // panic() to use in Entry#Panic(), we avoid the allocation by checking + // directly here. + if level <= PanicLevel { + panic(&entry) + } +} + +func (entry *Entry) Debug(args ...interface{}) { + if entry.Logger.level() >= DebugLevel { + entry.log(DebugLevel, fmt.Sprint(args...)) + } +} + +func (entry *Entry) Print(args ...interface{}) { + entry.Info(args...) +} + +func (entry *Entry) Info(args ...interface{}) { + if entry.Logger.level() >= InfoLevel { + entry.log(InfoLevel, fmt.Sprint(args...)) + } +} + +func (entry *Entry) Warn(args ...interface{}) { + if entry.Logger.level() >= WarnLevel { + entry.log(WarnLevel, fmt.Sprint(args...)) + } +} + +func (entry *Entry) Warning(args ...interface{}) { + entry.Warn(args...) +} + +func (entry *Entry) Error(args ...interface{}) { + if entry.Logger.level() >= ErrorLevel { + entry.log(ErrorLevel, fmt.Sprint(args...)) + } +} + +func (entry *Entry) Fatal(args ...interface{}) { + if entry.Logger.level() >= FatalLevel { + entry.log(FatalLevel, fmt.Sprint(args...)) + } + Exit(1) +} + +func (entry *Entry) Panic(args ...interface{}) { + if entry.Logger.level() >= PanicLevel { + entry.log(PanicLevel, fmt.Sprint(args...)) + } + panic(fmt.Sprint(args...)) +} + +// Entry Printf family functions + +func (entry *Entry) Debugf(format string, args ...interface{}) { + if entry.Logger.level() >= DebugLevel { + entry.Debug(fmt.Sprintf(format, args...)) + } +} + +func (entry *Entry) Infof(format string, args ...interface{}) { + if entry.Logger.level() >= InfoLevel { + entry.Info(fmt.Sprintf(format, args...)) + } +} + +func (entry *Entry) Printf(format string, args ...interface{}) { + entry.Infof(format, args...) +} + +func (entry *Entry) Warnf(format string, args ...interface{}) { + if entry.Logger.level() >= WarnLevel { + entry.Warn(fmt.Sprintf(format, args...)) + } +} + +func (entry *Entry) Warningf(format string, args ...interface{}) { + entry.Warnf(format, args...) +} + +func (entry *Entry) Errorf(format string, args ...interface{}) { + if entry.Logger.level() >= ErrorLevel { + entry.Error(fmt.Sprintf(format, args...)) + } +} + +func (entry *Entry) Fatalf(format string, args ...interface{}) { + if entry.Logger.level() >= FatalLevel { + entry.Fatal(fmt.Sprintf(format, args...)) + } + Exit(1) +} + +func (entry *Entry) Panicf(format string, args ...interface{}) { + if entry.Logger.level() >= PanicLevel { + entry.Panic(fmt.Sprintf(format, args...)) + } +} + +// Entry Println family functions + +func (entry *Entry) Debugln(args ...interface{}) { + if entry.Logger.level() >= DebugLevel { + entry.Debug(entry.sprintlnn(args...)) + } +} + +func (entry *Entry) Infoln(args ...interface{}) { + if entry.Logger.level() >= InfoLevel { + entry.Info(entry.sprintlnn(args...)) + } +} + +func (entry *Entry) Println(args ...interface{}) { + entry.Infoln(args...) +} + +func (entry *Entry) Warnln(args ...interface{}) { + if entry.Logger.level() >= WarnLevel { + entry.Warn(entry.sprintlnn(args...)) + } +} + +func (entry *Entry) Warningln(args ...interface{}) { + entry.Warnln(args...) +} + +func (entry *Entry) Errorln(args ...interface{}) { + if entry.Logger.level() >= ErrorLevel { + entry.Error(entry.sprintlnn(args...)) + } +} + +func (entry *Entry) Fatalln(args ...interface{}) { + if entry.Logger.level() >= FatalLevel { + entry.Fatal(entry.sprintlnn(args...)) + } + Exit(1) +} + +func (entry *Entry) Panicln(args ...interface{}) { + if entry.Logger.level() >= PanicLevel { + entry.Panic(entry.sprintlnn(args...)) + } +} + +// Sprintlnn => Sprint no newline. This is to get the behavior of how +// fmt.Sprintln where spaces are always added between operands, regardless of +// their type. Instead of vendoring the Sprintln implementation to spare a +// string allocation, we do the simplest thing. +func (entry *Entry) sprintlnn(args ...interface{}) string { + msg := fmt.Sprintln(args...) + return msg[:len(msg)-1] +} diff --git a/vendor/github.com/sirupsen/logrus/entry_test.go b/vendor/github.com/sirupsen/logrus/entry_test.go new file mode 100644 index 0000000..99c3b41 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/entry_test.go @@ -0,0 +1,77 @@ +package logrus + +import ( + "bytes" + "fmt" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestEntryWithError(t *testing.T) { + + assert := assert.New(t) + + defer func() { + ErrorKey = "error" + }() + + err := fmt.Errorf("kaboom at layer %d", 4711) + + assert.Equal(err, WithError(err).Data["error"]) + + logger := New() + logger.Out = &bytes.Buffer{} + entry := NewEntry(logger) + + assert.Equal(err, entry.WithError(err).Data["error"]) + + ErrorKey = "err" + + assert.Equal(err, entry.WithError(err).Data["err"]) + +} + +func TestEntryPanicln(t *testing.T) { + errBoom := fmt.Errorf("boom time") + + defer func() { + p := recover() + assert.NotNil(t, p) + + switch pVal := p.(type) { + case *Entry: + assert.Equal(t, "kaboom", pVal.Message) + assert.Equal(t, errBoom, pVal.Data["err"]) + default: + t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal) + } + }() + + logger := New() + logger.Out = &bytes.Buffer{} + entry := NewEntry(logger) + entry.WithField("err", errBoom).Panicln("kaboom") +} + +func TestEntryPanicf(t *testing.T) { + errBoom := fmt.Errorf("boom again") + + defer func() { + p := recover() + assert.NotNil(t, p) + + switch pVal := p.(type) { + case *Entry: + assert.Equal(t, "kaboom true", pVal.Message) + assert.Equal(t, errBoom, pVal.Data["err"]) + default: + t.Fatalf("want type *Entry, got %T: %#v", pVal, pVal) + } + }() + + logger := New() + logger.Out = &bytes.Buffer{} + entry := NewEntry(logger) + entry.WithField("err", errBoom).Panicf("kaboom %v", true) +} diff --git a/vendor/github.com/sirupsen/logrus/example_basic_test.go b/vendor/github.com/sirupsen/logrus/example_basic_test.go new file mode 100644 index 0000000..a2acf55 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/example_basic_test.go @@ -0,0 +1,69 @@ +package logrus_test + +import ( + "github.com/sirupsen/logrus" + "os" +) + +func Example_basic() { + var log = logrus.New() + log.Formatter = new(logrus.JSONFormatter) + log.Formatter = new(logrus.TextFormatter) //default + log.Formatter.(*logrus.TextFormatter).DisableTimestamp = true // remove timestamp from test output + log.Level = logrus.DebugLevel + log.Out = os.Stdout + + // file, err := os.OpenFile("logrus.log", os.O_CREATE|os.O_WRONLY, 0666) + // if err == nil { + // log.Out = file + // } else { + // log.Info("Failed to log to file, using default stderr") + // } + + defer func() { + err := recover() + if err != nil { + entry := err.(*logrus.Entry) + log.WithFields(logrus.Fields{ + "omg": true, + "err_animal": entry.Data["animal"], + "err_size": entry.Data["size"], + "err_level": entry.Level, + "err_message": entry.Message, + "number": 100, + }).Error("The ice breaks!") // or use Fatal() to force the process to exit with a nonzero code + } + }() + + log.WithFields(logrus.Fields{ + "animal": "walrus", + "number": 8, + }).Debug("Started observing beach") + + log.WithFields(logrus.Fields{ + "animal": "walrus", + "size": 10, + }).Info("A group of walrus emerges from the ocean") + + log.WithFields(logrus.Fields{ + "omg": true, + "number": 122, + }).Warn("The group's number increased tremendously!") + + log.WithFields(logrus.Fields{ + "temperature": -4, + }).Debug("Temperature changes") + + log.WithFields(logrus.Fields{ + "animal": "orca", + "size": 9009, + }).Panic("It's over 9000!") + + // Output: + // level=debug msg="Started observing beach" animal=walrus number=8 + // level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 + // level=warning msg="The group's number increased tremendously!" number=122 omg=true + // level=debug msg="Temperature changes" temperature=-4 + // level=panic msg="It's over 9000!" animal=orca size=9009 + // level=error msg="The ice breaks!" err_animal=orca err_level=panic err_message="It's over 9000!" err_size=9009 number=100 omg=true +} diff --git a/vendor/github.com/sirupsen/logrus/example_hook_test.go b/vendor/github.com/sirupsen/logrus/example_hook_test.go new file mode 100644 index 0000000..d4ddffc --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/example_hook_test.go @@ -0,0 +1,35 @@ +package logrus_test + +import ( + "github.com/sirupsen/logrus" + "gopkg.in/gemnasium/logrus-airbrake-hook.v2" + "os" +) + +func Example_hook() { + var log = logrus.New() + log.Formatter = new(logrus.TextFormatter) // default + log.Formatter.(*logrus.TextFormatter).DisableTimestamp = true // remove timestamp from test output + log.Hooks.Add(airbrake.NewHook(123, "xyz", "development")) + log.Out = os.Stdout + + log.WithFields(logrus.Fields{ + "animal": "walrus", + "size": 10, + }).Info("A group of walrus emerges from the ocean") + + log.WithFields(logrus.Fields{ + "omg": true, + "number": 122, + }).Warn("The group's number increased tremendously!") + + log.WithFields(logrus.Fields{ + "omg": true, + "number": 100, + }).Error("The ice breaks!") + + // Output: + // level=info msg="A group of walrus emerges from the ocean" animal=walrus size=10 + // level=warning msg="The group's number increased tremendously!" number=122 omg=true + // level=error msg="The ice breaks!" number=100 omg=true +} diff --git a/vendor/github.com/sirupsen/logrus/exported.go b/vendor/github.com/sirupsen/logrus/exported.go new file mode 100644 index 0000000..013183e --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/exported.go @@ -0,0 +1,193 @@ +package logrus + +import ( + "io" +) + +var ( + // std is the name of the standard logger in stdlib `log` + std = New() +) + +func StandardLogger() *Logger { + return std +} + +// SetOutput sets the standard logger output. +func SetOutput(out io.Writer) { + std.mu.Lock() + defer std.mu.Unlock() + std.Out = out +} + +// SetFormatter sets the standard logger formatter. +func SetFormatter(formatter Formatter) { + std.mu.Lock() + defer std.mu.Unlock() + std.Formatter = formatter +} + +// SetLevel sets the standard logger level. +func SetLevel(level Level) { + std.mu.Lock() + defer std.mu.Unlock() + std.SetLevel(level) +} + +// GetLevel returns the standard logger level. +func GetLevel() Level { + std.mu.Lock() + defer std.mu.Unlock() + return std.level() +} + +// AddHook adds a hook to the standard logger hooks. +func AddHook(hook Hook) { + std.mu.Lock() + defer std.mu.Unlock() + std.Hooks.Add(hook) +} + +// WithError creates an entry from the standard logger and adds an error to it, using the value defined in ErrorKey as key. +func WithError(err error) *Entry { + return std.WithField(ErrorKey, err) +} + +// WithField creates an entry from the standard logger and adds a field to +// it. If you want multiple fields, use `WithFields`. +// +// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal +// or Panic on the Entry it returns. +func WithField(key string, value interface{}) *Entry { + return std.WithField(key, value) +} + +// WithFields creates an entry from the standard logger and adds multiple +// fields to it. This is simply a helper for `WithField`, invoking it +// once for each field. +// +// Note that it doesn't log until you call Debug, Print, Info, Warn, Fatal +// or Panic on the Entry it returns. +func WithFields(fields Fields) *Entry { + return std.WithFields(fields) +} + +// Debug logs a message at level Debug on the standard logger. +func Debug(args ...interface{}) { + std.Debug(args...) +} + +// Print logs a message at level Info on the standard logger. +func Print(args ...interface{}) { + std.Print(args...) +} + +// Info logs a message at level Info on the standard logger. +func Info(args ...interface{}) { + std.Info(args...) +} + +// Warn logs a message at level Warn on the standard logger. +func Warn(args ...interface{}) { + std.Warn(args...) +} + +// Warning logs a message at level Warn on the standard logger. +func Warning(args ...interface{}) { + std.Warning(args...) +} + +// Error logs a message at level Error on the standard logger. +func Error(args ...interface{}) { + std.Error(args...) +} + +// Panic logs a message at level Panic on the standard logger. +func Panic(args ...interface{}) { + std.Panic(args...) +} + +// Fatal logs a message at level Fatal on the standard logger. +func Fatal(args ...interface{}) { + std.Fatal(args...) +} + +// Debugf logs a message at level Debug on the standard logger. +func Debugf(format string, args ...interface{}) { + std.Debugf(format, args...) +} + +// Printf logs a message at level Info on the standard logger. +func Printf(format string, args ...interface{}) { + std.Printf(format, args...) +} + +// Infof logs a message at level Info on the standard logger. +func Infof(format string, args ...interface{}) { + std.Infof(format, args...) +} + +// Warnf logs a message at level Warn on the standard logger. +func Warnf(format string, args ...interface{}) { + std.Warnf(format, args...) +} + +// Warningf logs a message at level Warn on the standard logger. +func Warningf(format string, args ...interface{}) { + std.Warningf(format, args...) +} + +// Errorf logs a message at level Error on the standard logger. +func Errorf(format string, args ...interface{}) { + std.Errorf(format, args...) +} + +// Panicf logs a message at level Panic on the standard logger. +func Panicf(format string, args ...interface{}) { + std.Panicf(format, args...) +} + +// Fatalf logs a message at level Fatal on the standard logger. +func Fatalf(format string, args ...interface{}) { + std.Fatalf(format, args...) +} + +// Debugln logs a message at level Debug on the standard logger. +func Debugln(args ...interface{}) { + std.Debugln(args...) +} + +// Println logs a message at level Info on the standard logger. +func Println(args ...interface{}) { + std.Println(args...) +} + +// Infoln logs a message at level Info on the standard logger. +func Infoln(args ...interface{}) { + std.Infoln(args...) +} + +// Warnln logs a message at level Warn on the standard logger. +func Warnln(args ...interface{}) { + std.Warnln(args...) +} + +// Warningln logs a message at level Warn on the standard logger. +func Warningln(args ...interface{}) { + std.Warningln(args...) +} + +// Errorln logs a message at level Error on the standard logger. +func Errorln(args ...interface{}) { + std.Errorln(args...) +} + +// Panicln logs a message at level Panic on the standard logger. +func Panicln(args ...interface{}) { + std.Panicln(args...) +} + +// Fatalln logs a message at level Fatal on the standard logger. +func Fatalln(args ...interface{}) { + std.Fatalln(args...) +} diff --git a/vendor/github.com/sirupsen/logrus/formatter.go b/vendor/github.com/sirupsen/logrus/formatter.go new file mode 100644 index 0000000..b183ff5 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/formatter.go @@ -0,0 +1,45 @@ +package logrus + +import "time" + +const defaultTimestampFormat = time.RFC3339 + +// The Formatter interface is used to implement a custom Formatter. It takes an +// `Entry`. It exposes all the fields, including the default ones: +// +// * `entry.Data["msg"]`. The message passed from Info, Warn, Error .. +// * `entry.Data["time"]`. The timestamp. +// * `entry.Data["level"]. The level the entry was logged at. +// +// Any additional fields added with `WithField` or `WithFields` are also in +// `entry.Data`. Format is expected to return an array of bytes which are then +// logged to `logger.Out`. +type Formatter interface { + Format(*Entry) ([]byte, error) +} + +// This is to not silently overwrite `time`, `msg` and `level` fields when +// dumping it. If this code wasn't there doing: +// +// logrus.WithField("level", 1).Info("hello") +// +// Would just silently drop the user provided level. Instead with this code +// it'll logged as: +// +// {"level": "info", "fields.level": 1, "msg": "hello", "time": "..."} +// +// It's not exported because it's still using Data in an opinionated way. It's to +// avoid code duplication between the two default formatters. +func prefixFieldClashes(data Fields) { + if t, ok := data["time"]; ok { + data["fields.time"] = t + } + + if m, ok := data["msg"]; ok { + data["fields.msg"] = m + } + + if l, ok := data["level"]; ok { + data["fields.level"] = l + } +} diff --git a/vendor/github.com/sirupsen/logrus/formatter_bench_test.go b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go new file mode 100644 index 0000000..d948158 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/formatter_bench_test.go @@ -0,0 +1,101 @@ +package logrus + +import ( + "fmt" + "testing" + "time" +) + +// smallFields is a small size data set for benchmarking +var smallFields = Fields{ + "foo": "bar", + "baz": "qux", + "one": "two", + "three": "four", +} + +// largeFields is a large size data set for benchmarking +var largeFields = Fields{ + "foo": "bar", + "baz": "qux", + "one": "two", + "three": "four", + "five": "six", + "seven": "eight", + "nine": "ten", + "eleven": "twelve", + "thirteen": "fourteen", + "fifteen": "sixteen", + "seventeen": "eighteen", + "nineteen": "twenty", + "a": "b", + "c": "d", + "e": "f", + "g": "h", + "i": "j", + "k": "l", + "m": "n", + "o": "p", + "q": "r", + "s": "t", + "u": "v", + "w": "x", + "y": "z", + "this": "will", + "make": "thirty", + "entries": "yeah", +} + +var errorFields = Fields{ + "foo": fmt.Errorf("bar"), + "baz": fmt.Errorf("qux"), +} + +func BenchmarkErrorTextFormatter(b *testing.B) { + doBenchmark(b, &TextFormatter{DisableColors: true}, errorFields) +} + +func BenchmarkSmallTextFormatter(b *testing.B) { + doBenchmark(b, &TextFormatter{DisableColors: true}, smallFields) +} + +func BenchmarkLargeTextFormatter(b *testing.B) { + doBenchmark(b, &TextFormatter{DisableColors: true}, largeFields) +} + +func BenchmarkSmallColoredTextFormatter(b *testing.B) { + doBenchmark(b, &TextFormatter{ForceColors: true}, smallFields) +} + +func BenchmarkLargeColoredTextFormatter(b *testing.B) { + doBenchmark(b, &TextFormatter{ForceColors: true}, largeFields) +} + +func BenchmarkSmallJSONFormatter(b *testing.B) { + doBenchmark(b, &JSONFormatter{}, smallFields) +} + +func BenchmarkLargeJSONFormatter(b *testing.B) { + doBenchmark(b, &JSONFormatter{}, largeFields) +} + +func doBenchmark(b *testing.B, formatter Formatter, fields Fields) { + logger := New() + + entry := &Entry{ + Time: time.Time{}, + Level: InfoLevel, + Message: "message", + Data: fields, + Logger: logger, + } + var d []byte + var err error + for i := 0; i < b.N; i++ { + d, err = formatter.Format(entry) + if err != nil { + b.Fatal(err) + } + b.SetBytes(int64(len(d))) + } +} diff --git a/vendor/github.com/sirupsen/logrus/hook_test.go b/vendor/github.com/sirupsen/logrus/hook_test.go new file mode 100644 index 0000000..4fea751 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hook_test.go @@ -0,0 +1,144 @@ +package logrus + +import ( + "sync" + "testing" + + "github.com/stretchr/testify/assert" +) + +type TestHook struct { + Fired bool +} + +func (hook *TestHook) Fire(entry *Entry) error { + hook.Fired = true + return nil +} + +func (hook *TestHook) Levels() []Level { + return []Level{ + DebugLevel, + InfoLevel, + WarnLevel, + ErrorLevel, + FatalLevel, + PanicLevel, + } +} + +func TestHookFires(t *testing.T) { + hook := new(TestHook) + + LogAndAssertJSON(t, func(log *Logger) { + log.Hooks.Add(hook) + assert.Equal(t, hook.Fired, false) + + log.Print("test") + }, func(fields Fields) { + assert.Equal(t, hook.Fired, true) + }) +} + +type ModifyHook struct { +} + +func (hook *ModifyHook) Fire(entry *Entry) error { + entry.Data["wow"] = "whale" + return nil +} + +func (hook *ModifyHook) Levels() []Level { + return []Level{ + DebugLevel, + InfoLevel, + WarnLevel, + ErrorLevel, + FatalLevel, + PanicLevel, + } +} + +func TestHookCanModifyEntry(t *testing.T) { + hook := new(ModifyHook) + + LogAndAssertJSON(t, func(log *Logger) { + log.Hooks.Add(hook) + log.WithField("wow", "elephant").Print("test") + }, func(fields Fields) { + assert.Equal(t, fields["wow"], "whale") + }) +} + +func TestCanFireMultipleHooks(t *testing.T) { + hook1 := new(ModifyHook) + hook2 := new(TestHook) + + LogAndAssertJSON(t, func(log *Logger) { + log.Hooks.Add(hook1) + log.Hooks.Add(hook2) + + log.WithField("wow", "elephant").Print("test") + }, func(fields Fields) { + assert.Equal(t, fields["wow"], "whale") + assert.Equal(t, hook2.Fired, true) + }) +} + +type ErrorHook struct { + Fired bool +} + +func (hook *ErrorHook) Fire(entry *Entry) error { + hook.Fired = true + return nil +} + +func (hook *ErrorHook) Levels() []Level { + return []Level{ + ErrorLevel, + } +} + +func TestErrorHookShouldntFireOnInfo(t *testing.T) { + hook := new(ErrorHook) + + LogAndAssertJSON(t, func(log *Logger) { + log.Hooks.Add(hook) + log.Info("test") + }, func(fields Fields) { + assert.Equal(t, hook.Fired, false) + }) +} + +func TestErrorHookShouldFireOnError(t *testing.T) { + hook := new(ErrorHook) + + LogAndAssertJSON(t, func(log *Logger) { + log.Hooks.Add(hook) + log.Error("test") + }, func(fields Fields) { + assert.Equal(t, hook.Fired, true) + }) +} + +func TestAddHookRace(t *testing.T) { + var wg sync.WaitGroup + wg.Add(2) + hook := new(ErrorHook) + LogAndAssertJSON(t, func(log *Logger) { + go func() { + defer wg.Done() + log.AddHook(hook) + }() + go func() { + defer wg.Done() + log.Error("test") + }() + wg.Wait() + }, func(fields Fields) { + // the line may have been logged + // before the hook was added, so we can't + // actually assert on the hook + }) +} diff --git a/vendor/github.com/sirupsen/logrus/hooks.go b/vendor/github.com/sirupsen/logrus/hooks.go new file mode 100644 index 0000000..3f151cd --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks.go @@ -0,0 +1,34 @@ +package logrus + +// A hook to be fired when logging on the logging levels returned from +// `Levels()` on your implementation of the interface. Note that this is not +// fired in a goroutine or a channel with workers, you should handle such +// functionality yourself if your call is non-blocking and you don't wish for +// the logging calls for levels returned from `Levels()` to block. +type Hook interface { + Levels() []Level + Fire(*Entry) error +} + +// Internal type for storing the hooks on a logger instance. +type LevelHooks map[Level][]Hook + +// Add a hook to an instance of logger. This is called with +// `log.Hooks.Add(new(MyHook))` where `MyHook` implements the `Hook` interface. +func (hooks LevelHooks) Add(hook Hook) { + for _, level := range hook.Levels() { + hooks[level] = append(hooks[level], hook) + } +} + +// Fire all the hooks for the passed level. Used by `entry.log` to fire +// appropriate hooks for a log entry. +func (hooks LevelHooks) Fire(level Level, entry *Entry) error { + for _, hook := range hooks[level] { + if err := hook.Fire(entry); err != nil { + return err + } + } + + return nil +} diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md b/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md new file mode 100644 index 0000000..1bbc0f7 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/syslog/README.md @@ -0,0 +1,39 @@ +# Syslog Hooks for Logrus :walrus: + +## Usage + +```go +import ( + "log/syslog" + "github.com/sirupsen/logrus" + lSyslog "github.com/sirupsen/logrus/hooks/syslog" +) + +func main() { + log := logrus.New() + hook, err := lSyslog.NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") + + if err == nil { + log.Hooks.Add(hook) + } +} +``` + +If you want to connect to local syslog (Ex. "/dev/log" or "/var/run/syslog" or "/var/run/log"). Just assign empty string to the first two parameters of `NewSyslogHook`. It should look like the following. + +```go +import ( + "log/syslog" + "github.com/sirupsen/logrus" + lSyslog "github.com/sirupsen/logrus/hooks/syslog" +) + +func main() { + log := logrus.New() + hook, err := lSyslog.NewSyslogHook("", "", syslog.LOG_INFO, "") + + if err == nil { + log.Hooks.Add(hook) + } +} +``` diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go new file mode 100644 index 0000000..329ce0d --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go @@ -0,0 +1,55 @@ +// +build !windows,!nacl,!plan9 + +package syslog + +import ( + "fmt" + "log/syslog" + "os" + + "github.com/sirupsen/logrus" +) + +// SyslogHook to send logs via syslog. +type SyslogHook struct { + Writer *syslog.Writer + SyslogNetwork string + SyslogRaddr string +} + +// Creates a hook to be added to an instance of logger. This is called with +// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")` +// `if err == nil { log.Hooks.Add(hook) }` +func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) { + w, err := syslog.Dial(network, raddr, priority, tag) + return &SyslogHook{w, network, raddr}, err +} + +func (hook *SyslogHook) Fire(entry *logrus.Entry) error { + line, err := entry.String() + if err != nil { + fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err) + return err + } + + switch entry.Level { + case logrus.PanicLevel: + return hook.Writer.Crit(line) + case logrus.FatalLevel: + return hook.Writer.Crit(line) + case logrus.ErrorLevel: + return hook.Writer.Err(line) + case logrus.WarnLevel: + return hook.Writer.Warning(line) + case logrus.InfoLevel: + return hook.Writer.Info(line) + case logrus.DebugLevel: + return hook.Writer.Debug(line) + default: + return nil + } +} + +func (hook *SyslogHook) Levels() []logrus.Level { + return logrus.AllLevels +} diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go new file mode 100644 index 0000000..5ec3a44 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog_test.go @@ -0,0 +1,27 @@ +package syslog + +import ( + "log/syslog" + "testing" + + "github.com/sirupsen/logrus" +) + +func TestLocalhostAddAndPrint(t *testing.T) { + log := logrus.New() + hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_INFO, "") + + if err != nil { + t.Errorf("Unable to connect to local syslog.") + } + + log.Hooks.Add(hook) + + for _, level := range hook.Levels() { + if len(log.Hooks[level]) != 1 { + t.Errorf("SyslogHook was not added. The length of log.Hooks[%v]: %v", level, len(log.Hooks[level])) + } + } + + log.Info("Congratulations!") +} diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test.go new file mode 100644 index 0000000..62c4845 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/test/test.go @@ -0,0 +1,95 @@ +// The Test package is used for testing logrus. It is here for backwards +// compatibility from when logrus' organization was upper-case. Please use +// lower-case logrus and the `null` package instead of this one. +package test + +import ( + "io/ioutil" + "sync" + + "github.com/sirupsen/logrus" +) + +// Hook is a hook designed for dealing with logs in test scenarios. +type Hook struct { + // Entries is an array of all entries that have been received by this hook. + // For safe access, use the AllEntries() method, rather than reading this + // value directly. + Entries []*logrus.Entry + mu sync.RWMutex +} + +// NewGlobal installs a test hook for the global logger. +func NewGlobal() *Hook { + + hook := new(Hook) + logrus.AddHook(hook) + + return hook + +} + +// NewLocal installs a test hook for a given local logger. +func NewLocal(logger *logrus.Logger) *Hook { + + hook := new(Hook) + logger.Hooks.Add(hook) + + return hook + +} + +// NewNullLogger creates a discarding logger and installs the test hook. +func NewNullLogger() (*logrus.Logger, *Hook) { + + logger := logrus.New() + logger.Out = ioutil.Discard + + return logger, NewLocal(logger) + +} + +func (t *Hook) Fire(e *logrus.Entry) error { + t.mu.Lock() + defer t.mu.Unlock() + t.Entries = append(t.Entries, e) + return nil +} + +func (t *Hook) Levels() []logrus.Level { + return logrus.AllLevels +} + +// LastEntry returns the last entry that was logged or nil. +func (t *Hook) LastEntry() *logrus.Entry { + t.mu.RLock() + defer t.mu.RUnlock() + i := len(t.Entries) - 1 + if i < 0 { + return nil + } + // Make a copy, for safety + e := *t.Entries[i] + return &e +} + +// AllEntries returns all entries that were logged. +func (t *Hook) AllEntries() []*logrus.Entry { + t.mu.RLock() + defer t.mu.RUnlock() + // Make a copy so the returned value won't race with future log requests + entries := make([]*logrus.Entry, len(t.Entries)) + for i, entry := range t.Entries { + // Make a copy, for safety + e := *entry + entries[i] = &e + } + return entries +} + +// Reset removes all Entries from this test hook. +func (t *Hook) Reset() { + t.mu.Lock() + defer t.mu.Unlock() + t.Entries = make([]*logrus.Entry, 0) +} diff --git a/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go b/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go new file mode 100644 index 0000000..3f55cfe --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/test/test_test.go @@ -0,0 +1,39 @@ +package test + +import ( + "testing" + + "github.com/sirupsen/logrus" + "github.com/stretchr/testify/assert" +) + +func TestAllHooks(t *testing.T) { + + assert := assert.New(t) + + logger, hook := NewNullLogger() + assert.Nil(hook.LastEntry()) + assert.Equal(0, len(hook.Entries)) + + logger.Error("Hello error") + assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level) + assert.Equal("Hello error", hook.LastEntry().Message) + assert.Equal(1, len(hook.Entries)) + + logger.Warn("Hello warning") + assert.Equal(logrus.WarnLevel, hook.LastEntry().Level) + assert.Equal("Hello warning", hook.LastEntry().Message) + assert.Equal(2, len(hook.Entries)) + + hook.Reset() + assert.Nil(hook.LastEntry()) + assert.Equal(0, len(hook.Entries)) + + hook = NewGlobal() + + logrus.Error("Hello error") + assert.Equal(logrus.ErrorLevel, hook.LastEntry().Level) + assert.Equal("Hello error", hook.LastEntry().Message) + assert.Equal(1, len(hook.Entries)) + +} diff --git a/vendor/github.com/sirupsen/logrus/json_formatter.go b/vendor/github.com/sirupsen/logrus/json_formatter.go new file mode 100644 index 0000000..fb01c1b --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/json_formatter.go @@ -0,0 +1,79 @@ +package logrus + +import ( + "encoding/json" + "fmt" +) + +type fieldKey string + +// FieldMap allows customization of the key names for default fields. +type FieldMap map[fieldKey]string + +// Default key names for the default fields +const ( + FieldKeyMsg = "msg" + FieldKeyLevel = "level" + FieldKeyTime = "time" +) + +func (f FieldMap) resolve(key fieldKey) string { + if k, ok := f[key]; ok { + return k + } + + return string(key) +} + +// JSONFormatter formats logs into parsable json +type JSONFormatter struct { + // TimestampFormat sets the format used for marshaling timestamps. + TimestampFormat string + + // DisableTimestamp allows disabling automatic timestamps in output + DisableTimestamp bool + + // FieldMap allows users to customize the names of keys for default fields. + // As an example: + // formatter := &JSONFormatter{ + // FieldMap: FieldMap{ + // FieldKeyTime: "@timestamp", + // FieldKeyLevel: "@level", + // FieldKeyMsg: "@message", + // }, + // } + FieldMap FieldMap +} + +// Format renders a single log entry +func (f *JSONFormatter) Format(entry *Entry) ([]byte, error) { + data := make(Fields, len(entry.Data)+3) + for k, v := range entry.Data { + switch v := v.(type) { + case error: + // Otherwise errors are ignored by `encoding/json` + // https://github.com/sirupsen/logrus/issues/137 + data[k] = v.Error() + default: + data[k] = v + } + } + prefixFieldClashes(data) + + timestampFormat := f.TimestampFormat + if timestampFormat == "" { + timestampFormat = defaultTimestampFormat + } + + if !f.DisableTimestamp { + data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat) + } + data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message + data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String() + + serialized, err := json.Marshal(data) + if err != nil { + return nil, fmt.Errorf("Failed to marshal fields to JSON, %v", err) + } + return append(serialized, '\n'), nil +} diff --git a/vendor/github.com/sirupsen/logrus/json_formatter_test.go b/vendor/github.com/sirupsen/logrus/json_formatter_test.go new file mode 100644 index 0000000..51093a7 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/json_formatter_test.go @@ -0,0 +1,199 @@ +package logrus + +import ( + "encoding/json" + "errors" + "strings" + "testing" +) + +func TestErrorNotLost(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("error", errors.New("wild walrus"))) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + entry := make(map[string]interface{}) + err = json.Unmarshal(b, &entry) + if err != nil { + t.Fatal("Unable to unmarshal formatted entry: ", err) + } + + if entry["error"] != "wild walrus" { + t.Fatal("Error field not set") + } +} + +func TestErrorNotLostOnFieldNotNamedError(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("omg", errors.New("wild walrus"))) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + entry := make(map[string]interface{}) + err = json.Unmarshal(b, &entry) + if err != nil { + t.Fatal("Unable to unmarshal formatted entry: ", err) + } + + if entry["omg"] != "wild walrus" { + t.Fatal("Error field not set") + } +} + +func TestFieldClashWithTime(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("time", "right now!")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + entry := make(map[string]interface{}) + err = json.Unmarshal(b, &entry) + if err != nil { + t.Fatal("Unable to unmarshal formatted entry: ", err) + } + + if entry["fields.time"] != "right now!" { + t.Fatal("fields.time not set to original time field") + } + + if entry["time"] != "0001-01-01T00:00:00Z" { + t.Fatal("time field not set to current time, was: ", entry["time"]) + } +} + +func TestFieldClashWithMsg(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("msg", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + entry := make(map[string]interface{}) + err = json.Unmarshal(b, &entry) + if err != nil { + t.Fatal("Unable to unmarshal formatted entry: ", err) + } + + if entry["fields.msg"] != "something" { + t.Fatal("fields.msg not set to original msg field") + } +} + +func TestFieldClashWithLevel(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + entry := make(map[string]interface{}) + err = json.Unmarshal(b, &entry) + if err != nil { + t.Fatal("Unable to unmarshal formatted entry: ", err) + } + + if entry["fields.level"] != "something" { + t.Fatal("fields.level not set to original level field") + } +} + +func TestJSONEntryEndsWithNewline(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + + if b[len(b)-1] != '\n' { + t.Fatal("Expected JSON log entry to end with a newline") + } +} + +func TestJSONMessageKey(t *testing.T) { + formatter := &JSONFormatter{ + FieldMap: FieldMap{ + FieldKeyMsg: "message", + }, + } + + b, err := formatter.Format(&Entry{Message: "oh hai"}) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + s := string(b) + if !(strings.Contains(s, "message") && strings.Contains(s, "oh hai")) { + t.Fatal("Expected JSON to format message key") + } +} + +func TestJSONLevelKey(t *testing.T) { + formatter := &JSONFormatter{ + FieldMap: FieldMap{ + FieldKeyLevel: "somelevel", + }, + } + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + s := string(b) + if !strings.Contains(s, "somelevel") { + t.Fatal("Expected JSON to format level key") + } +} + +func TestJSONTimeKey(t *testing.T) { + formatter := &JSONFormatter{ + FieldMap: FieldMap{ + FieldKeyTime: "timeywimey", + }, + } + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + s := string(b) + if !strings.Contains(s, "timeywimey") { + t.Fatal("Expected JSON to format time key") + } +} + +func TestJSONDisableTimestamp(t *testing.T) { + formatter := &JSONFormatter{ + DisableTimestamp: true, + } + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + s := string(b) + if strings.Contains(s, FieldKeyTime) { + t.Error("Did not prevent timestamp", s) + } +} + +func TestJSONEnableTimestamp(t *testing.T) { + formatter := &JSONFormatter{} + + b, err := formatter.Format(WithField("level", "something")) + if err != nil { + t.Fatal("Unable to format entry: ", err) + } + s := string(b) + if !strings.Contains(s, FieldKeyTime) { + t.Error("Timestamp not present", s) + } +} diff --git a/vendor/github.com/sirupsen/logrus/logger.go b/vendor/github.com/sirupsen/logrus/logger.go new file mode 100644 index 0000000..fdaf8a6 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/logger.go @@ -0,0 +1,323 @@ +package logrus + +import ( + "io" + "os" + "sync" + "sync/atomic" +) + +type Logger struct { + // The logs are `io.Copy`'d to this in a mutex. It's common to set this to a + // file, or leave it default which is `os.Stderr`. You can also set this to + // something more adventorous, such as logging to Kafka. + Out io.Writer + // Hooks for the logger instance. These allow firing events based on logging + // levels and log entries. For example, to send errors to an error tracking + // service, log to StatsD or dump the core on fatal errors. + Hooks LevelHooks + // All log entries pass through the formatter before logged to Out. The + // included formatters are `TextFormatter` and `JSONFormatter` for which + // TextFormatter is the default. In development (when a TTY is attached) it + // logs with colors, but to a file it wouldn't. You can easily implement your + // own that implements the `Formatter` interface, see the `README` or included + // formatters for examples. + Formatter Formatter + // The logging level the logger should log at. This is typically (and defaults + // to) `logrus.Info`, which allows Info(), Warn(), Error() and Fatal() to be + // logged. + Level Level + // Used to sync writing to the log. Locking is enabled by Default + mu MutexWrap + // Reusable empty entry + entryPool sync.Pool +} + +type MutexWrap struct { + lock sync.Mutex + disabled bool +} + +func (mw *MutexWrap) Lock() { + if !mw.disabled { + mw.lock.Lock() + } +} + +func (mw *MutexWrap) Unlock() { + if !mw.disabled { + mw.lock.Unlock() + } +} + +func (mw *MutexWrap) Disable() { + mw.disabled = true +} + +// Creates a new logger. Configuration should be set by changing `Formatter`, +// `Out` and `Hooks` directly on the default logger instance. You can also just +// instantiate your own: +// +// var log = &Logger{ +// Out: os.Stderr, +// Formatter: new(JSONFormatter), +// Hooks: make(LevelHooks), +// Level: logrus.DebugLevel, +// } +// +// It's recommended to make this a global instance called `log`. +func New() *Logger { + return &Logger{ + Out: os.Stderr, + Formatter: new(TextFormatter), + Hooks: make(LevelHooks), + Level: InfoLevel, + } +} + +func (logger *Logger) newEntry() *Entry { + entry, ok := logger.entryPool.Get().(*Entry) + if ok { + return entry + } + return NewEntry(logger) +} + +func (logger *Logger) releaseEntry(entry *Entry) { + logger.entryPool.Put(entry) +} + +// Adds a field to the log entry, note that it doesn't log until you call +// Debug, Print, Info, Warn, Fatal or Panic. It only creates a log entry. +// If you want multiple fields, use `WithFields`. +func (logger *Logger) WithField(key string, value interface{}) *Entry { + entry := logger.newEntry() + defer logger.releaseEntry(entry) + return entry.WithField(key, value) +} + +// Adds a struct of fields to the log entry. All it does is call `WithField` for +// each `Field`. +func (logger *Logger) WithFields(fields Fields) *Entry { + entry := logger.newEntry() + defer logger.releaseEntry(entry) + return entry.WithFields(fields) +} + +// Add an error as single field to the log entry. All it does is call +// `WithError` for the given `error`. +func (logger *Logger) WithError(err error) *Entry { + entry := logger.newEntry() + defer logger.releaseEntry(entry) + return entry.WithError(err) +} + +func (logger *Logger) Debugf(format string, args ...interface{}) { + if logger.level() >= DebugLevel { + entry := logger.newEntry() + entry.Debugf(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Infof(format string, args ...interface{}) { + if logger.level() >= InfoLevel { + entry := logger.newEntry() + entry.Infof(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Printf(format string, args ...interface{}) { + entry := logger.newEntry() + entry.Printf(format, args...) + logger.releaseEntry(entry) +} + +func (logger *Logger) Warnf(format string, args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warnf(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Warningf(format string, args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warnf(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Errorf(format string, args ...interface{}) { + if logger.level() >= ErrorLevel { + entry := logger.newEntry() + entry.Errorf(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Fatalf(format string, args ...interface{}) { + if logger.level() >= FatalLevel { + entry := logger.newEntry() + entry.Fatalf(format, args...) + logger.releaseEntry(entry) + } + Exit(1) +} + +func (logger *Logger) Panicf(format string, args ...interface{}) { + if logger.level() >= PanicLevel { + entry := logger.newEntry() + entry.Panicf(format, args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Debug(args ...interface{}) { + if logger.level() >= DebugLevel { + entry := logger.newEntry() + entry.Debug(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Info(args ...interface{}) { + if logger.level() >= InfoLevel { + entry := logger.newEntry() + entry.Info(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Print(args ...interface{}) { + entry := logger.newEntry() + entry.Info(args...) + logger.releaseEntry(entry) +} + +func (logger *Logger) Warn(args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warn(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Warning(args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warn(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Error(args ...interface{}) { + if logger.level() >= ErrorLevel { + entry := logger.newEntry() + entry.Error(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Fatal(args ...interface{}) { + if logger.level() >= FatalLevel { + entry := logger.newEntry() + entry.Fatal(args...) + logger.releaseEntry(entry) + } + Exit(1) +} + +func (logger *Logger) Panic(args ...interface{}) { + if logger.level() >= PanicLevel { + entry := logger.newEntry() + entry.Panic(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Debugln(args ...interface{}) { + if logger.level() >= DebugLevel { + entry := logger.newEntry() + entry.Debugln(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Infoln(args ...interface{}) { + if logger.level() >= InfoLevel { + entry := logger.newEntry() + entry.Infoln(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Println(args ...interface{}) { + entry := logger.newEntry() + entry.Println(args...) + logger.releaseEntry(entry) +} + +func (logger *Logger) Warnln(args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warnln(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Warningln(args ...interface{}) { + if logger.level() >= WarnLevel { + entry := logger.newEntry() + entry.Warnln(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Errorln(args ...interface{}) { + if logger.level() >= ErrorLevel { + entry := logger.newEntry() + entry.Errorln(args...) + logger.releaseEntry(entry) + } +} + +func (logger *Logger) Fatalln(args ...interface{}) { + if logger.level() >= FatalLevel { + entry := logger.newEntry() + entry.Fatalln(args...) + logger.releaseEntry(entry) + } + Exit(1) +} + +func (logger *Logger) Panicln(args ...interface{}) { + if logger.level() >= PanicLevel { + entry := logger.newEntry() + entry.Panicln(args...) + logger.releaseEntry(entry) + } +} + +//When file is opened with appending mode, it's safe to +//write concurrently to a file (within 4k message on Linux). +//In these cases user can choose to disable the lock. +func (logger *Logger) SetNoLock() { + logger.mu.Disable() +} + +func (logger *Logger) level() Level { + return Level(atomic.LoadUint32((*uint32)(&logger.Level))) +} + +func (logger *Logger) SetLevel(level Level) { + atomic.StoreUint32((*uint32)(&logger.Level), uint32(level)) +} + +func (logger *Logger) AddHook(hook Hook) { + logger.mu.Lock() + defer logger.mu.Unlock() + logger.Hooks.Add(hook) +} diff --git a/vendor/github.com/sirupsen/logrus/logger_bench_test.go b/vendor/github.com/sirupsen/logrus/logger_bench_test.go new file mode 100644 index 0000000..dd23a35 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/logger_bench_test.go @@ -0,0 +1,61 @@ +package logrus + +import ( + "os" + "testing" +) + +// smallFields is a small size data set for benchmarking +var loggerFields = Fields{ + "foo": "bar", + "baz": "qux", + "one": "two", + "three": "four", +} + +func BenchmarkDummyLogger(b *testing.B) { + nullf, err := os.OpenFile("/dev/null", os.O_WRONLY, 0666) + if err != nil { + b.Fatalf("%v", err) + } + defer nullf.Close() + doLoggerBenchmark(b, nullf, &TextFormatter{DisableColors: true}, smallFields) +} + +func BenchmarkDummyLoggerNoLock(b *testing.B) { + nullf, err := os.OpenFile("/dev/null", os.O_WRONLY|os.O_APPEND, 0666) + if err != nil { + b.Fatalf("%v", err) + } + defer nullf.Close() + doLoggerBenchmarkNoLock(b, nullf, &TextFormatter{DisableColors: true}, smallFields) +} + +func doLoggerBenchmark(b *testing.B, out *os.File, formatter Formatter, fields Fields) { + logger := Logger{ + Out: out, + Level: InfoLevel, + Formatter: formatter, + } + entry := logger.WithFields(fields) + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + entry.Info("aaa") + } + }) +} + +func doLoggerBenchmarkNoLock(b *testing.B, out *os.File, formatter Formatter, fields Fields) { + logger := Logger{ + Out: out, + Level: InfoLevel, + Formatter: formatter, + } + logger.SetNoLock() + entry := logger.WithFields(fields) + b.RunParallel(func(pb *testing.PB) { + for pb.Next() { + entry.Info("aaa") + } + }) +} diff --git a/vendor/github.com/sirupsen/logrus/logrus.go b/vendor/github.com/sirupsen/logrus/logrus.go new file mode 100644 index 0000000..dd38999 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/logrus.go @@ -0,0 +1,143 @@ +package logrus + +import ( + "fmt" + "log" + "strings" +) + +// Fields type, used to pass to `WithFields`. +type Fields map[string]interface{} + +// Level type +type Level uint32 + +// Convert the Level to a string. E.g. PanicLevel becomes "panic". +func (level Level) String() string { + switch level { + case DebugLevel: + return "debug" + case InfoLevel: + return "info" + case WarnLevel: + return "warning" + case ErrorLevel: + return "error" + case FatalLevel: + return "fatal" + case PanicLevel: + return "panic" + } + + return "unknown" +} + +// ParseLevel takes a string level and returns the Logrus log level constant. +func ParseLevel(lvl string) (Level, error) { + switch strings.ToLower(lvl) { + case "panic": + return PanicLevel, nil + case "fatal": + return FatalLevel, nil + case "error": + return ErrorLevel, nil + case "warn", "warning": + return WarnLevel, nil + case "info": + return InfoLevel, nil + case "debug": + return DebugLevel, nil + } + + var l Level + return l, fmt.Errorf("not a valid logrus Level: %q", lvl) +} + +// A constant exposing all logging levels +var AllLevels = []Level{ + PanicLevel, + FatalLevel, + ErrorLevel, + WarnLevel, + InfoLevel, + DebugLevel, +} + +// These are the different logging levels. You can set the logging level to log +// on your instance of logger, obtained with `logrus.New()`. +const ( + // PanicLevel level, highest level of severity. Logs and then calls panic with the + // message passed to Debug, Info, ... + PanicLevel Level = iota + // FatalLevel level. Logs and then calls `os.Exit(1)`. It will exit even if the + // logging level is set to Panic. + FatalLevel + // ErrorLevel level. Logs. Used for errors that should definitely be noted. + // Commonly used for hooks to send errors to an error tracking service. + ErrorLevel + // WarnLevel level. Non-critical entries that deserve eyes. + WarnLevel + // InfoLevel level. General operational entries about what's going on inside the + // application. + InfoLevel + // DebugLevel level. Usually only enabled when debugging. Very verbose logging. + DebugLevel +) + +// Won't compile if StdLogger can't be realized by a log.Logger +var ( + _ StdLogger = &log.Logger{} + _ StdLogger = &Entry{} + _ StdLogger = &Logger{} +) + +// StdLogger is what your logrus-enabled library should take, that way +// it'll accept a stdlib logger and a logrus logger. There's no standard +// interface, this is the closest we get, unfortunately. +type StdLogger interface { + Print(...interface{}) + Printf(string, ...interface{}) + Println(...interface{}) + + Fatal(...interface{}) + Fatalf(string, ...interface{}) + Fatalln(...interface{}) + + Panic(...interface{}) + Panicf(string, ...interface{}) + Panicln(...interface{}) +} + +// The FieldLogger interface generalizes the Entry and Logger types +type FieldLogger interface { + WithField(key string, value interface{}) *Entry + WithFields(fields Fields) *Entry + WithError(err error) *Entry + + Debugf(format string, args ...interface{}) + Infof(format string, args ...interface{}) + Printf(format string, args ...interface{}) + Warnf(format string, args ...interface{}) + Warningf(format string, args ...interface{}) + Errorf(format string, args ...interface{}) + Fatalf(format string, args ...interface{}) + Panicf(format string, args ...interface{}) + + Debug(args ...interface{}) + Info(args ...interface{}) + Print(args ...interface{}) + Warn(args ...interface{}) + Warning(args ...interface{}) + Error(args ...interface{}) + Fatal(args ...interface{}) + Panic(args ...interface{}) + + Debugln(args ...interface{}) + Infoln(args ...interface{}) + Println(args ...interface{}) + Warnln(args ...interface{}) + Warningln(args ...interface{}) + Errorln(args ...interface{}) + Fatalln(args ...interface{}) + Panicln(args ...interface{}) +} diff --git a/vendor/github.com/sirupsen/logrus/logrus_test.go b/vendor/github.com/sirupsen/logrus/logrus_test.go new file mode 100644 index 0000000..78cbc28 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/logrus_test.go @@ -0,0 +1,386 @@ +package logrus + +import ( + "bytes" + "encoding/json" + "strconv" + "strings" + "sync" + "testing" + + "github.com/stretchr/testify/assert" +) + +func LogAndAssertJSON(t *testing.T, log func(*Logger), assertions func(fields Fields)) { + var buffer bytes.Buffer + var fields Fields + + logger := New() + logger.Out = &buffer + logger.Formatter = new(JSONFormatter) + + log(logger) + + err := json.Unmarshal(buffer.Bytes(), &fields) + assert.Nil(t, err) + + assertions(fields) +} + +func LogAndAssertText(t *testing.T, log func(*Logger), assertions func(fields map[string]string)) { + var buffer bytes.Buffer + + logger := New() + logger.Out = &buffer + logger.Formatter = &TextFormatter{ + DisableColors: true, + } + + log(logger) + + fields := make(map[string]string) + for _, kv := range strings.Split(buffer.String(), " ") { + if !strings.Contains(kv, "=") { + continue + } + kvArr := strings.Split(kv, "=") + key := strings.TrimSpace(kvArr[0]) + val := kvArr[1] + if kvArr[1][0] == '"' { + var err error + val, err = strconv.Unquote(val) + assert.NoError(t, err) + } + fields[key] = val + } + assertions(fields) +} + +func TestPrint(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Print("test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test") + assert.Equal(t, fields["level"], "info") + }) +} + +func TestInfo(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Info("test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test") + assert.Equal(t, fields["level"], "info") + }) +} + +func TestWarn(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Warn("test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test") + assert.Equal(t, fields["level"], "warning") + }) +} + +func TestInfolnShouldAddSpacesBetweenStrings(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Infoln("test", "test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test test") + }) +} + +func TestInfolnShouldAddSpacesBetweenStringAndNonstring(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Infoln("test", 10) + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test 10") + }) +} + +func TestInfolnShouldAddSpacesBetweenTwoNonStrings(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Infoln(10, 10) + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "10 10") + }) +} + +func TestInfoShouldAddSpacesBetweenTwoNonStrings(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Infoln(10, 10) + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "10 10") + }) +} + +func TestInfoShouldNotAddSpacesBetweenStringAndNonstring(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Info("test", 10) + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test10") + }) +} + +func TestInfoShouldNotAddSpacesBetweenStrings(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.Info("test", "test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "testtest") + }) +} + +func TestWithFieldsShouldAllowAssignments(t *testing.T) { + var buffer bytes.Buffer + var fields Fields + + logger := New() + logger.Out = &buffer + logger.Formatter = new(JSONFormatter) + + localLog := logger.WithFields(Fields{ + "key1": "value1", + }) + + localLog.WithField("key2", "value2").Info("test") + err := json.Unmarshal(buffer.Bytes(), &fields) + assert.Nil(t, err) + + assert.Equal(t, "value2", fields["key2"]) + assert.Equal(t, "value1", fields["key1"]) + + buffer = bytes.Buffer{} + fields = Fields{} + localLog.Info("test") + err = json.Unmarshal(buffer.Bytes(), &fields) + assert.Nil(t, err) + + _, ok := fields["key2"] + assert.Equal(t, false, ok) + assert.Equal(t, "value1", fields["key1"]) +} + +func TestUserSuppliedFieldDoesNotOverwriteDefaults(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.WithField("msg", "hello").Info("test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test") + }) +} + +func TestUserSuppliedMsgFieldHasPrefix(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.WithField("msg", "hello").Info("test") + }, func(fields Fields) { + assert.Equal(t, fields["msg"], "test") + assert.Equal(t, fields["fields.msg"], "hello") + }) +} + +func TestUserSuppliedTimeFieldHasPrefix(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.WithField("time", "hello").Info("test") + }, func(fields Fields) { + assert.Equal(t, fields["fields.time"], "hello") + }) +} + +func TestUserSuppliedLevelFieldHasPrefix(t *testing.T) { + LogAndAssertJSON(t, func(log *Logger) { + log.WithField("level", 1).Info("test") + }, func(fields Fields) { + assert.Equal(t, fields["level"], "info") + assert.Equal(t, fields["fields.level"], 1.0) // JSON has floats only + }) +} + +func TestDefaultFieldsAreNotPrefixed(t *testing.T) { + LogAndAssertText(t, func(log *Logger) { + ll := log.WithField("herp", "derp") + ll.Info("hello") + ll.Info("bye") + }, func(fields map[string]string) { + for _, fieldName := range []string{"fields.level", "fields.time", "fields.msg"} { + if _, ok := fields[fieldName]; ok { + t.Fatalf("should not have prefixed %q: %v", fieldName, fields) + } + } + }) +} + +func TestDoubleLoggingDoesntPrefixPreviousFields(t *testing.T) { + + var buffer bytes.Buffer + var fields Fields + + logger := New() + logger.Out = &buffer + logger.Formatter = new(JSONFormatter) + + llog := logger.WithField("context", "eating raw fish") + + llog.Info("looks delicious") + + err := json.Unmarshal(buffer.Bytes(), &fields) + assert.NoError(t, err, "should have decoded first message") + assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields") + assert.Equal(t, fields["msg"], "looks delicious") + assert.Equal(t, fields["context"], "eating raw fish") + + buffer.Reset() + + llog.Warn("omg it is!") + + err = json.Unmarshal(buffer.Bytes(), &fields) + assert.NoError(t, err, "should have decoded second message") + assert.Equal(t, len(fields), 4, "should only have msg/time/level/context fields") + assert.Equal(t, fields["msg"], "omg it is!") + assert.Equal(t, fields["context"], "eating raw fish") + assert.Nil(t, fields["fields.msg"], "should not have prefixed previous `msg` entry") + +} + +func TestConvertLevelToString(t *testing.T) { + assert.Equal(t, "debug", DebugLevel.String()) + assert.Equal(t, "info", InfoLevel.String()) + assert.Equal(t, "warning", WarnLevel.String()) + assert.Equal(t, "error", ErrorLevel.String()) + assert.Equal(t, "fatal", FatalLevel.String()) + assert.Equal(t, "panic", PanicLevel.String()) +} + +func TestParseLevel(t *testing.T) { + l, err := ParseLevel("panic") + assert.Nil(t, err) + assert.Equal(t, PanicLevel, l) + + l, err = ParseLevel("PANIC") + assert.Nil(t, err) + assert.Equal(t, PanicLevel, l) + + l, err = ParseLevel("fatal") + assert.Nil(t, err) + assert.Equal(t, FatalLevel, l) + + l, err = ParseLevel("FATAL") + assert.Nil(t, err) + assert.Equal(t, FatalLevel, l) + + l, err = ParseLevel("error") + assert.Nil(t, err) + assert.Equal(t, ErrorLevel, l) + + l, err = ParseLevel("ERROR") + assert.Nil(t, err) + assert.Equal(t, ErrorLevel, l) + + l, err = ParseLevel("warn") + assert.Nil(t, err) + assert.Equal(t, WarnLevel, l) + + l, err = ParseLevel("WARN") + assert.Nil(t, err) + assert.Equal(t, WarnLevel, l) + + l, err = ParseLevel("warning") + assert.Nil(t, err) + assert.Equal(t, WarnLevel, l) + + l, err = ParseLevel("WARNING") + assert.Nil(t, err) + assert.Equal(t, WarnLevel, l) + + l, err = ParseLevel("info") + assert.Nil(t, err) + assert.Equal(t, InfoLevel, l) + + l, err = ParseLevel("INFO") + assert.Nil(t, err) + assert.Equal(t, InfoLevel, l) + + l, err = ParseLevel("debug") + assert.Nil(t, err) + assert.Equal(t, DebugLevel, l) + + l, err = ParseLevel("DEBUG") + assert.Nil(t, err) + assert.Equal(t, DebugLevel, l) + + l, err = ParseLevel("invalid") + assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error()) +} + +func TestGetSetLevelRace(t *testing.T) { + wg := sync.WaitGroup{} + for i := 0; i < 100; i++ { + wg.Add(1) + go func(i int) { + defer wg.Done() + if i%2 == 0 { + SetLevel(InfoLevel) + } else { + GetLevel() + } + }(i) + + } + wg.Wait() +} + +func TestLoggingRace(t *testing.T) { + logger := New() + + var wg sync.WaitGroup + wg.Add(100) + + for i := 0; i < 100; i++ { + go func() { + logger.Info("info") + wg.Done() + }() + } + wg.Wait() +} + +// Compile test +func TestLogrusInterface(t *testing.T) { + var buffer bytes.Buffer + fn := func(l FieldLogger) { + b := l.WithField("key", "value") + b.Debug("Test") + } + // test logger + logger := New() + logger.Out = &buffer + fn(logger) + + // test Entry + e := logger.WithField("another", "value") + fn(e) +} + +// Implements io.Writer using channels for synchronization, so we can wait on +// the Entry.Writer goroutine to write in a non-racey way. This does assume that +// there is a single call to Logger.Out for each message. +type channelWriter chan []byte + +func (cw channelWriter) Write(p []byte) (int, error) { + cw <- p + return len(p), nil +} + +func TestEntryWriter(t *testing.T) { + cw := channelWriter(make(chan []byte, 1)) + log := New() + log.Out = cw + log.Formatter = new(JSONFormatter) + log.WithField("foo", "bar").WriterLevel(WarnLevel).Write([]byte("hello\n")) + + bs := <-cw + var fields Fields + err := json.Unmarshal(bs, &fields) + assert.Nil(t, err) + assert.Equal(t, fields["foo"], "bar") + assert.Equal(t, fields["level"], "warning") +} diff --git a/vendor/github.com/sirupsen/logrus/terminal_bsd.go b/vendor/github.com/sirupsen/logrus/terminal_bsd.go new file mode 100644 index 0000000..d7b3893 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/terminal_bsd.go @@ -0,0 +1,10 @@ +// +build darwin freebsd openbsd netbsd dragonfly +// +build !appengine + +package logrus + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TIOCGETA + +type Termios unix.Termios diff --git a/vendor/github.com/sirupsen/logrus/terminal_linux.go b/vendor/github.com/sirupsen/logrus/terminal_linux.go new file mode 100644 index 0000000..88d7298 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/terminal_linux.go @@ -0,0 +1,14 @@ +// Based on ssh/terminal: +// Copyright 2013 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !appengine + +package logrus + +import "golang.org/x/sys/unix" + +const ioctlReadTermios = unix.TCGETS + +type Termios unix.Termios diff --git a/vendor/github.com/sirupsen/logrus/text_formatter.go b/vendor/github.com/sirupsen/logrus/text_formatter.go new file mode 100644 index 0000000..be412aa --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/text_formatter.go @@ -0,0 +1,191 @@ +package logrus + +import ( + "bytes" + "fmt" + "io" + "os" + "sort" + "strings" + "sync" + "time" + + "golang.org/x/crypto/ssh/terminal" +) + +const ( + nocolor = 0 + red = 31 + green = 32 + yellow = 33 + blue = 36 + gray = 37 +) + +var ( + baseTimestamp time.Time +) + +func init() { + baseTimestamp = time.Now() +} + +// TextFormatter formats logs into text +type TextFormatter struct { + // Set to true to bypass checking for a TTY before outputting colors. + ForceColors bool + + // Force disabling colors. + DisableColors bool + + // Disable timestamp logging. useful when output is redirected to logging + // system that already adds timestamps. + DisableTimestamp bool + + // Enable logging the full timestamp when a TTY is attached instead of just + // the time passed since beginning of execution. + FullTimestamp bool + + // TimestampFormat to use for display when a full timestamp is printed + TimestampFormat string + + // The fields are sorted by default for a consistent output. For applications + // that log extremely frequently and don't use the JSON formatter this may not + // be desired. + DisableSorting bool + + // QuoteEmptyFields will wrap empty fields in quotes if true + QuoteEmptyFields bool + + // Whether the logger's out is to a terminal + isTerminal bool + + sync.Once +} + +func (f *TextFormatter) init(entry *Entry) { + if entry.Logger != nil { + f.isTerminal = f.checkIfTerminal(entry.Logger.Out) + } +} + +func (f *TextFormatter) checkIfTerminal(w io.Writer) bool { + switch v := w.(type) { + case *os.File: + return terminal.IsTerminal(int(v.Fd())) + default: + return false + } +} + +// Format renders a single log entry +func (f *TextFormatter) Format(entry *Entry) ([]byte, error) { + var b *bytes.Buffer + keys := make([]string, 0, len(entry.Data)) + for k := range entry.Data { + keys = append(keys, k) + } + + if !f.DisableSorting { + sort.Strings(keys) + } + if entry.Buffer != nil { + b = entry.Buffer + } else { + b = &bytes.Buffer{} + } + + prefixFieldClashes(entry.Data) + + f.Do(func() { f.init(entry) }) + + isColored := (f.ForceColors || f.isTerminal) && !f.DisableColors + + timestampFormat := f.TimestampFormat + if timestampFormat == "" { + timestampFormat = defaultTimestampFormat + } + if isColored { + f.printColored(b, entry, keys, timestampFormat) + } else { + if !f.DisableTimestamp { + f.appendKeyValue(b, "time", entry.Time.Format(timestampFormat)) + } + f.appendKeyValue(b, "level", entry.Level.String()) + if entry.Message != "" { + f.appendKeyValue(b, "msg", entry.Message) + } + for _, key := range keys { + f.appendKeyValue(b, key, entry.Data[key]) + } + } + + b.WriteByte('\n') + return b.Bytes(), nil +} + +func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []string, timestampFormat string) { + var levelColor int + switch entry.Level { + case DebugLevel: + levelColor = gray + case WarnLevel: + levelColor = yellow + case ErrorLevel, FatalLevel, PanicLevel: + levelColor = red + default: + levelColor = blue + } + + levelText := strings.ToUpper(entry.Level.String())[0:4] + + if f.DisableTimestamp { + fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m %-44s ", levelColor, levelText, entry.Message) + } else if !f.FullTimestamp { + fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, int(entry.Time.Sub(baseTimestamp)/time.Second), entry.Message) + } else { + fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %-44s ", levelColor, levelText, entry.Time.Format(timestampFormat), entry.Message) + } + for _, k := range keys { + v := entry.Data[k] + fmt.Fprintf(b, " \x1b[%dm%s\x1b[0m=", levelColor, k) + f.appendValue(b, v) + } +} + +func (f *TextFormatter) needsQuoting(text string) bool { + if f.QuoteEmptyFields && len(text) == 0 { + return true + } + for _, ch := range text { + if !((ch >= 'a' && ch <= 'z') || + (ch >= 'A' && ch <= 'Z') || + (ch >= '0' && ch <= '9') || + ch == '-' || ch == '.' || ch == '_' || ch == '/' || ch == '@' || ch == '^' || ch == '+') { + return true + } + } + return false +} + +func (f *TextFormatter) appendKeyValue(b *bytes.Buffer, key string, value interface{}) { + if b.Len() > 0 { + b.WriteByte(' ') + } + b.WriteString(key) + b.WriteByte('=') + f.appendValue(b, value) +} + +func (f *TextFormatter) appendValue(b *bytes.Buffer, value interface{}) { + stringVal, ok := value.(string) + if !ok { + stringVal = fmt.Sprint(value) + } + + if !f.needsQuoting(stringVal) { + b.WriteString(stringVal) + } else { + b.WriteString(fmt.Sprintf("%q", stringVal)) + } +} diff --git a/vendor/github.com/sirupsen/logrus/text_formatter_test.go b/vendor/github.com/sirupsen/logrus/text_formatter_test.go new file mode 100644 index 0000000..d93b931 --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/text_formatter_test.go @@ -0,0 +1,141 @@ +package logrus + +import ( + "bytes" + "errors" + "fmt" + "strings" + "testing" + "time" +) + +func TestFormatting(t *testing.T) { + tf := &TextFormatter{DisableColors: true} + + testCases := []struct { + value string + expected string + }{ + {`foo`, "time=\"0001-01-01T00:00:00Z\" level=panic test=foo\n"}, + } + + for _, tc := range testCases { + b, _ := tf.Format(WithField("test", tc.value)) + + if string(b) != tc.expected { + t.Errorf("formatting expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) + } + } +} + +func TestQuoting(t *testing.T) { + tf := &TextFormatter{DisableColors: true} + + checkQuoting := func(q bool, value interface{}) { + b, _ := tf.Format(WithField("test", value)) + idx := bytes.Index(b, ([]byte)("test=")) + cont := bytes.Contains(b[idx+5:], []byte("\"")) + if cont != q { + if q { + t.Errorf("quoting expected for: %#v", value) + } else { + t.Errorf("quoting not expected for: %#v", value) + } + } + } + + checkQuoting(false, "") + checkQuoting(false, "abcd") + checkQuoting(false, "v1.0") + checkQuoting(false, "1234567890") + checkQuoting(false, "/foobar") + checkQuoting(false, "foo_bar") + checkQuoting(false, "foo@bar") + checkQuoting(false, "foobar^") + checkQuoting(false, "+/-_^@f.oobar") + checkQuoting(true, "foobar$") + checkQuoting(true, "&foobar") + checkQuoting(true, "x y") + checkQuoting(true, "x,y") + checkQuoting(false, errors.New("invalid")) + checkQuoting(true, errors.New("invalid argument")) + + // Test for quoting empty fields. + tf.QuoteEmptyFields = true + checkQuoting(true, "") + checkQuoting(false, "abcd") + checkQuoting(true, errors.New("invalid argument")) +} + +func TestEscaping(t *testing.T) { + tf := &TextFormatter{DisableColors: true} + + testCases := []struct { + value string + expected string + }{ + {`ba"r`, `ba\"r`}, + {`ba'r`, `ba'r`}, + } + + for _, tc := range testCases { + b, _ := tf.Format(WithField("test", tc.value)) + if !bytes.Contains(b, []byte(tc.expected)) { + t.Errorf("escaping expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) + } + } +} + +func TestEscaping_Interface(t *testing.T) { + tf := &TextFormatter{DisableColors: true} + + ts := time.Now() + + testCases := []struct { + value interface{} + expected string + }{ + {ts, fmt.Sprintf("\"%s\"", ts.String())}, + {errors.New("error: something went wrong"), "\"error: something went wrong\""}, + } + + for _, tc := range testCases { + b, _ := tf.Format(WithField("test", tc.value)) + if !bytes.Contains(b, []byte(tc.expected)) { + t.Errorf("escaping expected for %q (result was %q instead of %q)", tc.value, string(b), tc.expected) + } + } +} + +func TestTimestampFormat(t *testing.T) { + checkTimeStr := func(format string) { + customFormatter := &TextFormatter{DisableColors: true, TimestampFormat: format} + customStr, _ := customFormatter.Format(WithField("test", "test")) + timeStart := bytes.Index(customStr, ([]byte)("time=")) + timeEnd := bytes.Index(customStr, ([]byte)("level=")) + timeStr := customStr[timeStart+5+len("\"") : timeEnd-1-len("\"")] + if format == "" { + format = time.RFC3339 + } + _, e := time.Parse(format, (string)(timeStr)) + if e != nil { + t.Errorf("time string \"%s\" did not match provided time format \"%s\": %s", timeStr, format, e) + } + } + + checkTimeStr("2006-01-02T15:04:05.000000000Z07:00") + checkTimeStr("Mon Jan _2 15:04:05 2006") + checkTimeStr("") +} + +func TestDisableTimestampWithColoredOutput(t *testing.T) { + tf := &TextFormatter{DisableTimestamp: true, ForceColors: true} + + b, _ := tf.Format(WithField("test", "test")) + if strings.Contains(string(b), "[0000]") { + t.Error("timestamp not expected when DisableTimestamp is true") + } +} + +// TODO add tests for sorting etc., this requires a parser for the text +// formatter output. diff --git a/vendor/github.com/sirupsen/logrus/writer.go b/vendor/github.com/sirupsen/logrus/writer.go new file mode 100644 index 0000000..7bdebed --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/writer.go @@ -0,0 +1,62 @@ +package logrus + +import ( + "bufio" + "io" + "runtime" +) + +func (logger *Logger) Writer() *io.PipeWriter { + return logger.WriterLevel(InfoLevel) +} + +func (logger *Logger) WriterLevel(level Level) *io.PipeWriter { + return NewEntry(logger).WriterLevel(level) +} + +func (entry *Entry) Writer() *io.PipeWriter { + return entry.WriterLevel(InfoLevel) +} + +func (entry *Entry) WriterLevel(level Level) *io.PipeWriter { + reader, writer := io.Pipe() + + var printFunc func(args ...interface{}) + + switch level { + case DebugLevel: + printFunc = entry.Debug + case InfoLevel: + printFunc = entry.Info + case WarnLevel: + printFunc = entry.Warn + case ErrorLevel: + printFunc = entry.Error + case FatalLevel: + printFunc = entry.Fatal + case PanicLevel: + printFunc = entry.Panic + default: + printFunc = entry.Print + } + + go entry.writerScanner(reader, printFunc) + runtime.SetFinalizer(writer, writerFinalizer) + + return writer +} + +func (entry *Entry) writerScanner(reader *io.PipeReader, printFunc func(args ...interface{})) { + scanner := bufio.NewScanner(reader) + for scanner.Scan() { + printFunc(scanner.Text()) + } + if err := scanner.Err(); err != nil { + entry.Errorf("Error while reading from Writer: %s", err) + } + reader.Close() +} + +func writerFinalizer(writer *io.PipeWriter) { + writer.Close() +} diff --git a/vendor/github.com/smartystreets/goconvey/.gitattributes b/vendor/github.com/smartystreets/goconvey/.gitattributes new file mode 100644 index 0000000..bc2c94a --- /dev/null +++ b/vendor/github.com/smartystreets/goconvey/.gitattributes @@ -0,0 +1 @@ +web/client/resources/js/lib/* linguist-vendored diff --git a/vendor/golang.org/x/crypto/README.md b/vendor/golang.org/x/crypto/README.md new file mode 100644 index 0000000..c9d6fec --- /dev/null +++ b/vendor/golang.org/x/crypto/README.md @@ -0,0 +1,21 @@ +# Go Cryptography + +This repository holds supplementary Go cryptography libraries. + +## Download/Install + +The easiest way to install is to run `go get -u golang.org/x/crypto/...`. You +can also manually git clone the repository to `$GOPATH/src/golang.org/x/crypto`. + +## Report Issues / Send Patches + +This repository uses Gerrit for code changes. To learn how to submit changes to +this repository, see https://golang.org/doc/contribute.html. + +The main issue tracker for the crypto repository is located at +https://github.com/golang/go/issues. Prefix your issue with "x/crypto:" in the +subject line, so it is easy to find. + +Note that contributions to the cryptography package receive additional scrutiny +due to their sensitive nature. Patches may take longer than normal to receive +feedback. diff --git a/vendor/golang.org/x/crypto/md4/example_test.go b/vendor/golang.org/x/crypto/md4/example_test.go new file mode 100644 index 0000000..db3f59b --- /dev/null +++ b/vendor/golang.org/x/crypto/md4/example_test.go @@ -0,0 +1,20 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package md4_test + +import ( + "fmt" + "io" + + "golang.org/x/crypto/md4" +) + +func ExampleNew() { + h := md4.New() + data := "These pretzels are making me thirsty." + io.WriteString(h, data) + fmt.Printf("%x", h.Sum(nil)) + // Output: 48c4e365090b30a32f084c4888deceaa +} diff --git a/vendor/golang.org/x/crypto/nacl/auth/auth.go b/vendor/golang.org/x/crypto/nacl/auth/auth.go new file mode 100644 index 0000000..0835d3b --- /dev/null +++ b/vendor/golang.org/x/crypto/nacl/auth/auth.go @@ -0,0 +1,58 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +/* +Package auth authenticates a message using a secret key. + +The Sum function, viewed as a function of the message for a uniform random +key, is designed to meet the standard notion of unforgeability. This means +that an attacker cannot find authenticators for any messages not authenticated +by the sender, even if the attacker has adaptively influenced the messages +authenticated by the sender. For a formal definition see, e.g., Section 2.4 +of Bellare, Kilian, and Rogaway, "The security of the cipher block chaining +message authentication code," Journal of Computer and System Sciences 61 (2000), +362–399; http://www-cse.ucsd.edu/~mihir/papers/cbc.html. + +auth does not make any promises regarding "strong" unforgeability; perhaps +one valid authenticator can be converted into another valid authenticator for +the same message. NaCl also does not make any promises regarding "truncated +unforgeability." + +This package is interoperable with NaCl: https://nacl.cr.yp.to/auth.html. +*/ +package auth + +import ( + "crypto/hmac" + "crypto/sha512" +) + +const ( + // Size is the size, in bytes, of an authenticated digest. + Size = 32 + // KeySize is the size, in bytes, of an authentication key. + KeySize = 32 +) + +// Sum generates an authenticator for m using a secret key and returns the +// 32-byte digest. +func Sum(m []byte, key *[KeySize]byte) *[Size]byte { + mac := hmac.New(sha512.New, key[:]) + mac.Write(m) + out := new([KeySize]byte) + copy(out[:], mac.Sum(nil)[:Size]) + return out +} + +// Verify checks that digest is a valid authenticator of message m under the +// given secret key. Verify does not leak timing information. +func Verify(digest []byte, m []byte, key *[32]byte) bool { + if len(digest) != Size { + return false + } + mac := hmac.New(sha512.New, key[:]) + mac.Write(m) + expectedMAC := mac.Sum(nil) // first 256 bits of 512-bit sum + return hmac.Equal(digest, expectedMAC[:Size]) +} diff --git a/vendor/golang.org/x/crypto/nacl/auth/auth_test.go b/vendor/golang.org/x/crypto/nacl/auth/auth_test.go new file mode 100644 index 0000000..92074b5 --- /dev/null +++ b/vendor/golang.org/x/crypto/nacl/auth/auth_test.go @@ -0,0 +1,172 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package auth + +import ( + "bytes" + rand "crypto/rand" + mrand "math/rand" + "testing" +) + +// Test cases are from RFC 4231, and match those present in the tests directory +// of the download here: https://nacl.cr.yp.to/install.html +var testCases = []struct { + key [32]byte + msg []byte + out [32]byte +}{ + { + key: [32]byte{ + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, + 0x0b, 0x0b, 0x0b, 0x0b, + }, + msg: []byte("Hi There"), + out: [32]byte{ + 0x87, 0xaa, 0x7c, 0xde, 0xa5, 0xef, 0x61, 0x9d, + 0x4f, 0xf0, 0xb4, 0x24, 0x1a, 0x1d, 0x6c, 0xb0, + 0x23, 0x79, 0xf4, 0xe2, 0xce, 0x4e, 0xc2, 0x78, + 0x7a, 0xd0, 0xb3, 0x05, 0x45, 0xe1, 0x7c, 0xde, + }, + }, + { + key: [32]byte{'J', 'e', 'f', 'e'}, + msg: []byte("what do ya want for nothing?"), + out: [32]byte{ + 0x16, 0x4b, 0x7a, 0x7b, 0xfc, 0xf8, 0x19, 0xe2, + 0xe3, 0x95, 0xfb, 0xe7, 0x3b, 0x56, 0xe0, 0xa3, + 0x87, 0xbd, 0x64, 0x22, 0x2e, 0x83, 0x1f, 0xd6, + 0x10, 0x27, 0x0c, 0xd7, 0xea, 0x25, 0x05, 0x54, + }, + }, + { + key: [32]byte{ + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, + 0xaa, 0xaa, 0xaa, 0xaa, + }, + msg: []byte{ // 50 bytes of 0xdd + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, + 0xdd, 0xdd, + }, + out: [32]byte{ + 0xfa, 0x73, 0xb0, 0x08, 0x9d, 0x56, 0xa2, 0x84, + 0xef, 0xb0, 0xf0, 0x75, 0x6c, 0x89, 0x0b, 0xe9, + 0xb1, 0xb5, 0xdb, 0xdd, 0x8e, 0xe8, 0x1a, 0x36, + 0x55, 0xf8, 0x3e, 0x33, 0xb2, 0x27, 0x9d, 0x39, + }, + }, + { + key: [32]byte{ + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, + 0x19, + }, + msg: []byte{ + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, + 0xcd, 0xcd, + }, + out: [32]byte{ + 0xb0, 0xba, 0x46, 0x56, 0x37, 0x45, 0x8c, 0x69, + 0x90, 0xe5, 0xa8, 0xc5, 0xf6, 0x1d, 0x4a, 0xf7, + 0xe5, 0x76, 0xd9, 0x7f, 0xf9, 0x4b, 0x87, 0x2d, + 0xe7, 0x6f, 0x80, 0x50, 0x36, 0x1e, 0xe3, 0xdb, + }, + }, +} + +func TestSum(t *testing.T) { + for i, test := range testCases { + tag := Sum(test.msg, &test.key) + if !bytes.Equal(tag[:], test.out[:]) { + t.Errorf("#%d: Sum: got\n%x\nwant\n%x", i, tag, test.out) + } + } +} + +func TestVerify(t *testing.T) { + wrongMsg := []byte("unknown msg") + + for i, test := range testCases { + if !Verify(test.out[:], test.msg, &test.key) { + t.Errorf("#%d: Verify(%x, %q, %x) failed", i, test.out, test.msg, test.key) + } + if Verify(test.out[:], wrongMsg, &test.key) { + t.Errorf("#%d: Verify(%x, %q, %x) unexpectedly passed", i, test.out, wrongMsg, test.key) + } + } +} + +func TestStress(t *testing.T) { + if testing.Short() { + t.Skip("exhaustiveness test") + } + + var key [32]byte + msg := make([]byte, 10000) + prng := mrand.New(mrand.NewSource(0)) + + // copied from tests/auth5.c in nacl + for i := 0; i < 10000; i++ { + if _, err := rand.Read(key[:]); err != nil { + t.Fatal(err) + } + if _, err := rand.Read(msg[:i]); err != nil { + t.Fatal(err) + } + tag := Sum(msg[:i], &key) + if !Verify(tag[:], msg[:i], &key) { + t.Errorf("#%d: unexpected failure from Verify", i) + } + if i > 0 { + msgIndex := prng.Intn(i) + oldMsgByte := msg[msgIndex] + msg[msgIndex] += byte(1 + prng.Intn(255)) + if Verify(tag[:], msg[:i], &key) { + t.Errorf("#%d: unexpected success from Verify after corrupting message", i) + } + msg[msgIndex] = oldMsgByte + + tag[prng.Intn(len(tag))] += byte(1 + prng.Intn(255)) + if Verify(tag[:], msg[:i], &key) { + t.Errorf("#%d: unexpected success from Verify after corrupting authenticator", i) + } + } + } +} + +func BenchmarkAuth(b *testing.B) { + var key [32]byte + if _, err := rand.Read(key[:]); err != nil { + b.Fatal(err) + } + buf := make([]byte, 1024) + if _, err := rand.Read(buf[:]); err != nil { + b.Fatal(err) + } + + b.SetBytes(int64(len(buf))) + b.ReportAllocs() + b.ResetTimer() + + for i := 0; i < b.N; i++ { + tag := Sum(buf, &key) + if Verify(tag[:], buf, &key) == false { + b.Fatal("unexpected failure from Verify") + } + } +} diff --git a/vendor/golang.org/x/crypto/nacl/auth/example_test.go b/vendor/golang.org/x/crypto/nacl/auth/example_test.go new file mode 100644 index 0000000..02a2cd6 --- /dev/null +++ b/vendor/golang.org/x/crypto/nacl/auth/example_test.go @@ -0,0 +1,36 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package auth_test + +import ( + "encoding/hex" + "fmt" + + "golang.org/x/crypto/nacl/auth" +) + +func Example() { + // Load your secret key from a safe place and reuse it across multiple + // Sum calls. (Obviously don't use this example key for anything + // real.) If you want to convert a passphrase to a key, use a suitable + // package like bcrypt or scrypt. + secretKeyBytes, err := hex.DecodeString("6368616e676520746869732070617373776f726420746f206120736563726574") + if err != nil { + panic(err) + } + + var secretKey [32]byte + copy(secretKey[:], secretKeyBytes) + + mac := auth.Sum([]byte("hello world"), &secretKey) + fmt.Printf("%x\n", *mac) + result := auth.Verify(mac[:], []byte("hello world"), &secretKey) + fmt.Println(result) + badResult := auth.Verify(mac[:], []byte("different message"), &secretKey) + fmt.Println(badResult) + // Output: eca5a521f3d77b63f567fb0cb6f5f2d200641bc8dada42f60c5f881260c30317 + // true + // false +} diff --git a/vendor/golang.org/x/net/context/go19.go b/vendor/golang.org/x/net/context/go19.go new file mode 100644 index 0000000..d88bd1d --- /dev/null +++ b/vendor/golang.org/x/net/context/go19.go @@ -0,0 +1,20 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build go1.9 + +package context + +import "context" // standard library's context, as of Go 1.7 + +// A Context carries a deadline, a cancelation signal, and other values across +// API boundaries. +// +// Context's methods may be called by multiple goroutines simultaneously. +type Context = context.Context + +// A CancelFunc tells an operation to abandon its work. +// A CancelFunc does not wait for the work to stop. +// After the first call, subsequent calls to a CancelFunc do nothing. +type CancelFunc = context.CancelFunc diff --git a/vendor/golang.org/x/net/context/pre_go19.go b/vendor/golang.org/x/net/context/pre_go19.go new file mode 100644 index 0000000..b105f80 --- /dev/null +++ b/vendor/golang.org/x/net/context/pre_go19.go @@ -0,0 +1,109 @@ +// Copyright 2014 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !go1.9 + +package context + +import "time" + +// A Context carries a deadline, a cancelation signal, and other values across +// API boundaries. +// +// Context's methods may be called by multiple goroutines simultaneously. +type Context interface { + // Deadline returns the time when work done on behalf of this context + // should be canceled. Deadline returns ok==false when no deadline is + // set. Successive calls to Deadline return the same results. + Deadline() (deadline time.Time, ok bool) + + // Done returns a channel that's closed when work done on behalf of this + // context should be canceled. Done may return nil if this context can + // never be canceled. Successive calls to Done return the same value. + // + // WithCancel arranges for Done to be closed when cancel is called; + // WithDeadline arranges for Done to be closed when the deadline + // expires; WithTimeout arranges for Done to be closed when the timeout + // elapses. + // + // Done is provided for use in select statements: + // + // // Stream generates values with DoSomething and sends them to out + // // until DoSomething returns an error or ctx.Done is closed. + // func Stream(ctx context.Context, out chan<- Value) error { + // for { + // v, err := DoSomething(ctx) + // if err != nil { + // return err + // } + // select { + // case <-ctx.Done(): + // return ctx.Err() + // case out <- v: + // } + // } + // } + // + // See http://blog.golang.org/pipelines for more examples of how to use + // a Done channel for cancelation. + Done() <-chan struct{} + + // Err returns a non-nil error value after Done is closed. Err returns + // Canceled if the context was canceled or DeadlineExceeded if the + // context's deadline passed. No other values for Err are defined. + // After Done is closed, successive calls to Err return the same value. + Err() error + + // Value returns the value associated with this context for key, or nil + // if no value is associated with key. Successive calls to Value with + // the same key returns the same result. + // + // Use context values only for request-scoped data that transits + // processes and API boundaries, not for passing optional parameters to + // functions. + // + // A key identifies a specific value in a Context. Functions that wish + // to store values in Context typically allocate a key in a global + // variable then use that key as the argument to context.WithValue and + // Context.Value. A key can be any type that supports equality; + // packages should define keys as an unexported type to avoid + // collisions. + // + // Packages that define a Context key should provide type-safe accessors + // for the values stores using that key: + // + // // Package user defines a User type that's stored in Contexts. + // package user + // + // import "golang.org/x/net/context" + // + // // User is the type of value stored in the Contexts. + // type User struct {...} + // + // // key is an unexported type for keys defined in this package. + // // This prevents collisions with keys defined in other packages. + // type key int + // + // // userKey is the key for user.User values in Contexts. It is + // // unexported; clients use user.NewContext and user.FromContext + // // instead of using this key directly. + // var userKey key = 0 + // + // // NewContext returns a new Context that carries value u. + // func NewContext(ctx context.Context, u *User) context.Context { + // return context.WithValue(ctx, userKey, u) + // } + // + // // FromContext returns the User value stored in ctx, if any. + // func FromContext(ctx context.Context) (*User, bool) { + // u, ok := ctx.Value(userKey).(*User) + // return u, ok + // } + Value(key interface{}) interface{} +} + +// A CancelFunc tells an operation to abandon its work. +// A CancelFunc does not wait for the work to stop. +// After the first call, subsequent calls to a CancelFunc do nothing. +type CancelFunc func() diff --git a/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s new file mode 100644 index 0000000..469bfa1 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/asm_openbsd_arm.s @@ -0,0 +1,29 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build !gccgo + +#include "textflag.h" + +// +// System call support for ARM, OpenBSD +// + +// Just jump to package syscall's implementation for all these functions. +// The runtime may know about them. + +TEXT ·Syscall(SB),NOSPLIT,$0-28 + B syscall·Syscall(SB) + +TEXT ·Syscall6(SB),NOSPLIT,$0-40 + B syscall·Syscall6(SB) + +TEXT ·Syscall9(SB),NOSPLIT,$0-52 + B syscall·Syscall9(SB) + +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + B syscall·RawSyscall(SB) + +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + B syscall·RawSyscall6(SB) diff --git a/vendor/golang.org/x/sys/unix/cap_freebsd.go b/vendor/golang.org/x/sys/unix/cap_freebsd.go new file mode 100644 index 0000000..83b6bce --- /dev/null +++ b/vendor/golang.org/x/sys/unix/cap_freebsd.go @@ -0,0 +1,195 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build freebsd + +package unix + +import ( + errorspkg "errors" + "fmt" +) + +// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c + +const ( + // This is the version of CapRights this package understands. See C implementation for parallels. + capRightsGoVersion = CAP_RIGHTS_VERSION_00 + capArSizeMin = CAP_RIGHTS_VERSION_00 + 2 + capArSizeMax = capRightsGoVersion + 2 +) + +var ( + bit2idx = []int{ + -1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + } +) + +func capidxbit(right uint64) int { + return int((right >> 57) & 0x1f) +} + +func rightToIndex(right uint64) (int, error) { + idx := capidxbit(right) + if idx < 0 || idx >= len(bit2idx) { + return -2, fmt.Errorf("index for right 0x%x out of range", right) + } + return bit2idx[idx], nil +} + +func caprver(right uint64) int { + return int(right >> 62) +} + +func capver(rights *CapRights) int { + return caprver(rights.Rights[0]) +} + +func caparsize(rights *CapRights) int { + return capver(rights) + 2 +} + +// CapRightsSet sets the permissions in setrights in rights. +func CapRightsSet(rights *CapRights, setrights []uint64) error { + // This is essentially a copy of cap_rights_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errorspkg.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch") + } + rights.Rights[i] |= right + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsClear clears the permissions in clearrights from rights. +func CapRightsClear(rights *CapRights, clearrights []uint64) error { + // This is essentially a copy of cap_rights_vclear() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return errorspkg.New("bad rights size") + } + + for _, right := range clearrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return err + } + if i >= n { + return errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch") + } + rights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF) + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return errorspkg.New("index mismatch (after assign)") + } + } + + return nil +} + +// CapRightsIsSet checks whether all the permissions in setrights are present in rights. +func CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) { + // This is essentially a copy of cap_rights_is_vset() + if capver(rights) != CAP_RIGHTS_VERSION_00 { + return false, fmt.Errorf("bad rights version %d", capver(rights)) + } + + n := caparsize(rights) + if n < capArSizeMin || n > capArSizeMax { + return false, errorspkg.New("bad rights size") + } + + for _, right := range setrights { + if caprver(right) != CAP_RIGHTS_VERSION_00 { + return false, errorspkg.New("bad right version") + } + i, err := rightToIndex(right) + if err != nil { + return false, err + } + if i >= n { + return false, errorspkg.New("index overflow") + } + if capidxbit(rights.Rights[i]) != capidxbit(right) { + return false, errorspkg.New("index mismatch") + } + if (rights.Rights[i] & right) != right { + return false, nil + } + } + + return true, nil +} + +func capright(idx uint64, bit uint64) uint64 { + return ((1 << (57 + idx)) | bit) +} + +// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights. +// See man cap_rights_init(3) and rights(4). +func CapRightsInit(rights []uint64) (*CapRights, error) { + var r CapRights + r.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0) + r.Rights[1] = capright(1, 0) + + err := CapRightsSet(&r, rights) + if err != nil { + return nil, err + } + return &r, nil +} + +// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights. +// The capability rights on fd can never be increased by CapRightsLimit. +// See man cap_rights_limit(2) and rights(4). +func CapRightsLimit(fd uintptr, rights *CapRights) error { + return capRightsLimit(int(fd), rights) +} + +// CapRightsGet returns a CapRights structure containing the operations permitted on fd. +// See man cap_rights_get(3) and rights(4). +func CapRightsGet(fd uintptr) (*CapRights, error) { + r, err := CapRightsInit(nil) + if err != nil { + return nil, err + } + err = capRightsGet(capRightsGoVersion, int(fd), r) + if err != nil { + return nil, err + } + return r, nil +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux.go b/vendor/golang.org/x/sys/unix/dev_linux.go new file mode 100644 index 0000000..c902c39 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_linux.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Functions to access/create device major and minor numbers matching the +// encoding used by the Linux kernel and glibc. +// +// The information below is extracted and adapted from bits/sysmacros.h in the +// glibc sources: +// +// dev_t in glibc is 64-bit, with 32-bit major and minor numbers. glibc's +// default encoding is MMMM Mmmm mmmM MMmm, where M is a hex digit of the major +// number and m is a hex digit of the minor number. This is backward compatible +// with legacy systems where dev_t is 16 bits wide, encoded as MMmm. It is also +// backward compatible with the Linux kernel, which for some architectures uses +// 32-bit dev_t, encoded as mmmM MMmm. + +package unix + +// Major returns the major component of a Linux device number. +func Major(dev uint64) uint32 { + major := uint32((dev & 0x00000000000fff00) >> 8) + major |= uint32((dev & 0xfffff00000000000) >> 32) + return major +} + +// Minor returns the minor component of a Linux device number. +func Minor(dev uint64) uint32 { + minor := uint32((dev & 0x00000000000000ff) >> 0) + minor |= uint32((dev & 0x00000ffffff00000) >> 12) + return minor +} + +// Mkdev returns a Linux device number generated from the given major and minor +// components. +func Mkdev(major, minor uint32) uint64 { + dev := uint64((major & 0x00000fff) << 8) + dev |= uint64((major & 0xfffff000) << 32) + dev |= uint64((minor & 0x000000ff) << 0) + dev |= uint64((minor & 0xffffff00) << 12) + return dev +} diff --git a/vendor/golang.org/x/sys/unix/dev_linux_test.go b/vendor/golang.org/x/sys/unix/dev_linux_test.go new file mode 100644 index 0000000..6e001f3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/dev_linux_test.go @@ -0,0 +1,51 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix_test + +import ( + "fmt" + "testing" + + "golang.org/x/sys/unix" +) + +func TestDevices(t *testing.T) { + testCases := []struct { + path string + major uint32 + minor uint32 + }{ + // well known major/minor numbers according to + // https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/admin-guide/devices.txt + {"/dev/null", 1, 3}, + {"/dev/zero", 1, 5}, + {"/dev/random", 1, 8}, + {"/dev/full", 1, 7}, + {"/dev/urandom", 1, 9}, + {"/dev/tty", 5, 0}, + } + for _, tc := range testCases { + t.Run(fmt.Sprintf("%s %v:%v", tc.path, tc.major, tc.minor), func(t *testing.T) { + var stat unix.Stat_t + err := unix.Stat(tc.path, &stat) + if err != nil { + t.Errorf("failed to stat device: %v", err) + return + } + + dev := uint64(stat.Rdev) + if unix.Major(dev) != tc.major { + t.Errorf("for %s Major(%#x) == %d, want %d", tc.path, dev, unix.Major(dev), tc.major) + } + if unix.Minor(dev) != tc.minor { + t.Errorf("for %s Minor(%#x) == %d, want %d", tc.path, dev, unix.Minor(dev), tc.minor) + } + if unix.Mkdev(tc.major, tc.minor) != dev { + t.Errorf("for %s Mkdev(%d, %d) == %#x, want %#x", tc.path, tc.major, tc.minor, unix.Mkdev(tc.major, tc.minor), dev) + } + }) + + } +} diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_386.go b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go new file mode 100644 index 0000000..c56bc8b --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_386.go @@ -0,0 +1,227 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go new file mode 100644 index 0000000..3e97711 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_amd64.go @@ -0,0 +1,227 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Constants that were deprecated or moved to enums in the FreeBSD headers. Keep +// them here for backwards compatibility. + +package unix + +const ( + IFF_SMART = 0x20 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf2 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_IPXIP = 0xf9 + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8040720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8040720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go new file mode 100644 index 0000000..856dca3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/errors_freebsd_arm.go @@ -0,0 +1,226 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +const ( + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BSC = 0x53 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf6 + IFT_PFSYNC = 0xf7 + IFT_PLC = 0xae + IFT_POS = 0xab + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf1 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_STF = 0xd7 + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VOICEEM = 0x64 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + + // missing constants on FreeBSD-11.1-RELEASE, copied from old values in ztypes_freebsd_arm.go + IFF_SMART = 0x20 + IFT_FAITH = 0xf2 + IFT_IPXIP = 0xf9 + IPPROTO_MAXID = 0x34 + IPV6_FAITH = 0x1d + IP_FAITH = 0x16 + MAP_NORESERVE = 0x40 + MAP_RENAME = 0x20 + NET_RT_MAXID = 0x6 + RTF_PRCLONING = 0x10000 + RTM_OLDADD = 0x9 + RTM_OLDDEL = 0xa + SIOCADDRT = 0x8030720a + SIOCALIFADDR = 0x8118691b + SIOCDELRT = 0x8030720b + SIOCDLIFADDR = 0x8118691d + SIOCGLIFADDR = 0xc118691c + SIOCGLIFPHYADDR = 0xc118694b + SIOCSLIFPHYADDR = 0x8118694a +) diff --git a/vendor/golang.org/x/sys/unix/file_unix.go b/vendor/golang.org/x/sys/unix/file_unix.go new file mode 100644 index 0000000..47f6a83 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/file_unix.go @@ -0,0 +1,27 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package unix + +import ( + "os" + "syscall" +) + +// FIXME: unexported function from os +// syscallMode returns the syscall-specific mode bits from Go's portable mode bits. +func syscallMode(i os.FileMode) (o uint32) { + o |= uint32(i.Perm()) + if i&os.ModeSetuid != 0 { + o |= syscall.S_ISUID + } + if i&os.ModeSetgid != 0 { + o |= syscall.S_ISGID + } + if i&os.ModeSticky != 0 { + o |= syscall.S_ISVTX + } + // No mapping for Go's ModeTemporary (plan9 only). + return +} diff --git a/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go new file mode 100644 index 0000000..14ddaf3 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go @@ -0,0 +1,44 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build arm,openbsd + +package unix + +import "syscall" + +func Getpagesize() int { return syscall.Getpagesize() } + +func TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) } + +func NsecToTimespec(nsec int64) (ts Timespec) { + ts.Sec = int64(nsec / 1e9) + ts.Nsec = int32(nsec % 1e9) + return +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + nsec += 999 // round up to microsecond + tv.Usec = int32(nsec % 1e9 / 1e3) + tv.Sec = int64(nsec / 1e9) + return +} + +func SetKevent(k *Kevent_t, fd, mode, flags int) { + k.Ident = uint32(fd) + k.Filter = int16(mode) + k.Flags = uint16(flags) +} + +func (iov *Iovec) SetLen(length int) { + iov.Len = uint32(length) +} + +func (msghdr *Msghdr) SetControllen(length int) { + msghdr.Controllen = uint32(length) +} + +func (cmsg *Cmsghdr) SetLen(length int) { + cmsg.Len = uint32(length) +} diff --git a/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go new file mode 100644 index 0000000..3ed0b26 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go @@ -0,0 +1,1586 @@ +// mkerrors.sh +// MACHINE GENERATED BY THE COMMAND ABOVE; DO NOT EDIT + +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs -- _const.go + +// +build arm,openbsd + +package unix + +import "syscall" + +const ( + AF_APPLETALK = 0x10 + AF_BLUETOOTH = 0x20 + AF_CCITT = 0xa + AF_CHAOS = 0x5 + AF_CNT = 0x15 + AF_COIP = 0x14 + AF_DATAKIT = 0x9 + AF_DECnet = 0xc + AF_DLI = 0xd + AF_E164 = 0x1a + AF_ECMA = 0x8 + AF_ENCAP = 0x1c + AF_HYLINK = 0xf + AF_IMPLINK = 0x3 + AF_INET = 0x2 + AF_INET6 = 0x18 + AF_IPX = 0x17 + AF_ISDN = 0x1a + AF_ISO = 0x7 + AF_KEY = 0x1e + AF_LAT = 0xe + AF_LINK = 0x12 + AF_LOCAL = 0x1 + AF_MAX = 0x24 + AF_MPLS = 0x21 + AF_NATM = 0x1b + AF_NS = 0x6 + AF_OSI = 0x7 + AF_PUP = 0x4 + AF_ROUTE = 0x11 + AF_SIP = 0x1d + AF_SNA = 0xb + AF_UNIX = 0x1 + AF_UNSPEC = 0x0 + ARPHRD_ETHER = 0x1 + ARPHRD_FRELAY = 0xf + ARPHRD_IEEE1394 = 0x18 + ARPHRD_IEEE802 = 0x6 + B0 = 0x0 + B110 = 0x6e + B115200 = 0x1c200 + B1200 = 0x4b0 + B134 = 0x86 + B14400 = 0x3840 + B150 = 0x96 + B1800 = 0x708 + B19200 = 0x4b00 + B200 = 0xc8 + B230400 = 0x38400 + B2400 = 0x960 + B28800 = 0x7080 + B300 = 0x12c + B38400 = 0x9600 + B4800 = 0x12c0 + B50 = 0x32 + B57600 = 0xe100 + B600 = 0x258 + B7200 = 0x1c20 + B75 = 0x4b + B76800 = 0x12c00 + B9600 = 0x2580 + BIOCFLUSH = 0x20004268 + BIOCGBLEN = 0x40044266 + BIOCGDIRFILT = 0x4004427c + BIOCGDLT = 0x4004426a + BIOCGDLTLIST = 0xc008427b + BIOCGETIF = 0x4020426b + BIOCGFILDROP = 0x40044278 + BIOCGHDRCMPLT = 0x40044274 + BIOCGRSIG = 0x40044273 + BIOCGRTIMEOUT = 0x400c426e + BIOCGSTATS = 0x4008426f + BIOCIMMEDIATE = 0x80044270 + BIOCLOCK = 0x20004276 + BIOCPROMISC = 0x20004269 + BIOCSBLEN = 0xc0044266 + BIOCSDIRFILT = 0x8004427d + BIOCSDLT = 0x8004427a + BIOCSETF = 0x80084267 + BIOCSETIF = 0x8020426c + BIOCSETWF = 0x80084277 + BIOCSFILDROP = 0x80044279 + BIOCSHDRCMPLT = 0x80044275 + BIOCSRSIG = 0x80044272 + BIOCSRTIMEOUT = 0x800c426d + BIOCVERSION = 0x40044271 + BPF_A = 0x10 + BPF_ABS = 0x20 + BPF_ADD = 0x0 + BPF_ALIGNMENT = 0x4 + BPF_ALU = 0x4 + BPF_AND = 0x50 + BPF_B = 0x10 + BPF_DIRECTION_IN = 0x1 + BPF_DIRECTION_OUT = 0x2 + BPF_DIV = 0x30 + BPF_H = 0x8 + BPF_IMM = 0x0 + BPF_IND = 0x40 + BPF_JA = 0x0 + BPF_JEQ = 0x10 + BPF_JGE = 0x30 + BPF_JGT = 0x20 + BPF_JMP = 0x5 + BPF_JSET = 0x40 + BPF_K = 0x0 + BPF_LD = 0x0 + BPF_LDX = 0x1 + BPF_LEN = 0x80 + BPF_LSH = 0x60 + BPF_MAJOR_VERSION = 0x1 + BPF_MAXBUFSIZE = 0x200000 + BPF_MAXINSNS = 0x200 + BPF_MEM = 0x60 + BPF_MEMWORDS = 0x10 + BPF_MINBUFSIZE = 0x20 + BPF_MINOR_VERSION = 0x1 + BPF_MISC = 0x7 + BPF_MSH = 0xa0 + BPF_MUL = 0x20 + BPF_NEG = 0x80 + BPF_OR = 0x40 + BPF_RELEASE = 0x30bb6 + BPF_RET = 0x6 + BPF_RSH = 0x70 + BPF_ST = 0x2 + BPF_STX = 0x3 + BPF_SUB = 0x10 + BPF_TAX = 0x0 + BPF_TXA = 0x80 + BPF_W = 0x0 + BPF_X = 0x8 + BRKINT = 0x2 + CFLUSH = 0xf + CLOCAL = 0x8000 + CREAD = 0x800 + CS5 = 0x0 + CS6 = 0x100 + CS7 = 0x200 + CS8 = 0x300 + CSIZE = 0x300 + CSTART = 0x11 + CSTATUS = 0xff + CSTOP = 0x13 + CSTOPB = 0x400 + CSUSP = 0x1a + CTL_MAXNAME = 0xc + CTL_NET = 0x4 + DIOCOSFPFLUSH = 0x2000444e + DLT_ARCNET = 0x7 + DLT_ATM_RFC1483 = 0xb + DLT_AX25 = 0x3 + DLT_CHAOS = 0x5 + DLT_C_HDLC = 0x68 + DLT_EN10MB = 0x1 + DLT_EN3MB = 0x2 + DLT_ENC = 0xd + DLT_FDDI = 0xa + DLT_IEEE802 = 0x6 + DLT_IEEE802_11 = 0x69 + DLT_IEEE802_11_RADIO = 0x7f + DLT_LOOP = 0xc + DLT_MPLS = 0xdb + DLT_NULL = 0x0 + DLT_PFLOG = 0x75 + DLT_PFSYNC = 0x12 + DLT_PPP = 0x9 + DLT_PPP_BSDOS = 0x10 + DLT_PPP_ETHER = 0x33 + DLT_PPP_SERIAL = 0x32 + DLT_PRONET = 0x4 + DLT_RAW = 0xe + DLT_SLIP = 0x8 + DLT_SLIP_BSDOS = 0xf + DT_BLK = 0x6 + DT_CHR = 0x2 + DT_DIR = 0x4 + DT_FIFO = 0x1 + DT_LNK = 0xa + DT_REG = 0x8 + DT_SOCK = 0xc + DT_UNKNOWN = 0x0 + ECHO = 0x8 + ECHOCTL = 0x40 + ECHOE = 0x2 + ECHOK = 0x4 + ECHOKE = 0x1 + ECHONL = 0x10 + ECHOPRT = 0x20 + EMT_TAGOVF = 0x1 + EMUL_ENABLED = 0x1 + EMUL_NATIVE = 0x2 + ENDRUNDISC = 0x9 + ETHERMIN = 0x2e + ETHERMTU = 0x5dc + ETHERTYPE_8023 = 0x4 + ETHERTYPE_AARP = 0x80f3 + ETHERTYPE_ACCTON = 0x8390 + ETHERTYPE_AEONIC = 0x8036 + ETHERTYPE_ALPHA = 0x814a + ETHERTYPE_AMBER = 0x6008 + ETHERTYPE_AMOEBA = 0x8145 + ETHERTYPE_AOE = 0x88a2 + ETHERTYPE_APOLLO = 0x80f7 + ETHERTYPE_APOLLODOMAIN = 0x8019 + ETHERTYPE_APPLETALK = 0x809b + ETHERTYPE_APPLITEK = 0x80c7 + ETHERTYPE_ARGONAUT = 0x803a + ETHERTYPE_ARP = 0x806 + ETHERTYPE_AT = 0x809b + ETHERTYPE_ATALK = 0x809b + ETHERTYPE_ATOMIC = 0x86df + ETHERTYPE_ATT = 0x8069 + ETHERTYPE_ATTSTANFORD = 0x8008 + ETHERTYPE_AUTOPHON = 0x806a + ETHERTYPE_AXIS = 0x8856 + ETHERTYPE_BCLOOP = 0x9003 + ETHERTYPE_BOFL = 0x8102 + ETHERTYPE_CABLETRON = 0x7034 + ETHERTYPE_CHAOS = 0x804 + ETHERTYPE_COMDESIGN = 0x806c + ETHERTYPE_COMPUGRAPHIC = 0x806d + ETHERTYPE_COUNTERPOINT = 0x8062 + ETHERTYPE_CRONUS = 0x8004 + ETHERTYPE_CRONUSVLN = 0x8003 + ETHERTYPE_DCA = 0x1234 + ETHERTYPE_DDE = 0x807b + ETHERTYPE_DEBNI = 0xaaaa + ETHERTYPE_DECAM = 0x8048 + ETHERTYPE_DECCUST = 0x6006 + ETHERTYPE_DECDIAG = 0x6005 + ETHERTYPE_DECDNS = 0x803c + ETHERTYPE_DECDTS = 0x803e + ETHERTYPE_DECEXPER = 0x6000 + ETHERTYPE_DECLAST = 0x8041 + ETHERTYPE_DECLTM = 0x803f + ETHERTYPE_DECMUMPS = 0x6009 + ETHERTYPE_DECNETBIOS = 0x8040 + ETHERTYPE_DELTACON = 0x86de + ETHERTYPE_DIDDLE = 0x4321 + ETHERTYPE_DLOG1 = 0x660 + ETHERTYPE_DLOG2 = 0x661 + ETHERTYPE_DN = 0x6003 + ETHERTYPE_DOGFIGHT = 0x1989 + ETHERTYPE_DSMD = 0x8039 + ETHERTYPE_ECMA = 0x803 + ETHERTYPE_ENCRYPT = 0x803d + ETHERTYPE_ES = 0x805d + ETHERTYPE_EXCELAN = 0x8010 + ETHERTYPE_EXPERDATA = 0x8049 + ETHERTYPE_FLIP = 0x8146 + ETHERTYPE_FLOWCONTROL = 0x8808 + ETHERTYPE_FRARP = 0x808 + ETHERTYPE_GENDYN = 0x8068 + ETHERTYPE_HAYES = 0x8130 + ETHERTYPE_HIPPI_FP = 0x8180 + ETHERTYPE_HITACHI = 0x8820 + ETHERTYPE_HP = 0x8005 + ETHERTYPE_IEEEPUP = 0xa00 + ETHERTYPE_IEEEPUPAT = 0xa01 + ETHERTYPE_IMLBL = 0x4c42 + ETHERTYPE_IMLBLDIAG = 0x424c + ETHERTYPE_IP = 0x800 + ETHERTYPE_IPAS = 0x876c + ETHERTYPE_IPV6 = 0x86dd + ETHERTYPE_IPX = 0x8137 + ETHERTYPE_IPXNEW = 0x8037 + ETHERTYPE_KALPANA = 0x8582 + ETHERTYPE_LANBRIDGE = 0x8038 + ETHERTYPE_LANPROBE = 0x8888 + ETHERTYPE_LAT = 0x6004 + ETHERTYPE_LBACK = 0x9000 + ETHERTYPE_LITTLE = 0x8060 + ETHERTYPE_LLDP = 0x88cc + ETHERTYPE_LOGICRAFT = 0x8148 + ETHERTYPE_LOOPBACK = 0x9000 + ETHERTYPE_MATRA = 0x807a + ETHERTYPE_MAX = 0xffff + ETHERTYPE_MERIT = 0x807c + ETHERTYPE_MICP = 0x873a + ETHERTYPE_MOPDL = 0x6001 + ETHERTYPE_MOPRC = 0x6002 + ETHERTYPE_MOTOROLA = 0x818d + ETHERTYPE_MPLS = 0x8847 + ETHERTYPE_MPLS_MCAST = 0x8848 + ETHERTYPE_MUMPS = 0x813f + ETHERTYPE_NBPCC = 0x3c04 + ETHERTYPE_NBPCLAIM = 0x3c09 + ETHERTYPE_NBPCLREQ = 0x3c05 + ETHERTYPE_NBPCLRSP = 0x3c06 + ETHERTYPE_NBPCREQ = 0x3c02 + ETHERTYPE_NBPCRSP = 0x3c03 + ETHERTYPE_NBPDG = 0x3c07 + ETHERTYPE_NBPDGB = 0x3c08 + ETHERTYPE_NBPDLTE = 0x3c0a + ETHERTYPE_NBPRAR = 0x3c0c + ETHERTYPE_NBPRAS = 0x3c0b + ETHERTYPE_NBPRST = 0x3c0d + ETHERTYPE_NBPSCD = 0x3c01 + ETHERTYPE_NBPVCD = 0x3c00 + ETHERTYPE_NBS = 0x802 + ETHERTYPE_NCD = 0x8149 + ETHERTYPE_NESTAR = 0x8006 + ETHERTYPE_NETBEUI = 0x8191 + ETHERTYPE_NOVELL = 0x8138 + ETHERTYPE_NS = 0x600 + ETHERTYPE_NSAT = 0x601 + ETHERTYPE_NSCOMPAT = 0x807 + ETHERTYPE_NTRAILER = 0x10 + ETHERTYPE_OS9 = 0x7007 + ETHERTYPE_OS9NET = 0x7009 + ETHERTYPE_PACER = 0x80c6 + ETHERTYPE_PAE = 0x888e + ETHERTYPE_PCS = 0x4242 + ETHERTYPE_PLANNING = 0x8044 + ETHERTYPE_PPP = 0x880b + ETHERTYPE_PPPOE = 0x8864 + ETHERTYPE_PPPOEDISC = 0x8863 + ETHERTYPE_PRIMENTS = 0x7031 + ETHERTYPE_PUP = 0x200 + ETHERTYPE_PUPAT = 0x200 + ETHERTYPE_QINQ = 0x88a8 + ETHERTYPE_RACAL = 0x7030 + ETHERTYPE_RATIONAL = 0x8150 + ETHERTYPE_RAWFR = 0x6559 + ETHERTYPE_RCL = 0x1995 + ETHERTYPE_RDP = 0x8739 + ETHERTYPE_RETIX = 0x80f2 + ETHERTYPE_REVARP = 0x8035 + ETHERTYPE_SCA = 0x6007 + ETHERTYPE_SECTRA = 0x86db + ETHERTYPE_SECUREDATA = 0x876d + ETHERTYPE_SGITW = 0x817e + ETHERTYPE_SG_BOUNCE = 0x8016 + ETHERTYPE_SG_DIAG = 0x8013 + ETHERTYPE_SG_NETGAMES = 0x8014 + ETHERTYPE_SG_RESV = 0x8015 + ETHERTYPE_SIMNET = 0x5208 + ETHERTYPE_SLOW = 0x8809 + ETHERTYPE_SNA = 0x80d5 + ETHERTYPE_SNMP = 0x814c + ETHERTYPE_SONIX = 0xfaf5 + ETHERTYPE_SPIDER = 0x809f + ETHERTYPE_SPRITE = 0x500 + ETHERTYPE_STP = 0x8181 + ETHERTYPE_TALARIS = 0x812b + ETHERTYPE_TALARISMC = 0x852b + ETHERTYPE_TCPCOMP = 0x876b + ETHERTYPE_TCPSM = 0x9002 + ETHERTYPE_TEC = 0x814f + ETHERTYPE_TIGAN = 0x802f + ETHERTYPE_TRAIL = 0x1000 + ETHERTYPE_TRANSETHER = 0x6558 + ETHERTYPE_TYMSHARE = 0x802e + ETHERTYPE_UBBST = 0x7005 + ETHERTYPE_UBDEBUG = 0x900 + ETHERTYPE_UBDIAGLOOP = 0x7002 + ETHERTYPE_UBDL = 0x7000 + ETHERTYPE_UBNIU = 0x7001 + ETHERTYPE_UBNMC = 0x7003 + ETHERTYPE_VALID = 0x1600 + ETHERTYPE_VARIAN = 0x80dd + ETHERTYPE_VAXELN = 0x803b + ETHERTYPE_VEECO = 0x8067 + ETHERTYPE_VEXP = 0x805b + ETHERTYPE_VGLAB = 0x8131 + ETHERTYPE_VINES = 0xbad + ETHERTYPE_VINESECHO = 0xbaf + ETHERTYPE_VINESLOOP = 0xbae + ETHERTYPE_VITAL = 0xff00 + ETHERTYPE_VLAN = 0x8100 + ETHERTYPE_VLTLMAN = 0x8080 + ETHERTYPE_VPROD = 0x805c + ETHERTYPE_VURESERVED = 0x8147 + ETHERTYPE_WATERLOO = 0x8130 + ETHERTYPE_WELLFLEET = 0x8103 + ETHERTYPE_X25 = 0x805 + ETHERTYPE_X75 = 0x801 + ETHERTYPE_XNSSM = 0x9001 + ETHERTYPE_XTP = 0x817d + ETHER_ADDR_LEN = 0x6 + ETHER_ALIGN = 0x2 + ETHER_CRC_LEN = 0x4 + ETHER_CRC_POLY_BE = 0x4c11db6 + ETHER_CRC_POLY_LE = 0xedb88320 + ETHER_HDR_LEN = 0xe + ETHER_MAX_DIX_LEN = 0x600 + ETHER_MAX_LEN = 0x5ee + ETHER_MIN_LEN = 0x40 + ETHER_TYPE_LEN = 0x2 + ETHER_VLAN_ENCAP_LEN = 0x4 + EVFILT_AIO = -0x3 + EVFILT_PROC = -0x5 + EVFILT_READ = -0x1 + EVFILT_SIGNAL = -0x6 + EVFILT_SYSCOUNT = 0x7 + EVFILT_TIMER = -0x7 + EVFILT_VNODE = -0x4 + EVFILT_WRITE = -0x2 + EV_ADD = 0x1 + EV_CLEAR = 0x20 + EV_DELETE = 0x2 + EV_DISABLE = 0x8 + EV_ENABLE = 0x4 + EV_EOF = 0x8000 + EV_ERROR = 0x4000 + EV_FLAG1 = 0x2000 + EV_ONESHOT = 0x10 + EV_SYSFLAGS = 0xf000 + EXTA = 0x4b00 + EXTB = 0x9600 + EXTPROC = 0x800 + FD_CLOEXEC = 0x1 + FD_SETSIZE = 0x400 + FLUSHO = 0x800000 + F_DUPFD = 0x0 + F_DUPFD_CLOEXEC = 0xa + F_GETFD = 0x1 + F_GETFL = 0x3 + F_GETLK = 0x7 + F_GETOWN = 0x5 + F_RDLCK = 0x1 + F_SETFD = 0x2 + F_SETFL = 0x4 + F_SETLK = 0x8 + F_SETLKW = 0x9 + F_SETOWN = 0x6 + F_UNLCK = 0x2 + F_WRLCK = 0x3 + HUPCL = 0x4000 + ICANON = 0x100 + ICMP6_FILTER = 0x12 + ICRNL = 0x100 + IEXTEN = 0x400 + IFAN_ARRIVAL = 0x0 + IFAN_DEPARTURE = 0x1 + IFA_ROUTE = 0x1 + IFF_ALLMULTI = 0x200 + IFF_BROADCAST = 0x2 + IFF_CANTCHANGE = 0x8e52 + IFF_DEBUG = 0x4 + IFF_LINK0 = 0x1000 + IFF_LINK1 = 0x2000 + IFF_LINK2 = 0x4000 + IFF_LOOPBACK = 0x8 + IFF_MULTICAST = 0x8000 + IFF_NOARP = 0x80 + IFF_NOTRAILERS = 0x20 + IFF_OACTIVE = 0x400 + IFF_POINTOPOINT = 0x10 + IFF_PROMISC = 0x100 + IFF_RUNNING = 0x40 + IFF_SIMPLEX = 0x800 + IFF_UP = 0x1 + IFNAMSIZ = 0x10 + IFT_1822 = 0x2 + IFT_A12MPPSWITCH = 0x82 + IFT_AAL2 = 0xbb + IFT_AAL5 = 0x31 + IFT_ADSL = 0x5e + IFT_AFLANE8023 = 0x3b + IFT_AFLANE8025 = 0x3c + IFT_ARAP = 0x58 + IFT_ARCNET = 0x23 + IFT_ARCNETPLUS = 0x24 + IFT_ASYNC = 0x54 + IFT_ATM = 0x25 + IFT_ATMDXI = 0x69 + IFT_ATMFUNI = 0x6a + IFT_ATMIMA = 0x6b + IFT_ATMLOGICAL = 0x50 + IFT_ATMRADIO = 0xbd + IFT_ATMSUBINTERFACE = 0x86 + IFT_ATMVCIENDPT = 0xc2 + IFT_ATMVIRTUAL = 0x95 + IFT_BGPPOLICYACCOUNTING = 0xa2 + IFT_BLUETOOTH = 0xf8 + IFT_BRIDGE = 0xd1 + IFT_BSC = 0x53 + IFT_CARP = 0xf7 + IFT_CCTEMUL = 0x3d + IFT_CEPT = 0x13 + IFT_CES = 0x85 + IFT_CHANNEL = 0x46 + IFT_CNR = 0x55 + IFT_COFFEE = 0x84 + IFT_COMPOSITELINK = 0x9b + IFT_DCN = 0x8d + IFT_DIGITALPOWERLINE = 0x8a + IFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba + IFT_DLSW = 0x4a + IFT_DOCSCABLEDOWNSTREAM = 0x80 + IFT_DOCSCABLEMACLAYER = 0x7f + IFT_DOCSCABLEUPSTREAM = 0x81 + IFT_DOCSCABLEUPSTREAMCHANNEL = 0xcd + IFT_DS0 = 0x51 + IFT_DS0BUNDLE = 0x52 + IFT_DS1FDL = 0xaa + IFT_DS3 = 0x1e + IFT_DTM = 0x8c + IFT_DUMMY = 0xf1 + IFT_DVBASILN = 0xac + IFT_DVBASIOUT = 0xad + IFT_DVBRCCDOWNSTREAM = 0x93 + IFT_DVBRCCMACLAYER = 0x92 + IFT_DVBRCCUPSTREAM = 0x94 + IFT_ECONET = 0xce + IFT_ENC = 0xf4 + IFT_EON = 0x19 + IFT_EPLRS = 0x57 + IFT_ESCON = 0x49 + IFT_ETHER = 0x6 + IFT_FAITH = 0xf3 + IFT_FAST = 0x7d + IFT_FASTETHER = 0x3e + IFT_FASTETHERFX = 0x45 + IFT_FDDI = 0xf + IFT_FIBRECHANNEL = 0x38 + IFT_FRAMERELAYINTERCONNECT = 0x3a + IFT_FRAMERELAYMPI = 0x5c + IFT_FRDLCIENDPT = 0xc1 + IFT_FRELAY = 0x20 + IFT_FRELAYDCE = 0x2c + IFT_FRF16MFRBUNDLE = 0xa3 + IFT_FRFORWARD = 0x9e + IFT_G703AT2MB = 0x43 + IFT_G703AT64K = 0x42 + IFT_GIF = 0xf0 + IFT_GIGABITETHERNET = 0x75 + IFT_GR303IDT = 0xb2 + IFT_GR303RDT = 0xb1 + IFT_H323GATEKEEPER = 0xa4 + IFT_H323PROXY = 0xa5 + IFT_HDH1822 = 0x3 + IFT_HDLC = 0x76 + IFT_HDSL2 = 0xa8 + IFT_HIPERLAN2 = 0xb7 + IFT_HIPPI = 0x2f + IFT_HIPPIINTERFACE = 0x39 + IFT_HOSTPAD = 0x5a + IFT_HSSI = 0x2e + IFT_HY = 0xe + IFT_IBM370PARCHAN = 0x48 + IFT_IDSL = 0x9a + IFT_IEEE1394 = 0x90 + IFT_IEEE80211 = 0x47 + IFT_IEEE80212 = 0x37 + IFT_IEEE8023ADLAG = 0xa1 + IFT_IFGSN = 0x91 + IFT_IMT = 0xbe + IFT_INFINIBAND = 0xc7 + IFT_INTERLEAVE = 0x7c + IFT_IP = 0x7e + IFT_IPFORWARD = 0x8e + IFT_IPOVERATM = 0x72 + IFT_IPOVERCDLC = 0x6d + IFT_IPOVERCLAW = 0x6e + IFT_IPSWITCH = 0x4e + IFT_ISDN = 0x3f + IFT_ISDNBASIC = 0x14 + IFT_ISDNPRIMARY = 0x15 + IFT_ISDNS = 0x4b + IFT_ISDNU = 0x4c + IFT_ISO88022LLC = 0x29 + IFT_ISO88023 = 0x7 + IFT_ISO88024 = 0x8 + IFT_ISO88025 = 0x9 + IFT_ISO88025CRFPINT = 0x62 + IFT_ISO88025DTR = 0x56 + IFT_ISO88025FIBER = 0x73 + IFT_ISO88026 = 0xa + IFT_ISUP = 0xb3 + IFT_L2VLAN = 0x87 + IFT_L3IPVLAN = 0x88 + IFT_L3IPXVLAN = 0x89 + IFT_LAPB = 0x10 + IFT_LAPD = 0x4d + IFT_LAPF = 0x77 + IFT_LINEGROUP = 0xd2 + IFT_LOCALTALK = 0x2a + IFT_LOOP = 0x18 + IFT_MEDIAMAILOVERIP = 0x8b + IFT_MFSIGLINK = 0xa7 + IFT_MIOX25 = 0x26 + IFT_MODEM = 0x30 + IFT_MPC = 0x71 + IFT_MPLS = 0xa6 + IFT_MPLSTUNNEL = 0x96 + IFT_MSDSL = 0x8f + IFT_MVL = 0xbf + IFT_MYRINET = 0x63 + IFT_NFAS = 0xaf + IFT_NSIP = 0x1b + IFT_OPTICALCHANNEL = 0xc3 + IFT_OPTICALTRANSPORT = 0xc4 + IFT_OTHER = 0x1 + IFT_P10 = 0xc + IFT_P80 = 0xd + IFT_PARA = 0x22 + IFT_PFLOG = 0xf5 + IFT_PFLOW = 0xf9 + IFT_PFSYNC = 0xf6 + IFT_PLC = 0xae + IFT_PON155 = 0xcf + IFT_PON622 = 0xd0 + IFT_POS = 0xab + IFT_PPP = 0x17 + IFT_PPPMULTILINKBUNDLE = 0x6c + IFT_PROPATM = 0xc5 + IFT_PROPBWAP2MP = 0xb8 + IFT_PROPCNLS = 0x59 + IFT_PROPDOCSWIRELESSDOWNSTREAM = 0xb5 + IFT_PROPDOCSWIRELESSMACLAYER = 0xb4 + IFT_PROPDOCSWIRELESSUPSTREAM = 0xb6 + IFT_PROPMUX = 0x36 + IFT_PROPVIRTUAL = 0x35 + IFT_PROPWIRELESSP2P = 0x9d + IFT_PTPSERIAL = 0x16 + IFT_PVC = 0xf2 + IFT_Q2931 = 0xc9 + IFT_QLLC = 0x44 + IFT_RADIOMAC = 0xbc + IFT_RADSL = 0x5f + IFT_REACHDSL = 0xc0 + IFT_RFC1483 = 0x9f + IFT_RS232 = 0x21 + IFT_RSRB = 0x4f + IFT_SDLC = 0x11 + IFT_SDSL = 0x60 + IFT_SHDSL = 0xa9 + IFT_SIP = 0x1f + IFT_SIPSIG = 0xcc + IFT_SIPTG = 0xcb + IFT_SLIP = 0x1c + IFT_SMDSDXI = 0x2b + IFT_SMDSICIP = 0x34 + IFT_SONET = 0x27 + IFT_SONETOVERHEADCHANNEL = 0xb9 + IFT_SONETPATH = 0x32 + IFT_SONETVT = 0x33 + IFT_SRP = 0x97 + IFT_SS7SIGLINK = 0x9c + IFT_STACKTOSTACK = 0x6f + IFT_STARLAN = 0xb + IFT_T1 = 0x12 + IFT_TDLC = 0x74 + IFT_TELINK = 0xc8 + IFT_TERMPAD = 0x5b + IFT_TR008 = 0xb0 + IFT_TRANSPHDLC = 0x7b + IFT_TUNNEL = 0x83 + IFT_ULTRA = 0x1d + IFT_USB = 0xa0 + IFT_V11 = 0x40 + IFT_V35 = 0x2d + IFT_V36 = 0x41 + IFT_V37 = 0x78 + IFT_VDSL = 0x61 + IFT_VIRTUALIPADDRESS = 0x70 + IFT_VIRTUALTG = 0xca + IFT_VOICEDID = 0xd5 + IFT_VOICEEM = 0x64 + IFT_VOICEEMFGD = 0xd3 + IFT_VOICEENCAP = 0x67 + IFT_VOICEFGDEANA = 0xd4 + IFT_VOICEFXO = 0x65 + IFT_VOICEFXS = 0x66 + IFT_VOICEOVERATM = 0x98 + IFT_VOICEOVERCABLE = 0xc6 + IFT_VOICEOVERFRAMERELAY = 0x99 + IFT_VOICEOVERIP = 0x68 + IFT_X213 = 0x5d + IFT_X25 = 0x5 + IFT_X25DDN = 0x4 + IFT_X25HUNTGROUP = 0x7a + IFT_X25MLP = 0x79 + IFT_X25PLE = 0x28 + IFT_XETHER = 0x1a + IGNBRK = 0x1 + IGNCR = 0x80 + IGNPAR = 0x4 + IMAXBEL = 0x2000 + INLCR = 0x40 + INPCK = 0x10 + IN_CLASSA_HOST = 0xffffff + IN_CLASSA_MAX = 0x80 + IN_CLASSA_NET = 0xff000000 + IN_CLASSA_NSHIFT = 0x18 + IN_CLASSB_HOST = 0xffff + IN_CLASSB_MAX = 0x10000 + IN_CLASSB_NET = 0xffff0000 + IN_CLASSB_NSHIFT = 0x10 + IN_CLASSC_HOST = 0xff + IN_CLASSC_NET = 0xffffff00 + IN_CLASSC_NSHIFT = 0x8 + IN_CLASSD_HOST = 0xfffffff + IN_CLASSD_NET = 0xf0000000 + IN_CLASSD_NSHIFT = 0x1c + IN_LOOPBACKNET = 0x7f + IN_RFC3021_HOST = 0x1 + IN_RFC3021_NET = 0xfffffffe + IN_RFC3021_NSHIFT = 0x1f + IPPROTO_AH = 0x33 + IPPROTO_CARP = 0x70 + IPPROTO_DIVERT = 0x102 + IPPROTO_DIVERT_INIT = 0x2 + IPPROTO_DIVERT_RESP = 0x1 + IPPROTO_DONE = 0x101 + IPPROTO_DSTOPTS = 0x3c + IPPROTO_EGP = 0x8 + IPPROTO_ENCAP = 0x62 + IPPROTO_EON = 0x50 + IPPROTO_ESP = 0x32 + IPPROTO_ETHERIP = 0x61 + IPPROTO_FRAGMENT = 0x2c + IPPROTO_GGP = 0x3 + IPPROTO_GRE = 0x2f + IPPROTO_HOPOPTS = 0x0 + IPPROTO_ICMP = 0x1 + IPPROTO_ICMPV6 = 0x3a + IPPROTO_IDP = 0x16 + IPPROTO_IGMP = 0x2 + IPPROTO_IP = 0x0 + IPPROTO_IPCOMP = 0x6c + IPPROTO_IPIP = 0x4 + IPPROTO_IPV4 = 0x4 + IPPROTO_IPV6 = 0x29 + IPPROTO_MAX = 0x100 + IPPROTO_MAXID = 0x103 + IPPROTO_MOBILE = 0x37 + IPPROTO_MPLS = 0x89 + IPPROTO_NONE = 0x3b + IPPROTO_PFSYNC = 0xf0 + IPPROTO_PIM = 0x67 + IPPROTO_PUP = 0xc + IPPROTO_RAW = 0xff + IPPROTO_ROUTING = 0x2b + IPPROTO_RSVP = 0x2e + IPPROTO_TCP = 0x6 + IPPROTO_TP = 0x1d + IPPROTO_UDP = 0x11 + IPV6_AUTH_LEVEL = 0x35 + IPV6_AUTOFLOWLABEL = 0x3b + IPV6_CHECKSUM = 0x1a + IPV6_DEFAULT_MULTICAST_HOPS = 0x1 + IPV6_DEFAULT_MULTICAST_LOOP = 0x1 + IPV6_DEFHLIM = 0x40 + IPV6_DONTFRAG = 0x3e + IPV6_DSTOPTS = 0x32 + IPV6_ESP_NETWORK_LEVEL = 0x37 + IPV6_ESP_TRANS_LEVEL = 0x36 + IPV6_FAITH = 0x1d + IPV6_FLOWINFO_MASK = 0xffffff0f + IPV6_FLOWLABEL_MASK = 0xffff0f00 + IPV6_FRAGTTL = 0x78 + IPV6_HLIMDEC = 0x1 + IPV6_HOPLIMIT = 0x2f + IPV6_HOPOPTS = 0x31 + IPV6_IPCOMP_LEVEL = 0x3c + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + IPV6_MAXHLIM = 0xff + IPV6_MAXPACKET = 0xffff + IPV6_MMTU = 0x500 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_LOOP = 0xb + IPV6_NEXTHOP = 0x30 + IPV6_OPTIONS = 0x1 + IPV6_PATHMTU = 0x2c + IPV6_PIPEX = 0x3f + IPV6_PKTINFO = 0x2e + IPV6_PORTRANGE = 0xe + IPV6_PORTRANGE_DEFAULT = 0x0 + IPV6_PORTRANGE_HIGH = 0x1 + IPV6_PORTRANGE_LOW = 0x2 + IPV6_RECVDSTOPTS = 0x28 + IPV6_RECVDSTPORT = 0x40 + IPV6_RECVHOPLIMIT = 0x25 + IPV6_RECVHOPOPTS = 0x27 + IPV6_RECVPATHMTU = 0x2b + IPV6_RECVPKTINFO = 0x24 + IPV6_RECVRTHDR = 0x26 + IPV6_RECVTCLASS = 0x39 + IPV6_RTABLE = 0x1021 + IPV6_RTHDR = 0x33 + IPV6_RTHDRDSTOPTS = 0x23 + IPV6_RTHDR_LOOSE = 0x0 + IPV6_RTHDR_STRICT = 0x1 + IPV6_RTHDR_TYPE_0 = 0x0 + IPV6_SOCKOPT_RESERVED1 = 0x3 + IPV6_TCLASS = 0x3d + IPV6_UNICAST_HOPS = 0x4 + IPV6_USE_MIN_MTU = 0x2a + IPV6_V6ONLY = 0x1b + IPV6_VERSION = 0x60 + IPV6_VERSION_MASK = 0xf0 + IP_ADD_MEMBERSHIP = 0xc + IP_AUTH_LEVEL = 0x14 + IP_DEFAULT_MULTICAST_LOOP = 0x1 + IP_DEFAULT_MULTICAST_TTL = 0x1 + IP_DF = 0x4000 + IP_DIVERTFL = 0x1022 + IP_DROP_MEMBERSHIP = 0xd + IP_ESP_NETWORK_LEVEL = 0x16 + IP_ESP_TRANS_LEVEL = 0x15 + IP_HDRINCL = 0x2 + IP_IPCOMP_LEVEL = 0x1d + IP_IPSECFLOWINFO = 0x24 + IP_IPSEC_LOCAL_AUTH = 0x1b + IP_IPSEC_LOCAL_CRED = 0x19 + IP_IPSEC_LOCAL_ID = 0x17 + IP_IPSEC_REMOTE_AUTH = 0x1c + IP_IPSEC_REMOTE_CRED = 0x1a + IP_IPSEC_REMOTE_ID = 0x18 + IP_MAXPACKET = 0xffff + IP_MAX_MEMBERSHIPS = 0xfff + IP_MF = 0x2000 + IP_MINTTL = 0x20 + IP_MIN_MEMBERSHIPS = 0xf + IP_MSS = 0x240 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_LOOP = 0xb + IP_MULTICAST_TTL = 0xa + IP_OFFMASK = 0x1fff + IP_OPTIONS = 0x1 + IP_PIPEX = 0x22 + IP_PORTRANGE = 0x13 + IP_PORTRANGE_DEFAULT = 0x0 + IP_PORTRANGE_HIGH = 0x1 + IP_PORTRANGE_LOW = 0x2 + IP_RECVDSTADDR = 0x7 + IP_RECVDSTPORT = 0x21 + IP_RECVIF = 0x1e + IP_RECVOPTS = 0x5 + IP_RECVRETOPTS = 0x6 + IP_RECVRTABLE = 0x23 + IP_RECVTTL = 0x1f + IP_RETOPTS = 0x8 + IP_RF = 0x8000 + IP_RTABLE = 0x1021 + IP_TOS = 0x3 + IP_TTL = 0x4 + ISIG = 0x80 + ISTRIP = 0x20 + IXANY = 0x800 + IXOFF = 0x400 + IXON = 0x200 + LCNT_OVERLOAD_FLUSH = 0x6 + LOCK_EX = 0x2 + LOCK_NB = 0x4 + LOCK_SH = 0x1 + LOCK_UN = 0x8 + MADV_DONTNEED = 0x4 + MADV_FREE = 0x6 + MADV_NORMAL = 0x0 + MADV_RANDOM = 0x1 + MADV_SEQUENTIAL = 0x2 + MADV_SPACEAVAIL = 0x5 + MADV_WILLNEED = 0x3 + MAP_ANON = 0x1000 + MAP_ANONYMOUS = 0x1000 + MAP_COPY = 0x2 + MAP_FILE = 0x0 + MAP_FIXED = 0x10 + MAP_FLAGMASK = 0x3ff7 + MAP_HASSEMAPHORE = 0x0 + MAP_INHERIT = 0x0 + MAP_INHERIT_COPY = 0x1 + MAP_INHERIT_NONE = 0x2 + MAP_INHERIT_SHARE = 0x0 + MAP_INHERIT_ZERO = 0x3 + MAP_NOEXTEND = 0x0 + MAP_NORESERVE = 0x0 + MAP_PRIVATE = 0x2 + MAP_RENAME = 0x0 + MAP_SHARED = 0x1 + MAP_TRYFIXED = 0x0 + MCL_CURRENT = 0x1 + MCL_FUTURE = 0x2 + MSG_BCAST = 0x100 + MSG_CMSG_CLOEXEC = 0x800 + MSG_CTRUNC = 0x20 + MSG_DONTROUTE = 0x4 + MSG_DONTWAIT = 0x80 + MSG_EOR = 0x8 + MSG_MCAST = 0x200 + MSG_NOSIGNAL = 0x400 + MSG_OOB = 0x1 + MSG_PEEK = 0x2 + MSG_TRUNC = 0x10 + MSG_WAITALL = 0x40 + MS_ASYNC = 0x1 + MS_INVALIDATE = 0x4 + MS_SYNC = 0x2 + NAME_MAX = 0xff + NET_RT_DUMP = 0x1 + NET_RT_FLAGS = 0x2 + NET_RT_IFLIST = 0x3 + NET_RT_MAXID = 0x6 + NET_RT_STATS = 0x4 + NET_RT_TABLE = 0x5 + NOFLSH = 0x80000000 + NOTE_ATTRIB = 0x8 + NOTE_CHILD = 0x4 + NOTE_DELETE = 0x1 + NOTE_EOF = 0x2 + NOTE_EXEC = 0x20000000 + NOTE_EXIT = 0x80000000 + NOTE_EXTEND = 0x4 + NOTE_FORK = 0x40000000 + NOTE_LINK = 0x10 + NOTE_LOWAT = 0x1 + NOTE_PCTRLMASK = 0xf0000000 + NOTE_PDATAMASK = 0xfffff + NOTE_RENAME = 0x20 + NOTE_REVOKE = 0x40 + NOTE_TRACK = 0x1 + NOTE_TRACKERR = 0x2 + NOTE_TRUNCATE = 0x80 + NOTE_WRITE = 0x2 + OCRNL = 0x10 + ONLCR = 0x2 + ONLRET = 0x80 + ONOCR = 0x40 + ONOEOT = 0x8 + OPOST = 0x1 + O_ACCMODE = 0x3 + O_APPEND = 0x8 + O_ASYNC = 0x40 + O_CLOEXEC = 0x10000 + O_CREAT = 0x200 + O_DIRECTORY = 0x20000 + O_DSYNC = 0x80 + O_EXCL = 0x800 + O_EXLOCK = 0x20 + O_FSYNC = 0x80 + O_NDELAY = 0x4 + O_NOCTTY = 0x8000 + O_NOFOLLOW = 0x100 + O_NONBLOCK = 0x4 + O_RDONLY = 0x0 + O_RDWR = 0x2 + O_RSYNC = 0x80 + O_SHLOCK = 0x10 + O_SYNC = 0x80 + O_TRUNC = 0x400 + O_WRONLY = 0x1 + PARENB = 0x1000 + PARMRK = 0x8 + PARODD = 0x2000 + PENDIN = 0x20000000 + PF_FLUSH = 0x1 + PRIO_PGRP = 0x1 + PRIO_PROCESS = 0x0 + PRIO_USER = 0x2 + PROT_EXEC = 0x4 + PROT_NONE = 0x0 + PROT_READ = 0x1 + PROT_WRITE = 0x2 + RLIMIT_CORE = 0x4 + RLIMIT_CPU = 0x0 + RLIMIT_DATA = 0x2 + RLIMIT_FSIZE = 0x1 + RLIMIT_NOFILE = 0x8 + RLIMIT_STACK = 0x3 + RLIM_INFINITY = 0x7fffffffffffffff + RTAX_AUTHOR = 0x6 + RTAX_BRD = 0x7 + RTAX_DST = 0x0 + RTAX_GATEWAY = 0x1 + RTAX_GENMASK = 0x3 + RTAX_IFA = 0x5 + RTAX_IFP = 0x4 + RTAX_LABEL = 0xa + RTAX_MAX = 0xb + RTAX_NETMASK = 0x2 + RTAX_SRC = 0x8 + RTAX_SRCMASK = 0x9 + RTA_AUTHOR = 0x40 + RTA_BRD = 0x80 + RTA_DST = 0x1 + RTA_GATEWAY = 0x2 + RTA_GENMASK = 0x8 + RTA_IFA = 0x20 + RTA_IFP = 0x10 + RTA_LABEL = 0x400 + RTA_NETMASK = 0x4 + RTA_SRC = 0x100 + RTA_SRCMASK = 0x200 + RTF_ANNOUNCE = 0x4000 + RTF_BLACKHOLE = 0x1000 + RTF_BROADCAST = 0x400000 + RTF_CLONED = 0x10000 + RTF_CLONING = 0x100 + RTF_DONE = 0x40 + RTF_DYNAMIC = 0x10 + RTF_FMASK = 0x70f808 + RTF_GATEWAY = 0x2 + RTF_HOST = 0x4 + RTF_LLINFO = 0x400 + RTF_LOCAL = 0x200000 + RTF_MASK = 0x80 + RTF_MODIFIED = 0x20 + RTF_MPATH = 0x40000 + RTF_MPLS = 0x100000 + RTF_PERMANENT_ARP = 0x2000 + RTF_PROTO1 = 0x8000 + RTF_PROTO2 = 0x4000 + RTF_PROTO3 = 0x2000 + RTF_REJECT = 0x8 + RTF_STATIC = 0x800 + RTF_UP = 0x1 + RTF_USETRAILERS = 0x8000 + RTF_XRESOLVE = 0x200 + RTM_ADD = 0x1 + RTM_CHANGE = 0x3 + RTM_DELADDR = 0xd + RTM_DELETE = 0x2 + RTM_DESYNC = 0x10 + RTM_GET = 0x4 + RTM_IFANNOUNCE = 0xf + RTM_IFINFO = 0xe + RTM_LOCK = 0x8 + RTM_LOSING = 0x5 + RTM_MAXSIZE = 0x800 + RTM_MISS = 0x7 + RTM_NEWADDR = 0xc + RTM_REDIRECT = 0x6 + RTM_RESOLVE = 0xb + RTM_RTTUNIT = 0xf4240 + RTM_VERSION = 0x5 + RTV_EXPIRE = 0x4 + RTV_HOPCOUNT = 0x2 + RTV_MTU = 0x1 + RTV_RPIPE = 0x8 + RTV_RTT = 0x40 + RTV_RTTVAR = 0x80 + RTV_SPIPE = 0x10 + RTV_SSTHRESH = 0x20 + RT_TABLEID_MAX = 0xff + RUSAGE_CHILDREN = -0x1 + RUSAGE_SELF = 0x0 + RUSAGE_THREAD = 0x1 + SCM_RIGHTS = 0x1 + SCM_TIMESTAMP = 0x4 + SHUT_RD = 0x0 + SHUT_RDWR = 0x2 + SHUT_WR = 0x1 + SIOCADDMULTI = 0x80206931 + SIOCAIFADDR = 0x8040691a + SIOCAIFGROUP = 0x80246987 + SIOCALIFADDR = 0x8218691c + SIOCATMARK = 0x40047307 + SIOCBRDGADD = 0x8054693c + SIOCBRDGADDS = 0x80546941 + SIOCBRDGARL = 0x806e694d + SIOCBRDGDADDR = 0x81286947 + SIOCBRDGDEL = 0x8054693d + SIOCBRDGDELS = 0x80546942 + SIOCBRDGFLUSH = 0x80546948 + SIOCBRDGFRL = 0x806e694e + SIOCBRDGGCACHE = 0xc0146941 + SIOCBRDGGFD = 0xc0146952 + SIOCBRDGGHT = 0xc0146951 + SIOCBRDGGIFFLGS = 0xc054693e + SIOCBRDGGMA = 0xc0146953 + SIOCBRDGGPARAM = 0xc03c6958 + SIOCBRDGGPRI = 0xc0146950 + SIOCBRDGGRL = 0xc028694f + SIOCBRDGGSIFS = 0xc054693c + SIOCBRDGGTO = 0xc0146946 + SIOCBRDGIFS = 0xc0546942 + SIOCBRDGRTS = 0xc0186943 + SIOCBRDGSADDR = 0xc1286944 + SIOCBRDGSCACHE = 0x80146940 + SIOCBRDGSFD = 0x80146952 + SIOCBRDGSHT = 0x80146951 + SIOCBRDGSIFCOST = 0x80546955 + SIOCBRDGSIFFLGS = 0x8054693f + SIOCBRDGSIFPRIO = 0x80546954 + SIOCBRDGSMA = 0x80146953 + SIOCBRDGSPRI = 0x80146950 + SIOCBRDGSPROTO = 0x8014695a + SIOCBRDGSTO = 0x80146945 + SIOCBRDGSTXHC = 0x80146959 + SIOCDELMULTI = 0x80206932 + SIOCDIFADDR = 0x80206919 + SIOCDIFGROUP = 0x80246989 + SIOCDIFPHYADDR = 0x80206949 + SIOCDLIFADDR = 0x8218691e + SIOCGETKALIVE = 0xc01869a4 + SIOCGETLABEL = 0x8020699a + SIOCGETPFLOW = 0xc02069fe + SIOCGETPFSYNC = 0xc02069f8 + SIOCGETSGCNT = 0xc0147534 + SIOCGETVIFCNT = 0xc0147533 + SIOCGETVLAN = 0xc0206990 + SIOCGHIWAT = 0x40047301 + SIOCGIFADDR = 0xc0206921 + SIOCGIFASYNCMAP = 0xc020697c + SIOCGIFBRDADDR = 0xc0206923 + SIOCGIFCONF = 0xc0086924 + SIOCGIFDATA = 0xc020691b + SIOCGIFDESCR = 0xc0206981 + SIOCGIFDSTADDR = 0xc0206922 + SIOCGIFFLAGS = 0xc0206911 + SIOCGIFGATTR = 0xc024698b + SIOCGIFGENERIC = 0xc020693a + SIOCGIFGMEMB = 0xc024698a + SIOCGIFGROUP = 0xc0246988 + SIOCGIFHARDMTU = 0xc02069a5 + SIOCGIFMEDIA = 0xc0286936 + SIOCGIFMETRIC = 0xc0206917 + SIOCGIFMTU = 0xc020697e + SIOCGIFNETMASK = 0xc0206925 + SIOCGIFPDSTADDR = 0xc0206948 + SIOCGIFPRIORITY = 0xc020699c + SIOCGIFPSRCADDR = 0xc0206947 + SIOCGIFRDOMAIN = 0xc02069a0 + SIOCGIFRTLABEL = 0xc0206983 + SIOCGIFRXR = 0x802069aa + SIOCGIFTIMESLOT = 0xc0206986 + SIOCGIFXFLAGS = 0xc020699e + SIOCGLIFADDR = 0xc218691d + SIOCGLIFPHYADDR = 0xc218694b + SIOCGLIFPHYRTABLE = 0xc02069a2 + SIOCGLIFPHYTTL = 0xc02069a9 + SIOCGLOWAT = 0x40047303 + SIOCGPGRP = 0x40047309 + SIOCGSPPPPARAMS = 0xc0206994 + SIOCGVH = 0xc02069f6 + SIOCGVNETID = 0xc02069a7 + SIOCIFCREATE = 0x8020697a + SIOCIFDESTROY = 0x80206979 + SIOCIFGCLONERS = 0xc00c6978 + SIOCSETKALIVE = 0x801869a3 + SIOCSETLABEL = 0x80206999 + SIOCSETPFLOW = 0x802069fd + SIOCSETPFSYNC = 0x802069f7 + SIOCSETVLAN = 0x8020698f + SIOCSHIWAT = 0x80047300 + SIOCSIFADDR = 0x8020690c + SIOCSIFASYNCMAP = 0x8020697d + SIOCSIFBRDADDR = 0x80206913 + SIOCSIFDESCR = 0x80206980 + SIOCSIFDSTADDR = 0x8020690e + SIOCSIFFLAGS = 0x80206910 + SIOCSIFGATTR = 0x8024698c + SIOCSIFGENERIC = 0x80206939 + SIOCSIFLLADDR = 0x8020691f + SIOCSIFMEDIA = 0xc0206935 + SIOCSIFMETRIC = 0x80206918 + SIOCSIFMTU = 0x8020697f + SIOCSIFNETMASK = 0x80206916 + SIOCSIFPHYADDR = 0x80406946 + SIOCSIFPRIORITY = 0x8020699b + SIOCSIFRDOMAIN = 0x8020699f + SIOCSIFRTLABEL = 0x80206982 + SIOCSIFTIMESLOT = 0x80206985 + SIOCSIFXFLAGS = 0x8020699d + SIOCSLIFPHYADDR = 0x8218694a + SIOCSLIFPHYRTABLE = 0x802069a1 + SIOCSLIFPHYTTL = 0x802069a8 + SIOCSLOWAT = 0x80047302 + SIOCSPGRP = 0x80047308 + SIOCSSPPPPARAMS = 0x80206993 + SIOCSVH = 0xc02069f5 + SIOCSVNETID = 0x802069a6 + SOCK_CLOEXEC = 0x8000 + SOCK_DGRAM = 0x2 + SOCK_NONBLOCK = 0x4000 + SOCK_RAW = 0x3 + SOCK_RDM = 0x4 + SOCK_SEQPACKET = 0x5 + SOCK_STREAM = 0x1 + SOL_SOCKET = 0xffff + SOMAXCONN = 0x80 + SO_ACCEPTCONN = 0x2 + SO_BINDANY = 0x1000 + SO_BROADCAST = 0x20 + SO_DEBUG = 0x1 + SO_DONTROUTE = 0x10 + SO_ERROR = 0x1007 + SO_KEEPALIVE = 0x8 + SO_LINGER = 0x80 + SO_NETPROC = 0x1020 + SO_OOBINLINE = 0x100 + SO_PEERCRED = 0x1022 + SO_RCVBUF = 0x1002 + SO_RCVLOWAT = 0x1004 + SO_RCVTIMEO = 0x1006 + SO_REUSEADDR = 0x4 + SO_REUSEPORT = 0x200 + SO_RTABLE = 0x1021 + SO_SNDBUF = 0x1001 + SO_SNDLOWAT = 0x1003 + SO_SNDTIMEO = 0x1005 + SO_SPLICE = 0x1023 + SO_TIMESTAMP = 0x800 + SO_TYPE = 0x1008 + SO_USELOOPBACK = 0x40 + TCIFLUSH = 0x1 + TCIOFLUSH = 0x3 + TCOFLUSH = 0x2 + TCP_MAXBURST = 0x4 + TCP_MAXSEG = 0x2 + TCP_MAXWIN = 0xffff + TCP_MAX_SACK = 0x3 + TCP_MAX_WINSHIFT = 0xe + TCP_MD5SIG = 0x4 + TCP_MSS = 0x200 + TCP_NODELAY = 0x1 + TCP_NOPUSH = 0x10 + TCP_NSTATES = 0xb + TCP_SACK_ENABLE = 0x8 + TCSAFLUSH = 0x2 + TIOCCBRK = 0x2000747a + TIOCCDTR = 0x20007478 + TIOCCONS = 0x80047462 + TIOCDRAIN = 0x2000745e + TIOCEXCL = 0x2000740d + TIOCEXT = 0x80047460 + TIOCFLAG_CLOCAL = 0x2 + TIOCFLAG_CRTSCTS = 0x4 + TIOCFLAG_MDMBUF = 0x8 + TIOCFLAG_PPS = 0x10 + TIOCFLAG_SOFTCAR = 0x1 + TIOCFLUSH = 0x80047410 + TIOCGETA = 0x402c7413 + TIOCGETD = 0x4004741a + TIOCGFLAGS = 0x4004745d + TIOCGPGRP = 0x40047477 + TIOCGSID = 0x40047463 + TIOCGTSTAMP = 0x400c745b + TIOCGWINSZ = 0x40087468 + TIOCMBIC = 0x8004746b + TIOCMBIS = 0x8004746c + TIOCMGET = 0x4004746a + TIOCMODG = 0x4004746a + TIOCMODS = 0x8004746d + TIOCMSET = 0x8004746d + TIOCM_CAR = 0x40 + TIOCM_CD = 0x40 + TIOCM_CTS = 0x20 + TIOCM_DSR = 0x100 + TIOCM_DTR = 0x2 + TIOCM_LE = 0x1 + TIOCM_RI = 0x80 + TIOCM_RNG = 0x80 + TIOCM_RTS = 0x4 + TIOCM_SR = 0x10 + TIOCM_ST = 0x8 + TIOCNOTTY = 0x20007471 + TIOCNXCL = 0x2000740e + TIOCOUTQ = 0x40047473 + TIOCPKT = 0x80047470 + TIOCPKT_DATA = 0x0 + TIOCPKT_DOSTOP = 0x20 + TIOCPKT_FLUSHREAD = 0x1 + TIOCPKT_FLUSHWRITE = 0x2 + TIOCPKT_IOCTL = 0x40 + TIOCPKT_NOSTOP = 0x10 + TIOCPKT_START = 0x8 + TIOCPKT_STOP = 0x4 + TIOCREMOTE = 0x80047469 + TIOCSBRK = 0x2000747b + TIOCSCTTY = 0x20007461 + TIOCSDTR = 0x20007479 + TIOCSETA = 0x802c7414 + TIOCSETAF = 0x802c7416 + TIOCSETAW = 0x802c7415 + TIOCSETD = 0x8004741b + TIOCSFLAGS = 0x8004745c + TIOCSIG = 0x8004745f + TIOCSPGRP = 0x80047476 + TIOCSTART = 0x2000746e + TIOCSTAT = 0x80047465 + TIOCSTI = 0x80017472 + TIOCSTOP = 0x2000746f + TIOCSTSTAMP = 0x8008745a + TIOCSWINSZ = 0x80087467 + TIOCUCNTL = 0x80047466 + TOSTOP = 0x400000 + VDISCARD = 0xf + VDSUSP = 0xb + VEOF = 0x0 + VEOL = 0x1 + VEOL2 = 0x2 + VERASE = 0x3 + VINTR = 0x8 + VKILL = 0x5 + VLNEXT = 0xe + VMIN = 0x10 + VQUIT = 0x9 + VREPRINT = 0x6 + VSTART = 0xc + VSTATUS = 0x12 + VSTOP = 0xd + VSUSP = 0xa + VTIME = 0x11 + VWERASE = 0x4 + WALTSIG = 0x4 + WCONTINUED = 0x8 + WCOREFLAG = 0x80 + WNOHANG = 0x1 + WUNTRACED = 0x2 +) + +// Errors +const ( + E2BIG = syscall.Errno(0x7) + EACCES = syscall.Errno(0xd) + EADDRINUSE = syscall.Errno(0x30) + EADDRNOTAVAIL = syscall.Errno(0x31) + EAFNOSUPPORT = syscall.Errno(0x2f) + EAGAIN = syscall.Errno(0x23) + EALREADY = syscall.Errno(0x25) + EAUTH = syscall.Errno(0x50) + EBADF = syscall.Errno(0x9) + EBADRPC = syscall.Errno(0x48) + EBUSY = syscall.Errno(0x10) + ECANCELED = syscall.Errno(0x58) + ECHILD = syscall.Errno(0xa) + ECONNABORTED = syscall.Errno(0x35) + ECONNREFUSED = syscall.Errno(0x3d) + ECONNRESET = syscall.Errno(0x36) + EDEADLK = syscall.Errno(0xb) + EDESTADDRREQ = syscall.Errno(0x27) + EDOM = syscall.Errno(0x21) + EDQUOT = syscall.Errno(0x45) + EEXIST = syscall.Errno(0x11) + EFAULT = syscall.Errno(0xe) + EFBIG = syscall.Errno(0x1b) + EFTYPE = syscall.Errno(0x4f) + EHOSTDOWN = syscall.Errno(0x40) + EHOSTUNREACH = syscall.Errno(0x41) + EIDRM = syscall.Errno(0x59) + EILSEQ = syscall.Errno(0x54) + EINPROGRESS = syscall.Errno(0x24) + EINTR = syscall.Errno(0x4) + EINVAL = syscall.Errno(0x16) + EIO = syscall.Errno(0x5) + EIPSEC = syscall.Errno(0x52) + EISCONN = syscall.Errno(0x38) + EISDIR = syscall.Errno(0x15) + ELAST = syscall.Errno(0x5b) + ELOOP = syscall.Errno(0x3e) + EMEDIUMTYPE = syscall.Errno(0x56) + EMFILE = syscall.Errno(0x18) + EMLINK = syscall.Errno(0x1f) + EMSGSIZE = syscall.Errno(0x28) + ENAMETOOLONG = syscall.Errno(0x3f) + ENEEDAUTH = syscall.Errno(0x51) + ENETDOWN = syscall.Errno(0x32) + ENETRESET = syscall.Errno(0x34) + ENETUNREACH = syscall.Errno(0x33) + ENFILE = syscall.Errno(0x17) + ENOATTR = syscall.Errno(0x53) + ENOBUFS = syscall.Errno(0x37) + ENODEV = syscall.Errno(0x13) + ENOENT = syscall.Errno(0x2) + ENOEXEC = syscall.Errno(0x8) + ENOLCK = syscall.Errno(0x4d) + ENOMEDIUM = syscall.Errno(0x55) + ENOMEM = syscall.Errno(0xc) + ENOMSG = syscall.Errno(0x5a) + ENOPROTOOPT = syscall.Errno(0x2a) + ENOSPC = syscall.Errno(0x1c) + ENOSYS = syscall.Errno(0x4e) + ENOTBLK = syscall.Errno(0xf) + ENOTCONN = syscall.Errno(0x39) + ENOTDIR = syscall.Errno(0x14) + ENOTEMPTY = syscall.Errno(0x42) + ENOTSOCK = syscall.Errno(0x26) + ENOTSUP = syscall.Errno(0x5b) + ENOTTY = syscall.Errno(0x19) + ENXIO = syscall.Errno(0x6) + EOPNOTSUPP = syscall.Errno(0x2d) + EOVERFLOW = syscall.Errno(0x57) + EPERM = syscall.Errno(0x1) + EPFNOSUPPORT = syscall.Errno(0x2e) + EPIPE = syscall.Errno(0x20) + EPROCLIM = syscall.Errno(0x43) + EPROCUNAVAIL = syscall.Errno(0x4c) + EPROGMISMATCH = syscall.Errno(0x4b) + EPROGUNAVAIL = syscall.Errno(0x4a) + EPROTONOSUPPORT = syscall.Errno(0x2b) + EPROTOTYPE = syscall.Errno(0x29) + ERANGE = syscall.Errno(0x22) + EREMOTE = syscall.Errno(0x47) + EROFS = syscall.Errno(0x1e) + ERPCMISMATCH = syscall.Errno(0x49) + ESHUTDOWN = syscall.Errno(0x3a) + ESOCKTNOSUPPORT = syscall.Errno(0x2c) + ESPIPE = syscall.Errno(0x1d) + ESRCH = syscall.Errno(0x3) + ESTALE = syscall.Errno(0x46) + ETIMEDOUT = syscall.Errno(0x3c) + ETOOMANYREFS = syscall.Errno(0x3b) + ETXTBSY = syscall.Errno(0x1a) + EUSERS = syscall.Errno(0x44) + EWOULDBLOCK = syscall.Errno(0x23) + EXDEV = syscall.Errno(0x12) +) + +// Signals +const ( + SIGABRT = syscall.Signal(0x6) + SIGALRM = syscall.Signal(0xe) + SIGBUS = syscall.Signal(0xa) + SIGCHLD = syscall.Signal(0x14) + SIGCONT = syscall.Signal(0x13) + SIGEMT = syscall.Signal(0x7) + SIGFPE = syscall.Signal(0x8) + SIGHUP = syscall.Signal(0x1) + SIGILL = syscall.Signal(0x4) + SIGINFO = syscall.Signal(0x1d) + SIGINT = syscall.Signal(0x2) + SIGIO = syscall.Signal(0x17) + SIGIOT = syscall.Signal(0x6) + SIGKILL = syscall.Signal(0x9) + SIGPIPE = syscall.Signal(0xd) + SIGPROF = syscall.Signal(0x1b) + SIGQUIT = syscall.Signal(0x3) + SIGSEGV = syscall.Signal(0xb) + SIGSTOP = syscall.Signal(0x11) + SIGSYS = syscall.Signal(0xc) + SIGTERM = syscall.Signal(0xf) + SIGTHR = syscall.Signal(0x20) + SIGTRAP = syscall.Signal(0x5) + SIGTSTP = syscall.Signal(0x12) + SIGTTIN = syscall.Signal(0x15) + SIGTTOU = syscall.Signal(0x16) + SIGURG = syscall.Signal(0x10) + SIGUSR1 = syscall.Signal(0x1e) + SIGUSR2 = syscall.Signal(0x1f) + SIGVTALRM = syscall.Signal(0x1a) + SIGWINCH = syscall.Signal(0x1c) + SIGXCPU = syscall.Signal(0x18) + SIGXFSZ = syscall.Signal(0x19) +) + +// Error table +var errors = [...]string{ + 1: "operation not permitted", + 2: "no such file or directory", + 3: "no such process", + 4: "interrupted system call", + 5: "input/output error", + 6: "device not configured", + 7: "argument list too long", + 8: "exec format error", + 9: "bad file descriptor", + 10: "no child processes", + 11: "resource deadlock avoided", + 12: "cannot allocate memory", + 13: "permission denied", + 14: "bad address", + 15: "block device required", + 16: "device busy", + 17: "file exists", + 18: "cross-device link", + 19: "operation not supported by device", + 20: "not a directory", + 21: "is a directory", + 22: "invalid argument", + 23: "too many open files in system", + 24: "too many open files", + 25: "inappropriate ioctl for device", + 26: "text file busy", + 27: "file too large", + 28: "no space left on device", + 29: "illegal seek", + 30: "read-only file system", + 31: "too many links", + 32: "broken pipe", + 33: "numerical argument out of domain", + 34: "result too large", + 35: "resource temporarily unavailable", + 36: "operation now in progress", + 37: "operation already in progress", + 38: "socket operation on non-socket", + 39: "destination address required", + 40: "message too long", + 41: "protocol wrong type for socket", + 42: "protocol not available", + 43: "protocol not supported", + 44: "socket type not supported", + 45: "operation not supported", + 46: "protocol family not supported", + 47: "address family not supported by protocol family", + 48: "address already in use", + 49: "can't assign requested address", + 50: "network is down", + 51: "network is unreachable", + 52: "network dropped connection on reset", + 53: "software caused connection abort", + 54: "connection reset by peer", + 55: "no buffer space available", + 56: "socket is already connected", + 57: "socket is not connected", + 58: "can't send after socket shutdown", + 59: "too many references: can't splice", + 60: "connection timed out", + 61: "connection refused", + 62: "too many levels of symbolic links", + 63: "file name too long", + 64: "host is down", + 65: "no route to host", + 66: "directory not empty", + 67: "too many processes", + 68: "too many users", + 69: "disc quota exceeded", + 70: "stale NFS file handle", + 71: "too many levels of remote in path", + 72: "RPC struct is bad", + 73: "RPC version wrong", + 74: "RPC prog. not avail", + 75: "program version wrong", + 76: "bad procedure for program", + 77: "no locks available", + 78: "function not implemented", + 79: "inappropriate file type or format", + 80: "authentication error", + 81: "need authenticator", + 82: "IPsec processing failure", + 83: "attribute not found", + 84: "illegal byte sequence", + 85: "no medium found", + 86: "wrong medium type", + 87: "value too large to be stored in data type", + 88: "operation canceled", + 89: "identifier removed", + 90: "no message of desired type", + 91: "not supported", +} + +// Signal table +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/BPT trap", + 6: "abort trap", + 7: "EMT trap", + 8: "floating point exception", + 9: "killed", + 10: "bus error", + 11: "segmentation fault", + 12: "bad system call", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", + 16: "urgent I/O condition", + 17: "stopped (signal)", + 18: "stopped", + 19: "continued", + 20: "child exited", + 21: "stopped (tty input)", + 22: "stopped (tty output)", + 23: "I/O possible", + 24: "cputime limit exceeded", + 25: "filesize limit exceeded", + 26: "virtual timer expired", + 27: "profiling timer expired", + 28: "window size changes", + 29: "information request", + 30: "user defined signal 1", + 31: "user defined signal 2", + 32: "thread AST", +} diff --git a/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go new file mode 100644 index 0000000..41572c2 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go @@ -0,0 +1,1404 @@ +// mksyscall.pl -l32 -openbsd -arm -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go +// Code generated by the command above; see README.md. DO NOT EDIT. + +// +build openbsd,arm + +package unix + +import ( + "syscall" + "unsafe" +) + +var _ syscall.Errno + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getgroups(ngid int, gid *_Gid_t) (n int, err error) { + r0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setgroups(ngid int, gid *_Gid_t) (err error) { + _, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) { + r0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0) + wpid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) { + r0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) { + _, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socket(domain int, typ int, proto int) (fd int, err error) { + r0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) { + _, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) { + _, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) { + _, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Shutdown(s int, how int) (err error) { + _, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) { + _, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func recvmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sendmsg(s int, msg *Msghdr, flags int) (n int, err error) { + r0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) { + r0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) { + var _p0 unsafe.Pointer + if len(mib) > 0 { + _p0 = unsafe.Pointer(&mib[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimes(path string, timeval *[2]Timeval) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func futimes(fd int, timeval *[2]Timeval) (err error) { + _, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func fcntl(fd int, cmd int, arg int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg)) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Madvise(b []byte, behav int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mlockall(flags int) (err error) { + _, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mprotect(b []byte, prot int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Msync(b []byte, flags int) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlock(b []byte) (err error) { + var _p0 unsafe.Pointer + if len(b) > 0 { + _p0 = unsafe.Pointer(&b[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + _, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Munlockall() (err error) { + _, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func pipe(p *[2]_C_int) (err error) { + _, _, e1 := RawSyscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func getdents(fd int, buf []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(buf) > 0 { + _p0 = unsafe.Pointer(&buf[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Access(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Adjtime(delta *Timeval, olddelta *Timeval) (err error) { + _, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chflags(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chmod(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Chroot(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Close(fd int) (err error) { + _, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup(fd int) (nfd int, err error) { + r0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0) + nfd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Dup2(from int, to int) (err error) { + _, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Exit(code int) { + Syscall(SYS_EXIT, uintptr(code), 0, 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchdir(fd int) (err error) { + _, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchflags(fd int, flags int) (err error) { + _, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchmod(fd int, mode uint32) (err error) { + _, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fchown(fd int, uid int, gid int) (err error) { + _, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Flock(fd int, how int) (err error) { + _, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fpathconf(fd int, name int) (val int, err error) { + r0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstat(fd int, stat *Stat_t) (err error) { + _, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fstatfs(fd int, stat *Statfs_t) (err error) { + _, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Fsync(fd int) (err error) { + _, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Ftruncate(fd int, length int64) (err error) { + _, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getegid() (egid int) { + r0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0) + egid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Geteuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getgid() (gid int) { + r0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0) + gid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgid(pid int) (pgid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0) + pgid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpgrp() (pgrp int) { + r0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0) + pgrp = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpid() (pid int) { + r0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0) + pid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getppid() (ppid int) { + r0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0) + ppid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getpriority(which int, who int) (prio int, err error) { + r0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0) + prio = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getrusage(who int, rusage *Rusage) (err error) { + _, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getsid(pid int) (sid int, err error) { + r0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0) + sid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Gettimeofday(tv *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Getuid() (uid int) { + r0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0) + uid = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Issetugid() (tainted bool) { + r0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0) + tainted = bool(r0 != 0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kill(pid int, signum syscall.Signal) (err error) { + _, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Kqueue() (fd int, err error) { + r0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lchown(path string, uid int, gid int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Link(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Listen(s int, backlog int) (err error) { + _, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Lstat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkdir(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mkfifo(path string, mode uint32) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Mknod(path string, mode uint32, dev int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Nanosleep(time *Timespec, leftover *Timespec) (err error) { + _, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Open(path string, mode int, perm uint32) (fd int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm)) + fd = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pathconf(path string, name int) (val int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + r0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0) + val = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pread(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Pwrite(fd int, p []byte, offset int64) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func read(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Readlink(path string, buf []byte) (n int, err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 unsafe.Pointer + if len(buf) > 0 { + _p1 = unsafe.Pointer(&buf[0]) + } else { + _p1 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rename(from string, to string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(from) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(to) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Revoke(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Rmdir(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seek(fd int, offset int64, whence int) (newoffset int64, err error) { + r0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0) + newoffset = int64(int64(r1)<<32 | int64(r0)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Select(n int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (err error) { + _, _, e1 := Syscall6(SYS_SELECT, uintptr(n), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setegid(egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Seteuid(euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setgid(gid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setlogin(name string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(name) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpgid(pid int, pgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setpriority(which int, who int, prio int) (err error) { + _, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setregid(rgid int, egid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setreuid(ruid int, euid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresgid(rgid int, egid int, sgid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setresuid(ruid int, euid int, suid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid)) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setrlimit(which int, lim *Rlimit) (err error) { + _, _, e1 := RawSyscall(SYS_SETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setsid() (pid int, err error) { + r0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0) + pid = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Settimeofday(tp *Timeval) (err error) { + _, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Setuid(uid int) (err error) { + _, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Stat(path string, stat *Stat_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Statfs(path string, stat *Statfs_t) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Symlink(path string, link string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + var _p1 *byte + _p1, err = BytePtrFromString(link) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Sync() (err error) { + _, _, e1 := Syscall(SYS_SYNC, 0, 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Truncate(path string, length int64) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Umask(newmask int) (oldmask int) { + r0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0) + oldmask = int(r0) + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unlink(path string) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func Unmount(path string, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func write(fd int, p []byte) (n int, err error) { + var _p0 unsafe.Pointer + if len(p) > 0 { + _p0 = unsafe.Pointer(&p[0]) + } else { + _p0 = unsafe.Pointer(&_zero) + } + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p))) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) { + r0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0) + ret = uintptr(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func munmap(addr uintptr, length uintptr) (err error) { + _, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func readlen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func writelen(fd int, buf *byte, nbuf int) (n int, err error) { + r0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(nbuf)) + n = int(r0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} + +// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT + +func utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) { + var _p0 *byte + _p0, err = BytePtrFromString(path) + if err != nil { + return + } + _, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0) + if e1 != 0 { + err = errnoErr(e1) + } + return +} diff --git a/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go new file mode 100644 index 0000000..32653e5 --- /dev/null +++ b/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go @@ -0,0 +1,213 @@ +// mksysnum_openbsd.pl +// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT + +// +build arm,openbsd + +package unix + +const ( + SYS_EXIT = 1 // { void sys_exit(int rval); } + SYS_FORK = 2 // { int sys_fork(void); } + SYS_READ = 3 // { ssize_t sys_read(int fd, void *buf, size_t nbyte); } + SYS_WRITE = 4 // { ssize_t sys_write(int fd, const void *buf, \ + SYS_OPEN = 5 // { int sys_open(const char *path, \ + SYS_CLOSE = 6 // { int sys_close(int fd); } + SYS_GETENTROPY = 7 // { int sys_getentropy(void *buf, size_t nbyte); } + SYS___TFORK = 8 // { int sys___tfork(const struct __tfork *param, \ + SYS_LINK = 9 // { int sys_link(const char *path, const char *link); } + SYS_UNLINK = 10 // { int sys_unlink(const char *path); } + SYS_WAIT4 = 11 // { pid_t sys_wait4(pid_t pid, int *status, \ + SYS_CHDIR = 12 // { int sys_chdir(const char *path); } + SYS_FCHDIR = 13 // { int sys_fchdir(int fd); } + SYS_MKNOD = 14 // { int sys_mknod(const char *path, mode_t mode, \ + SYS_CHMOD = 15 // { int sys_chmod(const char *path, mode_t mode); } + SYS_CHOWN = 16 // { int sys_chown(const char *path, uid_t uid, \ + SYS_OBREAK = 17 // { int sys_obreak(char *nsize); } break + SYS_GETDTABLECOUNT = 18 // { int sys_getdtablecount(void); } + SYS_GETRUSAGE = 19 // { int sys_getrusage(int who, \ + SYS_GETPID = 20 // { pid_t sys_getpid(void); } + SYS_MOUNT = 21 // { int sys_mount(const char *type, const char *path, \ + SYS_UNMOUNT = 22 // { int sys_unmount(const char *path, int flags); } + SYS_SETUID = 23 // { int sys_setuid(uid_t uid); } + SYS_GETUID = 24 // { uid_t sys_getuid(void); } + SYS_GETEUID = 25 // { uid_t sys_geteuid(void); } + SYS_PTRACE = 26 // { int sys_ptrace(int req, pid_t pid, caddr_t addr, \ + SYS_RECVMSG = 27 // { ssize_t sys_recvmsg(int s, struct msghdr *msg, \ + SYS_SENDMSG = 28 // { ssize_t sys_sendmsg(int s, \ + SYS_RECVFROM = 29 // { ssize_t sys_recvfrom(int s, void *buf, size_t len, \ + SYS_ACCEPT = 30 // { int sys_accept(int s, struct sockaddr *name, \ + SYS_GETPEERNAME = 31 // { int sys_getpeername(int fdes, struct sockaddr *asa, \ + SYS_GETSOCKNAME = 32 // { int sys_getsockname(int fdes, struct sockaddr *asa, \ + SYS_ACCESS = 33 // { int sys_access(const char *path, int amode); } + SYS_CHFLAGS = 34 // { int sys_chflags(const char *path, u_int flags); } + SYS_FCHFLAGS = 35 // { int sys_fchflags(int fd, u_int flags); } + SYS_SYNC = 36 // { void sys_sync(void); } + SYS_STAT = 38 // { int sys_stat(const char *path, struct stat *ub); } + SYS_GETPPID = 39 // { pid_t sys_getppid(void); } + SYS_LSTAT = 40 // { int sys_lstat(const char *path, struct stat *ub); } + SYS_DUP = 41 // { int sys_dup(int fd); } + SYS_FSTATAT = 42 // { int sys_fstatat(int fd, const char *path, \ + SYS_GETEGID = 43 // { gid_t sys_getegid(void); } + SYS_PROFIL = 44 // { int sys_profil(caddr_t samples, size_t size, \ + SYS_KTRACE = 45 // { int sys_ktrace(const char *fname, int ops, \ + SYS_SIGACTION = 46 // { int sys_sigaction(int signum, \ + SYS_GETGID = 47 // { gid_t sys_getgid(void); } + SYS_SIGPROCMASK = 48 // { int sys_sigprocmask(int how, sigset_t mask); } + SYS_GETLOGIN = 49 // { int sys_getlogin(char *namebuf, u_int namelen); } + SYS_SETLOGIN = 50 // { int sys_setlogin(const char *namebuf); } + SYS_ACCT = 51 // { int sys_acct(const char *path); } + SYS_SIGPENDING = 52 // { int sys_sigpending(void); } + SYS_FSTAT = 53 // { int sys_fstat(int fd, struct stat *sb); } + SYS_IOCTL = 54 // { int sys_ioctl(int fd, \ + SYS_REBOOT = 55 // { int sys_reboot(int opt); } + SYS_REVOKE = 56 // { int sys_revoke(const char *path); } + SYS_SYMLINK = 57 // { int sys_symlink(const char *path, \ + SYS_READLINK = 58 // { ssize_t sys_readlink(const char *path, \ + SYS_EXECVE = 59 // { int sys_execve(const char *path, \ + SYS_UMASK = 60 // { mode_t sys_umask(mode_t newmask); } + SYS_CHROOT = 61 // { int sys_chroot(const char *path); } + SYS_GETFSSTAT = 62 // { int sys_getfsstat(struct statfs *buf, size_t bufsize, \ + SYS_STATFS = 63 // { int sys_statfs(const char *path, \ + SYS_FSTATFS = 64 // { int sys_fstatfs(int fd, struct statfs *buf); } + SYS_FHSTATFS = 65 // { int sys_fhstatfs(const fhandle_t *fhp, \ + SYS_VFORK = 66 // { int sys_vfork(void); } + SYS_GETTIMEOFDAY = 67 // { int sys_gettimeofday(struct timeval *tp, \ + SYS_SETTIMEOFDAY = 68 // { int sys_settimeofday(const struct timeval *tv, \ + SYS_SETITIMER = 69 // { int sys_setitimer(int which, \ + SYS_GETITIMER = 70 // { int sys_getitimer(int which, \ + SYS_SELECT = 71 // { int sys_select(int nd, fd_set *in, fd_set *ou, \ + SYS_KEVENT = 72 // { int sys_kevent(int fd, \ + SYS_MUNMAP = 73 // { int sys_munmap(void *addr, size_t len); } + SYS_MPROTECT = 74 // { int sys_mprotect(void *addr, size_t len, \ + SYS_MADVISE = 75 // { int sys_madvise(void *addr, size_t len, \ + SYS_UTIMES = 76 // { int sys_utimes(const char *path, \ + SYS_FUTIMES = 77 // { int sys_futimes(int fd, \ + SYS_MINCORE = 78 // { int sys_mincore(void *addr, size_t len, \ + SYS_GETGROUPS = 79 // { int sys_getgroups(int gidsetsize, \ + SYS_SETGROUPS = 80 // { int sys_setgroups(int gidsetsize, \ + SYS_GETPGRP = 81 // { int sys_getpgrp(void); } + SYS_SETPGID = 82 // { int sys_setpgid(pid_t pid, pid_t pgid); } + SYS_SENDSYSLOG = 83 // { int sys_sendsyslog(const void *buf, size_t nbyte); } + SYS_UTIMENSAT = 84 // { int sys_utimensat(int fd, const char *path, \ + SYS_FUTIMENS = 85 // { int sys_futimens(int fd, \ + SYS_CLOCK_GETTIME = 87 // { int sys_clock_gettime(clockid_t clock_id, \ + SYS_CLOCK_SETTIME = 88 // { int sys_clock_settime(clockid_t clock_id, \ + SYS_CLOCK_GETRES = 89 // { int sys_clock_getres(clockid_t clock_id, \ + SYS_DUP2 = 90 // { int sys_dup2(int from, int to); } + SYS_NANOSLEEP = 91 // { int sys_nanosleep(const struct timespec *rqtp, \ + SYS_FCNTL = 92 // { int sys_fcntl(int fd, int cmd, ... void *arg); } + SYS_ACCEPT4 = 93 // { int sys_accept4(int s, struct sockaddr *name, \ + SYS___THRSLEEP = 94 // { int sys___thrsleep(const volatile void *ident, \ + SYS_FSYNC = 95 // { int sys_fsync(int fd); } + SYS_SETPRIORITY = 96 // { int sys_setpriority(int which, id_t who, int prio); } + SYS_SOCKET = 97 // { int sys_socket(int domain, int type, int protocol); } + SYS_CONNECT = 98 // { int sys_connect(int s, const struct sockaddr *name, \ + SYS_GETDENTS = 99 // { int sys_getdents(int fd, void *buf, size_t buflen); } + SYS_GETPRIORITY = 100 // { int sys_getpriority(int which, id_t who); } + SYS_PIPE2 = 101 // { int sys_pipe2(int *fdp, int flags); } + SYS_DUP3 = 102 // { int sys_dup3(int from, int to, int flags); } + SYS_SIGRETURN = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); } + SYS_BIND = 104 // { int sys_bind(int s, const struct sockaddr *name, \ + SYS_SETSOCKOPT = 105 // { int sys_setsockopt(int s, int level, int name, \ + SYS_LISTEN = 106 // { int sys_listen(int s, int backlog); } + SYS_CHFLAGSAT = 107 // { int sys_chflagsat(int fd, const char *path, \ + SYS_PPOLL = 109 // { int sys_ppoll(struct pollfd *fds, \ + SYS_PSELECT = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, \ + SYS_SIGSUSPEND = 111 // { int sys_sigsuspend(int mask); } + SYS_GETSOCKOPT = 118 // { int sys_getsockopt(int s, int level, int name, \ + SYS_READV = 120 // { ssize_t sys_readv(int fd, \ + SYS_WRITEV = 121 // { ssize_t sys_writev(int fd, \ + SYS_KILL = 122 // { int sys_kill(int pid, int signum); } + SYS_FCHOWN = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); } + SYS_FCHMOD = 124 // { int sys_fchmod(int fd, mode_t mode); } + SYS_SETREUID = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); } + SYS_SETREGID = 127 // { int sys_setregid(gid_t rgid, gid_t egid); } + SYS_RENAME = 128 // { int sys_rename(const char *from, const char *to); } + SYS_FLOCK = 131 // { int sys_flock(int fd, int how); } + SYS_MKFIFO = 132 // { int sys_mkfifo(const char *path, mode_t mode); } + SYS_SENDTO = 133 // { ssize_t sys_sendto(int s, const void *buf, \ + SYS_SHUTDOWN = 134 // { int sys_shutdown(int s, int how); } + SYS_SOCKETPAIR = 135 // { int sys_socketpair(int domain, int type, \ + SYS_MKDIR = 136 // { int sys_mkdir(const char *path, mode_t mode); } + SYS_RMDIR = 137 // { int sys_rmdir(const char *path); } + SYS_ADJTIME = 140 // { int sys_adjtime(const struct timeval *delta, \ + SYS_SETSID = 147 // { int sys_setsid(void); } + SYS_QUOTACTL = 148 // { int sys_quotactl(const char *path, int cmd, \ + SYS_NFSSVC = 155 // { int sys_nfssvc(int flag, void *argp); } + SYS_GETFH = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); } + SYS_SYSARCH = 165 // { int sys_sysarch(int op, void *parms); } + SYS_PREAD = 173 // { ssize_t sys_pread(int fd, void *buf, \ + SYS_PWRITE = 174 // { ssize_t sys_pwrite(int fd, const void *buf, \ + SYS_SETGID = 181 // { int sys_setgid(gid_t gid); } + SYS_SETEGID = 182 // { int sys_setegid(gid_t egid); } + SYS_SETEUID = 183 // { int sys_seteuid(uid_t euid); } + SYS_PATHCONF = 191 // { long sys_pathconf(const char *path, int name); } + SYS_FPATHCONF = 192 // { long sys_fpathconf(int fd, int name); } + SYS_SWAPCTL = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); } + SYS_GETRLIMIT = 194 // { int sys_getrlimit(int which, \ + SYS_SETRLIMIT = 195 // { int sys_setrlimit(int which, \ + SYS_MMAP = 197 // { void *sys_mmap(void *addr, size_t len, int prot, \ + SYS_LSEEK = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, \ + SYS_TRUNCATE = 200 // { int sys_truncate(const char *path, int pad, \ + SYS_FTRUNCATE = 201 // { int sys_ftruncate(int fd, int pad, off_t length); } + SYS___SYSCTL = 202 // { int sys___sysctl(const int *name, u_int namelen, \ + SYS_MLOCK = 203 // { int sys_mlock(const void *addr, size_t len); } + SYS_MUNLOCK = 204 // { int sys_munlock(const void *addr, size_t len); } + SYS_GETPGID = 207 // { pid_t sys_getpgid(pid_t pid); } + SYS_UTRACE = 209 // { int sys_utrace(const char *label, const void *addr, \ + SYS_SEMGET = 221 // { int sys_semget(key_t key, int nsems, int semflg); } + SYS_MSGGET = 225 // { int sys_msgget(key_t key, int msgflg); } + SYS_MSGSND = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, \ + SYS_MSGRCV = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, \ + SYS_SHMAT = 228 // { void *sys_shmat(int shmid, const void *shmaddr, \ + SYS_SHMDT = 230 // { int sys_shmdt(const void *shmaddr); } + SYS_MINHERIT = 250 // { int sys_minherit(void *addr, size_t len, \ + SYS_POLL = 252 // { int sys_poll(struct pollfd *fds, \ + SYS_ISSETUGID = 253 // { int sys_issetugid(void); } + SYS_LCHOWN = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); } + SYS_GETSID = 255 // { pid_t sys_getsid(pid_t pid); } + SYS_MSYNC = 256 // { int sys_msync(void *addr, size_t len, int flags); } + SYS_PIPE = 263 // { int sys_pipe(int *fdp); } + SYS_FHOPEN = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); } + SYS_PREADV = 267 // { ssize_t sys_preadv(int fd, \ + SYS_PWRITEV = 268 // { ssize_t sys_pwritev(int fd, \ + SYS_KQUEUE = 269 // { int sys_kqueue(void); } + SYS_MLOCKALL = 271 // { int sys_mlockall(int flags); } + SYS_MUNLOCKALL = 272 // { int sys_munlockall(void); } + SYS_GETRESUID = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, \ + SYS_SETRESUID = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, \ + SYS_GETRESGID = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, \ + SYS_SETRESGID = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, \ + SYS_MQUERY = 286 // { void *sys_mquery(void *addr, size_t len, int prot, \ + SYS_CLOSEFROM = 287 // { int sys_closefrom(int fd); } + SYS_SIGALTSTACK = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, \ + SYS_SHMGET = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); } + SYS_SEMOP = 290 // { int sys_semop(int semid, struct sembuf *sops, \ + SYS_FHSTAT = 294 // { int sys_fhstat(const fhandle_t *fhp, \ + SYS___SEMCTL = 295 // { int sys___semctl(int semid, int semnum, int cmd, \ + SYS_SHMCTL = 296 // { int sys_shmctl(int shmid, int cmd, \ + SYS_MSGCTL = 297 // { int sys_msgctl(int msqid, int cmd, \ + SYS_SCHED_YIELD = 298 // { int sys_sched_yield(void); } + SYS_GETTHRID = 299 // { pid_t sys_getthrid(void); } + SYS___THRWAKEUP = 301 // { int sys___thrwakeup(const volatile void *ident, \ + SYS___THREXIT = 302 // { void sys___threxit(pid_t *notdead); } + SYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, \ + SYS___GETCWD = 304 // { int sys___getcwd(char *buf, size_t len); } + SYS_ADJFREQ = 305 // { int sys_adjfreq(const int64_t *freq, \ + SYS_SETRTABLE = 310 // { int sys_setrtable(int rtableid); } + SYS_GETRTABLE = 311 // { int sys_getrtable(void); } + SYS_FACCESSAT = 313 // { int sys_faccessat(int fd, const char *path, \ + SYS_FCHMODAT = 314 // { int sys_fchmodat(int fd, const char *path, \ + SYS_FCHOWNAT = 315 // { int sys_fchownat(int fd, const char *path, \ + SYS_LINKAT = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, \ + SYS_MKDIRAT = 318 // { int sys_mkdirat(int fd, const char *path, \ + SYS_MKFIFOAT = 319 // { int sys_mkfifoat(int fd, const char *path, \ + SYS_MKNODAT = 320 // { int sys_mknodat(int fd, const char *path, \ + SYS_OPENAT = 321 // { int sys_openat(int fd, const char *path, int flags, \ + SYS_READLINKAT = 322 // { ssize_t sys_readlinkat(int fd, const char *path, \ + SYS_RENAMEAT = 323 // { int sys_renameat(int fromfd, const char *from, \ + SYS_SYMLINKAT = 324 // { int sys_symlinkat(const char *path, int fd, \ + SYS_UNLINKAT = 325 // { int sys_unlinkat(int fd, const char *path, \ + SYS___SET_TCB = 329 // { void sys___set_tcb(void *tcb); } + SYS___GET_TCB = 330 // { void *sys___get_tcb(void); } +) diff --git a/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go new file mode 100644 index 0000000..62e1f7c --- /dev/null +++ b/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go @@ -0,0 +1,439 @@ +// Created by cgo -godefs - DO NOT EDIT +// cgo -godefs types_openbsd.go + +// +build arm,openbsd + +package unix + +const ( + sizeofPtr = 0x4 + sizeofShort = 0x2 + sizeofInt = 0x4 + sizeofLong = 0x4 + sizeofLongLong = 0x8 +) + +type ( + _C_short int16 + _C_int int32 + _C_long int32 + _C_long_long int64 +) + +type Timespec struct { + Sec int64 + Nsec int32 +} + +type Timeval struct { + Sec int64 + Usec int32 +} + +type Rusage struct { + Utime Timeval + Stime Timeval + Maxrss int32 + Ixrss int32 + Idrss int32 + Isrss int32 + Minflt int32 + Majflt int32 + Nswap int32 + Inblock int32 + Oublock int32 + Msgsnd int32 + Msgrcv int32 + Nsignals int32 + Nvcsw int32 + Nivcsw int32 +} + +type Rlimit struct { + Cur uint64 + Max uint64 +} + +type _Gid_t uint32 + +const ( + S_IFMT = 0xf000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +type Stat_t struct { + Mode uint32 + Dev int32 + Ino uint64 + Nlink uint32 + Uid uint32 + Gid uint32 + Rdev int32 + Atim Timespec + Mtim Timespec + Ctim Timespec + Size int64 + Blocks int64 + Blksize int32 + Flags uint32 + Gen uint32 + X__st_birthtim Timespec +} + +type Statfs_t struct { + F_flags uint32 + F_bsize uint32 + F_iosize uint32 + F_blocks uint64 + F_bfree uint64 + F_bavail int64 + F_files uint64 + F_ffree uint64 + F_favail int64 + F_syncwrites uint64 + F_syncreads uint64 + F_asyncwrites uint64 + F_asyncreads uint64 + F_fsid Fsid + F_namemax uint32 + F_owner uint32 + F_ctime uint64 + F_fstypename [16]uint8 + F_mntonname [90]uint8 + F_mntfromname [90]uint8 + F_mntfromspec [90]uint8 + Pad_cgo_0 [2]byte + Mount_info [160]byte +} + +type Flock_t struct { + Start int64 + Len int64 + Pid int32 + Type int16 + Whence int16 +} + +type Dirent struct { + Fileno uint64 + Off int64 + Reclen uint16 + Type uint8 + Namlen uint8 + X__d_padding [4]uint8 + Name [256]uint8 +} + +type Fsid struct { + Val [2]int32 +} + +type RawSockaddrInet4 struct { + Len uint8 + Family uint8 + Port uint16 + Addr [4]byte /* in_addr */ + Zero [8]int8 +} + +type RawSockaddrInet6 struct { + Len uint8 + Family uint8 + Port uint16 + Flowinfo uint32 + Addr [16]byte /* in6_addr */ + Scope_id uint32 +} + +type RawSockaddrUnix struct { + Len uint8 + Family uint8 + Path [104]int8 +} + +type RawSockaddrDatalink struct { + Len uint8 + Family uint8 + Index uint16 + Type uint8 + Nlen uint8 + Alen uint8 + Slen uint8 + Data [24]int8 +} + +type RawSockaddr struct { + Len uint8 + Family uint8 + Data [14]int8 +} + +type RawSockaddrAny struct { + Addr RawSockaddr + Pad [92]int8 +} + +type _Socklen uint32 + +type Linger struct { + Onoff int32 + Linger int32 +} + +type Iovec struct { + Base *byte + Len uint32 +} + +type IPMreq struct { + Multiaddr [4]byte /* in_addr */ + Interface [4]byte /* in_addr */ +} + +type IPv6Mreq struct { + Multiaddr [16]byte /* in6_addr */ + Interface uint32 +} + +type Msghdr struct { + Name *byte + Namelen uint32 + Iov *Iovec + Iovlen uint32 + Control *byte + Controllen uint32 + Flags int32 +} + +type Cmsghdr struct { + Len uint32 + Level int32 + Type int32 +} + +type Inet6Pktinfo struct { + Addr [16]byte /* in6_addr */ + Ifindex uint32 +} + +type IPv6MTUInfo struct { + Addr RawSockaddrInet6 + Mtu uint32 +} + +type ICMPv6Filter struct { + Filt [8]uint32 +} + +const ( + SizeofSockaddrInet4 = 0x10 + SizeofSockaddrInet6 = 0x1c + SizeofSockaddrAny = 0x6c + SizeofSockaddrUnix = 0x6a + SizeofSockaddrDatalink = 0x20 + SizeofLinger = 0x8 + SizeofIPMreq = 0x8 + SizeofIPv6Mreq = 0x14 + SizeofMsghdr = 0x1c + SizeofCmsghdr = 0xc + SizeofInet6Pktinfo = 0x14 + SizeofIPv6MTUInfo = 0x20 + SizeofICMPv6Filter = 0x20 +) + +const ( + PTRACE_TRACEME = 0x0 + PTRACE_CONT = 0x7 + PTRACE_KILL = 0x8 +) + +type Kevent_t struct { + Ident uint32 + Filter int16 + Flags uint16 + Fflags uint32 + Data int64 + Udata *byte +} + +type FdSet struct { + Bits [32]uint32 +} + +const ( + SizeofIfMsghdr = 0x98 + SizeofIfData = 0x80 + SizeofIfaMsghdr = 0x18 + SizeofIfAnnounceMsghdr = 0x1a + SizeofRtMsghdr = 0x60 + SizeofRtMetrics = 0x38 +) + +type IfMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Xflags int32 + Data IfData +} + +type IfData struct { + Type uint8 + Addrlen uint8 + Hdrlen uint8 + Link_state uint8 + Mtu uint32 + Metric uint32 + Pad uint32 + Baudrate uint64 + Ipackets uint64 + Ierrors uint64 + Opackets uint64 + Oerrors uint64 + Collisions uint64 + Ibytes uint64 + Obytes uint64 + Imcasts uint64 + Omcasts uint64 + Iqdrops uint64 + Noproto uint64 + Capabilities uint32 + Lastchange Timeval +} + +type IfaMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Pad1 uint8 + Pad2 uint8 + Addrs int32 + Flags int32 + Metric int32 +} + +type IfAnnounceMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + What uint16 + Name [16]uint8 +} + +type RtMsghdr struct { + Msglen uint16 + Version uint8 + Type uint8 + Hdrlen uint16 + Index uint16 + Tableid uint16 + Priority uint8 + Mpls uint8 + Addrs int32 + Flags int32 + Fmask int32 + Pid int32 + Seq int32 + Errno int32 + Inits uint32 + Rmx RtMetrics +} + +type RtMetrics struct { + Pksent uint64 + Expire int64 + Locks uint32 + Mtu uint32 + Refcnt uint32 + Hopcount uint32 + Recvpipe uint32 + Sendpipe uint32 + Ssthresh uint32 + Rtt uint32 + Rttvar uint32 + Pad uint32 +} + +type Mclpool struct{} + +const ( + SizeofBpfVersion = 0x4 + SizeofBpfStat = 0x8 + SizeofBpfProgram = 0x8 + SizeofBpfInsn = 0x8 + SizeofBpfHdr = 0x14 +) + +type BpfVersion struct { + Major uint16 + Minor uint16 +} + +type BpfStat struct { + Recv uint32 + Drop uint32 +} + +type BpfProgram struct { + Len uint32 + Insns *BpfInsn +} + +type BpfInsn struct { + Code uint16 + Jt uint8 + Jf uint8 + K uint32 +} + +type BpfHdr struct { + Tstamp BpfTimeval + Caplen uint32 + Datalen uint32 + Hdrlen uint16 + Pad_cgo_0 [2]byte +} + +type BpfTimeval struct { + Sec uint32 + Usec uint32 +} + +type Termios struct { + Iflag uint32 + Oflag uint32 + Cflag uint32 + Lflag uint32 + Cc [20]uint8 + Ispeed int32 + Ospeed int32 +} + +const ( + AT_FDCWD = -0x64 + AT_SYMLINK_NOFOLLOW = 0x2 +) diff --git a/vendor/golang.org/x/sys/windows/types_windows.go b/vendor/golang.org/x/sys/windows/types_windows.go new file mode 100644 index 0000000..401a5f2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows.go @@ -0,0 +1,1282 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +import "syscall" + +const ( + // Windows errors. + ERROR_FILE_NOT_FOUND syscall.Errno = 2 + ERROR_PATH_NOT_FOUND syscall.Errno = 3 + ERROR_ACCESS_DENIED syscall.Errno = 5 + ERROR_NO_MORE_FILES syscall.Errno = 18 + ERROR_HANDLE_EOF syscall.Errno = 38 + ERROR_NETNAME_DELETED syscall.Errno = 64 + ERROR_FILE_EXISTS syscall.Errno = 80 + ERROR_BROKEN_PIPE syscall.Errno = 109 + ERROR_BUFFER_OVERFLOW syscall.Errno = 111 + ERROR_INSUFFICIENT_BUFFER syscall.Errno = 122 + ERROR_MOD_NOT_FOUND syscall.Errno = 126 + ERROR_PROC_NOT_FOUND syscall.Errno = 127 + ERROR_ALREADY_EXISTS syscall.Errno = 183 + ERROR_ENVVAR_NOT_FOUND syscall.Errno = 203 + ERROR_MORE_DATA syscall.Errno = 234 + ERROR_OPERATION_ABORTED syscall.Errno = 995 + ERROR_IO_PENDING syscall.Errno = 997 + ERROR_SERVICE_SPECIFIC_ERROR syscall.Errno = 1066 + ERROR_NOT_FOUND syscall.Errno = 1168 + ERROR_PRIVILEGE_NOT_HELD syscall.Errno = 1314 + WSAEACCES syscall.Errno = 10013 + WSAECONNRESET syscall.Errno = 10054 +) + +const ( + // Invented values to support what package os expects. + O_RDONLY = 0x00000 + O_WRONLY = 0x00001 + O_RDWR = 0x00002 + O_CREAT = 0x00040 + O_EXCL = 0x00080 + O_NOCTTY = 0x00100 + O_TRUNC = 0x00200 + O_NONBLOCK = 0x00800 + O_APPEND = 0x00400 + O_SYNC = 0x01000 + O_ASYNC = 0x02000 + O_CLOEXEC = 0x80000 +) + +const ( + // More invented values for signals + SIGHUP = Signal(0x1) + SIGINT = Signal(0x2) + SIGQUIT = Signal(0x3) + SIGILL = Signal(0x4) + SIGTRAP = Signal(0x5) + SIGABRT = Signal(0x6) + SIGBUS = Signal(0x7) + SIGFPE = Signal(0x8) + SIGKILL = Signal(0x9) + SIGSEGV = Signal(0xb) + SIGPIPE = Signal(0xd) + SIGALRM = Signal(0xe) + SIGTERM = Signal(0xf) +) + +var signals = [...]string{ + 1: "hangup", + 2: "interrupt", + 3: "quit", + 4: "illegal instruction", + 5: "trace/breakpoint trap", + 6: "aborted", + 7: "bus error", + 8: "floating point exception", + 9: "killed", + 10: "user defined signal 1", + 11: "segmentation fault", + 12: "user defined signal 2", + 13: "broken pipe", + 14: "alarm clock", + 15: "terminated", +} + +const ( + GENERIC_READ = 0x80000000 + GENERIC_WRITE = 0x40000000 + GENERIC_EXECUTE = 0x20000000 + GENERIC_ALL = 0x10000000 + + FILE_LIST_DIRECTORY = 0x00000001 + FILE_APPEND_DATA = 0x00000004 + FILE_WRITE_ATTRIBUTES = 0x00000100 + + FILE_SHARE_READ = 0x00000001 + FILE_SHARE_WRITE = 0x00000002 + FILE_SHARE_DELETE = 0x00000004 + FILE_ATTRIBUTE_READONLY = 0x00000001 + FILE_ATTRIBUTE_HIDDEN = 0x00000002 + FILE_ATTRIBUTE_SYSTEM = 0x00000004 + FILE_ATTRIBUTE_DIRECTORY = 0x00000010 + FILE_ATTRIBUTE_ARCHIVE = 0x00000020 + FILE_ATTRIBUTE_NORMAL = 0x00000080 + FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400 + + INVALID_FILE_ATTRIBUTES = 0xffffffff + + CREATE_NEW = 1 + CREATE_ALWAYS = 2 + OPEN_EXISTING = 3 + OPEN_ALWAYS = 4 + TRUNCATE_EXISTING = 5 + + FILE_FLAG_OPEN_REPARSE_POINT = 0x00200000 + FILE_FLAG_BACKUP_SEMANTICS = 0x02000000 + FILE_FLAG_OVERLAPPED = 0x40000000 + + HANDLE_FLAG_INHERIT = 0x00000001 + STARTF_USESTDHANDLES = 0x00000100 + STARTF_USESHOWWINDOW = 0x00000001 + DUPLICATE_CLOSE_SOURCE = 0x00000001 + DUPLICATE_SAME_ACCESS = 0x00000002 + + STD_INPUT_HANDLE = -10 & (1<<32 - 1) + STD_OUTPUT_HANDLE = -11 & (1<<32 - 1) + STD_ERROR_HANDLE = -12 & (1<<32 - 1) + + FILE_BEGIN = 0 + FILE_CURRENT = 1 + FILE_END = 2 + + LANG_ENGLISH = 0x09 + SUBLANG_ENGLISH_US = 0x01 + + FORMAT_MESSAGE_ALLOCATE_BUFFER = 256 + FORMAT_MESSAGE_IGNORE_INSERTS = 512 + FORMAT_MESSAGE_FROM_STRING = 1024 + FORMAT_MESSAGE_FROM_HMODULE = 2048 + FORMAT_MESSAGE_FROM_SYSTEM = 4096 + FORMAT_MESSAGE_ARGUMENT_ARRAY = 8192 + FORMAT_MESSAGE_MAX_WIDTH_MASK = 255 + + MAX_PATH = 260 + MAX_LONG_PATH = 32768 + + MAX_COMPUTERNAME_LENGTH = 15 + + TIME_ZONE_ID_UNKNOWN = 0 + TIME_ZONE_ID_STANDARD = 1 + + TIME_ZONE_ID_DAYLIGHT = 2 + IGNORE = 0 + INFINITE = 0xffffffff + + WAIT_TIMEOUT = 258 + WAIT_ABANDONED = 0x00000080 + WAIT_OBJECT_0 = 0x00000000 + WAIT_FAILED = 0xFFFFFFFF + + CREATE_NEW_PROCESS_GROUP = 0x00000200 + CREATE_UNICODE_ENVIRONMENT = 0x00000400 + + PROCESS_TERMINATE = 1 + PROCESS_QUERY_INFORMATION = 0x00000400 + SYNCHRONIZE = 0x00100000 + + FILE_MAP_COPY = 0x01 + FILE_MAP_WRITE = 0x02 + FILE_MAP_READ = 0x04 + FILE_MAP_EXECUTE = 0x20 + + CTRL_C_EVENT = 0 + CTRL_BREAK_EVENT = 1 + + // Windows reserves errors >= 1<<29 for application use. + APPLICATION_ERROR = 1 << 29 +) + +const ( + // flags for CreateToolhelp32Snapshot + TH32CS_SNAPHEAPLIST = 0x01 + TH32CS_SNAPPROCESS = 0x02 + TH32CS_SNAPTHREAD = 0x04 + TH32CS_SNAPMODULE = 0x08 + TH32CS_SNAPMODULE32 = 0x10 + TH32CS_SNAPALL = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD + TH32CS_INHERIT = 0x80000000 +) + +const ( + // filters for ReadDirectoryChangesW + FILE_NOTIFY_CHANGE_FILE_NAME = 0x001 + FILE_NOTIFY_CHANGE_DIR_NAME = 0x002 + FILE_NOTIFY_CHANGE_ATTRIBUTES = 0x004 + FILE_NOTIFY_CHANGE_SIZE = 0x008 + FILE_NOTIFY_CHANGE_LAST_WRITE = 0x010 + FILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020 + FILE_NOTIFY_CHANGE_CREATION = 0x040 + FILE_NOTIFY_CHANGE_SECURITY = 0x100 +) + +const ( + // do not reorder + FILE_ACTION_ADDED = iota + 1 + FILE_ACTION_REMOVED + FILE_ACTION_MODIFIED + FILE_ACTION_RENAMED_OLD_NAME + FILE_ACTION_RENAMED_NEW_NAME +) + +const ( + // wincrypt.h + PROV_RSA_FULL = 1 + PROV_RSA_SIG = 2 + PROV_DSS = 3 + PROV_FORTEZZA = 4 + PROV_MS_EXCHANGE = 5 + PROV_SSL = 6 + PROV_RSA_SCHANNEL = 12 + PROV_DSS_DH = 13 + PROV_EC_ECDSA_SIG = 14 + PROV_EC_ECNRA_SIG = 15 + PROV_EC_ECDSA_FULL = 16 + PROV_EC_ECNRA_FULL = 17 + PROV_DH_SCHANNEL = 18 + PROV_SPYRUS_LYNKS = 20 + PROV_RNG = 21 + PROV_INTEL_SEC = 22 + PROV_REPLACE_OWF = 23 + PROV_RSA_AES = 24 + CRYPT_VERIFYCONTEXT = 0xF0000000 + CRYPT_NEWKEYSET = 0x00000008 + CRYPT_DELETEKEYSET = 0x00000010 + CRYPT_MACHINE_KEYSET = 0x00000020 + CRYPT_SILENT = 0x00000040 + CRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080 + + USAGE_MATCH_TYPE_AND = 0 + USAGE_MATCH_TYPE_OR = 1 + + X509_ASN_ENCODING = 0x00000001 + PKCS_7_ASN_ENCODING = 0x00010000 + + CERT_STORE_PROV_MEMORY = 2 + + CERT_STORE_ADD_ALWAYS = 4 + + CERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004 + + CERT_TRUST_NO_ERROR = 0x00000000 + CERT_TRUST_IS_NOT_TIME_VALID = 0x00000001 + CERT_TRUST_IS_REVOKED = 0x00000004 + CERT_TRUST_IS_NOT_SIGNATURE_VALID = 0x00000008 + CERT_TRUST_IS_NOT_VALID_FOR_USAGE = 0x00000010 + CERT_TRUST_IS_UNTRUSTED_ROOT = 0x00000020 + CERT_TRUST_REVOCATION_STATUS_UNKNOWN = 0x00000040 + CERT_TRUST_IS_CYCLIC = 0x00000080 + CERT_TRUST_INVALID_EXTENSION = 0x00000100 + CERT_TRUST_INVALID_POLICY_CONSTRAINTS = 0x00000200 + CERT_TRUST_INVALID_BASIC_CONSTRAINTS = 0x00000400 + CERT_TRUST_INVALID_NAME_CONSTRAINTS = 0x00000800 + CERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000 + CERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT = 0x00002000 + CERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000 + CERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT = 0x00008000 + CERT_TRUST_IS_OFFLINE_REVOCATION = 0x01000000 + CERT_TRUST_NO_ISSUANCE_CHAIN_POLICY = 0x02000000 + CERT_TRUST_IS_EXPLICIT_DISTRUST = 0x04000000 + CERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT = 0x08000000 + + CERT_CHAIN_POLICY_BASE = 1 + CERT_CHAIN_POLICY_AUTHENTICODE = 2 + CERT_CHAIN_POLICY_AUTHENTICODE_TS = 3 + CERT_CHAIN_POLICY_SSL = 4 + CERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5 + CERT_CHAIN_POLICY_NT_AUTH = 6 + CERT_CHAIN_POLICY_MICROSOFT_ROOT = 7 + CERT_CHAIN_POLICY_EV = 8 + + CERT_E_EXPIRED = 0x800B0101 + CERT_E_ROLE = 0x800B0103 + CERT_E_PURPOSE = 0x800B0106 + CERT_E_UNTRUSTEDROOT = 0x800B0109 + CERT_E_CN_NO_MATCH = 0x800B010F + + AUTHTYPE_CLIENT = 1 + AUTHTYPE_SERVER = 2 +) + +var ( + OID_PKIX_KP_SERVER_AUTH = []byte("1.3.6.1.5.5.7.3.1\x00") + OID_SERVER_GATED_CRYPTO = []byte("1.3.6.1.4.1.311.10.3.3\x00") + OID_SGC_NETSCAPE = []byte("2.16.840.1.113730.4.1\x00") +) + +// Invented values to support what package os expects. +type Timeval struct { + Sec int32 + Usec int32 +} + +func (tv *Timeval) Nanoseconds() int64 { + return (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3 +} + +func NsecToTimeval(nsec int64) (tv Timeval) { + tv.Sec = int32(nsec / 1e9) + tv.Usec = int32(nsec % 1e9 / 1e3) + return +} + +type SecurityAttributes struct { + Length uint32 + SecurityDescriptor uintptr + InheritHandle uint32 +} + +type Overlapped struct { + Internal uintptr + InternalHigh uintptr + Offset uint32 + OffsetHigh uint32 + HEvent Handle +} + +type FileNotifyInformation struct { + NextEntryOffset uint32 + Action uint32 + FileNameLength uint32 + FileName uint16 +} + +type Filetime struct { + LowDateTime uint32 + HighDateTime uint32 +} + +// Nanoseconds returns Filetime ft in nanoseconds +// since Epoch (00:00:00 UTC, January 1, 1970). +func (ft *Filetime) Nanoseconds() int64 { + // 100-nanosecond intervals since January 1, 1601 + nsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime) + // change starting time to the Epoch (00:00:00 UTC, January 1, 1970) + nsec -= 116444736000000000 + // convert into nanoseconds + nsec *= 100 + return nsec +} + +func NsecToFiletime(nsec int64) (ft Filetime) { + // convert into 100-nanosecond + nsec /= 100 + // change starting time to January 1, 1601 + nsec += 116444736000000000 + // split into high / low + ft.LowDateTime = uint32(nsec & 0xffffffff) + ft.HighDateTime = uint32(nsec >> 32 & 0xffffffff) + return ft +} + +type Win32finddata struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH - 1]uint16 + AlternateFileName [13]uint16 +} + +// This is the actual system call structure. +// Win32finddata is what we committed to in Go 1. +type win32finddata1 struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 + Reserved0 uint32 + Reserved1 uint32 + FileName [MAX_PATH]uint16 + AlternateFileName [14]uint16 +} + +func copyFindData(dst *Win32finddata, src *win32finddata1) { + dst.FileAttributes = src.FileAttributes + dst.CreationTime = src.CreationTime + dst.LastAccessTime = src.LastAccessTime + dst.LastWriteTime = src.LastWriteTime + dst.FileSizeHigh = src.FileSizeHigh + dst.FileSizeLow = src.FileSizeLow + dst.Reserved0 = src.Reserved0 + dst.Reserved1 = src.Reserved1 + + // The src is 1 element bigger than dst, but it must be NUL. + copy(dst.FileName[:], src.FileName[:]) + copy(dst.AlternateFileName[:], src.AlternateFileName[:]) +} + +type ByHandleFileInformation struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + VolumeSerialNumber uint32 + FileSizeHigh uint32 + FileSizeLow uint32 + NumberOfLinks uint32 + FileIndexHigh uint32 + FileIndexLow uint32 +} + +const ( + GetFileExInfoStandard = 0 + GetFileExMaxInfoLevel = 1 +) + +type Win32FileAttributeData struct { + FileAttributes uint32 + CreationTime Filetime + LastAccessTime Filetime + LastWriteTime Filetime + FileSizeHigh uint32 + FileSizeLow uint32 +} + +// ShowWindow constants +const ( + // winuser.h + SW_HIDE = 0 + SW_NORMAL = 1 + SW_SHOWNORMAL = 1 + SW_SHOWMINIMIZED = 2 + SW_SHOWMAXIMIZED = 3 + SW_MAXIMIZE = 3 + SW_SHOWNOACTIVATE = 4 + SW_SHOW = 5 + SW_MINIMIZE = 6 + SW_SHOWMINNOACTIVE = 7 + SW_SHOWNA = 8 + SW_RESTORE = 9 + SW_SHOWDEFAULT = 10 + SW_FORCEMINIMIZE = 11 +) + +type StartupInfo struct { + Cb uint32 + _ *uint16 + Desktop *uint16 + Title *uint16 + X uint32 + Y uint32 + XSize uint32 + YSize uint32 + XCountChars uint32 + YCountChars uint32 + FillAttribute uint32 + Flags uint32 + ShowWindow uint16 + _ uint16 + _ *byte + StdInput Handle + StdOutput Handle + StdErr Handle +} + +type ProcessInformation struct { + Process Handle + Thread Handle + ProcessId uint32 + ThreadId uint32 +} + +type ProcessEntry32 struct { + Size uint32 + Usage uint32 + ProcessID uint32 + DefaultHeapID uintptr + ModuleID uint32 + Threads uint32 + ParentProcessID uint32 + PriClassBase int32 + Flags uint32 + ExeFile [MAX_PATH]uint16 +} + +type Systemtime struct { + Year uint16 + Month uint16 + DayOfWeek uint16 + Day uint16 + Hour uint16 + Minute uint16 + Second uint16 + Milliseconds uint16 +} + +type Timezoneinformation struct { + Bias int32 + StandardName [32]uint16 + StandardDate Systemtime + StandardBias int32 + DaylightName [32]uint16 + DaylightDate Systemtime + DaylightBias int32 +} + +// Socket related. + +const ( + AF_UNSPEC = 0 + AF_UNIX = 1 + AF_INET = 2 + AF_INET6 = 23 + AF_NETBIOS = 17 + + SOCK_STREAM = 1 + SOCK_DGRAM = 2 + SOCK_RAW = 3 + SOCK_SEQPACKET = 5 + + IPPROTO_IP = 0 + IPPROTO_IPV6 = 0x29 + IPPROTO_TCP = 6 + IPPROTO_UDP = 17 + + SOL_SOCKET = 0xffff + SO_REUSEADDR = 4 + SO_KEEPALIVE = 8 + SO_DONTROUTE = 16 + SO_BROADCAST = 32 + SO_LINGER = 128 + SO_RCVBUF = 0x1002 + SO_SNDBUF = 0x1001 + SO_UPDATE_ACCEPT_CONTEXT = 0x700b + SO_UPDATE_CONNECT_CONTEXT = 0x7010 + + IOC_OUT = 0x40000000 + IOC_IN = 0x80000000 + IOC_VENDOR = 0x18000000 + IOC_INOUT = IOC_IN | IOC_OUT + IOC_WS2 = 0x08000000 + SIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6 + SIO_KEEPALIVE_VALS = IOC_IN | IOC_VENDOR | 4 + SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12 + + // cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460 + + IP_TOS = 0x3 + IP_TTL = 0x4 + IP_MULTICAST_IF = 0x9 + IP_MULTICAST_TTL = 0xa + IP_MULTICAST_LOOP = 0xb + IP_ADD_MEMBERSHIP = 0xc + IP_DROP_MEMBERSHIP = 0xd + + IPV6_V6ONLY = 0x1b + IPV6_UNICAST_HOPS = 0x4 + IPV6_MULTICAST_IF = 0x9 + IPV6_MULTICAST_HOPS = 0xa + IPV6_MULTICAST_LOOP = 0xb + IPV6_JOIN_GROUP = 0xc + IPV6_LEAVE_GROUP = 0xd + + SOMAXCONN = 0x7fffffff + + TCP_NODELAY = 1 + + SHUT_RD = 0 + SHUT_WR = 1 + SHUT_RDWR = 2 + + WSADESCRIPTION_LEN = 256 + WSASYS_STATUS_LEN = 128 +) + +type WSABuf struct { + Len uint32 + Buf *byte +} + +// Invented values to support what package os expects. +const ( + S_IFMT = 0x1f000 + S_IFIFO = 0x1000 + S_IFCHR = 0x2000 + S_IFDIR = 0x4000 + S_IFBLK = 0x6000 + S_IFREG = 0x8000 + S_IFLNK = 0xa000 + S_IFSOCK = 0xc000 + S_ISUID = 0x800 + S_ISGID = 0x400 + S_ISVTX = 0x200 + S_IRUSR = 0x100 + S_IWRITE = 0x80 + S_IWUSR = 0x80 + S_IXUSR = 0x40 +) + +const ( + FILE_TYPE_CHAR = 0x0002 + FILE_TYPE_DISK = 0x0001 + FILE_TYPE_PIPE = 0x0003 + FILE_TYPE_REMOTE = 0x8000 + FILE_TYPE_UNKNOWN = 0x0000 +) + +type Hostent struct { + Name *byte + Aliases **byte + AddrType uint16 + Length uint16 + AddrList **byte +} + +type Protoent struct { + Name *byte + Aliases **byte + Proto uint16 +} + +const ( + DNS_TYPE_A = 0x0001 + DNS_TYPE_NS = 0x0002 + DNS_TYPE_MD = 0x0003 + DNS_TYPE_MF = 0x0004 + DNS_TYPE_CNAME = 0x0005 + DNS_TYPE_SOA = 0x0006 + DNS_TYPE_MB = 0x0007 + DNS_TYPE_MG = 0x0008 + DNS_TYPE_MR = 0x0009 + DNS_TYPE_NULL = 0x000a + DNS_TYPE_WKS = 0x000b + DNS_TYPE_PTR = 0x000c + DNS_TYPE_HINFO = 0x000d + DNS_TYPE_MINFO = 0x000e + DNS_TYPE_MX = 0x000f + DNS_TYPE_TEXT = 0x0010 + DNS_TYPE_RP = 0x0011 + DNS_TYPE_AFSDB = 0x0012 + DNS_TYPE_X25 = 0x0013 + DNS_TYPE_ISDN = 0x0014 + DNS_TYPE_RT = 0x0015 + DNS_TYPE_NSAP = 0x0016 + DNS_TYPE_NSAPPTR = 0x0017 + DNS_TYPE_SIG = 0x0018 + DNS_TYPE_KEY = 0x0019 + DNS_TYPE_PX = 0x001a + DNS_TYPE_GPOS = 0x001b + DNS_TYPE_AAAA = 0x001c + DNS_TYPE_LOC = 0x001d + DNS_TYPE_NXT = 0x001e + DNS_TYPE_EID = 0x001f + DNS_TYPE_NIMLOC = 0x0020 + DNS_TYPE_SRV = 0x0021 + DNS_TYPE_ATMA = 0x0022 + DNS_TYPE_NAPTR = 0x0023 + DNS_TYPE_KX = 0x0024 + DNS_TYPE_CERT = 0x0025 + DNS_TYPE_A6 = 0x0026 + DNS_TYPE_DNAME = 0x0027 + DNS_TYPE_SINK = 0x0028 + DNS_TYPE_OPT = 0x0029 + DNS_TYPE_DS = 0x002B + DNS_TYPE_RRSIG = 0x002E + DNS_TYPE_NSEC = 0x002F + DNS_TYPE_DNSKEY = 0x0030 + DNS_TYPE_DHCID = 0x0031 + DNS_TYPE_UINFO = 0x0064 + DNS_TYPE_UID = 0x0065 + DNS_TYPE_GID = 0x0066 + DNS_TYPE_UNSPEC = 0x0067 + DNS_TYPE_ADDRS = 0x00f8 + DNS_TYPE_TKEY = 0x00f9 + DNS_TYPE_TSIG = 0x00fa + DNS_TYPE_IXFR = 0x00fb + DNS_TYPE_AXFR = 0x00fc + DNS_TYPE_MAILB = 0x00fd + DNS_TYPE_MAILA = 0x00fe + DNS_TYPE_ALL = 0x00ff + DNS_TYPE_ANY = 0x00ff + DNS_TYPE_WINS = 0xff01 + DNS_TYPE_WINSR = 0xff02 + DNS_TYPE_NBSTAT = 0xff01 +) + +const ( + DNS_INFO_NO_RECORDS = 0x251D +) + +const ( + // flags inside DNSRecord.Dw + DnsSectionQuestion = 0x0000 + DnsSectionAnswer = 0x0001 + DnsSectionAuthority = 0x0002 + DnsSectionAdditional = 0x0003 +) + +type DNSSRVData struct { + Target *uint16 + Priority uint16 + Weight uint16 + Port uint16 + Pad uint16 +} + +type DNSPTRData struct { + Host *uint16 +} + +type DNSMXData struct { + NameExchange *uint16 + Preference uint16 + Pad uint16 +} + +type DNSTXTData struct { + StringCount uint16 + StringArray [1]*uint16 +} + +type DNSRecord struct { + Next *DNSRecord + Name *uint16 + Type uint16 + Length uint16 + Dw uint32 + Ttl uint32 + Reserved uint32 + Data [40]byte +} + +const ( + TF_DISCONNECT = 1 + TF_REUSE_SOCKET = 2 + TF_WRITE_BEHIND = 4 + TF_USE_DEFAULT_WORKER = 0 + TF_USE_SYSTEM_THREAD = 16 + TF_USE_KERNEL_APC = 32 +) + +type TransmitFileBuffers struct { + Head uintptr + HeadLength uint32 + Tail uintptr + TailLength uint32 +} + +const ( + IFF_UP = 1 + IFF_BROADCAST = 2 + IFF_LOOPBACK = 4 + IFF_POINTTOPOINT = 8 + IFF_MULTICAST = 16 +) + +const SIO_GET_INTERFACE_LIST = 0x4004747F + +// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old. +// will be fixed to change variable type as suitable. + +type SockaddrGen [24]byte + +type InterfaceInfo struct { + Flags uint32 + Address SockaddrGen + BroadcastAddress SockaddrGen + Netmask SockaddrGen +} + +type IpAddressString struct { + String [16]byte +} + +type IpMaskString IpAddressString + +type IpAddrString struct { + Next *IpAddrString + IpAddress IpAddressString + IpMask IpMaskString + Context uint32 +} + +const MAX_ADAPTER_NAME_LENGTH = 256 +const MAX_ADAPTER_DESCRIPTION_LENGTH = 128 +const MAX_ADAPTER_ADDRESS_LENGTH = 8 + +type IpAdapterInfo struct { + Next *IpAdapterInfo + ComboIndex uint32 + AdapterName [MAX_ADAPTER_NAME_LENGTH + 4]byte + Description [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte + AddressLength uint32 + Address [MAX_ADAPTER_ADDRESS_LENGTH]byte + Index uint32 + Type uint32 + DhcpEnabled uint32 + CurrentIpAddress *IpAddrString + IpAddressList IpAddrString + GatewayList IpAddrString + DhcpServer IpAddrString + HaveWins bool + PrimaryWinsServer IpAddrString + SecondaryWinsServer IpAddrString + LeaseObtained int64 + LeaseExpires int64 +} + +const MAXLEN_PHYSADDR = 8 +const MAX_INTERFACE_NAME_LEN = 256 +const MAXLEN_IFDESCR = 256 + +type MibIfRow struct { + Name [MAX_INTERFACE_NAME_LEN]uint16 + Index uint32 + Type uint32 + Mtu uint32 + Speed uint32 + PhysAddrLen uint32 + PhysAddr [MAXLEN_PHYSADDR]byte + AdminStatus uint32 + OperStatus uint32 + LastChange uint32 + InOctets uint32 + InUcastPkts uint32 + InNUcastPkts uint32 + InDiscards uint32 + InErrors uint32 + InUnknownProtos uint32 + OutOctets uint32 + OutUcastPkts uint32 + OutNUcastPkts uint32 + OutDiscards uint32 + OutErrors uint32 + OutQLen uint32 + DescrLen uint32 + Descr [MAXLEN_IFDESCR]byte +} + +type CertContext struct { + EncodingType uint32 + EncodedCert *byte + Length uint32 + CertInfo uintptr + Store Handle +} + +type CertChainContext struct { + Size uint32 + TrustStatus CertTrustStatus + ChainCount uint32 + Chains **CertSimpleChain + LowerQualityChainCount uint32 + LowerQualityChains **CertChainContext + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertSimpleChain struct { + Size uint32 + TrustStatus CertTrustStatus + NumElements uint32 + Elements **CertChainElement + TrustListInfo uintptr + HasRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 +} + +type CertChainElement struct { + Size uint32 + CertContext *CertContext + TrustStatus CertTrustStatus + RevocationInfo *CertRevocationInfo + IssuanceUsage *CertEnhKeyUsage + ApplicationUsage *CertEnhKeyUsage + ExtendedErrorInfo *uint16 +} + +type CertRevocationInfo struct { + Size uint32 + RevocationResult uint32 + RevocationOid *byte + OidSpecificInfo uintptr + HasFreshnessTime uint32 + FreshnessTime uint32 + CrlInfo uintptr // *CertRevocationCrlInfo +} + +type CertTrustStatus struct { + ErrorStatus uint32 + InfoStatus uint32 +} + +type CertUsageMatch struct { + Type uint32 + Usage CertEnhKeyUsage +} + +type CertEnhKeyUsage struct { + Length uint32 + UsageIdentifiers **byte +} + +type CertChainPara struct { + Size uint32 + RequestedUsage CertUsageMatch + RequstedIssuancePolicy CertUsageMatch + URLRetrievalTimeout uint32 + CheckRevocationFreshnessTime uint32 + RevocationFreshnessTime uint32 + CacheResync *Filetime +} + +type CertChainPolicyPara struct { + Size uint32 + Flags uint32 + ExtraPolicyPara uintptr +} + +type SSLExtraCertChainPolicyPara struct { + Size uint32 + AuthType uint32 + Checks uint32 + ServerName *uint16 +} + +type CertChainPolicyStatus struct { + Size uint32 + Error uint32 + ChainIndex uint32 + ElementIndex uint32 + ExtraPolicyStatus uintptr +} + +const ( + // do not reorder + HKEY_CLASSES_ROOT = 0x80000000 + iota + HKEY_CURRENT_USER + HKEY_LOCAL_MACHINE + HKEY_USERS + HKEY_PERFORMANCE_DATA + HKEY_CURRENT_CONFIG + HKEY_DYN_DATA + + KEY_QUERY_VALUE = 1 + KEY_SET_VALUE = 2 + KEY_CREATE_SUB_KEY = 4 + KEY_ENUMERATE_SUB_KEYS = 8 + KEY_NOTIFY = 16 + KEY_CREATE_LINK = 32 + KEY_WRITE = 0x20006 + KEY_EXECUTE = 0x20019 + KEY_READ = 0x20019 + KEY_WOW64_64KEY = 0x0100 + KEY_WOW64_32KEY = 0x0200 + KEY_ALL_ACCESS = 0xf003f +) + +const ( + // do not reorder + REG_NONE = iota + REG_SZ + REG_EXPAND_SZ + REG_BINARY + REG_DWORD_LITTLE_ENDIAN + REG_DWORD_BIG_ENDIAN + REG_LINK + REG_MULTI_SZ + REG_RESOURCE_LIST + REG_FULL_RESOURCE_DESCRIPTOR + REG_RESOURCE_REQUIREMENTS_LIST + REG_QWORD_LITTLE_ENDIAN + REG_DWORD = REG_DWORD_LITTLE_ENDIAN + REG_QWORD = REG_QWORD_LITTLE_ENDIAN +) + +type AddrinfoW struct { + Flags int32 + Family int32 + Socktype int32 + Protocol int32 + Addrlen uintptr + Canonname *uint16 + Addr uintptr + Next *AddrinfoW +} + +const ( + AI_PASSIVE = 1 + AI_CANONNAME = 2 + AI_NUMERICHOST = 4 +) + +type GUID struct { + Data1 uint32 + Data2 uint16 + Data3 uint16 + Data4 [8]byte +} + +var WSAID_CONNECTEX = GUID{ + 0x25a207b9, + 0xddf3, + 0x4660, + [8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e}, +} + +const ( + FILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1 + FILE_SKIP_SET_EVENT_ON_HANDLE = 2 +) + +const ( + WSAPROTOCOL_LEN = 255 + MAX_PROTOCOL_CHAIN = 7 + BASE_PROTOCOL = 1 + LAYERED_PROTOCOL = 0 + + XP1_CONNECTIONLESS = 0x00000001 + XP1_GUARANTEED_DELIVERY = 0x00000002 + XP1_GUARANTEED_ORDER = 0x00000004 + XP1_MESSAGE_ORIENTED = 0x00000008 + XP1_PSEUDO_STREAM = 0x00000010 + XP1_GRACEFUL_CLOSE = 0x00000020 + XP1_EXPEDITED_DATA = 0x00000040 + XP1_CONNECT_DATA = 0x00000080 + XP1_DISCONNECT_DATA = 0x00000100 + XP1_SUPPORT_BROADCAST = 0x00000200 + XP1_SUPPORT_MULTIPOINT = 0x00000400 + XP1_MULTIPOINT_CONTROL_PLANE = 0x00000800 + XP1_MULTIPOINT_DATA_PLANE = 0x00001000 + XP1_QOS_SUPPORTED = 0x00002000 + XP1_UNI_SEND = 0x00008000 + XP1_UNI_RECV = 0x00010000 + XP1_IFS_HANDLES = 0x00020000 + XP1_PARTIAL_MESSAGE = 0x00040000 + XP1_SAN_SUPPORT_SDP = 0x00080000 + + PFL_MULTIPLE_PROTO_ENTRIES = 0x00000001 + PFL_RECOMMENDED_PROTO_ENTRY = 0x00000002 + PFL_HIDDEN = 0x00000004 + PFL_MATCHES_PROTOCOL_ZERO = 0x00000008 + PFL_NETWORKDIRECT_PROVIDER = 0x00000010 +) + +type WSAProtocolInfo struct { + ServiceFlags1 uint32 + ServiceFlags2 uint32 + ServiceFlags3 uint32 + ServiceFlags4 uint32 + ProviderFlags uint32 + ProviderId GUID + CatalogEntryId uint32 + ProtocolChain WSAProtocolChain + Version int32 + AddressFamily int32 + MaxSockAddr int32 + MinSockAddr int32 + SocketType int32 + Protocol int32 + ProtocolMaxOffset int32 + NetworkByteOrder int32 + SecurityScheme int32 + MessageSize uint32 + ProviderReserved uint32 + ProtocolName [WSAPROTOCOL_LEN + 1]uint16 +} + +type WSAProtocolChain struct { + ChainLen int32 + ChainEntries [MAX_PROTOCOL_CHAIN]uint32 +} + +type TCPKeepalive struct { + OnOff uint32 + Time uint32 + Interval uint32 +} + +type symbolicLinkReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + Flags uint32 + PathBuffer [1]uint16 +} + +type mountPointReparseBuffer struct { + SubstituteNameOffset uint16 + SubstituteNameLength uint16 + PrintNameOffset uint16 + PrintNameLength uint16 + PathBuffer [1]uint16 +} + +type reparseDataBuffer struct { + ReparseTag uint32 + ReparseDataLength uint16 + Reserved uint16 + + // GenericReparseBuffer + reparseBuffer byte +} + +const ( + FSCTL_GET_REPARSE_POINT = 0x900A8 + MAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024 + IO_REPARSE_TAG_MOUNT_POINT = 0xA0000003 + IO_REPARSE_TAG_SYMLINK = 0xA000000C + SYMBOLIC_LINK_FLAG_DIRECTORY = 0x1 +) + +const ( + ComputerNameNetBIOS = 0 + ComputerNameDnsHostname = 1 + ComputerNameDnsDomain = 2 + ComputerNameDnsFullyQualified = 3 + ComputerNamePhysicalNetBIOS = 4 + ComputerNamePhysicalDnsHostname = 5 + ComputerNamePhysicalDnsDomain = 6 + ComputerNamePhysicalDnsFullyQualified = 7 + ComputerNameMax = 8 +) + +const ( + MOVEFILE_REPLACE_EXISTING = 0x1 + MOVEFILE_COPY_ALLOWED = 0x2 + MOVEFILE_DELAY_UNTIL_REBOOT = 0x4 + MOVEFILE_WRITE_THROUGH = 0x8 + MOVEFILE_CREATE_HARDLINK = 0x10 + MOVEFILE_FAIL_IF_NOT_TRACKABLE = 0x20 +) + +const GAA_FLAG_INCLUDE_PREFIX = 0x00000010 + +const ( + IF_TYPE_OTHER = 1 + IF_TYPE_ETHERNET_CSMACD = 6 + IF_TYPE_ISO88025_TOKENRING = 9 + IF_TYPE_PPP = 23 + IF_TYPE_SOFTWARE_LOOPBACK = 24 + IF_TYPE_ATM = 37 + IF_TYPE_IEEE80211 = 71 + IF_TYPE_TUNNEL = 131 + IF_TYPE_IEEE1394 = 144 +) + +type SocketAddress struct { + Sockaddr *syscall.RawSockaddrAny + SockaddrLength int32 +} + +type IpAdapterUnicastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterUnicastAddress + Address SocketAddress + PrefixOrigin int32 + SuffixOrigin int32 + DadState int32 + ValidLifetime uint32 + PreferredLifetime uint32 + LeaseLifetime uint32 + OnLinkPrefixLength uint8 +} + +type IpAdapterAnycastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterAnycastAddress + Address SocketAddress +} + +type IpAdapterMulticastAddress struct { + Length uint32 + Flags uint32 + Next *IpAdapterMulticastAddress + Address SocketAddress +} + +type IpAdapterDnsServerAdapter struct { + Length uint32 + Reserved uint32 + Next *IpAdapterDnsServerAdapter + Address SocketAddress +} + +type IpAdapterPrefix struct { + Length uint32 + Flags uint32 + Next *IpAdapterPrefix + Address SocketAddress + PrefixLength uint32 +} + +type IpAdapterAddresses struct { + Length uint32 + IfIndex uint32 + Next *IpAdapterAddresses + AdapterName *byte + FirstUnicastAddress *IpAdapterUnicastAddress + FirstAnycastAddress *IpAdapterAnycastAddress + FirstMulticastAddress *IpAdapterMulticastAddress + FirstDnsServerAddress *IpAdapterDnsServerAdapter + DnsSuffix *uint16 + Description *uint16 + FriendlyName *uint16 + PhysicalAddress [syscall.MAX_ADAPTER_ADDRESS_LENGTH]byte + PhysicalAddressLength uint32 + Flags uint32 + Mtu uint32 + IfType uint32 + OperStatus uint32 + Ipv6IfIndex uint32 + ZoneIndices [16]uint32 + FirstPrefix *IpAdapterPrefix + /* more fields might be present here. */ +} + +const ( + IfOperStatusUp = 1 + IfOperStatusDown = 2 + IfOperStatusTesting = 3 + IfOperStatusUnknown = 4 + IfOperStatusDormant = 5 + IfOperStatusNotPresent = 6 + IfOperStatusLowerLayerDown = 7 +) + +// Console related constants used for the mode parameter to SetConsoleMode. See +// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details. + +const ( + ENABLE_PROCESSED_INPUT = 0x1 + ENABLE_LINE_INPUT = 0x2 + ENABLE_ECHO_INPUT = 0x4 + ENABLE_WINDOW_INPUT = 0x8 + ENABLE_MOUSE_INPUT = 0x10 + ENABLE_INSERT_MODE = 0x20 + ENABLE_QUICK_EDIT_MODE = 0x40 + ENABLE_EXTENDED_FLAGS = 0x80 + ENABLE_AUTO_POSITION = 0x100 + ENABLE_VIRTUAL_TERMINAL_INPUT = 0x200 + + ENABLE_PROCESSED_OUTPUT = 0x1 + ENABLE_WRAP_AT_EOL_OUTPUT = 0x2 + ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4 + DISABLE_NEWLINE_AUTO_RETURN = 0x8 + ENABLE_LVB_GRID_WORLDWIDE = 0x10 +) + +type Coord struct { + X int16 + Y int16 +} + +type SmallRect struct { + Left int16 + Top int16 + Right int16 + Bottom int16 +} + +// Used with GetConsoleScreenBuffer to retreive information about a console +// screen buffer. See +// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str +// for details. + +type ConsoleScreenBufferInfo struct { + Size Coord + CursorPosition Coord + Attributes uint16 + Window SmallRect + MaximumWindowSize Coord +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_386.go b/vendor/golang.org/x/sys/windows/types_windows_386.go new file mode 100644 index 0000000..10f33be --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_386.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte +} + +type Servent struct { + Name *byte + Aliases **byte + Port uint16 + Proto *byte +} diff --git a/vendor/golang.org/x/sys/windows/types_windows_amd64.go b/vendor/golang.org/x/sys/windows/types_windows_amd64.go new file mode 100644 index 0000000..3f272c2 --- /dev/null +++ b/vendor/golang.org/x/sys/windows/types_windows_amd64.go @@ -0,0 +1,22 @@ +// Copyright 2011 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package windows + +type WSAData struct { + Version uint16 + HighVersion uint16 + MaxSockets uint16 + MaxUdpDg uint16 + VendorInfo *byte + Description [WSADESCRIPTION_LEN + 1]byte + SystemStatus [WSASYS_STATUS_LEN + 1]byte +} + +type Servent struct { + Name *byte + Aliases **byte + Proto *byte + Port uint16 +} diff --git a/vendor/golang.org/x/text/feature/plural/example_test.go b/vendor/golang.org/x/text/feature/plural/example_test.go new file mode 100644 index 0000000..c75408c --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/example_test.go @@ -0,0 +1,46 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package plural_test + +import ( + "golang.org/x/text/feature/plural" + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func ExampleSelect() { + // Manually set some translations. This is typically done programmatically. + message.Set(language.English, "%d files remaining", + plural.Selectf(1, "%d", + "=0", "done!", + plural.One, "one file remaining", + plural.Other, "%[1]d files remaining", + )) + message.Set(language.Dutch, "%d files remaining", + plural.Selectf(1, "%d", + "=0", "klaar!", + // One can also use a string instead of a Kind + "one", "nog één bestand te gaan", + "other", "nog %[1]d bestanden te gaan", + )) + + p := message.NewPrinter(language.English) + p.Printf("%d files remaining", 5) + p.Println() + p.Printf("%d files remaining", 1) + p.Println() + + p = message.NewPrinter(language.Dutch) + p.Printf("%d files remaining", 1) + p.Println() + p.Printf("%d files remaining", 0) + p.Println() + + // Output: + // 5 files remaining + // one file remaining + // nog één bestand te gaan + // klaar! +} diff --git a/vendor/golang.org/x/text/feature/plural/message.go b/vendor/golang.org/x/text/feature/plural/message.go new file mode 100755 index 0000000..22f5a26 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/message.go @@ -0,0 +1,238 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package plural + +import ( + "fmt" + "io/ioutil" + "reflect" + "strconv" + + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/internal/number" + "golang.org/x/text/language" + "golang.org/x/text/message/catalog" +) + +// Interface is used for types that can determine their own plural form. +type Interface interface { + // PluralForm reports the plural form for the given language of the + // underlying value. It also returns the integer value. If the integer value + // is larger than fits in n, PluralForm may return a value modulo + // 10,000,000. + PluralForm(t language.Tag, scale int) (f Form, n int) +} + +// Selectf returns the first case for which its selector is a match for the +// arg-th substitution argument to a formatting call, formatting it as indicated +// by format. +// +// The cases argument are pairs of selectors and messages. Selectors are of type +// string or Form. Messages are of type string or catalog.Message. A selector +// matches an argument if: +// - it is "other" or Other +// - it matches the plural form of the argument: "zero", "one", "two", "few", +// or "many", or the equivalent Form +// - it is of the form "=x" where x is an integer that matches the value of +// the argument. +// - it is of the form " kindDefault { + e.EncodeUint(uint64(m.scale)) + } + + forms := validForms(cardinal, e.Language()) + + for i := 0; i < len(m.cases); { + if err := compileSelector(e, forms, m.cases[i]); err != nil { + return err + } + if i++; i >= len(m.cases) { + return fmt.Errorf("plural: no message defined for selector %v", m.cases[i-1]) + } + var msg catalog.Message + switch x := m.cases[i].(type) { + case string: + msg = catalog.String(x) + case catalog.Message: + msg = x + default: + return fmt.Errorf("plural: message of type %T; must be string or catalog.Message", x) + } + if err := e.EncodeMessage(msg); err != nil { + return err + } + i++ + } + return nil +} + +func compileSelector(e *catmsg.Encoder, valid []Form, selector interface{}) error { + form := Other + switch x := selector.(type) { + case string: + if x == "" { + return fmt.Errorf("plural: empty selector") + } + if c := x[0]; c == '=' || c == '<' { + val, err := strconv.ParseUint(x[1:], 10, 16) + if err != nil { + return fmt.Errorf("plural: invalid number in selector %q: %v", selector, err) + } + e.EncodeUint(uint64(c)) + e.EncodeUint(val) + return nil + } + var ok bool + form, ok = countMap[x] + if !ok { + return fmt.Errorf("plural: invalid plural form %q", selector) + } + case Form: + form = x + default: + return fmt.Errorf("plural: selector of type %T; want string or Form", selector) + } + + ok := false + for _, f := range valid { + if f == form { + ok = true + break + } + } + if !ok { + return fmt.Errorf("plural: form %q not supported for language %q", selector, e.Language()) + } + e.EncodeUint(uint64(form)) + return nil +} + +func execute(d *catmsg.Decoder) bool { + lang := d.Language() + argN := int(d.DecodeUint()) + kind := int(d.DecodeUint()) + scale := -1 // default + if kind > kindDefault { + scale = int(d.DecodeUint()) + } + form := Other + n := -1 + if arg := d.Arg(argN); arg == nil { + // Default to Other. + } else if x, ok := arg.(Interface); ok { + // This covers lists and formatters from the number package. + form, n = x.PluralForm(lang, scale) + } else { + var f number.Formatter + switch kind { + case kindScale: + f.InitDecimal(lang) + f.SetScale(scale) + case kindScientific: + f.InitScientific(lang) + f.SetScale(scale) + case kindPrecision: + f.InitDecimal(lang) + f.SetPrecision(scale) + case kindDefault: + // sensible default + f.InitDecimal(lang) + if k := reflect.TypeOf(arg).Kind(); reflect.Int <= k && k <= reflect.Uintptr { + f.SetScale(0) + } else { + f.SetScale(2) + } + } + var dec number.Decimal // TODO: buffer in Printer + dec.Convert(f.RoundingContext, arg) + v := number.FormatDigits(&dec, f.RoundingContext) + if !v.NaN && !v.Inf { + form, n = cardinal.matchDisplayDigits(d.Language(), &v) + } + } + for !d.Done() { + f := d.DecodeUint() + if (f == '=' && n == int(d.DecodeUint())) || + (f == '<' && 0 <= n && n < int(d.DecodeUint())) || + form == Form(f) || + Other == Form(f) { + return d.ExecuteMessage() + } + d.SkipMessage() + } + return false +} diff --git a/vendor/golang.org/x/text/feature/plural/message_test.go b/vendor/golang.org/x/text/feature/plural/message_test.go new file mode 100644 index 0000000..1a89bd5 --- /dev/null +++ b/vendor/golang.org/x/text/feature/plural/message_test.go @@ -0,0 +1,197 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package plural + +import ( + "fmt" + "strings" + "testing" + + "golang.org/x/text/internal/catmsg" + "golang.org/x/text/language" + "golang.org/x/text/message/catalog" +) + +func TestSelect(t *testing.T) { + lang := language.English + type test struct { + arg interface{} + result string + err string + } + testCases := []struct { + desc string + msg catalog.Message + err string + tests []test + }{{ + desc: "basic", + msg: Selectf(1, "%d", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + {arg: opposite(1), result: "bar"}, + {arg: opposite(2), result: "foo"}, + {arg: "unknown", result: "bar"}, // other + }, + }, { + desc: "comparisons", + msg: Selectf(1, "%d", + "=0", "zero", + "=1", "one", + "one", "cannot match", // never matches + "<5", "<5", // never matches + "=5", "=5", + Other, "other"), + tests: []test{ + {arg: 0, result: "zero"}, + {arg: 1, result: "one"}, + {arg: 2, result: "<5"}, + {arg: 4, result: "<5"}, + {arg: 5, result: "=5"}, + {arg: 6, result: "other"}, + {arg: "unknown", result: "other"}, + }, + }, { + desc: "fractions", + msg: Selectf(1, "%.2f", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "bar"}, + }, + }, { + desc: "decimal without fractions", + msg: Selectf(1, "%.of", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + }, + }, { + desc: "scientific", + msg: Selectf(1, "%.0e", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + }, + }, { + desc: "variable", + msg: Selectf(1, "%.1g", "one", "foo", "other", "bar"), + tests: []test{ + // fractions are always plural in english + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + }, + }, { + desc: "default", + msg: Selectf(1, "", "one", "foo", "other", "bar"), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + {arg: 1.0, result: "bar"}, + }, + }, { + desc: "nested", + msg: Selectf(1, "", "other", Selectf(2, "", "one", "foo", "other", "bar")), + tests: []test{ + {arg: 0, result: "bar"}, + {arg: 1, result: "foo"}, + {arg: 2, result: "bar"}, + }, + }, { + desc: "arg unavailable", + msg: Selectf(100, "%.2f", "one", "foo", "other", "bar"), + tests: []test{{arg: 1, result: "bar"}}, + }, { + desc: "no match", + msg: Selectf(1, "%.2f", "one", "foo"), + tests: []test{{arg: 0, result: "bar", err: catmsg.ErrNoMatch.Error()}}, + }, { + desc: "error invalid form", + err: `invalid plural form "excessive"`, + msg: Selectf(1, "%d", "excessive", "foo"), + }, { + desc: "error form not used by language", + err: `form "many" not supported for language "en"`, + msg: Selectf(1, "%d", "many", "foo"), + }, { + desc: "error invalid selector", + err: `selector of type int; want string or Form`, + msg: Selectf(1, "%d", 1, "foo"), + }, { + desc: "error missing message", + err: `no message defined for selector one`, + msg: Selectf(1, "%d", "one"), + }, { + desc: "error invalid number", + err: `invalid number in selector "<1.00"`, + msg: Selectf(1, "%d", "<1.00"), + }, { + desc: "error empty selector", + err: `empty selector`, + msg: Selectf(1, "%d", "", "foo"), + }, { + desc: "error invalid message", + err: `message of type int; must be string or catalog.Message`, + msg: Selectf(1, "%d", "one", 3), + }, { + desc: "nested error", + err: `empty selector`, + msg: Selectf(1, "", "other", Selectf(2, "", "")), + }} + for _, tc := range testCases { + t.Run(tc.desc, func(t *testing.T) { + data, err := catmsg.Compile(lang, nil, tc.msg) + chkError(t, err, tc.err) + for _, tx := range tc.tests { + t.Run(fmt.Sprint(tx.arg), func(t *testing.T) { + r := renderer{arg: tx.arg} + d := catmsg.NewDecoder(lang, &r, nil) + err := d.Execute(data) + chkError(t, err, tx.err) + if r.result != tx.result { + t.Errorf("got %q; want %q", r.result, tx.result) + } + }) + } + }) + } +} + +func chkError(t *testing.T, got error, want string) { + if (got == nil && want != "") || + (got != nil && (want == "" || !strings.Contains(got.Error(), want))) { + t.Fatalf("got %v; want %v", got, want) + } + if got != nil { + t.SkipNow() + } +} + +type renderer struct { + arg interface{} + result string +} + +func (r *renderer) Render(s string) { r.result += s } +func (r *renderer) Arg(i int) interface{} { + if i > 10 { // Allow testing "arg unavailable" path + return nil + } + return r.arg +} + +type opposite int + +func (o opposite) PluralForm(lang language.Tag, scale int) (Form, int) { + if o == 1 { + return Other, 1 + } + return One, int(o) +} diff --git a/vendor/golang.org/x/text/internal/number/decimal.go b/vendor/golang.org/x/text/internal/number/decimal.go index 0491c97..f15b257 100644 --- a/vendor/golang.org/x/text/internal/number/decimal.go +++ b/vendor/golang.org/x/text/internal/number/decimal.go @@ -375,6 +375,24 @@ func (d *Decimal) ConvertFloat(r RoundingContext, x float64, size int) { d.NaN = true return } + // Simple case: decimal notation + if r.Increment > 0 { + scale := int(r.IncrementScale) + mult := 1.0 + if scale > len(scales) { + mult = math.Pow(10, float64(scale)) + } else { + mult = scales[scale] + } + // We multiply x instead of dividing inc as it gives less rounding + // issues. + x *= mult + x /= float64(r.Increment) + x = r.Mode.roundFloat(x) + x *= float64(r.Increment) + x /= mult + } + abs := x if x < 0 { d.Neg = true @@ -384,64 +402,64 @@ func (d *Decimal) ConvertFloat(r RoundingContext, x float64, size int) { d.Inf = true return } - // Simple case: decimal notation - scale := r.scale() - prec := r.precision() - if scale > 0 || r.Increment > 0 || prec == 0 { - if scale > len(scales) { - x *= math.Pow(10, float64(scale)) - } else { - x *= scales[scale] - } - if r.Increment > 0 { - inc := float64(r.Increment) - x /= float64(inc) - x = r.Mode.roundFloat(x) - x *= inc - } else { - x = r.Mode.roundFloat(x) - } - d.fillIntDigits(uint64(math.Abs(x))) - d.Exp = int32(len(d.Digits) - scale) - return - } - // Nasty case (for non-decimal notation). - // Asides from being inefficient, this result is also wrong as it will - // apply ToNearestEven rounding regardless of the user setting. - // TODO: expose functionality in strconv so we can avoid this hack. + // By default we get the exact decimal representation. + verb := byte('g') + prec := -1 + // Determine rounding, if possible. As the strconv API does not return the + // rounding accuracy (exact/rounded up|down), we can only round using + // ToNearestEven. // Something like this would work: // AppendDigits(dst []byte, x float64, base, size, prec int) (digits []byte, exp, accuracy int) - // TODO: This only supports the nearest even rounding mode. - - if prec > 0 { - prec-- + if r.Mode == ToNearestEven { + // We can't round if limitations are placed on both the fraction and + // significant digits. + if r.MaxFractionDigits == 0 && r.MaxSignificantDigits > 0 { + prec = int(r.MaxSignificantDigits) + } else if r.isScientific() { + if r.MaxIntegerDigits == 1 && (r.MaxSignificantDigits == 0 || + int(r.MaxFractionDigits+1) == int(r.MaxSignificantDigits)) { + verb = 'e' + prec = int(r.MaxFractionDigits) + prec += int(r.DigitShift) + } + } else if r.MaxFractionDigits > 0 && r.MaxSignificantDigits == 0 { + verb = 'f' + prec = int(r.MaxFractionDigits) + } } - b := strconv.AppendFloat(d.Digits, abs, 'e', prec, size) + + b := strconv.AppendFloat(d.Digits[:0], abs, verb, prec, size) i := 0 k := 0 - // No need to check i < len(b) as we always have an 'e'. - for { + beforeDot := 1 + for i < len(b) { if c := b[i]; '0' <= c && c <= '9' { b[k] = c - '0' k++ - } else if c != '.' { + d.Exp += int32(beforeDot) + } else if c == '.' { + beforeDot = 0 + d.Exp = int32(k) + } else { break } i++ } d.Digits = b[:k] - i += len("e") - pSign := i - exp := 0 - for i++; i < len(b); i++ { - exp *= 10 - exp += int(b[i] - '0') + if i != len(b) { + i += len("e") + pSign := i + exp := 0 + for i++; i < len(b); i++ { + exp *= 10 + exp += int(b[i] - '0') + } + if b[pSign] == '-' { + exp = -exp + } + d.Exp = int32(exp) + 1 } - if b[pSign] == '-' { - exp = -exp - } - d.Exp = int32(exp) + 1 } func (d *Decimal) fillIntDigits(x uint64) { diff --git a/vendor/golang.org/x/text/internal/number/decimal_test.go b/vendor/golang.org/x/text/internal/number/decimal_test.go index b017b39..fb856c8 100644 --- a/vendor/golang.org/x/text/internal/number/decimal_test.go +++ b/vendor/golang.org/x/text/internal/number/decimal_test.go @@ -245,7 +245,7 @@ func TestConvert(t *testing.T) { scale2.SetScale(2) scale2away := RoundingContext{Mode: AwayFromZero} scale2away.SetScale(2) - inc0_05 := RoundingContext{Increment: 5} + inc0_05 := RoundingContext{Increment: 5, IncrementScale: 2} inc0_05.SetScale(2) inc50 := RoundingContext{Increment: 50} prec3 := RoundingContext{} @@ -265,16 +265,15 @@ func TestConvert(t *testing.T) { {uint32(234), scale2, "234"}, {uint64(234), scale2, "234"}, {uint(234), scale2, "234"}, - {-0.001, scale2, "-0"}, + {-0.001, scale2, "-0.00"}, // not normalized {-1e9, scale2, "-1000000000.00"}, - {0.234, scale2, "0.23"}, - {0.234, scale2away, "0.24"}, + {0.234, scale2away, "0.234"}, // rounding postponed as not ToNearestEven {0.1234, prec3, "0.123"}, {1234.0, prec3, "1230"}, {1.2345e10, prec3, "12300000000"}, {0.03, inc0_05, "0.05"}, - {0.025, inc0_05, "0"}, + {0.025, inc0_05, "0.00"}, // not normalized {0.075, inc0_05, "0.10"}, {325, inc50, "300"}, {375, inc50, "400"}, diff --git a/vendor/golang.org/x/text/internal/number/format.go b/vendor/golang.org/x/text/internal/number/format.go index 44116fa..4104789 100755 --- a/vendor/golang.org/x/text/internal/number/format.go +++ b/vendor/golang.org/x/text/internal/number/format.go @@ -56,12 +56,16 @@ func (f *Formatter) InitDecimal(t language.Tag) { // given language. func (f *Formatter) InitScientific(t language.Tag) { f.init(t, tagToScientific) + f.Pattern.MinFractionDigits = 0 + f.Pattern.MaxFractionDigits = -1 } // InitEngineering initializes a Formatter using the default Pattern for the // given language. func (f *Formatter) InitEngineering(t language.Tag) { f.init(t, tagToScientific) + f.Pattern.MinFractionDigits = 0 + f.Pattern.MaxFractionDigits = -1 f.Pattern.MaxIntegerDigits = 3 f.Pattern.MinIntegerDigits = 1 } @@ -303,13 +307,6 @@ func scientificVisibleDigits(r RoundingContext, d *Decimal) Digits { if numInt == 0 { numInt = 1 } - maxSig := int(r.MaxFractionDigits) + numInt - minSig := int(r.MinFractionDigits) + numInt - - if maxSig > 0 { - // TODO: really round to zero? - n.round(ToZero, maxSig) - } // If a maximum number of integers is specified, the minimum must be 1 // and the exponent is grouped by this number (e.g. for engineering) @@ -326,10 +323,14 @@ func scientificVisibleDigits(r RoundingContext, d *Decimal) Digits { numInt += d } + if maxSig := int(r.MaxFractionDigits); maxSig >= 0 { + n.round(r.Mode, maxSig+numInt) + } + n.Comma = uint8(numInt) n.End = int32(len(n.Digits)) - if n.End < int32(minSig) { - n.End = int32(minSig) + if minSig := int32(r.MinFractionDigits) + int32(numInt); n.End < minSig { + n.End = minSig } return n } diff --git a/vendor/golang.org/x/text/internal/number/format_test.go b/vendor/golang.org/x/text/internal/number/format_test.go index fc7c36d..1273818 100755 --- a/vendor/golang.org/x/text/internal/number/format_test.go +++ b/vendor/golang.org/x/text/internal/number/format_test.go @@ -289,22 +289,25 @@ func TestAppendDecimal(t *testing.T) { pattern: "##0E00", test: pairs{ "100": "100\u202f×\u202f10⁰⁰", - "12345": "10\u202f×\u202f10⁰³", - "123.456": "100\u202f×\u202f10⁰⁰", + "12345": "12\u202f×\u202f10⁰³", + "123.456": "123\u202f×\u202f10⁰⁰", }, }, { pattern: "##0.###E00", test: pairs{ - "100": "100\u202f×\u202f10⁰⁰", - "12345": "12.34\u202f×\u202f10⁰³", - "123.456": "123.4\u202f×\u202f10⁰⁰", + "100": "100\u202f×\u202f10⁰⁰", + "12345": "12.345\u202f×\u202f10⁰³", + "123456": "123.456\u202f×\u202f10⁰³", + "123.456": "123.456\u202f×\u202f10⁰⁰", + "123.4567": "123.457\u202f×\u202f10⁰⁰", }, }, { pattern: "##0.000E00", test: pairs{ - "100": "100.0\u202f×\u202f10⁰⁰", - "12345": "12.34\u202f×\u202f10⁰³", - "123.456": "123.4\u202f×\u202f10⁰⁰", + "100": "100.000\u202f×\u202f10⁰⁰", + "12345": "12.345\u202f×\u202f10⁰³", + "123.456": "123.456\u202f×\u202f10⁰⁰", + "12.3456": "12.346\u202f×\u202f10⁰⁰", }, }, { pattern: "@@E0", @@ -498,7 +501,8 @@ func TestFormatters(t *testing.T) { }{ {f.InitDecimal, "123456.78", "123,456.78"}, {f.InitScientific, "123456.78", "1.23\u202f×\u202f10⁵"}, - {f.InitEngineering, "123456.78", "123\u202f×\u202f10³"}, + {f.InitEngineering, "123456.78", "123.46\u202f×\u202f10³"}, + {f.InitEngineering, "1234", "1.23\u202f×\u202f10³"}, {f.InitPercent, "0.1234", "12.34%"}, {f.InitPerMille, "0.1234", "123.40‰"}, diff --git a/vendor/golang.org/x/text/internal/number/pattern.go b/vendor/golang.org/x/text/internal/number/pattern.go index 89c2a1c..2764cd2 100644 --- a/vendor/golang.org/x/text/internal/number/pattern.go +++ b/vendor/golang.org/x/text/internal/number/pattern.go @@ -55,11 +55,13 @@ type Pattern struct { // It contains all information needed to determine the "visible digits" as // required by the pluralization rules. type RoundingContext struct { - Increment uint32 // if > 0, round to Increment * 10^-scale() // TODO: unify these two fields so that there is a more unambiguous meaning // of how precision is handled. - MaxSignificantDigits int16 // -1 is infinite precision - MaxFractionDigits uint16 + MaxSignificantDigits int16 // -1 is unlimited + MaxFractionDigits int16 // -1 is unlimited + + Increment uint32 + IncrementScale uint8 // May differ from printed scale. Mode RoundingMode @@ -88,7 +90,7 @@ func (r *RoundingContext) precision() int { return int(r.MaxSignificantDigits) } // SetScale fixes the RoundingContext to a fixed number of fraction digits. func (r *RoundingContext) SetScale(scale int) { r.MinFractionDigits = uint8(scale) - r.MaxFractionDigits = uint16(scale) + r.MaxFractionDigits = int16(scale) } func (r *RoundingContext) SetPrecision(prec int) { @@ -210,6 +212,9 @@ func ParsePattern(s string) (f *Pattern, err error) { } else { p.Affix = affix } + if p.Increment == 0 { + p.IncrementScale = 0 + } return p.Pattern, nil } @@ -414,7 +419,7 @@ func (p *parser) sigDigitsFinal(r rune) state { func (p *parser) normalizeSigDigitsWithExponent() state { p.MinIntegerDigits, p.MaxIntegerDigits = 1, 1 p.MinFractionDigits = p.MinSignificantDigits - 1 - p.MaxFractionDigits = uint16(p.MaxSignificantDigits) - 1 + p.MaxFractionDigits = p.MaxSignificantDigits - 1 p.MinSignificantDigits, p.MaxSignificantDigits = 0, 0 return p.exponent } @@ -423,6 +428,7 @@ func (p *parser) fraction(r rune) state { switch r { case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9': p.Increment = p.Increment*10 + uint32(r-'0') + p.IncrementScale++ p.MinFractionDigits++ p.MaxFractionDigits++ case '#': diff --git a/vendor/golang.org/x/text/internal/number/pattern_test.go b/vendor/golang.org/x/text/internal/number/pattern_test.go index f551456..3a0b2be 100644 --- a/vendor/golang.org/x/text/internal/number/pattern_test.go +++ b/vendor/golang.org/x/text/internal/number/pattern_test.go @@ -153,6 +153,17 @@ var testCases = []struct { MinExponentDigits: 1, }, }, +}, { + "##0.###E00", + &Pattern{ + FormatWidth: 10, + RoundingContext: RoundingContext{ + MinIntegerDigits: 1, + MaxIntegerDigits: 3, + MaxFractionDigits: 3, + MinExponentDigits: 2, + }, + }, }, { "##00.0#E0", &Pattern{ @@ -261,6 +272,7 @@ var testCases = []struct { FormatWidth: 4, RoundingContext: RoundingContext{ Increment: 105, + IncrementScale: 2, MinIntegerDigits: 1, MinFractionDigits: 2, MaxFractionDigits: 2, @@ -274,6 +286,7 @@ var testCases = []struct { GroupingSize: [2]uint8{2, 0}, RoundingContext: RoundingContext{ Increment: 105, + IncrementScale: 0, MinIntegerDigits: 3, MinFractionDigits: 0, MaxFractionDigits: 0, diff --git a/vendor/golang.org/x/text/language/doc.go b/vendor/golang.org/x/text/language/doc.go new file mode 100644 index 0000000..8afecd5 --- /dev/null +++ b/vendor/golang.org/x/text/language/doc.go @@ -0,0 +1,102 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package language implements BCP 47 language tags and related functionality. +// +// The most important function of package language is to match a list of +// user-preferred languages to a list of supported languages. +// It alleviates the developer of dealing with the complexity of this process +// and provides the user with the best experience +// (see https://blog.golang.org/matchlang). +// +// +// Matching preferred against supported languages +// +// A Matcher for an application that supports English, Australian English, +// Danish, and standard Mandarin can be created as follows: +// +// var matcher = language.NewMatcher([]language.Tag{ +// language.English, // The first language is used as fallback. +// language.MustParse("en-AU"), +// language.Danish, +// language.Chinese, +// }) +// +// This list of supported languages is typically implied by the languages for +// which there exists translations of the user interface. +// +// User-preferred languages usually come as a comma-separated list of BCP 47 +// language tags. +// The MatchString finds best matches for such strings: +// +// handler(w http.ResponseWriter, r *http.Request) { +// lang, _ := r.Cookie("lang") +// accept := r.Header.Get("Accept-Language") +// tag, _ := language.MatchStrings(matcher, lang.String(), accept) +// +// // tag should now be used for the initialization of any +// // locale-specific service. +// } +// +// The Matcher's Match method can be used to match Tags directly. +// +// Matchers are aware of the intricacies of equivalence between languages, such +// as deprecated subtags, legacy tags, macro languages, mutual +// intelligibility between scripts and languages, and transparently passing +// BCP 47 user configuration. +// For instance, it will know that a reader of Bokmål Danish can read Norwegian +// and will know that Cantonese ("yue") is a good match for "zh-HK". +// +// +// Using match results +// +// To guarantee a consistent user experience to the user it is important to +// use the same language tag for the selection of any locale-specific services. +// For example, it is utterly confusing to substitute spelled-out numbers +// or dates in one language in text of another language. +// More subtly confusing is using the wrong sorting order or casing +// algorithm for a certain language. +// +// All the packages in x/text that provide locale-specific services +// (e.g. collate, cases) should be initialized with the tag that was +// obtained at the start of an interaction with the user. +// +// Note that Tag that is returned by Match and MatchString may differ from any +// of the supported languages, as it may contain carried over settings from +// the user tags. +// This may be inconvenient when your application has some additional +// locale-specific data for your supported languages. +// Match and MatchString both return the index of the matched supported tag +// to simplify associating such data with the matched tag. +// +// +// Canonicalization +// +// If one uses the Matcher to compare languages one does not need to +// worry about canonicalization. +// +// The meaning of a Tag varies per application. The language package +// therefore delays canonicalization and preserves information as much +// as possible. The Matcher, however, will always take into account that +// two different tags may represent the same language. +// +// By default, only legacy and deprecated tags are converted into their +// canonical equivalent. All other information is preserved. This approach makes +// the confidence scores more accurate and allows matchers to distinguish +// between variants that are otherwise lost. +// +// As a consequence, two tags that should be treated as identical according to +// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The +// Matcher handles such distinctions, though, and is aware of the +// equivalence relations. The CanonType type can be used to alter the +// canonicalization form. +// +// References +// +// BCP 47 - Tags for Identifying Languages http://tools.ietf.org/html/bcp47 +// +package language // import "golang.org/x/text/language" + +// TODO: explanation on how to match languages for your own locale-specific +// service. diff --git a/vendor/golang.org/x/text/language/language.go b/vendor/golang.org/x/text/language/language.go index f1012c9..ed1011f 100644 --- a/vendor/golang.org/x/text/language/language.go +++ b/vendor/golang.org/x/text/language/language.go @@ -5,102 +5,7 @@ //go:generate go run gen.go gen_common.go -output tables.go //go:generate go run gen_index.go -// Package language implements BCP 47 language tags and related functionality. -// -// The Tag type, which is used to represent languages, is agnostic to the -// meaning of its subtags. Tags are not fully canonicalized to preserve -// information that may be valuable in certain contexts. As a consequence, two -// different tags may represent identical languages. -// -// Initializing language- or locale-specific components usually consists of -// two steps. The first step is to select a display language based on the -// preferred languages of the user and the languages supported by an application. -// The second step is to create the language-specific services based on -// this selection. Each is discussed in more details below. -// -// Matching preferred against supported languages -// -// An application may support various languages. This list is typically limited -// by the languages for which there exists translations of the user interface. -// Similarly, a user may provide a list of preferred languages which is limited -// by the languages understood by this user. -// An application should use a Matcher to find the best supported language based -// on the user's preferred list. -// Matchers are aware of the intricacies of equivalence between languages. -// The default Matcher implementation takes into account things such as -// deprecated subtags, legacy tags, and mutual intelligibility between scripts -// and languages. -// -// A Matcher for English, Australian English, Danish, and standard Mandarin can -// be defined as follows: -// -// var matcher = language.NewMatcher([]language.Tag{ -// language.English, // The first language is used as fallback. -// language.MustParse("en-AU"), -// language.Danish, -// language.Chinese, -// }) -// -// The following code selects the best match for someone speaking Spanish and -// Norwegian: -// -// preferred := []language.Tag{ language.Spanish, language.Norwegian } -// tag, _, _ := matcher.Match(preferred...) -// -// In this case, the best match is Danish, as Danish is sufficiently a match to -// Norwegian to not have to fall back to the default. -// See ParseAcceptLanguage on how to handle the Accept-Language HTTP header. -// -// Selecting language-specific services -// -// One should always use the Tag returned by the Matcher to create an instance -// of any of the language-specific services provided by the text repository. -// This prevents the mixing of languages, such as having a different language for -// messages and display names, as well as improper casing or sorting order for -// the selected language. -// Using the returned Tag also allows user-defined settings, such as collation -// order or numbering system to be transparently passed as options. -// -// If you have language-specific data in your application, however, it will in -// most cases suffice to use the index returned by the matcher to identify -// the user language. -// The following loop provides an alternative in case this is not sufficient: -// -// supported := map[language.Tag]data{ -// language.English: enData, -// language.MustParse("en-AU"): enAUData, -// language.Danish: daData, -// language.Chinese: zhData, -// } -// tag, _, _ := matcher.Match(preferred...) -// for ; tag != language.Und; tag = tag.Parent() { -// if v, ok := supported[tag]; ok { -// return v -// } -// } -// return enData // should not reach here -// -// Repeatedly taking the Parent of the tag returned by Match will eventually -// match one of the tags used to initialize the Matcher. -// -// Canonicalization -// -// By default, only legacy and deprecated tags are converted into their -// canonical equivalent. All other information is preserved. This approach makes -// the confidence scores more accurate and allows matchers to distinguish -// between variants that are otherwise lost. -// -// As a consequence, two tags that should be treated as identical according to -// BCP 47 or CLDR, like "en-Latn" and "en", will be represented differently. The -// Matchers will handle such distinctions, though, and are aware of the -// equivalence relations. The CanonType type can be used to alter the -// canonicalization form. -// -// References -// -// BCP 47 - Tags for Identifying Languages -// http://tools.ietf.org/html/bcp47 -package language // import "golang.org/x/text/language" +package language // TODO: Remove above NOTE after: // - verifying that tables are dropped correctly (most notably matcher tables). diff --git a/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt new file mode 100644 index 0000000..6568f2d --- /dev/null +++ b/vendor/golang.org/x/text/language/testdata/CLDRLocaleMatcherTest.txt @@ -0,0 +1,389 @@ +# TODO: this file has not yet been included in the main CLDR release. +# The intent is to verify this file against the Go implementation and then +# correct the cases and add merge in other interesting test cases. +# See TestCLDRCompliance in match_test.go, as well as the list of exceptions +# defined in the map skip below it, for the work in progress. + +# Data-driven test for the XLocaleMatcher. +# Format +# • Everything after "#" is a comment +# • Arguments are separated by ";". They are: + +# supported ; desired ; expected + +# • The supported may have the threshold distance reset as a first item, eg 50, en, fr +# A line starting with @debug will reach a statement in the test code where you can put a breakpoint for debugging +# The test code also supports reformatting this file, by setting the REFORMAT flag. + +################################################## +# testParentLocales + +# es-419, es-AR, and es-MX are in a cluster; es is in a different one + +es-419, es-ES ; es-AR ; es-419 +es-ES, es-419 ; es-AR ; es-419 + +es-419, es ; es-AR ; es-419 +es, es-419 ; es-AR ; es-419 + +es-MX, es ; es-AR ; es-MX +es, es-MX ; es-AR ; es-MX + +# en-GB, en-AU, and en-NZ are in a cluster; en in a different one + +en-GB, en-US ; en-AU ; en-GB +en-US, en-GB ; en-AU ; en-GB + +en-GB, en ; en-AU ; en-GB +en, en-GB ; en-AU ; en-GB + +en-NZ, en-US ; en-AU ; en-NZ +en-US, en-NZ ; en-AU ; en-NZ + +en-NZ, en ; en-AU ; en-NZ +en, en-NZ ; en-AU ; en-NZ + +# pt-AU and pt-PT in one cluster; pt-BR in another + +pt-PT, pt-BR ; pt-AO ; pt-PT +pt-BR, pt-PT ; pt-AO ; pt-PT + +pt-PT, pt ; pt-AO ; pt-PT +pt, pt-PT ; pt-AO ; pt-PT + +zh-MO, zh-TW ; zh-HK ; zh-MO +zh-TW, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh-TW ; zh-HK ; zh-MO +zh-TW, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh-CN ; zh-HK ; zh-MO +zh-CN, zh-MO ; zh-HK ; zh-MO + +zh-MO, zh ; zh-HK ; zh-MO +zh, zh-MO ; zh-HK ; zh-MO + +################################################## +# testChinese + +zh-CN, zh-TW, iw ; zh-Hant-TW ; zh-TW +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh-TW ; zh-TW +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-CN ; zh-CN +zh-CN, zh-TW, iw ; zh ; zh-CN + +################################################## +# testenGB + +fr, en, en-GB, es-419, es-MX, es ; en-NZ ; en-GB +fr, en, en-GB, es-419, es-MX, es ; es-ES ; es +fr, en, en-GB, es-419, es-MX, es ; es-AR ; es-419 +fr, en, en-GB, es-419, es-MX, es ; es-MX ; es-MX + +################################################## +# testFallbacks + +91, en, hi ; sa ; hi + +################################################## +# testBasics + +fr, en-GB, en ; en-GB ; en-GB +fr, en-GB, en ; en ; en +fr, en-GB, en ; fr ; fr +fr, en-GB, en ; ja ; fr # return first if no match + +################################################## +# testFallback + +# check that script fallbacks are handled right + +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh ; zh-CN +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW +zh-CN, zh-TW, iw ; he-IT ; iw + +################################################## +# testSpecials + +# check that nearby languages are handled + +en, fil, ro, nn ; tl ; fil +en, fil, ro, nn ; mo ; ro +en, fil, ro, nn ; nb ; nn + +# make sure default works + +en, fil, ro, nn ; ja ; en + +################################################## +# testRegionalSpecials + +# verify that en-AU is closer to en-GB than to en (which is en-US) + +en, en-GB, es, es-419 ; es-MX ; es-419 +en, en-GB, es, es-419 ; en-AU ; en-GB +en, en-GB, es, es-419 ; es-ES ; es + +################################################## +# testHK + +# HK and MO are closer to each other for Hant than to TW + +zh, zh-TW, zh-MO ; zh-HK ; zh-MO +zh, zh-TW, zh-HK ; zh-MO ; zh-HK + +################################################## +# testMatch-exact + +# see localeDistance.txt + +################################################## +# testMatch-none + +# see localeDistance.txt + +################################################## +# testMatch-matchOnMazimized + +zh, zh-Hant ; und-TW ; zh-Hant # und-TW should be closer to zh-Hant than to zh +en-Hant-TW, und-TW ; zh-Hant ; und-TW # zh-Hant should be closer to und-TW than to en-Hant-TW +en-Hant-TW, und-TW ; zh ; und-TW # zh should be closer to und-TW than to en-Hant-TW + +################################################## +# testMatchGrandfatheredCode + +fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US + +################################################## +# testGetBestMatchForList-exactMatch +fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja + +################################################## +# testGetBestMatchForList-simpleVariantMatch +fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB # Intentionally avoiding a perfect-match or two candidates for variant matches. + +# Fallback. + +fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr + +################################################## +# testGetBestMatchForList-matchOnMaximized +# Check that if the preference is maximized already, it works as well. + +en, ja ; ja-Jpan-JP, en-AU ; ja # Match for ja-Jpan-JP (maximized already) + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +en, ja ; ja-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) + +# Check that if the preference is maximized already, it works as well. + +en, ja ; ja-Jpan-JP, en-US ; ja # Match for ja-Jpan-JP (maximized already) + +################################################## +# testGetBestMatchForList-noMatchOnMaximized +# Regression test for http://b/5714572 . +# de maximizes to de-DE. Pick the exact match for the secondary language instead. +en, de, fr, ja ; de-CH, fr ; de + +################################################## +# testBestMatchForTraditionalChinese + +# Scenario: An application that only supports Simplified Chinese (and some other languages), +# but does not support Traditional Chinese. zh-Hans-CN could be replaced with zh-CN, zh, or +# zh-Hans, it wouldn't make much of a difference. + +# The script distance (simplified vs. traditional Han) is considered small enough +# to be an acceptable match. The regional difference is considered almost insignificant. + +fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN + +# For geo-political reasons, you might want to avoid a zh-Hant -> zh-Hans match. +# In this case, if zh-TW, zh-HK or a tag starting with zh-Hant is requested, you can +# change your call to getBestMatch to include a 2nd language preference. +# "en" is a better match since its distance to "en-US" is closer than the distance +# from "zh-TW" to "zh-CN" (script distance). + +fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hant-CN, en, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN + +################################################## +# testUndefined +# When the undefined language doesn't match anything in the list, +# getBestMatch returns the default, as usual. + +it, fr ; und ; it + +# When it *does* occur in the list, bestMatch returns it, as expected. +it, und ; und ; und + +# The unusual part: max("und") = "en-Latn-US", and since matching is based on maximized +# tags, the undefined language would normally match English. But that would produce the +# counterintuitive results that getBestMatch("und", XLocaleMatcher("it,en")) would be "en", and +# getBestMatch("en", XLocaleMatcher("it,und")) would be "und". + +# To avoid that, we change the matcher's definitions of max +# so that max("und")="und". That produces the following, more desirable +# results: + +it, en ; und ; it +it, und ; en ; it + +################################################## +# testGetBestMatch-regionDistance + +es-AR, es ; es-MX ; es-AR +fr, en, en-GB ; en-CA ; en-GB +de-AT, de-DE, de-CH ; de ; de-DE + +################################################## +# testAsymmetry + +mul, nl ; af ; nl # af => nl +mul, af ; nl ; mul # but nl !=> af + +################################################## +# testGetBestMatchForList-matchOnMaximized2 + +# ja-JP matches ja on likely subtags, and it's listed first, thus it wins over the second preference en-GB. + +fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja # Match for ja-JP, with likely region subtag + +# Check that if the preference is maximized already, it works as well. + +fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja # Match for ja-Jpan-JP (maximized already) + +################################################## +# testGetBestMatchForList-closeEnoughMatchOnMaximized + +en-GB, en, de, fr, ja ; de-CH, fr ; de +en-GB, en, de, fr, ja ; en-US, ar, nl, de, ja ; en + +################################################## +# testGetBestMatchForPortuguese + +# pt might be supported and not pt-PT + +# European user who prefers Spanish over Brazillian Portuguese as a fallback. + +pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT # pt implicit + +# Brazillian user who prefers South American Spanish over European Portuguese as a fallback. +# The asymmetry between this case and above is because it's "pt-PT" that's missing between the +# matchers as "pt-BR" is a much more common language. + +pt-PT, pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR +pt-PT, pt-BR, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt-PT, es, pt ; pt-PT +pt-PT, pt, es, es-419 ; pt, es-419, pt-PT ; pt + +pt-BR, es, es-419 ; pt, es-419, pt-PT ; pt-BR + +# Code that adds the user's country can get "pt-US" for a user's language. +# That should fall back to "pt-BR". + +pt-PT, pt-BR, es, es-419 ; pt-US, pt-PT ; pt-BR +pt-PT, pt, es, es-419 ; pt-US, pt-PT, pt ; pt # pt-BR implicit + +################################################## +# testVariantWithScriptMatch 1 and 2 + +fr, en, sv ; en-GB ; en +fr, en, sv ; en-GB ; en +en, sv ; en-GB, sv ; en + +################################################## +# testLongLists + +en, sv ; sv ; sv +af, am, ar, az, be, bg, bn, bs, ca, cs, cy, cy, da, de, el, en, en-GB, es, es-419, et, eu, fa, fi, fil, fr, ga, gl, gu, hi, hr, hu, hy, id, is, it, iw, ja, ka, kk, km, kn, ko, ky, lo, lt, lv, mk, ml, mn, mr, ms, my, ne, nl, no, pa, pl, pt, pt-PT, ro, ru, si, sk, sl, sq, sr, sr-Latn, sv, sw, ta, te, th, tr, uk, ur, uz, vi, zh-CN, zh-TW, zu ; sv ; sv +af, af-NA, af-ZA, agq, agq-CM, ak, ak-GH, am, am-ET, ar, ar-001, ar-AE, ar-BH, ar-DJ, ar-DZ, ar-EG, ar-EH, ar-ER, ar-IL, ar-IQ, ar-JO, ar-KM, ar-KW, ar-LB, ar-LY, ar-MA, ar-MR, ar-OM, ar-PS, ar-QA, ar-SA, ar-SD, ar-SO, ar-SS, ar-SY, ar-TD, ar-TN, ar-YE, as, as-IN, asa, asa-TZ, ast, ast-ES, az, az-Cyrl, az-Cyrl-AZ, az-Latn, az-Latn-AZ, bas, bas-CM, be, be-BY, bem, bem-ZM, bez, bez-TZ, bg, bg-BG, bm, bm-ML, bn, bn-BD, bn-IN, bo, bo-CN, bo-IN, br, br-FR, brx, brx-IN, bs, bs-Cyrl, bs-Cyrl-BA, bs-Latn, bs-Latn-BA, ca, ca-AD, ca-ES, ca-ES-VALENCIA, ca-FR, ca-IT, ce, ce-RU, cgg, cgg-UG, chr, chr-US, ckb, ckb-IQ, ckb-IR, cs, cs-CZ, cu, cu-RU, cy, cy-GB, da, da-DK, da-GL, dav, dav-KE, de, de-AT, de-BE, de-CH, de-DE, de-LI, de-LU, dje, dje-NE, dsb, dsb-DE, dua, dua-CM, dyo, dyo-SN, dz, dz-BT, ebu, ebu-KE, ee, ee-GH, ee-TG, el, el-CY, el-GR, en, en-001, en-150, en-AG, en-AI, en-AS, en-AT, en-AU, en-BB, en-BE, en-BI, en-BM, en-BS, en-BW, en-BZ, en-CA, en-CC, en-CH, en-CK, en-CM, en-CX, en-CY, en-DE, en-DG, en-DK, en-DM, en-ER, en-FI, en-FJ, en-FK, en-FM, en-GB, en-GD, en-GG, en-GH, en-GI, en-GM, en-GU, en-GY, en-HK, en-IE, en-IL, en-IM, en-IN, en-IO, en-JE, en-JM, en-KE, en-KI, en-KN, en-KY, en-LC, en-LR, en-LS, en-MG, en-MH, en-MO, en-MP, en-MS, en-MT, en-MU, en-MW, en-MY, en-NA, en-NF, en-NG, en-NL, en-NR, en-NU, en-NZ, en-PG, en-PH, en-PK, en-PN, en-PR, en-PW, en-RW, en-SB, en-SC, en-SD, en-SE, en-SG, en-SH, en-SI, en-SL, en-SS, en-SX, en-SZ, en-TC, en-TK, en-TO, en-TT, en-TV, en-TZ, en-UG, en-UM, en-US, en-US-POSIX, en-VC, en-VG, en-VI, en-VU, en-WS, en-ZA, en-ZM, en-ZW, eo, eo-001, es, es-419, es-AR, es-BO, es-CL, es-CO, es-CR, es-CU, es-DO, es-EA, es-EC, es-ES, es-GQ, es-GT, es-HN, es-IC, es-MX, es-NI, es-PA, es-PE, es-PH, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et, et-EE, eu, eu-ES, ewo, ewo-CM, fa, fa-AF, fa-IR, ff, ff-CM, ff-GN, ff-MR, ff-SN, fi, fi-FI, fil, fil-PH, fo, fo-DK, fo-FO, fr, fr-BE, fr-BF, fr-BI, fr-BJ, fr-BL, fr-CA, fr-CD, fr-CF, fr-CG, fr-CH, fr-CI, fr-CM, fr-DJ, fr-DZ, fr-FR, fr-GA, fr-GF, fr-GN, fr-GP, fr-GQ, fr-HT, fr-KM, fr-LU, fr-MA, fr-MC, fr-MF, fr-MG, fr-ML, fr-MQ, fr-MR, fr-MU, fr-NC, fr-NE, fr-PF, fr-PM, fr-RE, fr-RW, fr-SC, fr-SN, fr-SY, fr-TD, fr-TG, fr-TN, fr-VU, fr-WF, fr-YT, fur, fur-IT, fy, fy-NL, ga, ga-IE, gd, gd-GB, gl, gl-ES, gsw, gsw-CH, gsw-FR, gsw-LI, gu, gu-IN, guz, guz-KE, gv, gv-IM, ha, ha-GH, ha-NE, ha-NG, haw, haw-US, he, he-IL, hi, hi-IN, hr, hr-BA, hr-HR, hsb, hsb-DE, hu, hu-HU, hy, hy-AM, id, id-ID, ig, ig-NG, ii, ii-CN, is, is-IS, it, it-CH, it-IT, it-SM, ja, ja-JP, jgo, jgo-CM, jmc, jmc-TZ, ka, ka-GE, kab, kab-DZ, kam, kam-KE, kde, kde-TZ, kea, kea-CV, khq, khq-ML, ki, ki-KE, kk, kk-KZ, kkj, kkj-CM, kl, kl-GL, kln, kln-KE, km, km-KH, kn, kn-IN, ko, ko-KP, ko-KR, kok, kok-IN, ks, ks-IN, ksb, ksb-TZ, ksf, ksf-CM, ksh, ksh-DE, kw, kw-GB, ky, ky-KG, lag, lag-TZ, lb, lb-LU, lg, lg-UG, lkt, lkt-US, ln, ln-AO, ln-CD, ln-CF, ln-CG, lo, lo-LA, lrc, lrc-IQ, lrc-IR, lt, lt-LT, lu, lu-CD, luo, luo-KE, luy, luy-KE, lv, lv-LV, mas, mas-KE, mas-TZ, mer, mer-KE, mfe, mfe-MU, mg, mg-MG, mgh, mgh-MZ, mgo, mgo-CM, mk, mk-MK, ml, ml-IN, mn, mn-MN, mr, mr-IN, ms, ms-BN, ms-MY, ms-SG, mt, mt-MT, mua, mua-CM, my, my-MM, mzn, mzn-IR, naq, naq-NA, nb, nb-NO, nb-SJ, nd, nd-ZW, ne, ne-IN, ne-NP, nl, nl-AW, nl-BE, nl-BQ, nl-CW, nl-NL, nl-SR, nl-SX, nmg, nmg-CM, nn, nn-NO, nnh, nnh-CM, nus, nus-SS, nyn, nyn-UG, om, om-ET, om-KE, or, or-IN, os, os-GE, os-RU, pa, pa-Arab, pa-Arab-PK, pa-Guru, pa-Guru-IN, pl, pl-PL, prg, prg-001, ps, ps-AF, pt, pt-AO, pt-BR, pt-CV, pt-GW, pt-MO, pt-MZ, pt-PT, pt-ST, pt-TL, qu, qu-BO, qu-EC, qu-PE, rm, rm-CH, rn, rn-BI, ro, ro-MD, ro-RO, rof, rof-TZ, root, ru, ru-BY, ru-KG, ru-KZ, ru-MD, ru-RU, ru-UA, rw, rw-RW, rwk, rwk-TZ, sah, sah-RU, saq, saq-KE, sbp, sbp-TZ, se, se-FI, se-NO, se-SE, seh, seh-MZ, ses, ses-ML, sg, sg-CF, shi, shi-Latn, shi-Latn-MA, shi-Tfng, shi-Tfng-MA, si, si-LK, sk, sk-SK, sl, sl-SI, smn, smn-FI, sn, sn-ZW, so, so-DJ, so-ET, so-KE, so-SO, sq, sq-AL, sq-MK, sq-XK, sr, sr-Cyrl, sr-Cyrl-BA, sr-Cyrl-ME, sr-Cyrl-RS, sr-Cyrl-XK, sr-Latn, sr-Latn-BA, sr-Latn-ME, sr-Latn-RS, sr-Latn-XK, sv, sv-AX, sv-FI, sv-SE, sw, sw-CD, sw-KE, sw-TZ, sw-UG, ta, ta-IN, ta-LK, ta-MY, ta-SG, te, te-IN, teo, teo-KE, teo-UG, th, th-TH, ti, ti-ER, ti-ET, tk, tk-TM, to, to-TO, tr, tr-CY, tr-TR, twq, twq-NE, tzm, tzm-MA, ug, ug-CN, uk, uk-UA, ur, ur-IN, ur-PK, uz, uz-Arab, uz-Arab-AF, uz-Cyrl, uz-Cyrl-UZ, uz-Latn, uz-Latn-UZ, vai, vai-Latn, vai-Latn-LR, vai-Vaii, vai-Vaii-LR, vi, vi-VN, vo, vo-001, vun, vun-TZ, wae, wae-CH, xog, xog-UG, yav, yav-CM, yi, yi-001, yo, yo-BJ, yo-NG, zgh, zgh-MA, zh, zh-Hans, zh-Hans-CN, zh-Hans-HK, zh-Hans-MO, zh-Hans-SG, zh-Hant, zh-Hant-HK, zh-Hant-MO, zh-Hant-TW, zu, zu-ZA ; sv ; sv + +################################################## +# test8288 + +it, en ; und ; it +it, en ; und, en ; en + +# examples from +# http://unicode.org/repos/cldr/tags/latest/common/bcp47/ +# http://unicode.org/repos/cldr/tags/latest/common/validity/variant.xml + +################################################## +# testUnHack + +en-NZ, en-IT ; en-US ; en-NZ + +################################################## +# testEmptySupported => null + ; en ; null + +################################################## +# testVariantsAndExtensions +################################################## +# tests the .combine() method + +und, fr ; fr-BE-fonipa ; fr ; fr-BE-fonipa +und, fr-CA ; fr-BE-fonipa ; fr-CA ; fr-BE-fonipa +und, fr-fonupa ; fr-BE-fonipa ; fr-fonupa ; fr-BE-fonipa +und, no ; nn-BE-fonipa ; no ; no-BE-fonipa +und, en-GB-u-sd-gbsct ; en-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin ; en-GB-u-sd-gbsct ; en-GB-fonipa-u-nu-Arab-ca-buddhist-t-m0-iso-i0-pinyin + +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr-PSCRACK ; fr-PSCRACK +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; fr ; fr-PSCRACK +en-PSCRACK, de-PSCRACK, fr-PSCRACK, pt-PT-PSCRACK ; de-CH ; de-PSCRACK + +################################################## +# testClusters +# we favor es-419 over others in cluster. Clusters: es- {ES, MA, EA} {419, AR, MX} + +und, es, es-MA, es-MX, es-419 ; es-AR ; es-419 +und, es-MA, es, es-419, es-MX ; es-AR ; es-419 +und, es, es-MA, es-MX, es-419 ; es-EA ; es +und, es-MA, es, es-419, es-MX ; es-EA ; es + +# of course, fall back to within cluster + +und, es, es-MA, es-MX ; es-AR ; es-MX +und, es-MA, es, es-MX ; es-AR ; es-MX +und, es-MA, es-MX, es-419 ; es-EA ; es-MA +und, es-MA, es-419, es-MX ; es-EA ; es-MA + +# we favor es-GB over others in cluster. Clusters: en- {US, GU, VI} {GB, IN, ZA} + +und, en, en-GU, en-IN, en-GB ; en-ZA ; en-GB +und, en-GU, en, en-GB, en-IN ; en-ZA ; en-GB +und, en, en-GU, en-IN, en-GB ; en-VI ; en +und, en-GU, en, en-GB, en-IN ; en-VI ; en + +# of course, fall back to within cluster + +und, en, en-GU, en-IN ; en-ZA ; en-IN +und, en-GU, en, en-IN ; en-ZA ; en-IN +und, en-GU, en-IN, en-GB ; en-VI ; en-GU +und, en-GU, en-GB, en-IN ; en-VI ; en-GU + +################################################## +# testThreshold +@Threshold=60 + +50, und, fr-CA-fonupa ; fr-BE-fonipa ; fr-CA-fonupa ; fr-BE-fonipa +50, und, fr-Cyrl-CA-fonupa ; fr-BE-fonipa ; fr-Cyrl-CA-fonupa ; fr-Cyrl-BE-fonipa + +@Threshold=-1 # restore + +################################################## +# testScriptFirst +@DistanceOption=SCRIPT_FIRST +@debug + +ru, fr ; zh, pl ; fr +ru, fr ; zh-Cyrl, pl ; ru +hr, en-Cyrl; sr ; en-Cyrl +da, ru, hr; sr ; ru \ No newline at end of file diff --git a/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt b/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt new file mode 100644 index 0000000..4f4c609 --- /dev/null +++ b/vendor/golang.org/x/text/language/testdata/GoLocaleMatcherTest.txt @@ -0,0 +1,226 @@ +# basics +fr, en-GB, en ; en-GB ; en-GB +fr, en-GB, en ; en-US ; en +fr, en-GB, en ; fr-FR ; fr +fr, en-GB, en ; ja-JP ; fr + +# script fallbacks +zh-CN, zh-TW, iw ; zh-Hant ; zh-TW +zh-CN, zh-TW, iw ; zh ; zh-CN +zh-CN, zh-TW, iw ; zh-Hans-CN ; zh-CN +zh-CN, zh-TW, iw ; zh-Hant-HK ; zh-TW +zh-CN, zh-TW, iw ; he-IT ; iw ; iw + +# language-specific script fallbacks 1 +en, sr, nl ; sr-Latn ; sr +en, sr, nl ; sh ; sr # different script, but seems okay and is as CLDR suggests +en, sr, nl ; hr ; en +en, sr, nl ; bs ; en +en, sr, nl ; nl-Cyrl ; sr + +# language-specific script fallbacks 2 +en, sh ; sr ; sh +en, sh ; sr-Cyrl ; sh +en, sh ; hr ; sh + +# don't match hr to sr-Latn +en, sr-Latn ; hr ; en + +# both deprecated and not +fil, tl, iw, he ; he-IT ; he +fil, tl, iw, he ; he ; he +fil, tl, iw, he ; iw ; iw +fil, tl, iw, he ; fil-IT ; fil +fil, tl, iw, he ; fil ; fil +fil, tl, iw, he ; tl ; tl + +# nearby languages +en, fil, ro, nn ; tl ; fil +en, fil, ro, nn ; mo ; ro +en, fil, ro, nn ; nb ; nn +en, fil, ro, nn ; ja ; en + +# nearby languages: Nynorsk to Bokmål +en, nb ; nn ; nb + +# nearby languages: Danish does not match nn +en, nn ; da ; en + +# nearby languages: Danish matches no +en, no ; da ; no + +# nearby languages: Danish matches nb +en, nb ; da ; nb + +# prefer matching languages over language variants. +nn, en-GB ; no, en-US ; en-GB +nn, en-GB ; nb, en-US ; en-GB + +# deprecated version is closer than same language with other differences +nl, he, en-GB ; iw, en-US ; he + +# macro equivalent is closer than same language with other differences +nl, zh, en-GB, no ; cmn, en-US ; zh +nl, zh, en-GB, no ; nb, en-US ; no + +# legacy equivalent is closer than same language with other differences +nl, fil, en-GB ; tl, en-US ; fil + +# distinguish near equivalents +en, ro, mo, ro-MD ; ro ; ro +en, ro, mo, ro-MD ; mo ; mo +en, ro, mo, ro-MD ; ro-MD ; ro-MD + +# maximization of legacy +sr-Cyrl, sr-Latn, ro, ro-MD ; sh ; sr-Latn +sr-Cyrl, sr-Latn, ro, ro-MD ; mo ; ro-MD + +# empty + ; fr ; und + ; en ; und + +# private use subtags +fr, en-GB, x-bork, es-ES, es-419 ; x-piglatin ; fr +fr, en-GB, x-bork, es-ES, es-419 ; x-bork ; x-bork + +# grandfathered codes +fr, i-klingon, en-Latn-US ; en-GB-oed ; en-Latn-US +fr, i-klingon, en-Latn-US ; i-klingon ; tlh + + +# simple variant match +fr, en-GB, ja, es-ES, es-MX ; de, en-US ; en-GB +fr, en-GB, ja, es-ES, es-MX ; de, zh ; fr + +# best match for traditional Chinese +fr, zh-Hans-CN, en-US ; zh-TW ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-Hant ; zh-Hans-CN +fr, zh-Hans-CN, en-US ; zh-TW, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hant-CN, en ; en-US +fr, zh-Hans-CN, en-US ; zh-Hans, en ; zh-Hans-CN + +# more specific script should win in case regions are identical +af, af-Latn, af-Arab ; af ; af +af, af-Latn, af-Arab ; af-ZA ; af +af, af-Latn, af-Arab ; af-Latn-ZA ; af-Latn +af, af-Latn, af-Arab ; af-Latn ; af-Latn + +# more specific region should win +nl, nl-NL, nl-BE ; nl ; nl +nl, nl-NL, nl-BE ; nl-Latn ; nl +nl, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL +nl, nl-NL, nl-BE ; nl-NL ; nl-NL + +# region may replace matched if matched is enclosing +es-419,es ; es-MX ; es-419 ; es-MX +es-419,es ; es-SG ; es + +# more specific region wins over more specific script +nl, nl-Latn, nl-NL, nl-BE ; nl ; nl +nl, nl-Latn, nl-NL, nl-BE ; nl-Latn ; nl-Latn +nl, nl-Latn, nl-NL, nl-BE ; nl-NL ; nl-NL +nl, nl-Latn, nl-NL, nl-BE ; nl-Latn-NL ; nl-NL + +# region distance Portuguese +pt, pt-PT ; pt-ES ; pt-PT + +# if no preferred locale specified, pick top language, not regional +en, fr, fr-CA, fr-CH ; fr-US ; fr #TODO: ; fr-u-rg-US + +# region distance German +de-AT, de-DE, de-CH ; de ; de-DE + +# en-AU is closer to en-GB than to en (which is en-US) +en, en-GB, es-ES, es-419 ; en-AU ; en-GB +en, en-GB, es-ES, es-419 ; es-MX ; es-419 ; es-MX +en, en-GB, es-ES, es-419 ; es-PT ; es-ES + +# undefined +it, fr ; und ; it + +# und does not match en +it, en ; und ; it + +# undefined in priority list +it, und ; und ; und +it, und ; en ; it + +# undefined +it, fr, zh ; und-FR ; fr +it, fr, zh ; und-CN ; zh +it, fr, zh ; und-Hans ; zh +it, fr, zh ; und-Hant ; zh +it, fr, zh ; und-Latn ; it + +# match on maximized tag +fr, en-GB, ja, es-ES, es-MX ; ja-JP, en-GB ; ja +fr, en-GB, ja, es-ES, es-MX ; ja-Jpan-JP, en-GB ; ja + +# pick best maximized tag +ja, ja-Jpan-US, ja-JP, en, ru ; ja-Jpan, ru ; ja +ja, ja-Jpan-US, ja-JP, en, ru ; ja-JP, ru ; ja-JP +ja, ja-Jpan-US, ja-JP, en, ru ; ja-US, ru ; ja-Jpan-US + +# termination: pick best maximized match +ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan-JP, ru ; ja-JP +ja, ja-Jpan, ja-JP, en, ru ; ja-Jpan, ru ; ja-Jpan + +# same language over exact, but distinguish when user is explicit +fr, en-GB, ja, es-ES, es-MX ; ja, de ; ja +en, de, fr, ja ; de-CH, fr ; de # TODO: ; de-u-rg-CH +en-GB, nl ; en, nl ; en-GB +en-GB, nl ; en, nl, en-GB ; nl + +# parent relation preserved +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-150 ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-AU ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-BE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GG ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-GI ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-HK ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IM ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-IN ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-JE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-NZ ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-PK ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-SG ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-DE ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; en-MT ; en-GB +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-AR ; es-419 ; es-AR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-BO ; es-419 ; es-BO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CL ; es-419 ; es-CL +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CO ; es-419 ; es-CO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CR ; es-419 ; es-CR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-CU ; es-419 ; es-CU +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-DO ; es-419 ; es-DO +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-EC ; es-419 ; es-EC +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-GT ; es-419 ; es-GT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-HN ; es-419 ; es-HN +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-MX ; es-419 ; es-MX +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-NI ; es-419 ; es-NI +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PA ; es-419 ; es-PA +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PE ; es-419 ; es-PE +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PR ; es-419 ; es-PR +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PT ; es +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-PY ; es-419 ; es-PY +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-SV ; es-419 ; es-SV +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-US ; es-419 +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-UY ; es-419 ; es-UY +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; es-VE ; es-419 ; es-VE +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-AO ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-CV ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-GW ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MO ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-MZ ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-ST ; pt-PT +en, en-US, en-GB, es, es-419, pt, pt-BR, pt-PT, zh, zh-Hant, zh-Hant-HK ; pt-TL ; pt-PT + +# preserve extensions +en, de, sl-nedis ; de-FR-u-co-phonebk ; de ; de-u-co-phonebk +en, de, sl-nedis ; sl-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; sl-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; sl-HR-nedis-u-cu-eur ; sl-nedis ; sl-nedis-u-cu-eur +en, de, sl-nedis ; de-t-m0-iso-i0-pinyin ; de ; de-t-m0-iso-i0-pinyin + diff --git a/vendor/golang.org/x/text/message/doc.go b/vendor/golang.org/x/text/message/doc.go new file mode 100644 index 0000000..60424a6 --- /dev/null +++ b/vendor/golang.org/x/text/message/doc.go @@ -0,0 +1,95 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package message implements formatted I/O for localized strings with functions +// analogous to the fmt's print functions. It is a drop-in replacement for fmt. +// +// +// Localized Formatting +// +// A format string can be localized by replacing any of the print functions of +// fmt with an equivalent call to a Printer. +// +// p := message.NewPrinter(language.English) +// p.Println(123456.78) // Prints 123,456.78 +// +// p := message.NewPrinter(language.Bengali) +// p.Println(123456.78) // Prints ১,২৩,৪৫৬.৭৮ +// +// Printer currently supports numbers and specialized types for which packages +// exist in x/text. Other builtin types such as time.Time and slices are +// planned. +// +// Format strings largely have the same meaning as with fmt with the following +// notable exceptions: +// - flag # always resorts to fmt for printing +// - verb 'f', 'e', 'g', 'd' use localized formatting unless the '#' flag is +// specified. +// +// See package fmt for more options. +// +// +// Translation +// +// The format strings that are passed to Printf, Sprintf, Fprintf, or Errorf +// are used as keys to look up translations for the specified languages. +// More on how these need to be specified below. +// +// One can use arbitrary keys to distinguish between otherwise ambiguous +// strings: +// p := message.NewPrinter(language.English) +// p.Printf("archive(noun)") // Prints "archive" +// p.Printf("archive(verb)") // Prints "archive" +// +// p := message.NewPrinter(language.German) +// p.Printf("archive(noun)") // Prints "Archiv" +// p.Printf("archive(verb)") // Prints "archivieren" +// +// To retain the fallback functionality, use Key: +// p.Printf(message.Key("archive(noun)", "archive")) +// p.Printf(message.Key("archive(verb)", "archive")) +// +// +// Translation Pipeline +// +// Format strings that contain text need to be translated to support different +// locales. The first step is to extract strings that need to be translated. +// +// 1. Install gotext +// go get -u golang.org/x/text/cmd/gotext +// gotext -help +// +// 2. Mark strings in your source to be translated by using message.Printer, +// instead of the functions of the fmt package. +// +// 3. Extract the strings from your source +// +// gotext extract +// +// The output will be written to the textdata directory. +// +// 4. Send the files for translation +// +// It is planned to support multiple formats, but for now one will have to +// rewrite the JSON output to the desired format. +// +// 5. Inject translations into program +// +// 6. Repeat from 2 +// +// Right now this has to be done programmatically with calls to Set or +// SetString. These functions as well as the methods defined in +// see also package golang.org/x/text/message/catalog can be used to implement +// either dynamic or static loading of messages. +// +// +// Plural and Gender Forms +// +// Translated messages can vary based on the plural and gender forms of +// substitution values. In general, it is up to the translators to provide +// alternative translations for such forms. See the packages in +// golang.org/x/text/feature and golang.org/x/text/message/catalog for more +// information. +// +package message diff --git a/vendor/golang.org/x/text/message/examples_test.go b/vendor/golang.org/x/text/message/examples_test.go new file mode 100644 index 0000000..c73eaf9 --- /dev/null +++ b/vendor/golang.org/x/text/message/examples_test.go @@ -0,0 +1,42 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package message_test + +import ( + "net/http" + + "golang.org/x/text/language" + "golang.org/x/text/message" +) + +func Example_http() { + // languages supported by this service: + matcher := language.NewMatcher(message.DefaultCatalog.Languages()) + + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + lang, _ := r.Cookie("lang") + accept := r.Header.Get("Accept-Language") + fallback := "en" + tag, _ := language.MatchStrings(matcher, lang.String(), accept, fallback) + + p := message.NewPrinter(tag) + + p.Fprintln(w, "User language is", tag) + }) +} + +func ExamplePrinter_numbers() { + for _, lang := range []string{"en", "de", "de-CH", "fr", "bn"} { + p := message.NewPrinter(language.Make(lang)) + p.Printf("%-6s %g\n", lang, 123456.78) + } + + // Output: + // en 123,456.78 + // de 123.456,78 + // de-CH 123’456.78 + // fr 123 456,78 + // bn ১,২৩,৪৫৬.৭৮ +} diff --git a/vendor/golang.org/x/text/message/fmt_test.go b/vendor/golang.org/x/text/message/fmt_test.go index b22420d..2110bb5 100755 --- a/vendor/golang.org/x/text/message/fmt_test.go +++ b/vendor/golang.org/x/text/message/fmt_test.go @@ -475,10 +475,8 @@ var fmtTests = []struct { {"%.4b", float32(1.0), "8388608p-23"}, {"%.4b", -1.0, "-4503599627370496p-52"}, // Test correct f.intbuf boundary checks. - // TODO: the following cases won't work because of rounding errors. We can - // fix this if we expose the internals of strconv. - // {"%.68f", 1.0, zeroFill("1.", 68, "")}, // TODO(bug): rounding error - // {"%.68f", -1.0, zeroFill("-1.", 68, "")}, // TODO(bug): rounding error + {"%.68f", 1.0, zeroFill("1.", 68, "")}, + {"%.68f", -1.0, zeroFill("-1.", 68, "")}, // float infinites and NaNs {"%f", posInf, "∞"}, {"%.1f", negInf, "-∞"}, diff --git a/vendor/golang.org/x/text/message/print.go b/vendor/golang.org/x/text/message/print.go index 7e4642b..07feaa2 100644 --- a/vendor/golang.org/x/text/message/print.go +++ b/vendor/golang.org/x/text/message/print.go @@ -284,7 +284,7 @@ func (p *printer) initDecimal(minFrac, maxFrac int) { f.MinIntegerDigits = 1 f.MaxIntegerDigits = 0 f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = uint16(maxFrac) + f.MaxFractionDigits = int16(maxFrac) p.setFlags(f) f.PadRune = 0 if p.fmt.widPresent { @@ -313,7 +313,7 @@ func (p *printer) initScientific(minFrac, maxFrac int) { } else { f.SetPrecision(maxFrac + 1) f.MinFractionDigits = uint8(minFrac) - f.MaxFractionDigits = uint16(maxFrac) + f.MaxFractionDigits = int16(maxFrac) } f.MinExponentDigits = 2 p.setFlags(f) diff --git a/vendor/google.golang.org/api/.gitignore b/vendor/google.golang.org/api/.gitignore new file mode 100644 index 0000000..50d2a9b --- /dev/null +++ b/vendor/google.golang.org/api/.gitignore @@ -0,0 +1,12 @@ +_obj/ +*_testmain.go +clientid.dat +clientsecret.dat +/google-api-go-generator/google-api-go-generator + +*.6 +*.8 +*~ +*.out +*.test +*.exe diff --git a/vendor/google.golang.org/api/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json b/vendor/google.golang.org/api/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json index dc14441..f7c52c8 100644 --- a/vendor/google.golang.org/api/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json +++ b/vendor/google.golang.org/api/acceleratedmobilepageurl/v1/acceleratedmobilepageurl-api.json @@ -7,56 +7,35 @@ "documentationLink": "https://developers.google.com/amp/cache/", "revision": "20170718", "title": "Accelerated Mobile Pages (AMP) URL API", - "ownerName": "Google", "discoveryVersion": "v1", + "ownerName": "Google", "version_module": "True", "resources": { "ampUrls": { "methods": { "batchGet": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "BatchGetAmpUrlsResponse" - }, - "parameters": {}, - "flatPath": "v1/ampUrls:batchGet", - "path": "v1/ampUrls:batchGet", - "id": "acceleratedmobilepageurl.ampUrls.batchGet", "description": "Returns AMP URL(s) and equivalent\n[AMP Cache URL(s)](/amp/cache/overview#amp-cache-url-format).", "request": { "$ref": "BatchGetAmpUrlsRequest" - } + }, + "response": { + "$ref": "BatchGetAmpUrlsResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "flatPath": "v1/ampUrls:batchGet", + "id": "acceleratedmobilepageurl.ampUrls.batchGet", + "path": "v1/ampUrls:batchGet" } } } }, "parameters": { - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { "location": "query", @@ -64,35 +43,41 @@ "default": "true", "type": "boolean" }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { + "enum": [ + "1", + "2" + ], "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], - "location": "query", - "enum": [ - "1", - "2" - ] + "location": "query" }, "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", "description": "Data format for response.", "default": "json", "enum": [ @@ -100,12 +85,11 @@ "media", "proto" ], + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], "location": "query" }, "key": { @@ -113,34 +97,29 @@ "type": "string", "location": "query" }, - "access_token": { + "quotaUser": { + "type": "string", "location": "query", - "description": "OAuth access token.", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", "type": "string" } }, "schemas": { - "BatchGetAmpUrlsResponse": { - "properties": { - "urlErrors": { - "description": "The errors for requested URLs that have no AMP URL.", - "items": { - "$ref": "AmpUrlError" - }, - "type": "array" - }, - "ampUrls": { - "description": "For each URL in BatchAmpUrlsRequest, the URL response. The response might\nnot be in the same order as URLs in the batch request.\nIf BatchAmpUrlsRequest contains duplicate URLs, AmpUrl is generated\nonly once.", - "items": { - "$ref": "AmpUrl" - }, - "type": "array" - } - }, - "id": "BatchGetAmpUrlsResponse", - "description": "Batch AMP URL response.", - "type": "object" - }, "AmpUrl": { "description": "AMP URL response for a requested URL.", "type": "object", @@ -161,9 +140,16 @@ "id": "AmpUrl" }, "AmpUrlError": { - "description": "AMP URL Error resource for a requested URL that couldn't be found.", "type": "object", "properties": { + "originalUrl": { + "description": "The original non-AMP URL.", + "type": "string" + }, + "errorMessage": { + "description": "An optional descriptive error message.", + "type": "string" + }, "errorCode": { "enumDescriptions": [ "Not specified error.", @@ -183,17 +169,10 @@ ], "description": "The error code of an API call.", "type": "string" - }, - "originalUrl": { - "description": "The original non-AMP URL.", - "type": "string" - }, - "errorMessage": { - "description": "An optional descriptive error message.", - "type": "string" } }, - "id": "AmpUrlError" + "id": "AmpUrlError", + "description": "AMP URL Error resource for a requested URL that couldn't be found." }, "BatchGetAmpUrlsRequest": { "description": "AMP URL request for a batch of URLs.", @@ -220,17 +199,38 @@ } }, "id": "BatchGetAmpUrlsRequest" + }, + "BatchGetAmpUrlsResponse": { + "description": "Batch AMP URL response.", + "type": "object", + "properties": { + "urlErrors": { + "description": "The errors for requested URLs that have no AMP URL.", + "items": { + "$ref": "AmpUrlError" + }, + "type": "array" + }, + "ampUrls": { + "description": "For each URL in BatchAmpUrlsRequest, the URL response. The response might\nnot be in the same order as URLs in the batch request.\nIf BatchAmpUrlsRequest contains duplicate URLs, AmpUrl is generated\nonly once.", + "items": { + "$ref": "AmpUrl" + }, + "type": "array" + } + }, + "id": "BatchGetAmpUrlsResponse" } }, "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "version": "v1", "baseUrl": "https://acceleratedmobilepageurl.googleapis.com/", - "servicePath": "", - "description": "Retrieves the list of AMP URLs (and equivalent AMP Cache URLs) for a given list of public URL(s).\n", "kind": "discovery#restDescription", + "description": "Retrieves the list of AMP URLs (and equivalent AMP Cache URLs) for a given list of public URL(s).\n", + "servicePath": "", "rootUrl": "https://acceleratedmobilepageurl.googleapis.com/" } diff --git a/vendor/google.golang.org/api/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json b/vendor/google.golang.org/api/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json index ad46126..9626144 100644 --- a/vendor/google.golang.org/api/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json +++ b/vendor/google.golang.org/api/adexchangebuyer2/v2beta1/adexchangebuyer2-api.json @@ -1,144 +1,1495 @@ { - "schemas": { - "ListBidResponseErrorsResponse": { - "properties": { - "calloutStatusRows": { - "items": { - "$ref": "CalloutStatusRow" - }, - "type": "array", - "description": "List of rows, with counts of bid responses aggregated by callout status." - }, - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponseErrorsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidResponseErrors.list\nmethod to retrieve the next page of results.", - "type": "string" - } - }, - "id": "ListBidResponseErrorsResponse", - "description": "Response message for listing all reasons that bid responses resulted in an\nerror.", - "type": "object" - }, - "CreativeStatusRow": { - "description": "The number of bids with the specified dimension values that did not win the\nauction (either were filtered pre-auction or lost the auction), as described\nby the specified creative status.", - "type": "object", - "properties": { - "rowDimensions": { - "$ref": "RowDimensions", - "description": "The values of all dimensions associated with metric values in this row." - }, - "creativeStatusId": { - "format": "int32", - "description": "The ID of the creative status.\nSee [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).", - "type": "integer" - }, - "bidCount": { - "description": "The number of bids with the specified status.", - "$ref": "MetricValue" - } - }, - "id": "CreativeStatusRow" - }, - "RealtimeTimeRange": { - "id": "RealtimeTimeRange", - "description": "An open-ended realtime time range specified by the start timestamp.\nFor filter sets that specify a realtime time range RTB metrics continue to\nbe aggregated throughout the lifetime of the filter set.", - "type": "object", - "properties": { - "startTimestamp": { - "format": "google-datetime", - "description": "The start timestamp of the real-time RTB metrics aggregation.", - "type": "string" + "canonicalName": "AdExchangeBuyerII", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/adexchange.buyer": { + "description": "Manage your Ad Exchange buyer account configuration" } } - }, - "NonBillableWinningBidStatusRow": { - "description": "The number of winning bids with the specified dimension values for which the\nbuyer was not billed, as described by the specified status.", - "type": "object", - "properties": { - "status": { - "description": "The status specifying why the winning bids were not billed.", - "type": "string", - "enumDescriptions": [ - "A placeholder for an undefined status.\nThis value will never be returned in responses.", - "The buyer was not billed because the ad was not rendered by the\npublisher.", - "The buyer was not billed because the impression won by the bid was\ndetermined to be invalid." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "AD_NOT_RENDERED", - "INVALID_IMPRESSION" - ] + } + }, + "rootUrl": "https://adexchangebuyer.googleapis.com/", + "ownerDomain": "google.com", + "name": "adexchangebuyer2", + "batchPath": "batch", + "title": "Ad Exchange Buyer API II", + "ownerName": "Google", + "resources": { + "accounts": { + "resources": { + "clients": { + "methods": { + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "accountId" + ], + "response": { + "$ref": "ListClientsResponse" + }, + "parameters": { + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientsResponse.nextPageToken\nreturned from the previous call to the\naccounts.clients.list method.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer clients than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "format": "int64", + "description": "Unique numerical account ID of the sponsor buyer to list the clients for.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/clients", + "path": "v2beta1/accounts/{accountId}/clients", + "id": "adexchangebuyer2.accounts.clients.list", + "description": "Lists all the clients for the current sponsor buyer." + }, + "get": { + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", + "id": "adexchangebuyer2.accounts.clients.get", + "description": "Gets a client buyer with a given client account ID.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "clientAccountId" + ], + "response": { + "$ref": "Client" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "clientAccountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client buyer to retrieve. (required)", + "type": "string", + "required": true + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)", + "type": "string", + "required": true + } + } + }, + "update": { + "request": { + "$ref": "Client" + }, + "description": "Updates an existing client buyer.", + "response": { + "$ref": "Client" + }, + "parameterOrder": [ + "accountId", + "clientAccountId" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "accountId": { + "location": "path", + "format": "int64", + "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to update a client for. (required)", + "type": "string", + "required": true + }, + "clientAccountId": { + "format": "int64", + "description": "Unique numerical account ID of the client to update. (required)", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", + "id": "adexchangebuyer2.accounts.clients.update", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}" + }, + "create": { + "description": "Creates a new client buyer.", + "request": { + "$ref": "Client" + }, + "response": { + "$ref": "Client" + }, + "parameterOrder": [ + "accountId" + ], + "httpMethod": "POST", + "parameters": { + "accountId": { + "format": "int64", + "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to create a client for. (required)", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/clients", + "id": "adexchangebuyer2.accounts.clients.create", + "path": "v2beta1/accounts/{accountId}/clients" + } + }, + "resources": { + "invitations": { + "methods": { + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListClientUserInvitationsResponse" + }, + "parameterOrder": [ + "accountId", + "clientAccountId" + ], + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientUserInvitationsResponse.nextPageToken\nreturned from the previous call to the\nclients.invitations.list\nmethod.", + "type": "string", + "location": "query" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Requested page size. Server may return fewer clients than requested.\nIf unspecified, server will pick an appropriate default." + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)", + "type": "string", + "required": true + }, + "clientAccountId": { + "description": "Numerical account ID of the client buyer to list invitations for.\n(required)\nYou must either specify a string representation of a\nnumerical account identifier or the `-` character\nto list all the invitations for all the clients\nof a given sponsor buyer.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", + "id": "adexchangebuyer2.accounts.clients.invitations.list", + "description": "Lists all the client users invitations for a client\nwith a given account ID." + }, + "get": { + "response": { + "$ref": "ClientUserInvitation" + }, + "parameterOrder": [ + "accountId", + "clientAccountId", + "invitationId" + ], + "httpMethod": "GET", + "parameters": { + "accountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)", + "type": "string", + "required": true + }, + "clientAccountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client buyer that the user invitation\nto be retrieved is associated with. (required)", + "type": "string", + "required": true + }, + "invitationId": { + "format": "int64", + "description": "Numerical identifier of the user invitation to retrieve. (required)", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}", + "id": "adexchangebuyer2.accounts.clients.invitations.get", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}", + "description": "Retrieves an existing client user invitation." + }, + "create": { + "request": { + "$ref": "ClientUserInvitation" + }, + "description": "Creates and sends out an email invitation to access\nan Ad Exchange client buyer account.", + "httpMethod": "POST", + "parameterOrder": [ + "accountId", + "clientAccountId" + ], + "response": { + "$ref": "ClientUserInvitation" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "accountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)", + "type": "string", + "required": true + }, + "clientAccountId": { + "format": "int64", + "description": "Numerical account ID of the client buyer that the user\nshould be associated with. (required)", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", + "id": "adexchangebuyer2.accounts.clients.invitations.create" + } + } + }, + "users": { + "methods": { + "update": { + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "userId": { + "location": "path", + "format": "int64", + "description": "Numerical identifier of the user to retrieve. (required)", + "type": "string", + "required": true + }, + "accountId": { + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)", + "type": "string", + "required": true, + "location": "path" + }, + "clientAccountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client buyer that the user to be retrieved\nis associated with. (required)", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", + "id": "adexchangebuyer2.accounts.clients.users.update", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", + "request": { + "$ref": "ClientUser" + }, + "description": "Updates an existing client user.\nOnly the user status can be changed on update.", + "response": { + "$ref": "ClientUser" + }, + "parameterOrder": [ + "accountId", + "clientAccountId", + "userId" + ], + "httpMethod": "PUT" + }, + "get": { + "id": "adexchangebuyer2.accounts.clients.users.get", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", + "description": "Retrieves an existing client user.", + "response": { + "$ref": "ClientUser" + }, + "parameterOrder": [ + "accountId", + "clientAccountId", + "userId" + ], + "httpMethod": "GET", + "parameters": { + "userId": { + "location": "path", + "format": "int64", + "description": "Numerical identifier of the user to retrieve. (required)", + "type": "string", + "required": true + }, + "accountId": { + "type": "string", + "required": true, + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client's sponsor buyer. (required)" + }, + "clientAccountId": { + "location": "path", + "format": "int64", + "description": "Numerical account ID of the client buyer\nthat the user to be retrieved is associated with. (required)", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}" + }, + "list": { + "description": "Lists all the known client users for a specified\nsponsor buyer account ID.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "clientAccountId" + ], + "response": { + "$ref": "ListClientUsersResponse" + }, + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientUsersResponse.nextPageToken\nreturned from the previous call to the\naccounts.clients.users.list method.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer clients than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "format": "int64", + "description": "Numerical account ID of the sponsor buyer of the client to list users for.\n(required)", + "type": "string", + "required": true, + "location": "path" + }, + "clientAccountId": { + "location": "path", + "description": "The account ID of the client buyer to list users for. (required)\nYou must specify either a string representation of a\nnumerical account identifier or the `-` character\nto list all the client users for all the clients\nof a given sponsor buyer.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users", + "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users", + "id": "adexchangebuyer2.accounts.clients.users.list" + } + } + } + } }, - "rowDimensions": { - "$ref": "RowDimensions", - "description": "The values of all dimensions associated with metric values in this row." + "creatives": { + "methods": { + "get": { + "httpMethod": "GET", + "response": { + "$ref": "Creative" + }, + "parameterOrder": [ + "accountId", + "creativeId" + ], + "parameters": { + "accountId": { + "location": "path", + "description": "The account the creative belongs to.", + "type": "string", + "required": true + }, + "creativeId": { + "description": "The ID of the creative to retrieve.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}", + "id": "adexchangebuyer2.accounts.creatives.get", + "description": "Gets a creative." + }, + "watch": { + "id": "adexchangebuyer2.accounts.creatives.watch", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}:watch", + "description": "Watches a creative. Will result in push notifications being sent to the\ntopic when the creative changes status.", + "request": { + "$ref": "WatchCreativeRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "accountId", + "creativeId" + ], + "httpMethod": "POST", + "parameters": { + "creativeId": { + "location": "path", + "description": "The creative ID to watch for status changes.\nSpecify \"-\" to watch all creatives under the above account.\nIf both creative-level and account-level notifications are\nsent, only a single notification will be sent to the\ncreative-level notification topic.", + "type": "string", + "required": true + }, + "accountId": { + "location": "path", + "description": "The account of the creative to watch.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}:watch" + }, + "update": { + "request": { + "$ref": "Creative" + }, + "description": "Updates a creative.", + "httpMethod": "PUT", + "parameterOrder": [ + "accountId", + "creativeId" + ], + "response": { + "$ref": "Creative" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "accountId": { + "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.", + "type": "string", + "required": true, + "location": "path" + }, + "creativeId": { + "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}", + "id": "adexchangebuyer2.accounts.creatives.update" + }, + "list": { + "response": { + "$ref": "ListCreativesResponse" + }, + "parameterOrder": [ + "accountId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativesResponse.next_page_token\nreturned from the previous call to 'ListCreatives' method.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer creatives than requested\n(due to timeout constraint) even if more are available via another call.\nIf unspecified, server will pick an appropriate default.\nAcceptable values are 1 to 1000, inclusive.", + "type": "integer" + }, + "accountId": { + "location": "path", + "description": "The account to list the creatives from.\nSpecify \"-\" to list all creatives the current user has access to.", + "type": "string", + "required": true + }, + "query": { + "location": "query", + "description": "An optional query string to filter creatives. If no filter is specified,\nall active creatives will be returned.\nSupported queries are:\n\u003cul\u003e\n\u003cli\u003eaccountId=\u003ci\u003eaccount_id_string\u003c/i\u003e\n\u003cli\u003ecreativeId=\u003ci\u003ecreative_id_string\u003c/i\u003e\n\u003cli\u003edealsStatus: {approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eopenAuctionStatus: {approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eattribute: {a numeric attribute from the list of attributes}\n\u003cli\u003edisapprovalReason: {a reason from DisapprovalReason\n\u003c/ul\u003e\nExample: 'accountId=12345 AND (dealsStatus:disapproved AND disapprovalReason:unacceptable_content) OR attribute:47'", + "type": "string" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/creatives", + "id": "adexchangebuyer2.accounts.creatives.list", + "path": "v2beta1/accounts/{accountId}/creatives", + "description": "Lists creatives." + }, + "create": { + "response": { + "$ref": "Creative" + }, + "parameterOrder": [ + "accountId" + ], + "httpMethod": "POST", + "parameters": { + "duplicateIdMode": { + "type": "string", + "location": "query", + "enum": [ + "NO_DUPLICATES", + "FORCE_ENABLE_DUPLICATE_IDS" + ], + "description": "Indicates if multiple creatives can share an ID or not. Default is\nNO_DUPLICATES (one ID per creative)." + }, + "accountId": { + "location": "path", + "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/creatives", + "id": "adexchangebuyer2.accounts.creatives.create", + "path": "v2beta1/accounts/{accountId}/creatives", + "description": "Creates a creative.", + "request": { + "$ref": "Creative" + } + }, + "stopWatching": { + "request": { + "$ref": "StopWatchingCreativeRequest" + }, + "description": "Stops watching a creative. Will stop push notifications being sent to the\ntopics when the creative changes status.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "accountId", + "creativeId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "accountId": { + "location": "path", + "description": "The account of the creative to stop notifications for.", + "type": "string", + "required": true + }, + "creativeId": { + "location": "path", + "description": "The creative ID of the creative to stop notifications for.\nSpecify \"-\" to specify stopping account level notifications.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}:stopWatching", + "id": "adexchangebuyer2.accounts.creatives.stopWatching", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}:stopWatching" + } + }, + "resources": { + "dealAssociations": { + "methods": { + "list": { + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations", + "id": "adexchangebuyer2.accounts.creatives.dealAssociations.list", + "description": "List all creative-deal associations.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "creativeId" + ], + "response": { + "$ref": "ListDealAssociationsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "type": "string", + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListDealAssociationsResponse.next_page_token\nreturned from the previous call to 'ListDealAssociations' method." + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. Server may return fewer associations than requested.\nIf unspecified, server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "type": "string", + "required": true, + "location": "path", + "description": "The account to list the associations from.\nSpecify \"-\" to list all creatives the current user has access to." + }, + "query": { + "location": "query", + "description": "An optional query string to filter deal associations. If no filter is\nspecified, all associations will be returned.\nSupported queries are:\n\u003cul\u003e\n\u003cli\u003eaccountId=\u003ci\u003eaccount_id_string\u003c/i\u003e\n\u003cli\u003ecreativeId=\u003ci\u003ecreative_id_string\u003c/i\u003e\n\u003cli\u003edealsId=\u003ci\u003edeals_id_string\u003c/i\u003e\n\u003cli\u003edealsStatus:{approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eopenAuctionStatus:{approved, conditionally_approved, disapproved,\n not_checked}\n\u003c/ul\u003e\nExample: 'dealsId=12345 AND dealsStatus:disapproved'", + "type": "string" + }, + "creativeId": { + "location": "path", + "description": "The creative ID to list the associations from.\nSpecify \"-\" to list all creatives under the above account.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations" + }, + "remove": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "accountId", + "creativeId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "accountId": { + "location": "path", + "description": "The account the creative belongs to.", + "type": "string", + "required": true + }, + "creativeId": { + "description": "The ID of the creative associated with the deal.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:remove", + "id": "adexchangebuyer2.accounts.creatives.dealAssociations.remove", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:remove", + "request": { + "$ref": "RemoveDealAssociationRequest" + }, + "description": "Remove the association between a deal and a creative." + }, + "add": { + "description": "Associate an existing deal with a creative.", + "request": { + "$ref": "AddDealAssociationRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "accountId", + "creativeId" + ], + "httpMethod": "POST", + "parameters": { + "accountId": { + "location": "path", + "description": "The account the creative belongs to.", + "type": "string", + "required": true + }, + "creativeId": { + "type": "string", + "required": true, + "location": "path", + "description": "The ID of the creative associated with the deal." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:add", + "id": "adexchangebuyer2.accounts.creatives.dealAssociations.add", + "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:add" + } + } + } + } }, - "bidCount": { - "$ref": "MetricValue", - "description": "The number of bids with the specified status." + "filterSets": { + "methods": { + "delete": { + "description": "Deletes the requested filter set from the account with the given account\nID.", + "httpMethod": "DELETE", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "location": "path", + "format": "int64", + "description": "The ID of the filter set to delete.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", + "id": "adexchangebuyer2.accounts.filterSets.delete" + }, + "list": { + "response": { + "$ref": "ListFilterSetsResponse" + }, + "parameterOrder": [ + "accountId" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilterSetsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.list\nmethod.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/filterSets", + "id": "adexchangebuyer2.accounts.filterSets.list", + "path": "v2beta1/accounts/{accountId}/filterSets", + "description": "Lists all filter sets for the account with the given account ID." + }, + "get": { + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", + "id": "adexchangebuyer2.accounts.filterSets.get", + "description": "Retrieves the requested filter set for the account with the given account\nID.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "FilterSet" + }, + "parameters": { + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "location": "path", + "format": "int64", + "description": "The ID of the filter set to get.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ] + }, + "create": { + "request": { + "$ref": "FilterSet" + }, + "description": "Creates the specified filter set for the account with the given account ID.", + "httpMethod": "POST", + "parameterOrder": [ + "accountId" + ], + "response": { + "$ref": "FilterSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "isTransient": { + "location": "query", + "description": "Whether the filter set is transient, or should be persisted indefinitely.\nBy default, filter sets are not transient.\nIf transient, it will be available for at least 1 hour after creation.", + "type": "boolean" + }, + "accountId": { + "type": "string", + "required": true, + "location": "path", + "format": "int64", + "description": "Account ID of the buyer." + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets", + "path": "v2beta1/accounts/{accountId}/filterSets", + "id": "adexchangebuyer2.accounts.filterSets.create" + } + }, + "resources": { + "losingBids": { + "methods": { + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "ListLosingBidsResponse" + }, + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListLosingBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.losingBids.list\nmethod.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/losingBids", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/losingBids", + "id": "adexchangebuyer2.accounts.filterSets.losingBids.list", + "description": "List all reasons for which bids lost in the auction, with the number of\nbids that lost for each reason." + } + } + }, + "impressionMetrics": { + "methods": { + "list": { + "response": { + "$ref": "ListImpressionMetricsResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListImpressionMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.impressionMetrics.list\nmethod.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/impressionMetrics", + "id": "adexchangebuyer2.accounts.filterSets.impressionMetrics.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/impressionMetrics", + "description": "Lists all metrics that are measured in terms of number of impressions." + } + } + }, + "bidMetrics": { + "methods": { + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "ListBidMetricsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "type": "string", + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidMetrics.list\nmethod." + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "type": "string", + "required": true, + "location": "path", + "format": "int64", + "description": "Account ID of the buyer." + }, + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidMetrics", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidMetrics", + "id": "adexchangebuyer2.accounts.filterSets.bidMetrics.list", + "description": "Lists all metrics that are measured in terms of number of bids." + } + } + }, + "bidResponseErrors": { + "methods": { + "list": { + "description": "List all errors that occurred in bid responses, with the number of bid\nresponses affected for each reason.", + "response": { + "$ref": "ListBidResponseErrorsResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponseErrorsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponseErrors.list\nmethod.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponseErrors", + "id": "adexchangebuyer2.accounts.filterSets.bidResponseErrors.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponseErrors" + } + } + }, + "bidResponsesWithoutBids": { + "methods": { + "list": { + "parameters": { + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "location": "path", + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true + }, + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponsesWithoutBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponsesWithoutBids.list\nmethod.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponsesWithoutBids", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponsesWithoutBids", + "id": "adexchangebuyer2.accounts.filterSets.bidResponsesWithoutBids.list", + "description": "List all reasons for which bid responses were considered to have no\napplicable bids, with the number of bid responses affected for each reason.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "ListBidResponsesWithoutBidsResponse" + } + } + } + }, + "filteredBidRequests": { + "methods": { + "list": { + "description": "List all reasons that caused a bid request not to be sent for an\nimpression, with the number of bid requests not sent for each reason.", + "response": { + "$ref": "ListFilteredBidRequestsResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidRequestsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBidRequests.list\nmethod.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBidRequests", + "id": "adexchangebuyer2.accounts.filterSets.filteredBidRequests.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBidRequests" + } + } + }, + "filteredBids": { + "resources": { + "creatives": { + "methods": { + "list": { + "response": { + "$ref": "ListCreativeStatusBreakdownByCreativeResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId", + "creativeStatusId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByCreativeResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod.", + "type": "string" + }, + "creativeStatusId": { + "location": "path", + "format": "int32", + "description": "The ID of the creative status for which to retrieve a breakdown by\ncreative.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).", + "type": "integer", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "type": "string", + "required": true, + "location": "path", + "format": "int64", + "description": "Account ID of the buyer." + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/creatives", + "id": "adexchangebuyer2.accounts.filterSets.filteredBids.creatives.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/creatives", + "description": "List all creatives associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each creative." + } + } + }, + "details": { + "methods": { + "list": { + "response": { + "$ref": "ListCreativeStatusBreakdownByDetailResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId", + "creativeStatusId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByDetailResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.details.list\nmethod.", + "type": "string", + "location": "query" + }, + "creativeStatusId": { + "location": "path", + "format": "int32", + "description": "The ID of the creative status for which to retrieve a breakdown by detail.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).\nDetails are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87.", + "type": "integer", + "required": true + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "location": "path", + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true + }, + "filterSetId": { + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/details", + "id": "adexchangebuyer2.accounts.filterSets.filteredBids.details.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/details", + "description": "List all details associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each detail." + } + } + } + }, + "methods": { + "list": { + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.list\nmethod.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "accountId": { + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true, + "location": "path" + }, + "filterSetId": { + "location": "path", + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids", + "id": "adexchangebuyer2.accounts.filterSets.filteredBids.list", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids", + "description": "List all reasons for which bids were filtered, with the number of bids\nfiltered for each reason.", + "response": { + "$ref": "ListFilteredBidsResponse" + }, + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "httpMethod": "GET" + } + } + }, + "nonBillableWinningBids": { + "methods": { + "list": { + "description": "List all reasons for which winning bids were not billable, with the number\nof bids not billed for each reason.", + "httpMethod": "GET", + "parameterOrder": [ + "accountId", + "filterSetId" + ], + "response": { + "$ref": "ListNonBillableWinningBidsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/adexchange.buyer" + ], + "parameters": { + "pageToken": { + "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListNonBillableWinningBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "accountId": { + "format": "int64", + "description": "Account ID of the buyer.", + "type": "string", + "required": true, + "location": "path" + }, + "filterSetId": { + "location": "path", + "format": "int64", + "description": "The ID of the filter set to apply.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/nonBillableWinningBids", + "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/nonBillableWinningBids", + "id": "adexchangebuyer2.accounts.filterSets.nonBillableWinningBids.list" + } + } + } + } } - }, - "id": "NonBillableWinningBidStatusRow" + } + } + }, + "parameters": { + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" }, - "FilteredBidDetailRow": { - "description": "The number of filtered bids with the specified dimension values, among those\nfiltered due to the requested filtering reason (i.e. creative status), that\nhave the specified detail.", - "type": "object", - "properties": { - "rowDimensions": { - "description": "The values of all dimensions associated with metric values in this row.", - "$ref": "RowDimensions" - }, - "detailId": { - "format": "int32", - "description": "The ID of the detail. The associated value can be looked up in the\ndictionary file corresponding to the DetailType in the response message.", - "type": "integer" - }, - "bidCount": { - "description": "The number of bids with the specified detail.", - "$ref": "MetricValue" - } - }, - "id": "FilteredBidDetailRow" + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" }, - "AbsoluteDateRange": { - "description": "An absolute date range, specified by its start date and end date.\nThe supported range of dates begins 30 days before today and ends today.\nValidity checked upon filter set creation. If a filter set with an absolute\ndate range is run at a later date more than 30 days after start_date, it will\nfail.", - "type": "object", - "properties": { - "endDate": { - "$ref": "Date", - "description": "The end date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor after start_date." - }, - "startDate": { - "$ref": "Date", - "description": "The start date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor before end_date." - } - }, - "id": "AbsoluteDateRange" + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" }, - "AddDealAssociationRequest": { - "properties": { - "association": { - "$ref": "CreativeDealAssociation", - "description": "The association between a creative and a deal that should be added." - } - }, - "id": "AddDealAssociationRequest", - "description": "A request for associating a deal and a creative.", - "type": "object" + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] }, - "WatchCreativeRequest": { - "description": "A request for watching changes to creative Status.", - "type": "object", - "properties": { - "topic": { - "description": "The Pub/Sub topic to publish notifications to.\nThis topic must already exist and must give permission to\nad-exchange-buyside-reports@google.com to write to the topic.\nThis should be the full resource name in\n\"projects/{project_id}/topics/{topic_id}\" format.", - "type": "string" - } - }, - "id": "WatchCreativeRequest" + "alt": { + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response." }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "type": "string", + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + } + }, + "version": "v2beta1", + "baseUrl": "https://adexchangebuyer.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Accesses the latest features for managing Ad Exchange accounts, Real-Time Bidding configurations and auction metrics, and Marketplace programmatic deals.", + "servicePath": "", + "basePath": "", + "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest/reference/rest/", + "revision": "20170815", + "id": "adexchangebuyer2:v2beta1", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { "TimeInterval": { - "description": "An interval of time, with an absolute start and end.\nThis is included in the response, for several reasons:\n1) The request may have specified start or end times relative to the time the\n request was sent; the response indicates the corresponding absolute time\n interval.\n2) The request may have specified an end time past the latest time for which\n data was available (e.g. if requesting data for the today); the response\n indicates the latest time for which data was actually returned.\n3) The response data for a single request may be broken down into multiple\n time intervals, if a time series was requested.", - "type": "object", "properties": { "endTime": { "format": "google-datetime", @@ -151,68 +1502,75 @@ "type": "string" } }, - "id": "TimeInterval" + "id": "TimeInterval", + "description": "An interval of time, with an absolute start and end.\nThis is included in the response, for several reasons:\n1) The request may have specified start or end times relative to the time the\n request was sent; the response indicates the corresponding absolute time\n interval.\n2) The request may have specified an end time past the latest time for which\n data was available (e.g. if requesting data for the today); the response\n indicates the latest time for which data was actually returned.\n3) The response data for a single request may be broken down into multiple\n time intervals, if a time series was requested.", + "type": "object" }, "FilteredBidCreativeRow": { - "description": "The number of filtered bids with the specified dimension values that have the\nspecified creative.", - "type": "object", "properties": { - "bidCount": { - "$ref": "MetricValue", - "description": "The number of bids with the specified creative." - }, "creativeId": { - "type": "string", - "description": "The ID of the creative." + "description": "The ID of the creative.", + "type": "string" }, "rowDimensions": { "$ref": "RowDimensions", "description": "The values of all dimensions associated with metric values in this row." + }, + "bidCount": { + "description": "The number of bids with the specified creative.", + "$ref": "MetricValue" } }, - "id": "FilteredBidCreativeRow" + "id": "FilteredBidCreativeRow", + "description": "The number of filtered bids with the specified dimension values that have the\nspecified creative.", + "type": "object" }, "RelativeDateRange": { - "id": "RelativeDateRange", "description": "A relative date range, specified by an offset and a duration.\nThe supported range of dates begins 30 days before today and ends today.\nI.e. the limits for these values are:\noffset_days \u003e= 0\nduration_days \u003e= 1\noffset_days + duration_days \u003c= 30", "type": "object", "properties": { - "durationDays": { - "format": "int32", - "description": "The number of days in the requested date range. E.g. for a range spanning\ntoday, 1. For a range spanning the last 7 days, 7.", - "type": "integer" - }, "offsetDays": { "format": "int32", "description": "The end date of the filter set, specified as the number of days before\ntoday. E.g. for a range where the last date is today, 0.", "type": "integer" + }, + "durationDays": { + "format": "int32", + "description": "The number of days in the requested date range. E.g. for a range spanning\ntoday, 1. For a range spanning the last 7 days, 7.", + "type": "integer" + } + }, + "id": "RelativeDateRange" + }, + "ListClientsResponse": { + "id": "ListClientsResponse", + "type": "object", + "properties": { + "clients": { + "items": { + "$ref": "Client" + }, + "type": "array", + "description": "The returned list of clients." + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientsRequest.pageToken\nfield in the subsequent call to the\naccounts.clients.list method\nto retrieve the next page of results.", + "type": "string" } } }, "NativeContent": { + "description": "Native content for a creative.", "type": "object", "properties": { - "body": { - "description": "A long description of the ad.", - "type": "string" - }, - "starRating": { - "type": "number", - "format": "double", - "description": "The app rating in the app store. Must be in the range [0-5]." - }, - "videoUrl": { - "description": "The URL to fetch a native video ad.", - "type": "string" - }, - "logo": { - "description": "A smaller image, for the advertiser's logo.", - "$ref": "Image" - }, "clickLinkUrl": { "description": "The URL that the browser/SDK will load when the user clicks the ad.", "type": "string" }, + "logo": { + "$ref": "Image", + "description": "A smaller image, for the advertiser's logo." + }, "priceDisplayText": { "description": "The price of the promoted app including currency info.", "type": "string" @@ -244,30 +1602,24 @@ "callToAction": { "description": "A label for the button that the user is supposed to click.", "type": "string" + }, + "body": { + "type": "string", + "description": "A long description of the ad." + }, + "starRating": { + "format": "double", + "description": "The app rating in the app store. Must be in the range [0-5].", + "type": "number" + }, + "videoUrl": { + "description": "The URL to fetch a native video ad.", + "type": "string" } }, - "id": "NativeContent", - "description": "Native content for a creative." - }, - "ListClientsResponse": { - "id": "ListClientsResponse", - "type": "object", - "properties": { - "nextPageToken": { - "type": "string", - "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientsRequest.pageToken\nfield in the subsequent call to the\naccounts.clients.list method\nto retrieve the next page of results." - }, - "clients": { - "description": "The returned list of clients.", - "items": { - "$ref": "Client" - }, - "type": "array" - } - } + "id": "NativeContent" }, "ListBidResponsesWithoutBidsResponse": { - "type": "object", "properties": { "nextPageToken": { "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponsesWithoutBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidResponsesWithoutBids.list\nmethod to retrieve the next page of results.", @@ -282,30 +1634,13 @@ } }, "id": "ListBidResponsesWithoutBidsResponse", - "description": "Response message for listing all reasons that bid responses were considered\nto have no applicable bids." + "description": "Response message for listing all reasons that bid responses were considered\nto have no applicable bids.", + "type": "object" }, "ServingContext": { + "description": "The serving context for this restriction.", + "type": "object", "properties": { - "appType": { - "description": "Matches impressions for a particular app type.", - "$ref": "AppContext" - }, - "securityType": { - "description": "Matches impressions for a particular security type.", - "$ref": "SecurityContext" - }, - "platform": { - "description": "Matches impressions coming from a particular platform.", - "$ref": "PlatformContext" - }, - "location": { - "description": "Matches impressions coming from users *or* publishers in a specific\nlocation.", - "$ref": "LocationContext" - }, - "auctionType": { - "description": "Matches impressions for a particular auction type.", - "$ref": "AuctionContext" - }, "all": { "enumDescriptions": [ "A simple context." @@ -315,21 +1650,35 @@ ], "description": "Matches all contexts.", "type": "string" + }, + "appType": { + "description": "Matches impressions for a particular app type.", + "$ref": "AppContext" + }, + "securityType": { + "$ref": "SecurityContext", + "description": "Matches impressions for a particular security type." + }, + "platform": { + "$ref": "PlatformContext", + "description": "Matches impressions coming from a particular platform." + }, + "location": { + "$ref": "LocationContext", + "description": "Matches impressions coming from users *or* publishers in a specific\nlocation." + }, + "auctionType": { + "$ref": "AuctionContext", + "description": "Matches impressions for a particular auction type." } }, - "id": "ServingContext", - "description": "The serving context for this restriction.", - "type": "object" + "id": "ServingContext" }, "Image": { + "id": "Image", "description": "An image resource. You may provide a larger image than was requested,\nso long as the aspect ratio is preserved.", "type": "object", "properties": { - "width": { - "format": "int32", - "description": "Image width in pixels.", - "type": "integer" - }, "url": { "description": "The URL of the image.", "type": "string" @@ -338,35 +1687,42 @@ "format": "int32", "description": "Image height in pixels.", "type": "integer" + }, + "width": { + "format": "int32", + "description": "Image width in pixels.", + "type": "integer" } - }, - "id": "Image" + } }, "ListFilterSetsResponse": { "description": "Response message for listing filter sets.", "type": "object", "properties": { "filterSets": { + "description": "The filter sets belonging to the buyer.", "items": { "$ref": "FilterSet" }, - "type": "array", - "description": "The filter sets belonging to the buyer." + "type": "array" }, "nextPageToken": { - "type": "string", - "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilterSetsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.list\nmethod to retrieve the next page of results." + "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilterSetsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.list\nmethod to retrieve the next page of results.", + "type": "string" } }, "id": "ListFilterSetsResponse" }, "BidResponseWithoutBidsStatusRow": { + "type": "object", "properties": { - "impressionCount": { - "$ref": "MetricValue", - "description": "The number of impressions for which there was a bid response with the\nspecified status." - }, "status": { + "enumDescriptions": [ + "A placeholder for an undefined status.\nThis value will never be returned in responses.", + "The response had no bids.", + "The response had no bids for the specified account, though it may have\nincluded bids on behalf of other accounts.", + "The response had no bids for the specified deal, though it may have\nincluded bids on other deals on behalf of the account to which the deal\nbelongs." + ], "enum": [ "STATUS_UNSPECIFIED", "RESPONSES_WITHOUT_BIDS", @@ -374,43 +1730,40 @@ "RESPONSES_WITHOUT_BIDS_FOR_DEAL" ], "description": "The status specifying why the bid responses were considered to have no\napplicable bids.", - "type": "string", - "enumDescriptions": [ - "A placeholder for an undefined status.\nThis value will never be returned in responses.", - "The response had no bids.", - "The response had no bids for the specified account, though it may have\nincluded bids on behalf of other accounts.", - "The response had no bids for the specified deal, though it may have\nincluded bids on other deals on behalf of the account to which the deal\nbelongs." - ] + "type": "string" }, "rowDimensions": { - "description": "The values of all dimensions associated with metric values in this row.", - "$ref": "RowDimensions" + "$ref": "RowDimensions", + "description": "The values of all dimensions associated with metric values in this row." + }, + "impressionCount": { + "$ref": "MetricValue", + "description": "The number of impressions for which there was a bid response with the\nspecified status." } }, "id": "BidResponseWithoutBidsStatusRow", - "description": "The number of impressions with the specified dimension values that were\nconsidered to have no applicable bids, as described by the specified status.", - "type": "object" + "description": "The number of impressions with the specified dimension values that were\nconsidered to have no applicable bids, as described by the specified status." }, "ClientUserInvitation": { + "id": "ClientUserInvitation", "description": "An invitation for a new client user to get access to the Ad Exchange\nBuyer UI.\nAll fields are required unless otherwise specified.", "type": "object", "properties": { - "clientAccountId": { - "format": "int64", - "description": "Numerical account ID of the client buyer\nthat the invited user is associated with.\nThe value of this field is ignored in create operations.", - "type": "string" - }, "invitationId": { "format": "int64", "description": "The unique numerical ID of the invitation that is sent to the user.\nThe value of this field is ignored in create operations.", "type": "string" }, "email": { - "type": "string", - "description": "The email address to which the invitation is sent. Email\naddresses should be unique among all client users under each sponsor\nbuyer." + "description": "The email address to which the invitation is sent. Email\naddresses should be unique among all client users under each sponsor\nbuyer.", + "type": "string" + }, + "clientAccountId": { + "format": "int64", + "description": "Numerical account ID of the client buyer\nthat the invited user is associated with.\nThe value of this field is ignored in create operations.", + "type": "string" } - }, - "id": "ClientUserInvitation" + } }, "ListClientUserInvitationsResponse": { "type": "object", @@ -433,8 +1786,8 @@ "type": "object", "properties": { "nextPageToken": { - "type": "string", - "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUsersRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results." + "description": "A token to retrieve the next page of results.\nPass this value in the\nListClientUsersRequest.pageToken\nfield in the subsequent call to the\nclients.invitations.list\nmethod to retrieve the next\npage of results.", + "type": "string" }, "users": { "description": "The returned list of client users.", @@ -447,31 +1800,10 @@ "id": "ListClientUsersResponse" }, "ListCreativeStatusBreakdownByDetailResponse": { - "id": "ListCreativeStatusBreakdownByDetailResponse", "description": "Response message for listing all details associated with a given filtered bid\nreason.", "type": "object", "properties": { - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByDetailRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.details.list\nmethod to retrieve the next page of results.", - "type": "string" - }, - "filteredBidDetailRows": { - "description": "List of rows, with counts of bids with a given creative status aggregated\nby detail.", - "items": { - "$ref": "FilteredBidDetailRow" - }, - "type": "array" - }, "detailType": { - "type": "string", - "enumDescriptions": [ - "A placeholder for an undefined status.\nThis value will never be returned in responses.", - "Indicates that the detail ID refers to a creative attribute; see\n[publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).", - "Indicates that the detail ID refers to a vendor; see\n[vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).", - "Indicates that the detail ID refers to a sensitive category; see\n[ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).", - "Indicates that the detail ID refers to a product category; see\n[ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).", - "Indicates that the detail ID refers to a disapproval reason; see\nDisapprovalReason enum in [snippet-status-report-proto](https://developers.google.com/ad-exchange/rtb/downloads/snippet-status-report-proto)." - ], "enum": [ "DETAIL_TYPE_UNSPECIFIED", "CREATIVE_ATTRIBUTE", @@ -480,9 +1812,30 @@ "PRODUCT_CATEGORY", "DISAPPROVAL_REASON" ], - "description": "The type of detail that the detail IDs represent." + "description": "The type of detail that the detail IDs represent.", + "type": "string", + "enumDescriptions": [ + "A placeholder for an undefined status.\nThis value will never be returned in responses.", + "Indicates that the detail ID refers to a creative attribute; see\n[publisher-excludable-creative-attributes](https://developers.google.com/ad-exchange/rtb/downloads/publisher-excludable-creative-attributes).", + "Indicates that the detail ID refers to a vendor; see\n[vendors](https://developers.google.com/ad-exchange/rtb/downloads/vendors).", + "Indicates that the detail ID refers to a sensitive category; see\n[ad-sensitive-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-sensitive-categories).", + "Indicates that the detail ID refers to a product category; see\n[ad-product-categories](https://developers.google.com/ad-exchange/rtb/downloads/ad-product-categories).", + "Indicates that the detail ID refers to a disapproval reason; see\nDisapprovalReason enum in [snippet-status-report-proto](https://developers.google.com/ad-exchange/rtb/downloads/snippet-status-report-proto)." + ] + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByDetailRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.details.list\nmethod to retrieve the next page of results.", + "type": "string" + }, + "filteredBidDetailRows": { + "items": { + "$ref": "FilteredBidDetailRow" + }, + "type": "array", + "description": "List of rows, with counts of bids with a given creative status aggregated\nby detail." } - } + }, + "id": "ListCreativeStatusBreakdownByDetailResponse" }, "LocationContext": { "description": "@OutputOnly The Geo criteria the restriction applies to.", @@ -500,10 +1853,14 @@ "id": "LocationContext" }, "PlatformContext": { - "description": "@OutputOnly The type of platform the restriction applies to.", "type": "object", "properties": { "platforms": { + "enumDescriptions": [ + "Desktop platform.", + "Android platform.", + "iOS platform." + ], "description": "The platforms this restriction applies to.", "items": { "enum": [ @@ -513,29 +1870,25 @@ ], "type": "string" }, - "type": "array", - "enumDescriptions": [ - "Desktop platform.", - "Android platform.", - "iOS platform." - ] + "type": "array" } }, - "id": "PlatformContext" + "id": "PlatformContext", + "description": "@OutputOnly The type of platform the restriction applies to." }, "MetricValue": { "description": "A metric value, with an expected value and a variance; represents a count\nthat may be either exact or estimated (i.e. when sampled).", "type": "object", "properties": { - "variance": { - "type": "string", - "format": "int64", - "description": "The variance (i.e. square of the standard deviation) of the metric value.\nIf value is exact, variance is 0.\nCan be used to calculate margin of error as a percentage of value, using\nthe following formula, where Z is the standard constant that depends on the\ndesired size of the confidence interval (e.g. for 90% confidence interval,\nuse Z = 1.645):\n\n marginOfError = 100 * Z * sqrt(variance) / value" - }, "value": { "format": "int64", "description": "The expected value of the metric.", "type": "string" + }, + "variance": { + "format": "int64", + "description": "The variance (i.e. square of the standard deviation) of the metric value.\nIf value is exact, variance is 0.\nCan be used to calculate margin of error as a percentage of value, using\nthe following formula, where Z is the standard constant that depends on the\ndesired size of the confidence interval (e.g. for 90% confidence interval,\nuse Z = 1.645):\n\n marginOfError = 100 * Z * sqrt(variance) / value", + "type": "string" } }, "id": "MetricValue" @@ -545,6 +1898,8 @@ "type": "object", "properties": { "status": { + "description": "The status of the client user.", + "type": "string", "enumDescriptions": [ "A placeholder for an undefined user status.", "A user who was already created but hasn't accepted the invitation yet.", @@ -556,13 +1911,11 @@ "PENDING", "ACTIVE", "DISABLED" - ], - "description": "The status of the client user.", - "type": "string" + ] }, "email": { - "description": "User's email address. The value of this field\nis ignored in an update operation.", - "type": "string" + "type": "string", + "description": "User's email address. The value of this field\nis ignored in an update operation." }, "userId": { "format": "int64", @@ -578,149 +1931,35 @@ "id": "ClientUser" }, "CreativeDealAssociation": { - "description": "The association between a creative and a deal.", - "type": "object", "properties": { - "dealsId": { - "description": "The externalDealId for the deal associated with the creative.", - "type": "string" - }, "accountId": { "description": "The account the creative belongs to.", "type": "string" }, "creativeId": { - "description": "The ID of the creative associated with the deal.", - "type": "string" - } - }, - "id": "CreativeDealAssociation" - }, - "FilteringStats": { - "description": "@OutputOnly Filtering reasons for this creative during a period of a single\nday (from midnight to midnight Pacific).", - "type": "object", - "properties": { - "reasons": { - "description": "The set of filtering reasons for this date.", - "items": { - "$ref": "Reason" - }, - "type": "array" + "type": "string", + "description": "The ID of the creative associated with the deal." }, - "date": { - "$ref": "Date", - "description": "The day during which the data was collected.\nThe data is collected from 00:00:00 to 23:59:59 PT.\nDuring switches from PST to PDT and back, the day may\ncontain 23 or 25 hours of data instead of the usual 24." + "dealsId": { + "type": "string", + "description": "The externalDealId for the deal associated with the creative." } }, - "id": "FilteringStats" + "id": "CreativeDealAssociation", + "description": "The association between a creative and a deal.", + "type": "object" }, "Creative": { + "description": "A creative and its classification data.", + "type": "object", "properties": { - "advertiserName": { - "type": "string", - "description": "The name of the company being advertised in the creative." - }, - "detectedDomains": { - "description": "@OutputOnly\nThe detected domains for this creative.", - "items": { - "type": "string" - }, - "type": "array" - }, - "detectedAdvertiserIds": { - "description": "@OutputOnly Detected advertiser IDs, if any.", - "items": { - "format": "int64", - "type": "string" - }, - "type": "array" - }, - "filteringStats": { - "$ref": "FilteringStats", - "description": "@OutputOnly The filtering stats for this creative." - }, - "attributes": { - "description": "All attributes for the ads that may be shown from this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.", - "items": { - "type": "string", - "enum": [ - "ATTRIBUTE_UNSPECIFIED", - "IS_TAGGED", - "IS_COOKIE_TARGETED", - "IS_USER_INTEREST_TARGETED", - "EXPANDING_DIRECTION_NONE", - "EXPANDING_DIRECTION_UP", - "EXPANDING_DIRECTION_DOWN", - "EXPANDING_DIRECTION_LEFT", - "EXPANDING_DIRECTION_RIGHT", - "EXPANDING_DIRECTION_UP_LEFT", - "EXPANDING_DIRECTION_UP_RIGHT", - "EXPANDING_DIRECTION_DOWN_LEFT", - "EXPANDING_DIRECTION_DOWN_RIGHT", - "EXPANDING_DIRECTION_UP_OR_DOWN", - "EXPANDING_DIRECTION_LEFT_OR_RIGHT", - "EXPANDING_DIRECTION_ANY_DIAGONAL", - "EXPANDING_ACTION_ROLLOVER_TO_EXPAND", - "INSTREAM_VAST_VIDEO_TYPE_VPAID_FLASH", - "RICH_MEDIA_CAPABILITY_TYPE_MRAID", - "RICH_MEDIA_CAPABILITY_TYPE_SSL", - "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL", - "NATIVE_ELIGIBILITY_ELIGIBLE", - "NATIVE_ELIGIBILITY_NOT_ELIGIBLE", - "RENDERING_SIZELESS_ADX" - ] - }, - "type": "array", - "enumDescriptions": [ - "Do not use. This is a placeholder value only.", - "The creative is tagged.", - "The creative is cookie targeted.", - "The creative is user interest targeted.", - "The creative does not expand.", - "The creative expands up.", - "The creative expands down.", - "The creative expands left.", - "The creative expands right.", - "The creative expands up and left.", - "The creative expands up and right.", - "The creative expands down and left.", - "The creative expands down and right.", - "The creative expands up or down.", - "The creative expands left or right.", - "The creative expands on any diagonal.", - "The creative expands when rolled over.", - "The instream vast video type is vpaid flash.", - "The creative is MRAID", - "The creative is SSL.", - "The creative is an interstitial.", - "The creative is eligible for native.", - "The creative is not eligible for native.", - "The creative can dynamically resize to fill a variety of slot sizes." - ] - }, - "apiUpdateTime": { - "format": "google-datetime", - "description": "@OutputOnly The last update timestamp of the creative via API.", - "type": "string" - }, - "detectedLanguages": { - "description": "@OutputOnly\nThe detected languages for this creative. The order is arbitrary. The codes\nare 2 or 5 characters and are documented at\nhttps://developers.google.com/adwords/api/docs/appendix/languagecodes.", - "items": { - "type": "string" - }, - "type": "array" - }, - "creativeId": { - "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.", - "type": "string" - }, "accountId": { - "type": "string", - "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod." + "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.", + "type": "string" }, "native": { - "$ref": "NativeContent", - "description": "A native creative." + "description": "A native creative.", + "$ref": "NativeContent" }, "servingRestrictions": { "description": "@OutputOnly The granular status of this ad in specific contexts.\nA context here relates to where something ultimately serves (for example,\na physical location, a platform, an HTTPS vs HTTP request, or the type\nof auction).", @@ -764,11 +2003,11 @@ ], "description": "All restricted categories for the ads that may be shown from this creative.", "items": { + "type": "string", "enum": [ "NO_RESTRICTED_CATEGORIES", "ALCOHOL" - ], - "type": "string" + ] }, "type": "array" }, @@ -780,9 +2019,9 @@ "type": "array" }, "version": { + "type": "integer", "format": "int32", - "description": "@OutputOnly The version of this creative.", - "type": "integer" + "description": "@OutputOnly The version of this creative." }, "vendorIds": { "description": "All vendor IDs for the ads that may be shown from this creative.\nSee https://storage.googleapis.com/adx-rtb-dictionaries/vendors.txt\nfor possible values.", @@ -793,11 +2032,11 @@ "type": "array" }, "impressionTrackingUrls": { + "description": "The set of URLs to be called to record an impression.", "items": { "type": "string" }, - "type": "array", - "description": "The set of URLs to be called to record an impression." + "type": "array" }, "html": { "description": "An HTML creative.", @@ -806,8 +2045,8 @@ "detectedProductCategories": { "description": "@OutputOnly Detected product categories, if any.\nSee the ad-product-categories.txt file in the technical documentation\nfor a list of IDs.", "items": { - "type": "integer", - "format": "int32" + "format": "int32", + "type": "integer" }, "type": "array" }, @@ -830,13 +2069,6 @@ "type": "string" }, "openAuctionStatus": { - "enum": [ - "STATUS_UNSPECIFIED", - "NOT_CHECKED", - "CONDITIONALLY_APPROVED", - "APPROVED", - "DISAPPROVED" - ], "description": "@OutputOnly The top-level open auction status of this creative.\nIf disapproved, an entry for 'auctionType = OPEN_AUCTION' (or 'ALL') in\nserving_restrictions will also exist. Note\nthat this may be nuanced with other contextual restrictions, in which case,\nit may be preferable to read from serving_restrictions directly.\nCan be used to filter the response of the\ncreatives.list\nmethod.", "type": "string", "enumDescriptions": [ @@ -845,45 +2077,170 @@ "The creative has been conditionally approved.\nSee serving_restrictions for details.", "The creative has been approved.", "The creative has been disapproved." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "NOT_CHECKED", + "CONDITIONALLY_APPROVED", + "APPROVED", + "DISAPPROVED" ] + }, + "advertiserName": { + "description": "The name of the company being advertised in the creative.", + "type": "string" + }, + "detectedDomains": { + "description": "@OutputOnly\nThe detected domains for this creative.", + "items": { + "type": "string" + }, + "type": "array" + }, + "detectedAdvertiserIds": { + "description": "@OutputOnly Detected advertiser IDs, if any.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "filteringStats": { + "$ref": "FilteringStats", + "description": "@OutputOnly The filtering stats for this creative." + }, + "attributes": { + "description": "All attributes for the ads that may be shown from this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.", + "items": { + "enum": [ + "ATTRIBUTE_UNSPECIFIED", + "IS_TAGGED", + "IS_COOKIE_TARGETED", + "IS_USER_INTEREST_TARGETED", + "EXPANDING_DIRECTION_NONE", + "EXPANDING_DIRECTION_UP", + "EXPANDING_DIRECTION_DOWN", + "EXPANDING_DIRECTION_LEFT", + "EXPANDING_DIRECTION_RIGHT", + "EXPANDING_DIRECTION_UP_LEFT", + "EXPANDING_DIRECTION_UP_RIGHT", + "EXPANDING_DIRECTION_DOWN_LEFT", + "EXPANDING_DIRECTION_DOWN_RIGHT", + "EXPANDING_DIRECTION_UP_OR_DOWN", + "EXPANDING_DIRECTION_LEFT_OR_RIGHT", + "EXPANDING_DIRECTION_ANY_DIAGONAL", + "EXPANDING_ACTION_ROLLOVER_TO_EXPAND", + "INSTREAM_VAST_VIDEO_TYPE_VPAID_FLASH", + "RICH_MEDIA_CAPABILITY_TYPE_MRAID", + "RICH_MEDIA_CAPABILITY_TYPE_SSL", + "RICH_MEDIA_CAPABILITY_TYPE_INTERSTITIAL", + "NATIVE_ELIGIBILITY_ELIGIBLE", + "NATIVE_ELIGIBILITY_NOT_ELIGIBLE", + "RENDERING_SIZELESS_ADX" + ], + "type": "string" + }, + "type": "array", + "enumDescriptions": [ + "Do not use. This is a placeholder value only.", + "The creative is tagged.", + "The creative is cookie targeted.", + "The creative is user interest targeted.", + "The creative does not expand.", + "The creative expands up.", + "The creative expands down.", + "The creative expands left.", + "The creative expands right.", + "The creative expands up and left.", + "The creative expands up and right.", + "The creative expands down and left.", + "The creative expands down and right.", + "The creative expands up or down.", + "The creative expands left or right.", + "The creative expands on any diagonal.", + "The creative expands when rolled over.", + "The instream vast video type is vpaid flash.", + "The creative is MRAID", + "The creative is SSL.", + "The creative is an interstitial.", + "The creative is eligible for native.", + "The creative is not eligible for native.", + "The creative can dynamically resize to fill a variety of slot sizes." + ] + }, + "apiUpdateTime": { + "format": "google-datetime", + "description": "@OutputOnly The last update timestamp of the creative via API.", + "type": "string" + }, + "detectedLanguages": { + "description": "@OutputOnly\nThe detected languages for this creative. The order is arbitrary. The codes\nare 2 or 5 characters and are documented at\nhttps://developers.google.com/adwords/api/docs/appendix/languagecodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "creativeId": { + "type": "string", + "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod." } }, - "id": "Creative", - "description": "A creative and its classification data.", - "type": "object" + "id": "Creative" + }, + "FilteringStats": { + "type": "object", + "properties": { + "reasons": { + "description": "The set of filtering reasons for this date.", + "items": { + "$ref": "Reason" + }, + "type": "array" + }, + "date": { + "description": "The day during which the data was collected.\nThe data is collected from 00:00:00 to 23:59:59 PT.\nDuring switches from PST to PDT and back, the day may\ncontain 23 or 25 hours of data instead of the usual 24.", + "$ref": "Date" + } + }, + "id": "FilteringStats", + "description": "@OutputOnly Filtering reasons for this creative during a period of a single\nday (from midnight to midnight Pacific)." }, "RemoveDealAssociationRequest": { "description": "A request for removing the association between a deal and a creative.", "type": "object", "properties": { "association": { - "description": "The association between a creative and a deal that should be removed.", - "$ref": "CreativeDealAssociation" + "$ref": "CreativeDealAssociation", + "description": "The association between a creative and a deal that should be removed." } }, "id": "RemoveDealAssociationRequest" }, - "ListCreativeStatusBreakdownByCreativeResponse": { + "Client": { + "description": "A client resource represents a client buyer—an agency,\na brand, or an advertiser customer of the sponsor buyer.\nUsers associated with the client buyer have restricted access to\nthe Ad Exchange Marketplace and certain other sections\nof the Ad Exchange Buyer UI based on the role\ngranted to the client buyer.\nAll fields are required unless otherwise specified.", "type": "object", "properties": { - "filteredBidCreativeRows": { - "description": "List of rows, with counts of bids with a given creative status aggregated\nby creative.", - "items": { - "$ref": "FilteredBidCreativeRow" - }, - "type": "array" + "status": { + "type": "string", + "enumDescriptions": [ + "A placeholder for an undefined client status.", + "A client that is currently disabled.", + "A client that is currently active." + ], + "enum": [ + "CLIENT_STATUS_UNSPECIFIED", + "DISABLED", + "ACTIVE" + ], + "description": "The status of the client buyer." }, - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByCreativeRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod to retrieve the next page of results.", - "type": "string" - } - }, - "id": "ListCreativeStatusBreakdownByCreativeResponse", - "description": "Response message for listing all creatives associated with a given filtered\nbid reason." - }, - "Client": { - "properties": { "entityType": { + "enumDescriptions": [ + "A placeholder for an undefined client entity type. Should not be used.", + "An advertiser.", + "A brand.", + "An advertising agency." + ], "enum": [ "ENTITY_TYPE_UNSPECIFIED", "ADVERTISER", @@ -891,17 +2248,11 @@ "AGENCY" ], "description": "The type of the client entity: `ADVERTISER`, `BRAND`, or `AGENCY`.", - "type": "string", - "enumDescriptions": [ - "A placeholder for an undefined client entity type. Should not be used.", - "An advertiser.", - "A brand.", - "An advertising agency." - ] + "type": "string" }, "clientName": { - "description": "Name used to represent this client to publishers.\nYou may have multiple clients that map to the same entity,\nbut for each client the combination of `clientName` and entity\nmust be unique.\nYou can specify this field as empty.", - "type": "string" + "type": "string", + "description": "Name used to represent this client to publishers.\nYou may have multiple clients that map to the same entity,\nbut for each client the combination of `clientName` and entity\nmust be unique.\nYou can specify this field as empty." }, "role": { "enumDescriptions": [ @@ -924,9 +2275,9 @@ "type": "boolean" }, "entityId": { + "type": "string", "format": "int64", - "description": "Numerical identifier of the client entity.\nThe entity can be an advertiser, a brand, or an agency.\nThis identifier is unique among all the entities with the same type.\n\nA list of all known advertisers with their identifiers is available in the\n[advertisers.txt](https://storage.googleapis.com/adx-rtb-dictionaries/advertisers.txt)\nfile.\n\nA list of all known brands with their identifiers is available in the\n[brands.txt](https://storage.googleapis.com/adx-rtb-dictionaries/brands.txt)\nfile.\n\nA list of all known agencies with their identifiers is available in the\n[agencies.txt](https://storage.googleapis.com/adx-rtb-dictionaries/agencies.txt)\nfile.", - "type": "string" + "description": "Numerical identifier of the client entity.\nThe entity can be an advertiser, a brand, or an agency.\nThis identifier is unique among all the entities with the same type.\n\nA list of all known advertisers with their identifiers is available in the\n[advertisers.txt](https://storage.googleapis.com/adx-rtb-dictionaries/advertisers.txt)\nfile.\n\nA list of all known brands with their identifiers is available in the\n[brands.txt](https://storage.googleapis.com/adx-rtb-dictionaries/brands.txt)\nfile.\n\nA list of all known agencies with their identifiers is available in the\n[agencies.txt](https://storage.googleapis.com/adx-rtb-dictionaries/agencies.txt)\nfile." }, "clientAccountId": { "format": "int64", @@ -934,32 +2285,56 @@ "type": "string" }, "entityName": { - "type": "string", - "description": "The name of the entity. This field is automatically fetched based on\nthe type and ID.\nThe value of this field is ignored in create and update operations." - }, - "status": { - "type": "string", - "enumDescriptions": [ - "A placeholder for an undefined client status.", - "A client that is currently disabled.", - "A client that is currently active." - ], - "enum": [ - "CLIENT_STATUS_UNSPECIFIED", - "DISABLED", - "ACTIVE" - ], - "description": "The status of the client buyer." + "description": "The name of the entity. This field is automatically fetched based on\nthe type and ID.\nThe value of this field is ignored in create and update operations.", + "type": "string" } }, - "id": "Client", - "description": "A client resource represents a client buyer—an agency,\na brand, or an advertiser customer of the sponsor buyer.\nUsers associated with the client buyer have restricted access to\nthe Ad Exchange Marketplace and certain other sections\nof the Ad Exchange Buyer UI based on the role\ngranted to the client buyer.\nAll fields are required unless otherwise specified.", - "type": "object" + "id": "Client" }, - "Correction": { + "ListCreativeStatusBreakdownByCreativeResponse": { "type": "object", "properties": { + "filteredBidCreativeRows": { + "items": { + "$ref": "FilteredBidCreativeRow" + }, + "type": "array", + "description": "List of rows, with counts of bids with a given creative status aggregated\nby creative." + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativeStatusBreakdownByCreativeRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod to retrieve the next page of results.", + "type": "string" + } + }, + "id": "ListCreativeStatusBreakdownByCreativeResponse", + "description": "Response message for listing all creatives associated with a given filtered\nbid reason." + }, + "Correction": { + "description": "@OutputOnly Shows any corrections that were applied to this creative.", + "type": "object", + "properties": { + "details": { + "description": "Additional details about what was corrected.", + "items": { + "type": "string" + }, + "type": "array" + }, "type": { + "enum": [ + "CORRECTION_TYPE_UNSPECIFIED", + "VENDOR_IDS_ADDED", + "SSL_ATTRIBUTE_REMOVED", + "FLASH_FREE_ATTRIBUTE_REMOVED", + "FLASH_FREE_ATTRIBUTE_ADDED", + "REQUIRED_ATTRIBUTE_ADDED", + "REQUIRED_VENDOR_ADDED", + "SSL_ATTRIBUTE_ADDED", + "IN_BANNER_VIDEO_ATTRIBUTE_ADDED", + "MRAID_ATTRIBUTE_ADDED", + "FLASH_ATTRIBUTE_REMOVED", + "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" + ], "description": "The type of correction that was applied to the creative.", "type": "string", "enumDescriptions": [ @@ -975,76 +2350,52 @@ "The ad makes calls to the MRAID API so the MRAID attribute was added.", "The ad unnecessarily declared the Flash attribute, so the Flash attribute\nwas removed.", "The ad contains video content." - ], - "enum": [ - "CORRECTION_TYPE_UNSPECIFIED", - "VENDOR_IDS_ADDED", - "SSL_ATTRIBUTE_REMOVED", - "FLASH_FREE_ATTRIBUTE_REMOVED", - "FLASH_FREE_ATTRIBUTE_ADDED", - "REQUIRED_ATTRIBUTE_ADDED", - "REQUIRED_VENDOR_ADDED", - "SSL_ATTRIBUTE_ADDED", - "IN_BANNER_VIDEO_ATTRIBUTE_ADDED", - "MRAID_ATTRIBUTE_ADDED", - "FLASH_ATTRIBUTE_REMOVED", - "VIDEO_IN_SNIPPET_ATTRIBUTE_ADDED" ] }, "contexts": { - "description": "The contexts for the correction.", "items": { "$ref": "ServingContext" }, - "type": "array" - }, - "details": { - "description": "Additional details about what was corrected.", - "items": { - "type": "string" - }, - "type": "array" + "type": "array", + "description": "The contexts for the correction." } }, - "id": "Correction", - "description": "@OutputOnly Shows any corrections that were applied to this creative." + "id": "Correction" }, "FilterSet": { - "description": "A set of filters that is applied to a request for data.\nWithin a filter set, an AND operation is performed across the filters\nrepresented by each field. An OR operation is performed across the filters\nrepresented by the multiple values of a repeated field. E.g.\n\"format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR\nseller_network_id=56)\"", - "type": "object", "properties": { "creativeId": { "description": "The ID of the creative on which to filter; optional.", "type": "string" }, + "relativeDateRange": { + "$ref": "RelativeDateRange", + "description": "A relative date range, defined by an offset from today and a duration.\nInterpreted relative to Pacific time zone." + }, "platforms": { + "items": { + "enum": [ + "PLATFORM_UNSPECIFIED", + "DESKTOP", + "TABLET", + "MOBILE" + ], + "type": "string" + }, + "type": "array", "enumDescriptions": [ "A placeholder for an undefined platform; indicates that no platform\nfilter will be applied.", "The ad impression appears on a desktop.", "The ad impression appears on a tablet.", "The ad impression appears on a mobile device." ], - "description": "The list of platforms on which to filter; may be empty. The filters\nrepresented by multiple platforms are ORed together (i.e. if non-empty,\nresults must match any one of the platforms).", - "items": { - "type": "string", - "enum": [ - "PLATFORM_UNSPECIFIED", - "DESKTOP", - "TABLET", - "MOBILE" - ] - }, - "type": "array" - }, - "relativeDateRange": { - "$ref": "RelativeDateRange", - "description": "A relative date range, defined by an offset from today and a duration.\nInterpreted relative to Pacific time zone." + "description": "The list of platforms on which to filter; may be empty. The filters\nrepresented by multiple platforms are ORed together (i.e. if non-empty,\nresults must match any one of the platforms)." }, "sellerNetworkIds": { "description": "The list of IDs of the seller (publisher) networks on which to filter;\nmay be empty. The filters represented by multiple seller network IDs are\nORed together (i.e. if non-empty, results must match any one of the\npublisher networks).\nSee [seller-network-ids](https://developers.google.com/ad-exchange/rtb/downloads/seller-network-ids)\nfile for the set of existing seller network IDs.", "items": { - "type": "integer", - "format": "int32" + "format": "int32", + "type": "integer" }, "type": "array" }, @@ -1053,16 +2404,18 @@ "description": "The account ID of the buyer who owns this filter set.\nThe value of this field is ignored in create operations.", "type": "string" }, - "absoluteDateRange": { - "description": "An absolute date range, defined by a start date and an end date.\nInterpreted relative to Pacific time zone.", - "$ref": "AbsoluteDateRange" - }, "buyerAccountId": { - "type": "string", "format": "int64", - "description": "The ID of the buyer account on which to filter; optional." + "description": "The ID of the buyer account on which to filter; optional.", + "type": "string" + }, + "absoluteDateRange": { + "$ref": "AbsoluteDateRange", + "description": "An absolute date range, defined by a start date and an end date.\nInterpreted relative to Pacific time zone." }, "environment": { + "description": "The environment on which to filter; optional.", + "type": "string", "enumDescriptions": [ "A placeholder for an undefined environment; indicates that no environment\nfilter will be applied.", "The ad impression appears on the web.", @@ -1072,16 +2425,15 @@ "ENVIRONMENT_UNSPECIFIED", "WEB", "APP" - ], - "description": "The environment on which to filter; optional.", - "type": "string" + ] }, "dealId": { + "type": "string", "format": "int64", - "description": "The ID of the deal on which to filter; optional.", - "type": "string" + "description": "The ID of the deal on which to filter; optional." }, "format": { + "type": "string", "enumDescriptions": [ "A placeholder for an undefined format; indicates that no format filter\nwill be applied.", "The ad impression is display format (i.e. an image).", @@ -1092,22 +2444,21 @@ "DISPLAY", "VIDEO" ], - "description": "The format on which to filter; optional.", - "type": "string" + "description": "The format on which to filter; optional." }, "timeSeriesGranularity": { - "enumDescriptions": [ - "A placeholder for an unspecified interval; no time series is applied.\nAll rows in response will contain data for the entire requested time range.", - "Indicates that data will be broken down by the hour.", - "Indicates that data will be broken down by the day." - ], "enum": [ "TIME_SERIES_GRANULARITY_UNSPECIFIED", "HOURLY", "DAILY" ], "description": "The granularity of time intervals if a time series breakdown is desired;\noptional.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "A placeholder for an unspecified interval; no time series is applied.\nAll rows in response will contain data for the entire requested time range.", + "Indicates that data will be broken down by the hour.", + "Indicates that data will be broken down by the day." + ] }, "filterSetId": { "format": "int64", @@ -1115,52 +2466,53 @@ "type": "string" }, "realtimeTimeRange": { - "description": "An open-ended realtime time range, defined by the aggregation start\ntimestamp.", - "$ref": "RealtimeTimeRange" + "$ref": "RealtimeTimeRange", + "description": "An open-ended realtime time range, defined by the aggregation start\ntimestamp." } }, - "id": "FilterSet" + "id": "FilterSet", + "description": "A set of filters that is applied to a request for data.\nWithin a filter set, an AND operation is performed across the filters\nrepresented by each field. An OR operation is performed across the filters\nrepresented by the multiple values of a repeated field. E.g.\n\"format=VIDEO AND deal_id=12 AND (seller_network_id=34 OR\nseller_network_id=56)\"", + "type": "object" }, - "ListDealAssociationsResponse": { + "CalloutStatusRow": { + "description": "The number of impressions with the specified dimension values where the\ncorresponding bid request or bid response was not successful, as described by\nthe specified callout status.", "type": "object", "properties": { + "rowDimensions": { + "$ref": "RowDimensions", + "description": "The values of all dimensions associated with metric values in this row." + }, + "calloutStatusId": { + "format": "int32", + "description": "The ID of the callout status.\nSee [callout-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/callout-status-codes).", + "type": "integer" + }, + "impressionCount": { + "description": "The number of impressions for which there was a bid request or bid response\nwith the specified callout status.", + "$ref": "MetricValue" + } + }, + "id": "CalloutStatusRow" + }, + "ListDealAssociationsResponse": { + "properties": { + "nextPageToken": { + "type": "string", + "description": "A token to retrieve the next page of results.\nPass this value in the\nListDealAssociationsRequest.page_token\nfield in the subsequent call to 'ListDealAssociation' method to retrieve\nthe next page of results." + }, "associations": { "description": "The list of associations.", "items": { "$ref": "CreativeDealAssociation" }, "type": "array" - }, - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListDealAssociationsRequest.page_token\nfield in the subsequent call to 'ListDealAssociation' method to retrieve\nthe next page of results.", - "type": "string" } }, "id": "ListDealAssociationsResponse", - "description": "A response for listing creative and deal associations" - }, - "CalloutStatusRow": { - "description": "The number of impressions with the specified dimension values where the\ncorresponding bid request or bid response was not successful, as described by\nthe specified callout status.", - "type": "object", - "properties": { - "impressionCount": { - "$ref": "MetricValue", - "description": "The number of impressions for which there was a bid request or bid response\nwith the specified callout status." - }, - "rowDimensions": { - "$ref": "RowDimensions", - "description": "The values of all dimensions associated with metric values in this row." - }, - "calloutStatusId": { - "type": "integer", - "format": "int32", - "description": "The ID of the callout status.\nSee [callout-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/callout-status-codes)." - } - }, - "id": "CalloutStatusRow" + "description": "A response for listing creative and deal associations", + "type": "object" }, "Disapproval": { - "id": "Disapproval", "description": "@OutputOnly The reason and details for a disapproval.", "type": "object", "properties": { @@ -1172,6 +2524,102 @@ "type": "array" }, "reason": { + "enumDescriptions": [ + "The length of the image animation is longer than allowed.", + "The click through URL doesn't work properly.", + "Something is wrong with the creative itself.", + "The ad makes a fourth party call to an unapproved vendor.", + "The ad targets consumers using remarketing lists and/or collects\ndata for subsequent use in retargeting, but does not correctly declare\nthat use.", + "Clicking on the ad leads to an error page.", + "The ad size when rendered does not match the declaration.", + "Ads with a white background require a border, which was missing.", + "The creative attempts to set cookies from a fourth party that is not\ncertified.", + "The creative sets an LSO object.", + "The ad serves a blank.", + "The ad uses rotation, but not all destination URLs were declared.", + "There is a problem with the way the click macro is used.", + "The ad technology declaration is not accurate.", + "The actual destination URL does not match the declared destination URL.", + "The declared expanding direction does not match the actual direction.", + "The ad does not expand in a supported direction.", + "The ad uses an expandable vendor that is not supported.", + "There was an issue with the expandable ad.", + "The ad uses a video vendor that is not supported.", + "The length of the video ad is not supported.", + "The format of the video ad is not supported.", + "There was an issue with the video ad.", + "The landing page does not conform to Ad Exchange policy.", + "The ad or the landing page may contain malware.", + "The ad contains adult images or video content.", + "The ad contains text that is unclear or inaccurate.", + "The ad promotes counterfeit designer goods.", + "The ad causes a popup window to appear.", + "The creative does not follow policies set for the RTB protocol.", + "The ad contains a URL that uses a numeric IP address for the domain.", + "The ad or landing page contains unacceptable content because it initiated\na software or executable download.", + "The ad set an unauthorized cookie on a Google domain.", + "Flash content found when no flash was declared.", + "SSL support declared but not working correctly.", + "Rich Media - Direct Download in Ad (ex. PDF download).", + "Maximum download size exceeded.", + "Bad Destination URL: Site Not Crawlable.", + "Bad URL: Legal disapproval.", + "Pharmaceuticals, Gambling, Alcohol not allowed and at least one was\ndetected.", + "Dynamic DNS at Destination URL.", + "Poor Image / Video Quality.", + "For example, Image Trick to Click.", + "Incorrect Image Layout.", + "Irrelevant Image / Video.", + "Broken back button.", + "Misleading/Inaccurate claims in ads.", + "Restricted Products.", + "Unacceptable content. For example, malware.", + "The ad automatically redirects to the destination site without a click,\nor reports a click when none were made.", + "The ad uses URL protocols that do not exist or are not allowed on AdX.", + "Restricted content (for example, alcohol) was found in the ad but not\ndeclared.", + "Violation of the remarketing list policy.", + "The destination site's robot.txt file prevents it from being crawled.", + "Click to download must link to an app.", + "A review extension must be an accurate review.", + "Sexually explicit content.", + "The ad tries to gain an unfair traffic advantage.", + "The ad tries to circumvent Google's advertising systems.", + "The ad promotes dangerous knives.", + "The ad promotes explosives.", + "The ad promotes guns & parts.", + "The ad promotes recreational drugs/services & related equipment.", + "The ad promotes tobacco products/services & related equipment.", + "The ad promotes weapons.", + "The ad is unclear or irrelevant to the destination site.", + "The ad does not meet professional standards.", + "The promotion is unnecessarily difficult to navigate.", + "Violation of Google's policy for interest-based ads.", + "Misuse of personal information.", + "Omission of relevant information.", + "Unavailable promotions.", + "Misleading or unrealistic promotions.", + "Offensive or inappropriate content.", + "Capitalizing on sensitive events.", + "Shocking content.", + "Products & Services that enable dishonest behavior.", + "The ad does not meet technical requirements.", + "Restricted political content.", + "Unsupported content.", + "Invalid bidding method.", + "Video length exceeds limits.", + "Unacceptable content: Japanese healthcare.", + "Online pharmacy ID required.", + "Unacceptable content: Abortion.", + "Unacceptable content: Birth control.", + "Restricted in China.", + "Unacceptable content: Korean healthcare.", + "Non-family safe or adult content.", + "Clinical trial recruitment.", + "Maximum number of HTTP calls exceeded.", + "Maximum number of cookies exceeded.", + "Financial service ad does not adhere to specifications.", + "Flash content was found in an unsupported context." + ], "enum": [ "LENGTH_OF_IMAGE_ANIMATION", "BROKEN_URL", @@ -1269,122 +2717,22 @@ "UNSUPPORTED_FLASH_CONTENT" ], "description": "The categorized reason for disapproval.", - "type": "string", - "enumDescriptions": [ - "The length of the image animation is longer than allowed.", - "The click through URL doesn't work properly.", - "Something is wrong with the creative itself.", - "The ad makes a fourth party call to an unapproved vendor.", - "The ad targets consumers using remarketing lists and/or collects\ndata for subsequent use in retargeting, but does not correctly declare\nthat use.", - "Clicking on the ad leads to an error page.", - "The ad size when rendered does not match the declaration.", - "Ads with a white background require a border, which was missing.", - "The creative attempts to set cookies from a fourth party that is not\ncertified.", - "The creative sets an LSO object.", - "The ad serves a blank.", - "The ad uses rotation, but not all destination URLs were declared.", - "There is a problem with the way the click macro is used.", - "The ad technology declaration is not accurate.", - "The actual destination URL does not match the declared destination URL.", - "The declared expanding direction does not match the actual direction.", - "The ad does not expand in a supported direction.", - "The ad uses an expandable vendor that is not supported.", - "There was an issue with the expandable ad.", - "The ad uses a video vendor that is not supported.", - "The length of the video ad is not supported.", - "The format of the video ad is not supported.", - "There was an issue with the video ad.", - "The landing page does not conform to Ad Exchange policy.", - "The ad or the landing page may contain malware.", - "The ad contains adult images or video content.", - "The ad contains text that is unclear or inaccurate.", - "The ad promotes counterfeit designer goods.", - "The ad causes a popup window to appear.", - "The creative does not follow policies set for the RTB protocol.", - "The ad contains a URL that uses a numeric IP address for the domain.", - "The ad or landing page contains unacceptable content because it initiated\na software or executable download.", - "The ad set an unauthorized cookie on a Google domain.", - "Flash content found when no flash was declared.", - "SSL support declared but not working correctly.", - "Rich Media - Direct Download in Ad (ex. PDF download).", - "Maximum download size exceeded.", - "Bad Destination URL: Site Not Crawlable.", - "Bad URL: Legal disapproval.", - "Pharmaceuticals, Gambling, Alcohol not allowed and at least one was\ndetected.", - "Dynamic DNS at Destination URL.", - "Poor Image / Video Quality.", - "For example, Image Trick to Click.", - "Incorrect Image Layout.", - "Irrelevant Image / Video.", - "Broken back button.", - "Misleading/Inaccurate claims in ads.", - "Restricted Products.", - "Unacceptable content. For example, malware.", - "The ad automatically redirects to the destination site without a click,\nor reports a click when none were made.", - "The ad uses URL protocols that do not exist or are not allowed on AdX.", - "Restricted content (for example, alcohol) was found in the ad but not\ndeclared.", - "Violation of the remarketing list policy.", - "The destination site's robot.txt file prevents it from being crawled.", - "Click to download must link to an app.", - "A review extension must be an accurate review.", - "Sexually explicit content.", - "The ad tries to gain an unfair traffic advantage.", - "The ad tries to circumvent Google's advertising systems.", - "The ad promotes dangerous knives.", - "The ad promotes explosives.", - "The ad promotes guns & parts.", - "The ad promotes recreational drugs/services & related equipment.", - "The ad promotes tobacco products/services & related equipment.", - "The ad promotes weapons.", - "The ad is unclear or irrelevant to the destination site.", - "The ad does not meet professional standards.", - "The promotion is unnecessarily difficult to navigate.", - "Violation of Google's policy for interest-based ads.", - "Misuse of personal information.", - "Omission of relevant information.", - "Unavailable promotions.", - "Misleading or unrealistic promotions.", - "Offensive or inappropriate content.", - "Capitalizing on sensitive events.", - "Shocking content.", - "Products & Services that enable dishonest behavior.", - "The ad does not meet technical requirements.", - "Restricted political content.", - "Unsupported content.", - "Invalid bidding method.", - "Video length exceeds limits.", - "Unacceptable content: Japanese healthcare.", - "Online pharmacy ID required.", - "Unacceptable content: Abortion.", - "Unacceptable content: Birth control.", - "Restricted in China.", - "Unacceptable content: Korean healthcare.", - "Non-family safe or adult content.", - "Clinical trial recruitment.", - "Maximum number of HTTP calls exceeded.", - "Maximum number of cookies exceeded.", - "Financial service ad does not adhere to specifications.", - "Flash content was found in an unsupported context." - ] + "type": "string" } - } + }, + "id": "Disapproval" }, "StopWatchingCreativeRequest": { - "id": "StopWatchingCreativeRequest", "description": "A request for stopping notifications for changes to creative Status.", "type": "object", - "properties": {} + "properties": {}, + "id": "StopWatchingCreativeRequest" }, "ServingRestriction": { + "id": "ServingRestriction", + "description": "@OutputOnly A representation of the status of an ad in a\nspecific context. A context here relates to where something ultimately serves\n(for example, a user or publisher geo, a platform, an HTTPS vs HTTP request,\nor the type of auction).", "type": "object", "properties": { - "contexts": { - "description": "The contexts for the restriction.", - "items": { - "$ref": "ServingContext" - }, - "type": "array" - }, "status": { "enum": [ "STATUS_UNSPECIFIED", @@ -1405,16 +2753,25 @@ "$ref": "Disapproval" }, "type": "array" + }, + "contexts": { + "description": "The contexts for the restriction.", + "items": { + "$ref": "ServingContext" + }, + "type": "array" } - }, - "id": "ServingRestriction", - "description": "@OutputOnly A representation of the status of an ad in a\nspecific context. A context here relates to where something ultimately serves\n(for example, a user or publisher geo, a platform, an HTTPS vs HTTP request,\nor the type of auction)." + } }, "Date": { - "id": "Date", "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", "type": "object", "properties": { + "month": { + "format": "int32", + "description": "Month of year. Must be from 1 to 12.", + "type": "integer" + }, "day": { "format": "int32", "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", @@ -1424,16 +2781,11 @@ "type": "integer", "format": "int32", "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year." - }, - "month": { - "format": "int32", - "description": "Month of year. Must be from 1 to 12.", - "type": "integer" } - } + }, + "id": "Date" }, "RowDimensions": { - "id": "RowDimensions", "description": "A response may include multiple rows, breaking down along various dimensions.\nEncapsulates the values of all dimensions for a given row.", "type": "object", "properties": { @@ -1441,15 +2793,17 @@ "$ref": "TimeInterval", "description": "The time interval that this row represents." } - } + }, + "id": "RowDimensions" }, "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", "properties": {}, - "id": "Empty" + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" }, "AppContext": { + "description": "@OutputOnly The app type the restriction applies to for mobile device.", "type": "object", "properties": { "appTypes": { @@ -1468,37 +2822,38 @@ ] } }, - "id": "AppContext", - "description": "@OutputOnly The app type the restriction applies to for mobile device." + "id": "AppContext" }, "ListFilteredBidsResponse": { - "description": "Response message for listing all reasons that bids were filtered from the\nauction.", - "type": "object", "properties": { - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.list\nmethod to retrieve the next page of results.", - "type": "string" - }, "creativeStatusRows": { "description": "List of rows, with counts of filtered bids aggregated by filtering reason\n(i.e. creative status).", "items": { "$ref": "CreativeStatusRow" }, "type": "array" + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBids.list\nmethod to retrieve the next page of results.", + "type": "string" } }, - "id": "ListFilteredBidsResponse" + "id": "ListFilteredBidsResponse", + "description": "Response message for listing all reasons that bids were filtered from the\nauction.", + "type": "object" }, "SecurityContext": { + "description": "@OutputOnly A security context.", + "type": "object", "properties": { "securities": { "description": "The security types in this context.", "items": { - "type": "string", "enum": [ "INSECURE", "SSL" - ] + ], + "type": "string" }, "type": "array", "enumDescriptions": [ @@ -1507,48 +2862,53 @@ ] } }, - "id": "SecurityContext", - "description": "@OutputOnly A security context.", - "type": "object" + "id": "SecurityContext" }, "ListFilteredBidRequestsResponse": { - "id": "ListFilteredBidRequestsResponse", "description": "Response message for listing all reasons that bid requests were filtered and\nnot sent to the buyer.", "type": "object", "properties": { "calloutStatusRows": { + "description": "List of rows, with counts of filtered bid requests aggregated by callout\nstatus.", "items": { "$ref": "CalloutStatusRow" }, - "type": "array", - "description": "List of rows, with counts of filtered bid requests aggregated by callout\nstatus." + "type": "array" }, "nextPageToken": { "description": "A token to retrieve the next page of results.\nPass this value in the\nListFilteredBidRequestsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.filteredBidRequests.list\nmethod to retrieve the next page of results.", "type": "string" } - } + }, + "id": "ListFilteredBidRequestsResponse" }, "ListCreativesResponse": { - "description": "A response for listing creatives.", "type": "object", "properties": { + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativesRequest.page_token\nfield in the subsequent call to `ListCreatives` method to retrieve the next\npage of results.", + "type": "string" + }, "creatives": { "description": "The list of creatives.", "items": { "$ref": "Creative" }, "type": "array" - }, - "nextPageToken": { - "type": "string", - "description": "A token to retrieve the next page of results.\nPass this value in the\nListCreativesRequest.page_token\nfield in the subsequent call to `ListCreatives` method to retrieve the next\npage of results." } }, - "id": "ListCreativesResponse" + "id": "ListCreativesResponse", + "description": "A response for listing creatives." }, "HtmlContent": { + "description": "HTML content for a creative.", + "type": "object", "properties": { + "height": { + "format": "int32", + "description": "The height of the HTML snippet in pixels.", + "type": "integer" + }, "width": { "format": "int32", "description": "The width of the HTML snippet in pixels.", @@ -1557,90 +2917,46 @@ "snippet": { "description": "The HTML snippet that displays the ad when inserted in the web page.", "type": "string" - }, - "height": { - "format": "int32", - "description": "The height of the HTML snippet in pixels.", - "type": "integer" } }, - "id": "HtmlContent", - "description": "HTML content for a creative.", - "type": "object" + "id": "HtmlContent" }, "ListBidMetricsResponse": { "description": "Response message for listing the metrics that are measured in number of bids.", "type": "object", "properties": { + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidMetrics.list\nmethod to retrieve the next page of results.", + "type": "string" + }, "bidMetricsRows": { "description": "List of rows, each containing a set of bid metrics.", "items": { "$ref": "BidMetricsRow" }, "type": "array" - }, - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidMetrics.list\nmethod to retrieve the next page of results.", - "type": "string" } }, "id": "ListBidMetricsResponse" }, "Reason": { - "id": "Reason", "description": "A specific filtering status and how many times it occurred.", "type": "object", "properties": { - "status": { - "format": "int32", - "description": "The filtering status code. Please refer to the\n[creative-status-codes.txt](https://storage.googleapis.com/adx-rtb-dictionaries/creative-status-codes.txt)\nfile for different statuses.", - "type": "integer" - }, "count": { + "type": "string", "format": "int64", - "description": "The number of times the creative was filtered for the status. The\ncount is aggregated across all publishers on the exchange.", - "type": "string" - } - } - }, - "ListNonBillableWinningBidsResponse": { - "description": "Response message for listing all reasons for which a buyer was not billed for\na winning bid.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListNonBillableWinningBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod to retrieve the next page of results.", - "type": "string" + "description": "The number of times the creative was filtered for the status. The\ncount is aggregated across all publishers on the exchange." }, - "nonBillableWinningBidStatusRows": { - "description": "List of rows, with counts of bids not billed aggregated by reason.", - "items": { - "$ref": "NonBillableWinningBidStatusRow" - }, - "type": "array" + "status": { + "type": "integer", + "format": "int32", + "description": "The filtering status code. Please refer to the\n[creative-status-codes.txt](https://storage.googleapis.com/adx-rtb-dictionaries/creative-status-codes.txt)\nfile for different statuses." } }, - "id": "ListNonBillableWinningBidsResponse" - }, - "ListLosingBidsResponse": { - "description": "Response message for listing all reasons that bids lost in the auction.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListLosingBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.losingBids.list\nmethod to retrieve the next page of results.", - "type": "string" - }, - "creativeStatusRows": { - "description": "List of rows, with counts of losing bids aggregated by loss reason (i.e.\ncreative status).", - "items": { - "$ref": "CreativeStatusRow" - }, - "type": "array" - } - }, - "id": "ListLosingBidsResponse" + "id": "Reason" }, "VideoContent": { - "id": "VideoContent", "description": "Video content for a creative.", "type": "object", "properties": { @@ -1648,75 +2964,112 @@ "description": "The URL to fetch a video ad.", "type": "string" } - } + }, + "id": "VideoContent" + }, + "ListLosingBidsResponse": { + "properties": { + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListLosingBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.losingBids.list\nmethod to retrieve the next page of results.", + "type": "string" + }, + "creativeStatusRows": { + "items": { + "$ref": "CreativeStatusRow" + }, + "type": "array", + "description": "List of rows, with counts of losing bids aggregated by loss reason (i.e.\ncreative status)." + } + }, + "id": "ListLosingBidsResponse", + "description": "Response message for listing all reasons that bids lost in the auction.", + "type": "object" + }, + "ListNonBillableWinningBidsResponse": { + "properties": { + "nonBillableWinningBidStatusRows": { + "description": "List of rows, with counts of bids not billed aggregated by reason.", + "items": { + "$ref": "NonBillableWinningBidStatusRow" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListNonBillableWinningBidsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod to retrieve the next page of results.", + "type": "string" + } + }, + "id": "ListNonBillableWinningBidsResponse", + "description": "Response message for listing all reasons for which a buyer was not billed for\na winning bid.", + "type": "object" }, "ImpressionMetricsRow": { "description": "The set of metrics that are measured in numbers of impressions, representing\nhow many impressions with the specified dimension values were considered\neligible at each stage of the bidding funnel.", "type": "object", "properties": { - "responsesWithBids": { - "$ref": "MetricValue", - "description": "The number of impressions for which Ad Exchange received a response from\nthe buyer that contained at least one applicable bid." - }, - "successfulResponses": { - "description": "The number of impressions for which the buyer successfully sent a response\nto Ad Exchange.", - "$ref": "MetricValue" - }, "rowDimensions": { "$ref": "RowDimensions", "description": "The values of all dimensions associated with metric values in this row." }, "availableImpressions": { - "$ref": "MetricValue", - "description": "The number of impressions available to the buyer on Ad Exchange.\nIn some cases this value may be unavailable." + "description": "The number of impressions available to the buyer on Ad Exchange.\nIn some cases this value may be unavailable.", + "$ref": "MetricValue" }, "inventoryMatches": { - "$ref": "MetricValue", - "description": "The number of impressions that match the buyer's inventory pretargeting." + "description": "The number of impressions that match the buyer's inventory pretargeting.", + "$ref": "MetricValue" }, "bidRequests": { + "description": "The number of impressions for which Ad Exchange sent the buyer a bid\nrequest.", + "$ref": "MetricValue" + }, + "responsesWithBids": { "$ref": "MetricValue", - "description": "The number of impressions for which Ad Exchange sent the buyer a bid\nrequest." + "description": "The number of impressions for which Ad Exchange received a response from\nthe buyer that contained at least one applicable bid." + }, + "successfulResponses": { + "$ref": "MetricValue", + "description": "The number of impressions for which the buyer successfully sent a response\nto Ad Exchange." } }, "id": "ImpressionMetricsRow" }, "AuctionContext": { + "type": "object", "properties": { "auctionTypes": { + "description": "The auction types this restriction applies to.", "items": { + "type": "string", "enum": [ "OPEN_AUCTION", "DIRECT_DEALS" - ], - "type": "string" + ] }, "type": "array", "enumDescriptions": [ "The restriction applies to open auction.", "The restriction applies to direct deals." - ], - "description": "The auction types this restriction applies to." + ] } }, "id": "AuctionContext", - "description": "@OutputOnly The auction type the restriction applies to.", - "type": "object" + "description": "@OutputOnly The auction type the restriction applies to." }, "ListImpressionMetricsResponse": { "description": "Response message for listing the metrics that are measured in number of\nimpressions.", "type": "object", "properties": { + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListImpressionMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.impressionMetrics.list\nmethod to retrieve the next page of results.", + "type": "string" + }, "impressionMetricsRows": { "description": "List of rows, each containing a set of impression metrics.", "items": { "$ref": "ImpressionMetricsRow" }, "type": "array" - }, - "nextPageToken": { - "description": "A token to retrieve the next page of results.\nPass this value in the\nListImpressionMetricsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.impressionMetrics.list\nmethod to retrieve the next page of results.", - "type": "string" } }, "id": "ListImpressionMetricsResponse" @@ -1730,16 +3083,16 @@ "description": "The values of all dimensions associated with metric values in this row." }, "viewableImpressions": { - "description": "The number of bids for which the corresponding impression was viewable (as\ndefined by Active View).", - "$ref": "MetricValue" + "$ref": "MetricValue", + "description": "The number of bids for which the corresponding impression was viewable (as\ndefined by Active View)." }, "impressionsWon": { "$ref": "MetricValue", "description": "The number of bids that won an impression." }, "measurableImpressions": { - "$ref": "MetricValue", - "description": "The number of bids for which the corresponding impression was measurable\nfor viewability (as defined by Active View)." + "description": "The number of bids for which the corresponding impression was measurable\nfor viewability (as defined by Active View).", + "$ref": "MetricValue" }, "bids": { "$ref": "MetricValue", @@ -1755,1500 +3108,147 @@ } }, "id": "BidMetricsRow" + }, + "ListBidResponseErrorsResponse": { + "type": "object", + "properties": { + "calloutStatusRows": { + "items": { + "$ref": "CalloutStatusRow" + }, + "type": "array", + "description": "List of rows, with counts of bid responses aggregated by callout status." + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results.\nPass this value in the\nListBidResponseErrorsRequest.pageToken\nfield in the subsequent call to the\naccounts.filterSets.bidResponseErrors.list\nmethod to retrieve the next page of results.", + "type": "string" + } + }, + "id": "ListBidResponseErrorsResponse", + "description": "Response message for listing all reasons that bid responses resulted in an\nerror." + }, + "CreativeStatusRow": { + "description": "The number of bids with the specified dimension values that did not win the\nauction (either were filtered pre-auction or lost the auction), as described\nby the specified creative status.", + "type": "object", + "properties": { + "rowDimensions": { + "$ref": "RowDimensions", + "description": "The values of all dimensions associated with metric values in this row." + }, + "creativeStatusId": { + "format": "int32", + "description": "The ID of the creative status.\nSee [creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).", + "type": "integer" + }, + "bidCount": { + "description": "The number of bids with the specified status.", + "$ref": "MetricValue" + } + }, + "id": "CreativeStatusRow" + }, + "RealtimeTimeRange": { + "description": "An open-ended realtime time range specified by the start timestamp.\nFor filter sets that specify a realtime time range RTB metrics continue to\nbe aggregated throughout the lifetime of the filter set.", + "type": "object", + "properties": { + "startTimestamp": { + "format": "google-datetime", + "description": "The start timestamp of the real-time RTB metrics aggregation.", + "type": "string" + } + }, + "id": "RealtimeTimeRange" + }, + "NonBillableWinningBidStatusRow": { + "type": "object", + "properties": { + "status": { + "enum": [ + "STATUS_UNSPECIFIED", + "AD_NOT_RENDERED", + "INVALID_IMPRESSION" + ], + "description": "The status specifying why the winning bids were not billed.", + "type": "string", + "enumDescriptions": [ + "A placeholder for an undefined status.\nThis value will never be returned in responses.", + "The buyer was not billed because the ad was not rendered by the\npublisher.", + "The buyer was not billed because the impression won by the bid was\ndetermined to be invalid." + ] + }, + "rowDimensions": { + "$ref": "RowDimensions", + "description": "The values of all dimensions associated with metric values in this row." + }, + "bidCount": { + "$ref": "MetricValue", + "description": "The number of bids with the specified status." + } + }, + "id": "NonBillableWinningBidStatusRow", + "description": "The number of winning bids with the specified dimension values for which the\nbuyer was not billed, as described by the specified status." + }, + "FilteredBidDetailRow": { + "description": "The number of filtered bids with the specified dimension values, among those\nfiltered due to the requested filtering reason (i.e. creative status), that\nhave the specified detail.", + "type": "object", + "properties": { + "rowDimensions": { + "description": "The values of all dimensions associated with metric values in this row.", + "$ref": "RowDimensions" + }, + "detailId": { + "format": "int32", + "description": "The ID of the detail. The associated value can be looked up in the\ndictionary file corresponding to the DetailType in the response message.", + "type": "integer" + }, + "bidCount": { + "$ref": "MetricValue", + "description": "The number of bids with the specified detail." + } + }, + "id": "FilteredBidDetailRow" + }, + "AbsoluteDateRange": { + "description": "An absolute date range, specified by its start date and end date.\nThe supported range of dates begins 30 days before today and ends today.\nValidity checked upon filter set creation. If a filter set with an absolute\ndate range is run at a later date more than 30 days after start_date, it will\nfail.", + "type": "object", + "properties": { + "endDate": { + "description": "The end date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor after start_date.", + "$ref": "Date" + }, + "startDate": { + "$ref": "Date", + "description": "The start date of the range (inclusive).\nMust be within the 30 days leading up to current date, and must be equal to\nor before end_date." + } + }, + "id": "AbsoluteDateRange" + }, + "AddDealAssociationRequest": { + "id": "AddDealAssociationRequest", + "description": "A request for associating a deal and a creative.", + "type": "object", + "properties": { + "association": { + "$ref": "CreativeDealAssociation", + "description": "The association between a creative and a deal that should be added." + } + } + }, + "WatchCreativeRequest": { + "description": "A request for watching changes to creative Status.", + "type": "object", + "properties": { + "topic": { + "description": "The Pub/Sub topic to publish notifications to.\nThis topic must already exist and must give permission to\nad-exchange-buyside-reports@google.com to write to the topic.\nThis should be the full resource name in\n\"projects/{project_id}/topics/{topic_id}\" format.", + "type": "string" + } + }, + "id": "WatchCreativeRequest" } }, "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, - "protocol": "rest", - "canonicalName": "AdExchangeBuyerII", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/adexchange.buyer": { - "description": "Manage your Ad Exchange buyer account configuration" - } - } - } - }, - "rootUrl": "https://adexchangebuyer.googleapis.com/", - "ownerDomain": "google.com", - "name": "adexchangebuyer2", - "batchPath": "batch", - "title": "Ad Exchange Buyer API II", - "ownerName": "Google", - "resources": { - "accounts": { - "resources": { - "clients": { - "resources": { - "invitations": { - "methods": { - "list": { - "response": { - "$ref": "ListClientUserInvitationsResponse" - }, - "parameterOrder": [ - "accountId", - "clientAccountId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientUserInvitationsResponse.nextPageToken\nreturned from the previous call to the\nclients.invitations.list\nmethod.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. Server may return fewer clients than requested.\nIf unspecified, server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)", - "type": "string", - "required": true - }, - "clientAccountId": { - "location": "path", - "description": "Numerical account ID of the client buyer to list invitations for.\n(required)\nYou must either specify a string representation of a\nnumerical account identifier or the `-` character\nto list all the invitations for all the clients\nof a given sponsor buyer.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", - "id": "adexchangebuyer2.accounts.clients.invitations.list", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", - "description": "Lists all the client users invitations for a client\nwith a given account ID." - }, - "get": { - "description": "Retrieves an existing client user invitation.", - "response": { - "$ref": "ClientUserInvitation" - }, - "parameterOrder": [ - "accountId", - "clientAccountId", - "invitationId" - ], - "httpMethod": "GET", - "parameters": { - "invitationId": { - "format": "int64", - "description": "Numerical identifier of the user invitation to retrieve. (required)", - "type": "string", - "required": true, - "location": "path" - }, - "accountId": { - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)", - "type": "string", - "required": true, - "location": "path" - }, - "clientAccountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client buyer that the user invitation\nto be retrieved is associated with. (required)", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}", - "id": "adexchangebuyer2.accounts.clients.invitations.get", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations/{invitationId}" - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "accountId", - "clientAccountId" - ], - "response": { - "$ref": "ClientUserInvitation" - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "accountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)", - "type": "string", - "required": true - }, - "clientAccountId": { - "format": "int64", - "description": "Numerical account ID of the client buyer that the user\nshould be associated with. (required)", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/invitations", - "id": "adexchangebuyer2.accounts.clients.invitations.create", - "request": { - "$ref": "ClientUserInvitation" - }, - "description": "Creates and sends out an email invitation to access\nan Ad Exchange client buyer account." - } - } - }, - "users": { - "methods": { - "update": { - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", - "id": "adexchangebuyer2.accounts.clients.users.update", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", - "request": { - "$ref": "ClientUser" - }, - "description": "Updates an existing client user.\nOnly the user status can be changed on update.", - "response": { - "$ref": "ClientUser" - }, - "parameterOrder": [ - "accountId", - "clientAccountId", - "userId" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "userId": { - "format": "int64", - "description": "Numerical identifier of the user to retrieve. (required)", - "type": "string", - "required": true, - "location": "path" - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)", - "type": "string", - "required": true - }, - "clientAccountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client buyer that the user to be retrieved\nis associated with. (required)", - "type": "string", - "required": true - } - } - }, - "get": { - "httpMethod": "GET", - "response": { - "$ref": "ClientUser" - }, - "parameterOrder": [ - "accountId", - "clientAccountId", - "userId" - ], - "parameters": { - "userId": { - "location": "path", - "format": "int64", - "description": "Numerical identifier of the user to retrieve. (required)", - "type": "string", - "required": true - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)", - "type": "string", - "required": true - }, - "clientAccountId": { - "format": "int64", - "description": "Numerical account ID of the client buyer\nthat the user to be retrieved is associated with. (required)", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users/{userId}", - "id": "adexchangebuyer2.accounts.clients.users.get", - "description": "Retrieves an existing client user." - }, - "list": { - "response": { - "$ref": "ListClientUsersResponse" - }, - "parameterOrder": [ - "accountId", - "clientAccountId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientUsersResponse.nextPageToken\nreturned from the previous call to the\naccounts.clients.users.list method.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer clients than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Numerical account ID of the sponsor buyer of the client to list users for.\n(required)", - "type": "string", - "required": true, - "location": "path" - }, - "clientAccountId": { - "location": "path", - "description": "The account ID of the client buyer to list users for. (required)\nYou must specify either a string representation of a\nnumerical account identifier or the `-` character\nto list all the client users for all the clients\nof a given sponsor buyer.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users", - "id": "adexchangebuyer2.accounts.clients.users.list", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}/users", - "description": "Lists all the known client users for a specified\nsponsor buyer account ID." - } - } - } - }, - "methods": { - "update": { - "parameters": { - "accountId": { - "format": "int64", - "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to update a client for. (required)", - "type": "string", - "required": true, - "location": "path" - }, - "clientAccountId": { - "location": "path", - "format": "int64", - "description": "Unique numerical account ID of the client to update. (required)", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", - "id": "adexchangebuyer2.accounts.clients.update", - "description": "Updates an existing client buyer.", - "request": { - "$ref": "Client" - }, - "httpMethod": "PUT", - "parameterOrder": [ - "accountId", - "clientAccountId" - ], - "response": { - "$ref": "Client" - } - }, - "create": { - "response": { - "$ref": "Client" - }, - "parameterOrder": [ - "accountId" - ], - "httpMethod": "POST", - "parameters": { - "accountId": { - "type": "string", - "required": true, - "location": "path", - "format": "int64", - "description": "Unique numerical account ID for the buyer of which the client buyer\nis a customer; the sponsor buyer to create a client for. (required)" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/clients", - "id": "adexchangebuyer2.accounts.clients.create", - "path": "v2beta1/accounts/{accountId}/clients", - "description": "Creates a new client buyer.", - "request": { - "$ref": "Client" - } - }, - "list": { - "description": "Lists all the clients for the current sponsor buyer.", - "response": { - "$ref": "ListClientsResponse" - }, - "parameterOrder": [ - "accountId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListClientsResponse.nextPageToken\nreturned from the previous call to the\naccounts.clients.list method.", - "type": "string", - "location": "query" - }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer clients than requested.\nIf unspecified, the server will pick an appropriate default." - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Unique numerical account ID of the sponsor buyer to list the clients for.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/accounts/{accountId}/clients", - "id": "adexchangebuyer2.accounts.clients.list", - "path": "v2beta1/accounts/{accountId}/clients" - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "accountId", - "clientAccountId" - ], - "response": { - "$ref": "Client" - }, - "parameters": { - "accountId": { - "type": "string", - "required": true, - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client's sponsor buyer. (required)" - }, - "clientAccountId": { - "location": "path", - "format": "int64", - "description": "Numerical account ID of the client buyer to retrieve. (required)", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", - "path": "v2beta1/accounts/{accountId}/clients/{clientAccountId}", - "id": "adexchangebuyer2.accounts.clients.get", - "description": "Gets a client buyer with a given client account ID." - } - } - }, - "creatives": { - "methods": { - "get": { - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}", - "id": "adexchangebuyer2.accounts.creatives.get", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}", - "description": "Gets a creative.", - "response": { - "$ref": "Creative" - }, - "parameterOrder": [ - "accountId", - "creativeId" - ], - "httpMethod": "GET", - "parameters": { - "accountId": { - "location": "path", - "description": "The account the creative belongs to.", - "type": "string", - "required": true - }, - "creativeId": { - "location": "path", - "description": "The ID of the creative to retrieve.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ] - }, - "watch": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "accountId", - "creativeId" - ], - "httpMethod": "POST", - "parameters": { - "accountId": { - "description": "The account of the creative to watch.", - "type": "string", - "required": true, - "location": "path" - }, - "creativeId": { - "location": "path", - "description": "The creative ID to watch for status changes.\nSpecify \"-\" to watch all creatives under the above account.\nIf both creative-level and account-level notifications are\nsent, only a single notification will be sent to the\ncreative-level notification topic.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}:watch", - "id": "adexchangebuyer2.accounts.creatives.watch", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}:watch", - "description": "Watches a creative. Will result in push notifications being sent to the\ntopic when the creative changes status.", - "request": { - "$ref": "WatchCreativeRequest" - } - }, - "update": { - "parameters": { - "accountId": { - "location": "path", - "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.", - "type": "string", - "required": true - }, - "creativeId": { - "location": "path", - "description": "The buyer-defined creative ID of this creative.\nCan be used to filter the response of the\ncreatives.list\nmethod.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}", - "id": "adexchangebuyer2.accounts.creatives.update", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}", - "description": "Updates a creative.", - "request": { - "$ref": "Creative" - }, - "response": { - "$ref": "Creative" - }, - "parameterOrder": [ - "accountId", - "creativeId" - ], - "httpMethod": "PUT" - }, - "list": { - "flatPath": "v2beta1/accounts/{accountId}/creatives", - "id": "adexchangebuyer2.accounts.creatives.list", - "path": "v2beta1/accounts/{accountId}/creatives", - "description": "Lists creatives.", - "response": { - "$ref": "ListCreativesResponse" - }, - "parameterOrder": [ - "accountId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer creatives than requested\n(due to timeout constraint) even if more are available via another call.\nIf unspecified, server will pick an appropriate default.\nAcceptable values are 1 to 1000, inclusive.", - "type": "integer" - }, - "accountId": { - "type": "string", - "required": true, - "location": "path", - "description": "The account to list the creatives from.\nSpecify \"-\" to list all creatives the current user has access to." - }, - "query": { - "description": "An optional query string to filter creatives. If no filter is specified,\nall active creatives will be returned.\nSupported queries are:\n\u003cul\u003e\n\u003cli\u003eaccountId=\u003ci\u003eaccount_id_string\u003c/i\u003e\n\u003cli\u003ecreativeId=\u003ci\u003ecreative_id_string\u003c/i\u003e\n\u003cli\u003edealsStatus: {approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eopenAuctionStatus: {approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eattribute: {a numeric attribute from the list of attributes}\n\u003cli\u003edisapprovalReason: {a reason from DisapprovalReason\n\u003c/ul\u003e\nExample: 'accountId=12345 AND (dealsStatus:disapproved AND disapprovalReason:unacceptable_content) OR attribute:47'", - "type": "string", - "location": "query" - }, - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativesResponse.next_page_token\nreturned from the previous call to 'ListCreatives' method.", - "type": "string", - "location": "query" - } - } - }, - "create": { - "flatPath": "v2beta1/accounts/{accountId}/creatives", - "path": "v2beta1/accounts/{accountId}/creatives", - "id": "adexchangebuyer2.accounts.creatives.create", - "description": "Creates a creative.", - "request": { - "$ref": "Creative" - }, - "httpMethod": "POST", - "parameterOrder": [ - "accountId" - ], - "response": { - "$ref": "Creative" - }, - "parameters": { - "accountId": { - "description": "The account that this creative belongs to.\nCan be used to filter the response of the\ncreatives.list\nmethod.", - "type": "string", - "required": true, - "location": "path" - }, - "duplicateIdMode": { - "description": "Indicates if multiple creatives can share an ID or not. Default is\nNO_DUPLICATES (one ID per creative).", - "type": "string", - "location": "query", - "enum": [ - "NO_DUPLICATES", - "FORCE_ENABLE_DUPLICATE_IDS" - ] - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ] - }, - "stopWatching": { - "httpMethod": "POST", - "parameterOrder": [ - "accountId", - "creativeId" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "accountId": { - "location": "path", - "description": "The account of the creative to stop notifications for.", - "type": "string", - "required": true - }, - "creativeId": { - "description": "The creative ID of the creative to stop notifications for.\nSpecify \"-\" to specify stopping account level notifications.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}:stopWatching", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}:stopWatching", - "id": "adexchangebuyer2.accounts.creatives.stopWatching", - "request": { - "$ref": "StopWatchingCreativeRequest" - }, - "description": "Stops watching a creative. Will stop push notifications being sent to the\ntopics when the creative changes status." - } - }, - "resources": { - "dealAssociations": { - "methods": { - "remove": { - "httpMethod": "POST", - "parameterOrder": [ - "accountId", - "creativeId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "accountId": { - "location": "path", - "description": "The account the creative belongs to.", - "type": "string", - "required": true - }, - "creativeId": { - "type": "string", - "required": true, - "location": "path", - "description": "The ID of the creative associated with the deal." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:remove", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:remove", - "id": "adexchangebuyer2.accounts.creatives.dealAssociations.remove", - "description": "Remove the association between a deal and a creative.", - "request": { - "$ref": "RemoveDealAssociationRequest" - } - }, - "add": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "accountId", - "creativeId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "accountId": { - "description": "The account the creative belongs to.", - "type": "string", - "required": true, - "location": "path" - }, - "creativeId": { - "description": "The ID of the creative associated with the deal.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:add", - "id": "adexchangebuyer2.accounts.creatives.dealAssociations.add", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations:add", - "request": { - "$ref": "AddDealAssociationRequest" - }, - "description": "Associate an existing deal with a creative." - }, - "list": { - "response": { - "$ref": "ListDealAssociationsResponse" - }, - "parameterOrder": [ - "accountId", - "creativeId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListDealAssociationsResponse.next_page_token\nreturned from the previous call to 'ListDealAssociations' method.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. Server may return fewer associations than requested.\nIf unspecified, server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "description": "The account to list the associations from.\nSpecify \"-\" to list all creatives the current user has access to.", - "type": "string", - "required": true, - "location": "path" - }, - "query": { - "description": "An optional query string to filter deal associations. If no filter is\nspecified, all associations will be returned.\nSupported queries are:\n\u003cul\u003e\n\u003cli\u003eaccountId=\u003ci\u003eaccount_id_string\u003c/i\u003e\n\u003cli\u003ecreativeId=\u003ci\u003ecreative_id_string\u003c/i\u003e\n\u003cli\u003edealsId=\u003ci\u003edeals_id_string\u003c/i\u003e\n\u003cli\u003edealsStatus:{approved, conditionally_approved, disapproved,\n not_checked}\n\u003cli\u003eopenAuctionStatus:{approved, conditionally_approved, disapproved,\n not_checked}\n\u003c/ul\u003e\nExample: 'dealsId=12345 AND dealsStatus:disapproved'", - "type": "string", - "location": "query" - }, - "creativeId": { - "location": "path", - "description": "The creative ID to list the associations from.\nSpecify \"-\" to list all creatives under the above account.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations", - "id": "adexchangebuyer2.accounts.creatives.dealAssociations.list", - "path": "v2beta1/accounts/{accountId}/creatives/{creativeId}/dealAssociations", - "description": "List all creative-deal associations." - } - } - } - } - }, - "filterSets": { - "methods": { - "create": { - "flatPath": "v2beta1/accounts/{accountId}/filterSets", - "id": "adexchangebuyer2.accounts.filterSets.create", - "path": "v2beta1/accounts/{accountId}/filterSets", - "description": "Creates the specified filter set for the account with the given account ID.", - "request": { - "$ref": "FilterSet" - }, - "response": { - "$ref": "FilterSet" - }, - "parameterOrder": [ - "accountId" - ], - "httpMethod": "POST", - "parameters": { - "isTransient": { - "location": "query", - "description": "Whether the filter set is transient, or should be persisted indefinitely.\nBy default, filter sets are not transient.\nIf transient, it will be available for at least 1 hour after creation.", - "type": "boolean" - }, - "accountId": { - "type": "string", - "required": true, - "location": "path", - "format": "int64", - "description": "Account ID of the buyer." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ] - }, - "delete": { - "description": "Deletes the requested filter set from the account with the given account\nID.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "httpMethod": "DELETE", - "parameters": { - "accountId": { - "location": "path", - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true - }, - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to delete.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", - "id": "adexchangebuyer2.accounts.filterSets.delete", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}" - }, - "list": { - "description": "Lists all filter sets for the account with the given account ID.", - "httpMethod": "GET", - "parameterOrder": [ - "accountId" - ], - "response": { - "$ref": "ListFilterSetsResponse" - }, - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilterSetsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.list\nmethod.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets", - "path": "v2beta1/accounts/{accountId}/filterSets", - "id": "adexchangebuyer2.accounts.filterSets.list" - }, - "get": { - "description": "Retrieves the requested filter set for the account with the given account\nID.", - "httpMethod": "GET", - "response": { - "$ref": "FilterSet" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "parameters": { - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to get.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}", - "id": "adexchangebuyer2.accounts.filterSets.get" - } - }, - "resources": { - "nonBillableWinningBids": { - "methods": { - "list": { - "description": "List all reasons for which winning bids were not billable, with the number\nof bids not billed for each reason.", - "httpMethod": "GET", - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "response": { - "$ref": "ListNonBillableWinningBidsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListNonBillableWinningBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.nonBillableWinningBids.list\nmethod.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/nonBillableWinningBids", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/nonBillableWinningBids", - "id": "adexchangebuyer2.accounts.filterSets.nonBillableWinningBids.list" - } - } - }, - "filteredBids": { - "methods": { - "list": { - "response": { - "$ref": "ListFilteredBidsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default." - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.list\nmethod." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids", - "id": "adexchangebuyer2.accounts.filterSets.filteredBids.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids", - "description": "List all reasons for which bids were filtered, with the number of bids\nfiltered for each reason." - } - }, - "resources": { - "creatives": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListCreativeStatusBreakdownByCreativeResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId", - "creativeStatusId" - ], - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByCreativeResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.creatives.list\nmethod.", - "type": "string", - "location": "query" - }, - "creativeStatusId": { - "location": "path", - "format": "int32", - "description": "The ID of the creative status for which to retrieve a breakdown by\ncreative.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).", - "type": "integer", - "required": true - }, - "pageSize": { - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer", - "location": "query" - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true - }, - "filterSetId": { - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/creatives", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/creatives", - "id": "adexchangebuyer2.accounts.filterSets.filteredBids.creatives.list", - "description": "List all creatives associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each creative." - } - } - }, - "details": { - "methods": { - "list": { - "description": "List all details associated with a specific reason for which bids were\nfiltered, with the number of bids filtered for each detail.", - "response": { - "$ref": "ListCreativeStatusBreakdownByDetailResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId", - "creativeStatusId" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListCreativeStatusBreakdownByDetailResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBids.details.list\nmethod.", - "type": "string", - "location": "query" - }, - "creativeStatusId": { - "location": "path", - "format": "int32", - "description": "The ID of the creative status for which to retrieve a breakdown by detail.\nSee\n[creative-status-codes](https://developers.google.com/ad-exchange/rtb/downloads/creative-status-codes).\nDetails are only available for statuses 10, 14, 15, 17, 18, 19, 86, and 87.", - "type": "integer", - "required": true - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "filterSetId": { - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/details", - "id": "adexchangebuyer2.accounts.filterSets.filteredBids.details.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBids/{creativeStatusId}/details" - } - } - } - } - }, - "losingBids": { - "methods": { - "list": { - "response": { - "$ref": "ListLosingBidsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default." - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true - }, - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListLosingBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.losingBids.list\nmethod.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/losingBids", - "id": "adexchangebuyer2.accounts.filterSets.losingBids.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/losingBids", - "description": "List all reasons for which bids lost in the auction, with the number of\nbids that lost for each reason." - } - } - }, - "bidMetrics": { - "methods": { - "list": { - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidMetrics", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidMetrics", - "id": "adexchangebuyer2.accounts.filterSets.bidMetrics.list", - "description": "Lists all metrics that are measured in terms of number of bids.", - "httpMethod": "GET", - "response": { - "$ref": "ListBidMetricsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidMetrics.list\nmethod.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer", - "location": "query" - }, - "accountId": { - "type": "string", - "required": true, - "location": "path", - "format": "int64", - "description": "Account ID of the buyer." - }, - "filterSetId": { - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true - } - } - } - } - }, - "impressionMetrics": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListImpressionMetricsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "parameters": { - "filterSetId": { - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListImpressionMetricsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.impressionMetrics.list\nmethod.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/impressionMetrics", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/impressionMetrics", - "id": "adexchangebuyer2.accounts.filterSets.impressionMetrics.list", - "description": "Lists all metrics that are measured in terms of number of impressions." - } - } - }, - "bidResponseErrors": { - "methods": { - "list": { - "description": "List all errors that occurred in bid responses, with the number of bid\nresponses affected for each reason.", - "response": { - "$ref": "ListBidResponseErrorsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default." - }, - "accountId": { - "location": "path", - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true - }, - "filterSetId": { - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponseErrorsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponseErrors.list\nmethod.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponseErrors", - "id": "adexchangebuyer2.accounts.filterSets.bidResponseErrors.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponseErrors" - } - } - }, - "bidResponsesWithoutBids": { - "methods": { - "list": { - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "filterSetId": { - "format": "int64", - "description": "The ID of the filter set to apply.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListBidResponsesWithoutBidsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.bidResponsesWithoutBids.list\nmethod.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponsesWithoutBids", - "id": "adexchangebuyer2.accounts.filterSets.bidResponsesWithoutBids.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/bidResponsesWithoutBids", - "description": "List all reasons for which bid responses were considered to have no\napplicable bids, with the number of bid responses affected for each reason.", - "response": { - "$ref": "ListBidResponsesWithoutBidsResponse" - }, - "httpMethod": "GET", - "parameterOrder": [ - "accountId", - "filterSetId" - ] - } - } - }, - "filteredBidRequests": { - "methods": { - "list": { - "response": { - "$ref": "ListFilteredBidRequestsResponse" - }, - "parameterOrder": [ - "accountId", - "filterSetId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/adexchange.buyer" - ], - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. The server may return fewer results than requested.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer" - }, - "accountId": { - "format": "int64", - "description": "Account ID of the buyer.", - "type": "string", - "required": true, - "location": "path" - }, - "filterSetId": { - "type": "string", - "required": true, - "location": "path", - "format": "int64", - "description": "The ID of the filter set to apply." - }, - "pageToken": { - "description": "A token identifying a page of results the server should return.\nTypically, this is the value of\nListFilteredBidRequestsResponse.nextPageToken\nreturned from the previous call to the\naccounts.filterSets.filteredBidRequests.list\nmethod.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBidRequests", - "id": "adexchangebuyer2.accounts.filterSets.filteredBidRequests.list", - "path": "v2beta1/accounts/{accountId}/filterSets/{filterSetId}/filteredBidRequests", - "description": "List all reasons that caused a bid request not to be sent for an\nimpression, with the number of bid requests not sent for each reason." - } - } - } - } - } - } - } - }, - "parameters": { - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Pretty-print response." - }, - "bearer_token": { - "type": "string", - "location": "query", - "description": "OAuth bearer token." - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - } - }, - "version": "v2beta1", - "baseUrl": "https://adexchangebuyer.googleapis.com/", - "kind": "discovery#restDescription", - "description": "Accesses the latest features for managing Ad Exchange accounts, Real-Time Bidding configurations and auction metrics, and Marketplace programmatic deals.", - "servicePath": "", - "basePath": "", - "revision": "20170815", - "documentationLink": "https://developers.google.com/ad-exchange/buyer-rest/reference/rest/", - "id": "adexchangebuyer2:v2beta1", - "discoveryVersion": "v1", - "version_module": true + "protocol": "rest" } diff --git a/vendor/google.golang.org/api/adexperiencereport/v1/adexperiencereport-api.json b/vendor/google.golang.org/api/adexperiencereport/v1/adexperiencereport-api.json index ecedbd9..b123096 100644 --- a/vendor/google.golang.org/api/adexperiencereport/v1/adexperiencereport-api.json +++ b/vendor/google.golang.org/api/adexperiencereport/v1/adexperiencereport-api.json @@ -1,14 +1,4 @@ { - "canonicalName": "Ad Experience Report", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/xapi.zoo": { - "description": "Test scope for access to the Zoo service" - } - } - } - }, "rootUrl": "https://adexperiencereport.googleapis.com/", "ownerDomain": "google.com", "name": "adexperiencereport", @@ -19,63 +9,53 @@ "sites": { "methods": { "get": { - "id": "adexperiencereport.sites.get", - "path": "v1/{+name}", - "description": "Gets a summary of the ad experience rating of a site.", - "response": { - "$ref": "SiteSummaryResponse" - }, + "httpMethod": "GET", "parameterOrder": [ "name" ], - "httpMethod": "GET", - "parameters": { - "name": { - "pattern": "^sites/[^/]+$", - "location": "path", - "description": "The required site name. It should be the site property whose ad experiences\nmay have been reviewed, and it should be URL-encoded. For example,\nsites/https%3A%2F%2Fwww.google.com. The server will return an error of\nBAD_REQUEST if this field is not filled in. Note that if the site property\nis not yet verified in Search Console, the reportUrl field returned by the\nAPI will lead to the verification page, prompting the user to go through\nthat process before they can gain access to the Ad Experience Report.", - "type": "string", - "required": true - } + "response": { + "$ref": "SiteSummaryResponse" }, "scopes": [ "https://www.googleapis.com/auth/xapi.zoo" ], - "flatPath": "v1/sites/{sitesId}" + "parameters": { + "name": { + "description": "The required site name. It should be the site property whose ad experiences\nmay have been reviewed, and it should be URL-encoded. For example,\nsites/https%3A%2F%2Fwww.google.com. The server will return an error of\nBAD_REQUEST if this field is not filled in. Note that if the site property\nis not yet verified in Search Console, the reportUrl field returned by the\nAPI will lead to the verification page, prompting the user to go through\nthat process before they can gain access to the Ad Experience Report.", + "type": "string", + "required": true, + "pattern": "^sites/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/sites/{sitesId}", + "path": "v1/{+name}", + "id": "adexperiencereport.sites.get", + "description": "Gets a summary of the ad experience rating of a site." } } }, "violatingSites": { "methods": { "list": { + "description": "Lists sites with Ad Experience Report statuses of \"Failing\" or \"Warning\".", "response": { "$ref": "ViolatingSitesResponse" }, "parameterOrder": [], "httpMethod": "GET", - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/xapi.zoo" ], + "parameters": {}, "flatPath": "v1/violatingSites", "id": "adexperiencereport.violatingSites.list", - "path": "v1/violatingSites", - "description": "Lists sites with Ad Experience Report statuses of \"Failing\" or \"Warning\"." + "path": "v1/violatingSites" } } } }, "parameters": { - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, "upload_protocol": { "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", @@ -87,40 +67,35 @@ "default": "true", "type": "boolean" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "callback": { "location": "query", - "description": "JSONP", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, "$.xgafv": { - "enum": [ - "1", - "2" - ], "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], - "location": "query" + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -129,7 +104,12 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] }, "key": { "location": "query", @@ -137,27 +117,37 @@ "type": "string" }, "access_token": { - "location": "query", "description": "OAuth access token.", - "type": "string" + "type": "string", + "location": "query" }, "quotaUser": { - "location": "query", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" + "type": "string", + "location": "query" }, "pp": { "location": "query", "description": "Pretty-print response.", "default": "true", "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" } }, "version": "v1", "baseUrl": "https://adexperiencereport.googleapis.com/", + "kind": "discovery#restDescription", "servicePath": "", "description": "View Ad Experience Report data, and get a list of sites that have a significant number of annoying ads.", - "kind": "discovery#restDescription", "basePath": "", "revision": "20170819", "documentationLink": "https://developers.google.com/ad-experience-report/", @@ -165,73 +155,33 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "ViolatingSitesResponse": { - "properties": { - "violatingSites": { - "description": "A list of summaries of violating sites.", - "items": { - "$ref": "SiteSummaryResponse" - }, - "type": "array" - } - }, - "id": "ViolatingSitesResponse", - "description": "Response message for ListViolatingSites.", - "type": "object" - }, - "SiteSummaryResponse": { - "description": "Response message for GetSiteSummary.", - "type": "object", - "properties": { - "mobileSummary": { - "$ref": "PlatformSummary", - "description": "Summary for the mobile review of the site." - }, - "reviewedSite": { - "description": "The name of the site reviewed.", - "type": "string" - }, - "desktopSummary": { - "description": "Summary for the desktop review of the site.", - "$ref": "PlatformSummary" - } - }, - "id": "SiteSummaryResponse" - }, "PlatformSummary": { "description": "Summary of the ad experience rating of a site for a specific platform.", "type": "object", "properties": { - "region": { - "description": "The assigned regions for the site and platform.", - "items": { - "enum": [ - "REGION_UNKNOWN", - "REGION_A", - "REGION_B" - ], - "type": "string" - }, - "type": "array", - "enumDescriptions": [ - "Ad standard not yet defined for your region.", - "Region A.", - "Region B." - ] - }, "enforcementTime": { "format": "google-datetime", "description": "The date on which ad filtering begins.", "type": "string" }, - "filterStatus": { - "enum": [ - "UNKNOWN", - "ON", - "OFF", - "PAUSED", - "PENDING" + "region": { + "enumDescriptions": [ + "Ad standard not yet defined for your region.", + "Region A.", + "Region B." ], + "description": "The assigned regions for the site and platform.", + "items": { + "type": "string", + "enum": [ + "REGION_UNKNOWN", + "REGION_A", + "REGION_B" + ] + }, + "type": "array" + }, + "filterStatus": { "description": "The ad filtering status of the site.", "type": "string", "enumDescriptions": [ @@ -240,6 +190,13 @@ "Ad filtering is off.", "Ad filtering is paused.", "Ad filtering is pending." + ], + "enum": [ + "UNKNOWN", + "ON", + "OFF", + "PAUSED", + "PENDING" ] }, "underReview": { @@ -287,11 +244,54 @@ } }, "id": "PlatformSummary" + }, + "ViolatingSitesResponse": { + "description": "Response message for ListViolatingSites.", + "type": "object", + "properties": { + "violatingSites": { + "description": "A list of summaries of violating sites.", + "items": { + "$ref": "SiteSummaryResponse" + }, + "type": "array" + } + }, + "id": "ViolatingSitesResponse" + }, + "SiteSummaryResponse": { + "description": "Response message for GetSiteSummary.", + "type": "object", + "properties": { + "reviewedSite": { + "description": "The name of the site reviewed.", + "type": "string" + }, + "desktopSummary": { + "description": "Summary for the desktop review of the site.", + "$ref": "PlatformSummary" + }, + "mobileSummary": { + "description": "Summary for the mobile review of the site.", + "$ref": "PlatformSummary" + } + }, + "id": "SiteSummaryResponse" } }, + "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, - "protocol": "rest" + "canonicalName": "Ad Experience Report", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/xapi.zoo": { + "description": "Test scope for access to the Zoo service" + } + } + } + } } diff --git a/vendor/google.golang.org/api/analyticsreporting/v4/analyticsreporting-api.json b/vendor/google.golang.org/api/analyticsreporting/v4/analyticsreporting-api.json index f64aaa8..0924945 100644 --- a/vendor/google.golang.org/api/analyticsreporting/v4/analyticsreporting-api.json +++ b/vendor/google.golang.org/api/analyticsreporting/v4/analyticsreporting-api.json @@ -1,52 +1,286 @@ { + "title": "Google Analytics Reporting API", + "ownerName": "Google", + "resources": { + "reports": { + "methods": { + "batchGet": { + "request": { + "$ref": "GetReportsRequest" + }, + "description": "Returns the Analytics data.", + "response": { + "$ref": "GetReportsResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/analytics", + "https://www.googleapis.com/auth/analytics.readonly" + ], + "parameters": {}, + "flatPath": "v4/reports:batchGet", + "id": "analyticsreporting.reports.batchGet", + "path": "v4/reports:batchGet" + } + } + } + }, + "parameters": { + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + } + }, + "version": "v4", + "baseUrl": "https://analyticsreporting.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Accesses Analytics report data.", + "servicePath": "", + "basePath": "", "id": "analyticsreporting:v4", "documentationLink": "https://developers.google.com/analytics/devguides/reporting/core/v4/", "revision": "20170705", "discoveryVersion": "v1", "version_module": "True", "schemas": { + "DimensionFilterClause": { + "id": "DimensionFilterClause", + "description": "A group of dimension filters. Set the operator value to specify how\nthe filters are logically combined.", + "type": "object", + "properties": { + "filters": { + "description": "The repeated set of filters. They are logically combined based on the\noperator specified.", + "items": { + "$ref": "DimensionFilter" + }, + "type": "array" + }, + "operator": { + "enumDescriptions": [ + "Unspecified operator. It is treated as an `OR`.", + "The logical `OR` operator.", + "The logical `AND` operator." + ], + "enum": [ + "OPERATOR_UNSPECIFIED", + "OR", + "AND" + ], + "description": "The operator for combining multiple dimension filters. If unspecified, it\nis treated as an `OR`.", + "type": "string" + } + } + }, + "GetReportsResponse": { + "description": "The main response class which holds the reports from the Reporting API\n`batchGet` call.", + "type": "object", + "properties": { + "reports": { + "description": "Responses corresponding to each of the request.", + "items": { + "$ref": "Report" + }, + "type": "array" + } + }, + "id": "GetReportsResponse" + }, + "SequenceSegment": { + "description": "Sequence conditions consist of one or more steps, where each step is defined\nby one or more dimension/metric conditions. Multiple steps can be combined\nwith special sequence operators.", + "type": "object", + "properties": { + "segmentSequenceSteps": { + "description": "The list of steps in the sequence.", + "items": { + "$ref": "SegmentSequenceStep" + }, + "type": "array" + }, + "firstStepShouldMatchFirstHit": { + "description": "If set, first step condition must match the first hit of the visitor (in\nthe date range).", + "type": "boolean" + } + }, + "id": "SequenceSegment" + }, + "SegmentMetricFilter": { + "description": "Metric filter to be used in a segment filter clause.", + "type": "object", + "properties": { + "metricName": { + "description": "The metric that will be filtered on. A `metricFilter` must contain a\nmetric name.", + "type": "string" + }, + "scope": { + "type": "string", + "enumDescriptions": [ + "If the scope is unspecified, it defaults to the condition scope,\n`USER` or `SESSION` depending on if the segment is trying to choose\nusers or sessions.", + "Product scope.", + "Hit scope.", + "Session scope.", + "User scope." + ], + "enum": [ + "UNSPECIFIED_SCOPE", + "PRODUCT", + "HIT", + "SESSION", + "USER" + ], + "description": "Scope for a metric defines the level at which that metric is defined. The\nspecified metric scope must be equal to or greater than its primary scope\nas defined in the data model. The primary scope is defined by if the\nsegment is selecting users or sessions." + }, + "maxComparisonValue": { + "type": "string", + "description": "Max comparison value is only used for `BETWEEN` operator." + }, + "comparisonValue": { + "description": "The value to compare against. If the operator is `BETWEEN`, this value is\ntreated as minimum comparison value.", + "type": "string" + }, + "operator": { + "enumDescriptions": [ + "Unspecified operator is treated as `LESS_THAN` operator.", + "Checks if the metric value is less than comparison value.", + "Checks if the metric value is greater than comparison value.", + "Equals operator.", + "For between operator, both the minimum and maximum are exclusive.\nWe will use `LT` and `GT` for comparison." + ], + "enum": [ + "UNSPECIFIED_OPERATOR", + "LESS_THAN", + "GREATER_THAN", + "EQUAL", + "BETWEEN" + ], + "description": "Specifies is the operation to perform to compare the metric. The default\nis `EQUAL`.", + "type": "string" + } + }, + "id": "SegmentMetricFilter" + }, "DateRangeValues": { "description": "Used to return a list of metrics for a single DateRange / dimension\ncombination", "type": "object", "properties": { - "values": { - "description": "Each value corresponds to each Metric in the request.", - "items": { - "type": "string" - }, - "type": "array" - }, "pivotValueRegions": { "description": "The values of each pivot region.", "items": { "$ref": "PivotValueRegion" }, "type": "array" + }, + "values": { + "description": "Each value corresponds to each Metric in the request.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "DateRangeValues" }, "CohortGroup": { - "description": "Defines a cohort group.\nFor example:\n\n \"cohortGroup\": {\n \"cohorts\": [{\n \"name\": \"cohort 1\",\n \"type\": \"FIRST_VISIT_DATE\",\n \"dateRange\": { \"startDate\": \"2015-08-01\", \"endDate\": \"2015-08-01\" }\n },{\n \"name\": \"cohort 2\"\n \"type\": \"FIRST_VISIT_DATE\"\n \"dateRange\": { \"startDate\": \"2015-07-01\", \"endDate\": \"2015-07-01\" }\n }]\n }", "type": "object", "properties": { + "lifetimeValue": { + "description": "Enable Life Time Value (LTV). LTV measures lifetime value for users\nacquired through different channels.\nPlease see:\n[Cohort Analysis](https://support.google.com/analytics/answer/6074676) and\n[Lifetime Value](https://support.google.com/analytics/answer/6182550)\nIf the value of lifetimeValue is false:\n\n- The metric values are similar to the values in the web interface cohort\n report.\n- The cohort definition date ranges must be aligned to the calendar week\n and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in\n the cohort definition should be a Sunday and the `endDate` should be the\n following Saturday, and for `ga:cohortNthMonth`, the `startDate`\n should be the 1st of the month and `endDate` should be the last day\n of the month.\n\nWhen the lifetimeValue is true:\n\n- The metric values will correspond to the values in the web interface\n LifeTime value report.\n- The Lifetime Value report shows you how user value (Revenue) and\n engagement (Appviews, Goal Completions, Sessions, and Session Duration)\n grow during the 90 days after a user is acquired.\n- The metrics are calculated as a cumulative average per user per the time\n increment.\n- The cohort definition date ranges need not be aligned to the calendar\n week and month boundaries.\n- The `viewId` must be an\n [app view ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews)", + "type": "boolean" + }, "cohorts": { "description": "The definition for the cohort.", "items": { "$ref": "Cohort" }, "type": "array" - }, - "lifetimeValue": { - "description": "Enable Life Time Value (LTV). LTV measures lifetime value for users\nacquired through different channels.\nPlease see:\n[Cohort Analysis](https://support.google.com/analytics/answer/6074676) and\n[Lifetime Value](https://support.google.com/analytics/answer/6182550)\nIf the value of lifetimeValue is false:\n\n- The metric values are similar to the values in the web interface cohort\n report.\n- The cohort definition date ranges must be aligned to the calendar week\n and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in\n the cohort definition should be a Sunday and the `endDate` should be the\n following Saturday, and for `ga:cohortNthMonth`, the `startDate`\n should be the 1st of the month and `endDate` should be the last day\n of the month.\n\nWhen the lifetimeValue is true:\n\n- The metric values will correspond to the values in the web interface\n LifeTime value report.\n- The Lifetime Value report shows you how user value (Revenue) and\n engagement (Appviews, Goal Completions, Sessions, and Session Duration)\n grow during the 90 days after a user is acquired.\n- The metrics are calculated as a cumulative average per user per the time\n increment.\n- The cohort definition date ranges need not be aligned to the calendar\n week and month boundaries.\n- The `viewId` must be an\n [app view ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews)", - "type": "boolean" } }, - "id": "CohortGroup" + "id": "CohortGroup", + "description": "Defines a cohort group.\nFor example:\n\n \"cohortGroup\": {\n \"cohorts\": [{\n \"name\": \"cohort 1\",\n \"type\": \"FIRST_VISIT_DATE\",\n \"dateRange\": { \"startDate\": \"2015-08-01\", \"endDate\": \"2015-08-01\" }\n },{\n \"name\": \"cohort 2\"\n \"type\": \"FIRST_VISIT_DATE\"\n \"dateRange\": { \"startDate\": \"2015-07-01\", \"endDate\": \"2015-07-01\" }\n }]\n }" }, "GetReportsRequest": { - "description": "The batch request containing multiple report request.", - "type": "object", "properties": { "reportRequests": { "description": "Requests, each request will have a separate response.\nThere can be a maximum of 5 requests. All requests should have the same\n`dateRanges`, `viewId`, `segments`, `samplingLevel`, and `cohortGroup`.", @@ -56,12 +290,17 @@ "type": "array" } }, - "id": "GetReportsRequest" + "id": "GetReportsRequest", + "description": "The batch request containing multiple report request.", + "type": "object" }, "Pivot": { - "description": "The Pivot describes the pivot section in the request.\nThe Pivot helps rearrange the information in the table for certain reports\nby pivoting your data on a second dimension.", - "type": "object", "properties": { + "startGroup": { + "format": "int32", + "description": "If k metrics were requested, then the response will contain some\ndata-dependent multiple of k columns in the report. E.g., if you pivoted\non the dimension `ga:browser` then you'd get k columns for \"Firefox\", k\ncolumns for \"IE\", k columns for \"Chrome\", etc. The ordering of the groups\nof columns is determined by descending order of \"total\" for the first of\nthe k values. Ties are broken by lexicographic ordering of the first\npivot dimension, then lexicographic ordering of the second pivot\ndimension, and so on. E.g., if the totals for the first value for\nFirefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns\nwould be Chrome, Firefox, IE.\n\nThe following let you choose which of the groups of k columns are\nincluded in the response.", + "type": "integer" + }, "metrics": { "description": "The pivot metrics. Pivot metrics are part of the\nrestriction on total number of metrics allowed in the request.", "items": { @@ -87,22 +326,18 @@ "format": "int32", "description": "Specifies the maximum number of groups to return.\nThe default value is 10, also the maximum value is 1,000.", "type": "integer" - }, - "startGroup": { - "format": "int32", - "description": "If k metrics were requested, then the response will contain some\ndata-dependent multiple of k columns in the report. E.g., if you pivoted\non the dimension `ga:browser` then you'd get k columns for \"Firefox\", k\ncolumns for \"IE\", k columns for \"Chrome\", etc. The ordering of the groups\nof columns is determined by descending order of \"total\" for the first of\nthe k values. Ties are broken by lexicographic ordering of the first\npivot dimension, then lexicographic ordering of the second pivot\ndimension, and so on. E.g., if the totals for the first value for\nFirefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns\nwould be Chrome, Firefox, IE.\n\nThe following let you choose which of the groups of k columns are\nincluded in the response.", - "type": "integer" } }, - "id": "Pivot" + "id": "Pivot", + "description": "The Pivot describes the pivot section in the request.\nThe Pivot helps rearrange the information in the table for certain reports\nby pivoting your data on a second dimension.", + "type": "object" }, "PivotHeaderEntry": { - "description": "The headers for the each of the metric column corresponding to the metrics\nrequested in the pivots section of the response.", "type": "object", "properties": { "metric": { - "$ref": "MetricHeaderEntry", - "description": "The metric header for the metric in the pivot." + "description": "The metric header for the metric in the pivot.", + "$ref": "MetricHeaderEntry" }, "dimensionNames": { "description": "The name of the dimensions in the pivot response.", @@ -119,15 +354,16 @@ "type": "array" } }, - "id": "PivotHeaderEntry" + "id": "PivotHeaderEntry", + "description": "The headers for the each of the metric column corresponding to the metrics\nrequested in the pivots section of the response." }, "SegmentFilter": { "description": "SegmentFilter defines the segment to be either a simple or a sequence\nsegment. A simple segment condition contains dimension and metric conditions\nto select the sessions or users. A sequence segment condition can be used to\nselect users or sessions based on sequential conditions.", "type": "object", "properties": { "sequenceSegment": { - "description": "Sequence conditions consist of one or more steps, where each step is\ndefined by one or more dimension/metric conditions. Multiple steps can\nbe combined with special sequence operators.", - "$ref": "SequenceSegment" + "$ref": "SequenceSegment", + "description": "Sequence conditions consist of one or more steps, where each step is\ndefined by one or more dimension/metric conditions. Multiple steps can\nbe combined with special sequence operators." }, "not": { "description": "If true, match the complement of simple or sequence segment.\nFor example, to match all visits not from \"New York\", we can define the\nsegment as follows:\n\n \"sessionSegment\": {\n \"segmentFilters\": [{\n \"simpleSegment\" :{\n \"orFiltersForSegment\": [{\n \"segmentFilterClauses\":[{\n \"dimensionFilter\": {\n \"dimensionName\": \"ga:city\",\n \"expressions\": [\"New York\"]\n }\n }]\n }]\n },\n \"not\": \"True\"\n }]\n },", @@ -141,7 +377,6 @@ "id": "SegmentFilter" }, "SegmentDefinition": { - "description": "SegmentDefinition defines the segment to be a set of SegmentFilters which\nare combined together with a logical `AND` operation.", "type": "object", "properties": { "segmentFilters": { @@ -152,18 +387,19 @@ "type": "array" } }, - "id": "SegmentDefinition" + "id": "SegmentDefinition", + "description": "SegmentDefinition defines the segment to be a set of SegmentFilters which\nare combined together with a logical `AND` operation." }, "MetricHeaderEntry": { + "id": "MetricHeaderEntry", "description": "Header for the metrics.", "type": "object", "properties": { "name": { - "description": "The name of the header.", - "type": "string" + "type": "string", + "description": "The name of the header." }, "type": { - "type": "string", "enumDescriptions": [ "Metric type is unspecified.", "Integer metric.", @@ -180,10 +416,10 @@ "PERCENT", "TIME" ], - "description": "The type of the metric, for example `INTEGER`." + "description": "The type of the metric, for example `INTEGER`.", + "type": "string" } - }, - "id": "MetricHeaderEntry" + } }, "ReportData": { "description": "The data part of the report.", @@ -199,8 +435,8 @@ "samplesReadCounts": { "description": "If the results are\n[sampled](https://support.google.com/analytics/answer/2637192),\nthis returns the total number of samples read, one entry per date range.\nIf the results are not sampled this field will not be defined. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details.", "items": { - "type": "string", - "format": "int64" + "format": "int64", + "type": "string" }, "type": "array" }, @@ -233,12 +469,12 @@ "type": "array" }, "samplingSpaceSizes": { + "description": "If the results are\n[sampled](https://support.google.com/analytics/answer/2637192),\nthis returns the total number of\nsamples present, one entry per date range. If the results are not sampled\nthis field will not be defined. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details.", "items": { "format": "int64", "type": "string" }, - "type": "array", - "description": "If the results are\n[sampled](https://support.google.com/analytics/answer/2637192),\nthis returns the total number of\nsamples present, one entry per date range. If the results are not sampled\nthis field will not be defined. See\n[developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)\nfor details." + "type": "array" }, "minimums": { "description": "Minimum and maximum values seen over all matching rows. These are both\nempty when `hideValueRanges` in the request is false, or when\nrowCount is zero.", @@ -254,6 +490,8 @@ "type": "object", "properties": { "operator": { + "description": "How to match the dimension to the expression. The default is REGEXP.", + "type": "string", "enumDescriptions": [ "If the match type is unspecified, it is treated as a `REGEXP`.", "The match expression is treated as a regular expression. All match types\nare not treated as regular expressions.", @@ -277,9 +515,7 @@ "NUMERIC_GREATER_THAN", "NUMERIC_LESS_THAN", "IN_LIST" - ], - "description": "How to match the dimension to the expression. The default is REGEXP.", - "type": "string" + ] }, "dimensionName": { "type": "string", @@ -305,6 +541,8 @@ "description": "Dimension filter specifies the filtering options on a dimension." }, "SegmentDimensionFilter": { + "description": "Dimension filter specifies the filtering options on a dimension.", + "type": "object", "properties": { "maxComparisonValue": { "description": "Maximum comparison values for `BETWEEN` match type.", @@ -315,18 +553,6 @@ "type": "string" }, "operator": { - "enum": [ - "OPERATOR_UNSPECIFIED", - "REGEXP", - "BEGINS_WITH", - "ENDS_WITH", - "PARTIAL", - "EXACT", - "IN_LIST", - "NUMERIC_LESS_THAN", - "NUMERIC_GREATER_THAN", - "NUMERIC_BETWEEN" - ], "description": "The operator to use to match the dimension with the expressions.", "type": "string", "enumDescriptions": [ @@ -340,6 +566,18 @@ "Integer comparison filters.\ncase sensitivity is ignored for these and the expression\nis assumed to be a string representing an integer.\nFailure conditions:\n\n- if expression is not a valid int64, the client should expect\n an error.\n- input dimensions that are not valid int64 values will never match the\n filter.\n\nChecks if the dimension is numerically less than the match expression.", "Checks if the dimension is numerically greater than the match\nexpression.", "Checks if the dimension is numerically between the minimum and maximum\nof the match expression, boundaries excluded." + ], + "enum": [ + "OPERATOR_UNSPECIFIED", + "REGEXP", + "BEGINS_WITH", + "ENDS_WITH", + "PARTIAL", + "EXACT", + "IN_LIST", + "NUMERIC_LESS_THAN", + "NUMERIC_GREATER_THAN", + "NUMERIC_BETWEEN" ] }, "expressions": { @@ -358,15 +596,36 @@ "type": "string" } }, - "id": "SegmentDimensionFilter", - "description": "Dimension filter specifies the filtering options on a dimension.", - "type": "object" + "id": "SegmentDimensionFilter" }, "OrderBy": { + "id": "OrderBy", "description": "Specifies the sorting options.", "type": "object", "properties": { + "sortOrder": { + "enum": [ + "SORT_ORDER_UNSPECIFIED", + "ASCENDING", + "DESCENDING" + ], + "description": "The sorting order for the field.", + "type": "string", + "enumDescriptions": [ + "If the sort order is unspecified, the default is ascending.", + "Ascending sort. The field will be sorted in an ascending manner.", + "Descending sort. The field will be sorted in a descending manner." + ] + }, "orderType": { + "enumDescriptions": [ + "Unspecified order type will be treated as sort based on value.", + "The sort order is based on the value of the chosen column; looks only at\nthe first date range.", + "The sort order is based on the difference of the values of the chosen\ncolumn between the first two date ranges. Usable only if there are\nexactly two date ranges.", + "The sort order is based on weighted value of the chosen column. If\ncolumn has n/d format, then weighted value of this ratio will\nbe `(n + totals.n)/(d + totals.d)` Usable only for metrics that\nrepresent ratios.", + "Histogram order type is applicable only to dimension columns with\nnon-empty histogram-buckets.", + "If the dimensions are fixed length numbers, ordinary sort would just\nwork fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are\nvariable length numbers." + ], "enum": [ "ORDER_TYPE_UNSPECIFIED", "VALUE", @@ -376,39 +635,15 @@ "DIMENSION_AS_INTEGER" ], "description": "The order type. The default orderType is `VALUE`.", - "type": "string", - "enumDescriptions": [ - "Unspecified order type will be treated as sort based on value.", - "The sort order is based on the value of the chosen column; looks only at\nthe first date range.", - "The sort order is based on the difference of the values of the chosen\ncolumn between the first two date ranges. Usable only if there are\nexactly two date ranges.", - "The sort order is based on weighted value of the chosen column. If\ncolumn has n/d format, then weighted value of this ratio will\nbe `(n + totals.n)/(d + totals.d)` Usable only for metrics that\nrepresent ratios.", - "Histogram order type is applicable only to dimension columns with\nnon-empty histogram-buckets.", - "If the dimensions are fixed length numbers, ordinary sort would just\nwork fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are\nvariable length numbers." - ] + "type": "string" }, "fieldName": { "description": "The field which to sort by. The default sort order is ascending. Example:\n`ga:browser`.\nNote, that you can only specify one field for sort here. For example,\n`ga:browser, ga:city` is not valid.", "type": "string" - }, - "sortOrder": { - "description": "The sorting order for the field.", - "type": "string", - "enumDescriptions": [ - "If the sort order is unspecified, the default is ascending.", - "Ascending sort. The field will be sorted in an ascending manner.", - "Descending sort. The field will be sorted in a descending manner." - ], - "enum": [ - "SORT_ORDER_UNSPECIFIED", - "ASCENDING", - "DESCENDING" - ] } - }, - "id": "OrderBy" + } }, "Segment": { - "id": "Segment", "description": "The segment definition, if the report needs to be segmented.\nA Segment is a subset of the Analytics data. For example, of the entire\nset of users, one Segment might be users from a particular country or city.", "type": "object", "properties": { @@ -420,10 +655,10 @@ "description": "The segment ID of a built-in or custom segment, for example `gaid::-3`.", "type": "string" } - } + }, + "id": "Segment" }, "SegmentSequenceStep": { - "type": "object", "properties": { "orFiltersForSegment": { "description": "A sequence is specified with a list of Or grouped filters which are\ncombined with `AND` operator.", @@ -448,15 +683,14 @@ } }, "id": "SegmentSequenceStep", - "description": "A segment sequence definition." + "description": "A segment sequence definition.", + "type": "object" }, "Metric": { - "id": "Metric", "description": "[Metrics](https://support.google.com/analytics/answer/1033861)\nare the quantitative measurements. For example, the metric `ga:users`\nindicates the total number of users for the requested time period.", "type": "object", "properties": { "formattingType": { - "type": "string", "enumDescriptions": [ "Metric type is unspecified.", "Integer metric.", @@ -473,17 +707,19 @@ "PERCENT", "TIME" ], - "description": "Specifies how the metric expression should be formatted, for example\n`INTEGER`." + "description": "Specifies how the metric expression should be formatted, for example\n`INTEGER`.", + "type": "string" }, "alias": { - "description": "An alias for the metric expression is an alternate name for the\nexpression. The alias can be used for filtering and sorting. This field\nis optional and is useful if the expression is not a single metric but\na complex expression which cannot be used in filtering and sorting.\nThe alias is also used in the response column header.", - "type": "string" + "type": "string", + "description": "An alias for the metric expression is an alternate name for the\nexpression. The alias can be used for filtering and sorting. This field\nis optional and is useful if the expression is not a single metric but\na complex expression which cannot be used in filtering and sorting.\nThe alias is also used in the response column header." }, "expression": { "description": "A metric expression in the request. An expression is constructed from one\nor more metrics and numbers. Accepted operators include: Plus (+), Minus\n(-), Negation (Unary -), Divided by (/), Multiplied by (*), Parenthesis,\nPositive cardinal numbers (0-9), can include decimals and is limited to\n1024 characters. Example `ga:totalRefunds/ga:users`, in most cases the\nmetric expression is just a single metric name like `ga:users`.\nAdding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) metrics\nwill result in unexpected results.", "type": "string" } - } + }, + "id": "Metric" }, "PivotValueRegion": { "description": "The metric values in the pivot region.", @@ -508,8 +744,8 @@ "type": "string" }, "data": { - "description": "Response data.", - "$ref": "ReportData" + "$ref": "ReportData", + "description": "Response data." }, "columnHeader": { "$ref": "ColumnHeader", @@ -519,7 +755,6 @@ "id": "Report" }, "PivotHeader": { - "id": "PivotHeader", "description": "The headers for each of the pivot sections defined in the request.", "type": "object", "properties": { @@ -535,11 +770,10 @@ "description": "The total number of groups for this pivot.", "type": "integer" } - } + }, + "id": "PivotHeader" }, "DateRange": { - "description": "A contiguous set of days: startDate, startDate + 1 day, ..., endDate.\nThe start and end dates are specified in\n[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.", - "type": "object", "properties": { "startDate": { "description": "The start date for the query in the format `YYYY-MM-DD`.", @@ -550,73 +784,14 @@ "type": "string" } }, - "id": "DateRange" + "id": "DateRange", + "description": "A contiguous set of days: startDate, startDate + 1 day, ..., endDate.\nThe start and end dates are specified in\n[ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.", + "type": "object" }, "ReportRequest": { - "id": "ReportRequest", "description": "The main request class which specifies the Reporting API request.", "type": "object", "properties": { - "metricFilterClauses": { - "description": "The metric filter clauses. They are logically combined with the `AND`\noperator. Metric filters look at only the first date range and not the\ncomparing date range. Note that filtering on metrics occurs after the\nmetrics are aggregated.", - "items": { - "$ref": "MetricFilterClause" - }, - "type": "array" - }, - "pageSize": { - "format": "int32", - "description": "Page size is for paging and specifies the maximum number of returned rows.\nPage size should be \u003e= 0. A query returns the default of 1,000 rows.\nThe Analytics Core Reporting API returns a maximum of 10,000 rows per\nrequest, no matter how many you ask for. It can also return fewer rows\nthan requested, if there aren't as many dimension segments as you expect.\nFor instance, there are fewer than 300 possible values for `ga:country`,\nso when segmenting only by country, you can't get more than 300 rows,\neven if you set `pageSize` to a higher value.", - "type": "integer" - }, - "hideTotals": { - "description": "If set to true, hides the total of all metrics for all the matching rows,\nfor every date range. The default false and will return the totals.", - "type": "boolean" - }, - "hideValueRanges": { - "description": "If set to true, hides the minimum and maximum across all matching rows.\nThe default is false and the value ranges are returned.", - "type": "boolean" - }, - "filtersExpression": { - "description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters reference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).", - "type": "string" - }, - "cohortGroup": { - "$ref": "CohortGroup", - "description": "Cohort group associated with this request. If there is a cohort group\nin the request the `ga:cohort` dimension must be present.\nEvery [ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `cohortGroup` definition." - }, - "viewId": { - "description": "The Analytics\n[view ID](https://support.google.com/analytics/answer/1009618)\nfrom which to retrieve data. Every [ReportRequest](#ReportRequest)\nwithin a `batchGet` method must contain the same `viewId`.", - "type": "string" - }, - "metrics": { - "description": "The metrics requested.\nRequests must specify at least one metric. Requests can have a\ntotal of 10 metrics.", - "items": { - "$ref": "Metric" - }, - "type": "array" - }, - "dimensionFilterClauses": { - "description": "The dimension filter clauses for filtering Dimension Values. They are\nlogically combined with the `AND` operator. Note that filtering occurs\nbefore any dimensions are aggregated, so that the returned metrics\nrepresent the total for only the relevant dimensions.", - "items": { - "$ref": "DimensionFilterClause" - }, - "type": "array" - }, - "orderBys": { - "description": "Sort order on output rows. To compare two rows, the elements of the\nfollowing are applied in order until a difference is found. All date\nranges in the output get the same row order.", - "items": { - "$ref": "OrderBy" - }, - "type": "array" - }, - "segments": { - "description": "Segment the data returned for the request. A segment definition helps look\nat a subset of the segment request. A request can contain up to four\nsegments. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `segments` definition. Requests\nwith segments must have the `ga:segment` dimension.", - "items": { - "$ref": "Segment" - }, - "type": "array" - }, "samplingLevel": { "enumDescriptions": [ "If the `samplingLevel` field is unspecified the `DEFAULT` sampling level\nis used.", @@ -659,17 +834,84 @@ "type": "array" }, "includeEmptyRows": { - "description": "If set to false, the response does not include rows if all the retrieved\nmetrics are equal to zero. The default is false which will exclude these\nrows.", + "type": "boolean", + "description": "If set to false, the response does not include rows if all the retrieved\nmetrics are equal to zero. The default is false which will exclude these\nrows." + }, + "metricFilterClauses": { + "items": { + "$ref": "MetricFilterClause" + }, + "type": "array", + "description": "The metric filter clauses. They are logically combined with the `AND`\noperator. Metric filters look at only the first date range and not the\ncomparing date range. Note that filtering on metrics occurs after the\nmetrics are aggregated." + }, + "pageSize": { + "format": "int32", + "description": "Page size is for paging and specifies the maximum number of returned rows.\nPage size should be \u003e= 0. A query returns the default of 1,000 rows.\nThe Analytics Core Reporting API returns a maximum of 10,000 rows per\nrequest, no matter how many you ask for. It can also return fewer rows\nthan requested, if there aren't as many dimension segments as you expect.\nFor instance, there are fewer than 300 possible values for `ga:country`,\nso when segmenting only by country, you can't get more than 300 rows,\neven if you set `pageSize` to a higher value.", + "type": "integer" + }, + "hideValueRanges": { + "description": "If set to true, hides the minimum and maximum across all matching rows.\nThe default is false and the value ranges are returned.", "type": "boolean" + }, + "hideTotals": { + "description": "If set to true, hides the total of all metrics for all the matching rows,\nfor every date range. The default false and will return the totals.", + "type": "boolean" + }, + "filtersExpression": { + "description": "Dimension or metric filters that restrict the data returned for your\nrequest. To use the `filtersExpression`, supply a dimension or metric on\nwhich to filter, followed by the filter expression. For example, the\nfollowing expression selects `ga:browser` dimension which starts with\nFirefox; `ga:browser=~^Firefox`. For more information on dimensions\nand metric filters, see\n[Filters reference](https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filters).", + "type": "string" + }, + "cohortGroup": { + "description": "Cohort group associated with this request. If there is a cohort group\nin the request the `ga:cohort` dimension must be present.\nEvery [ReportRequest](#ReportRequest) within a `batchGet` method must\ncontain the same `cohortGroup` definition.", + "$ref": "CohortGroup" + }, + "viewId": { + "description": "The Analytics\n[view ID](https://support.google.com/analytics/answer/1009618)\nfrom which to retrieve data. Every [ReportRequest](#ReportRequest)\nwithin a `batchGet` method must contain the same `viewId`.", + "type": "string" + }, + "metrics": { + "description": "The metrics requested.\nRequests must specify at least one metric. Requests can have a\ntotal of 10 metrics.", + "items": { + "$ref": "Metric" + }, + "type": "array" + }, + "dimensionFilterClauses": { + "items": { + "$ref": "DimensionFilterClause" + }, + "type": "array", + "description": "The dimension filter clauses for filtering Dimension Values. They are\nlogically combined with the `AND` operator. Note that filtering occurs\nbefore any dimensions are aggregated, so that the returned metrics\nrepresent the total for only the relevant dimensions." + }, + "orderBys": { + "items": { + "$ref": "OrderBy" + }, + "type": "array", + "description": "Sort order on output rows. To compare two rows, the elements of the\nfollowing are applied in order until a difference is found. All date\nranges in the output get the same row order." + }, + "segments": { + "description": "Segment the data returned for the request. A segment definition helps look\nat a subset of the segment request. A request can contain up to four\nsegments. Every [ReportRequest](#ReportRequest) within a\n`batchGet` method must contain the same `segments` definition. Requests\nwith segments must have the `ga:segment` dimension.", + "items": { + "$ref": "Segment" + }, + "type": "array" } - } + }, + "id": "ReportRequest" }, "MetricFilter": { - "id": "MetricFilter", "description": "MetricFilter specifies the filter on a metric.", "type": "object", "properties": { "operator": { + "enumDescriptions": [ + "If the operator is not specified, it is treated as `EQUAL`.", + "Should the value of the metric be exactly equal to the comparison value.", + "Should the value of the metric be less than to the comparison value.", + "Should the value of the metric be greater than to the comparison value.", + "Validates if the metric is missing.\nDoesn't take comparisonValue into account." + ], "enum": [ "OPERATOR_UNSPECIFIED", "EQUAL", @@ -678,18 +920,11 @@ "IS_MISSING" ], "description": "Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` the\ncomparisonValue, the default is `EQUAL`. If the operator is\n`IS_MISSING`, checks if the metric is missing and would ignore the\ncomparisonValue.", - "type": "string", - "enumDescriptions": [ - "If the operator is not specified, it is treated as `EQUAL`.", - "Should the value of the metric be exactly equal to the comparison value.", - "Should the value of the metric be less than to the comparison value.", - "Should the value of the metric be greater than to the comparison value.", - "Validates if the metric is missing.\nDoesn't take comparisonValue into account." - ] + "type": "string" }, "not": { - "type": "boolean", - "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\nmetric values will be excluded in the report. The default is false." + "description": "Logical `NOT` operator. If this boolean is set to true, then the matching\nmetric values will be excluded in the report. The default is false.", + "type": "boolean" }, "metricName": { "description": "The metric that will be filtered on. A metricFilter must contain a metric\nname. A metric name can be an alias earlier defined as a metric or it can\nalso be a metric expression.", @@ -699,9 +934,12 @@ "description": "The value to compare against.", "type": "string" } - } + }, + "id": "MetricFilter" }, "Dimension": { + "id": "Dimension", + "description": "[Dimensions](https://support.google.com/analytics/answer/1033861)\nare attributes of your data. For example, the dimension `ga:city`\nindicates the city, for example, \"Paris\" or \"New York\", from which\na session originates.", "type": "object", "properties": { "histogramBuckets": { @@ -716,27 +954,6 @@ "description": "Name of the dimension to fetch, for example `ga:browser`.", "type": "string" } - }, - "id": "Dimension", - "description": "[Dimensions](https://support.google.com/analytics/answer/1033861)\nare attributes of your data. For example, the dimension `ga:city`\nindicates the city, for example, \"Paris\" or \"New York\", from which\na session originates." - }, - "DynamicSegment": { - "id": "DynamicSegment", - "description": "Dynamic segment definition for defining the segment within the request.\nA segment can select users, sessions or both.", - "type": "object", - "properties": { - "sessionSegment": { - "description": "Session Segment to select sessions to include in the segment.", - "$ref": "SegmentDefinition" - }, - "name": { - "description": "The name of the dynamic segment.", - "type": "string" - }, - "userSegment": { - "$ref": "SegmentDefinition", - "description": "User Segment to select users to include in the segment." - } } }, "SimpleSegment": { @@ -753,44 +970,64 @@ }, "id": "SimpleSegment" }, + "DynamicSegment": { + "id": "DynamicSegment", + "description": "Dynamic segment definition for defining the segment within the request.\nA segment can select users, sessions or both.", + "type": "object", + "properties": { + "name": { + "description": "The name of the dynamic segment.", + "type": "string" + }, + "userSegment": { + "$ref": "SegmentDefinition", + "description": "User Segment to select users to include in the segment." + }, + "sessionSegment": { + "$ref": "SegmentDefinition", + "description": "Session Segment to select sessions to include in the segment." + } + } + }, "ColumnHeader": { "description": "Column headers.", "type": "object", "properties": { + "metricHeader": { + "$ref": "MetricHeader", + "description": "Metric headers for the metrics in the response." + }, "dimensions": { "description": "The dimension names in the response.", "items": { "type": "string" }, "type": "array" - }, - "metricHeader": { - "description": "Metric headers for the metrics in the response.", - "$ref": "MetricHeader" } }, "id": "ColumnHeader" }, "SegmentFilterClause": { - "description": "Filter Clause to be used in a segment definition, can be wither a metric or\na dimension filter.", "type": "object", "properties": { - "metricFilter": { - "$ref": "SegmentMetricFilter", - "description": "Metric Filter for the segment definition." - }, "not": { - "type": "boolean", - "description": "Matches the complement (`!`) of the filter." + "description": "Matches the complement (`!`) of the filter.", + "type": "boolean" }, "dimensionFilter": { "$ref": "SegmentDimensionFilter", "description": "Dimension Filter for the segment definition." + }, + "metricFilter": { + "description": "Metric Filter for the segment definition.", + "$ref": "SegmentMetricFilter" } }, - "id": "SegmentFilterClause" + "id": "SegmentFilterClause", + "description": "Filter Clause to be used in a segment definition, can be wither a metric or\na dimension filter." }, "MetricFilterClause": { + "id": "MetricFilterClause", "description": "Represents a group of metric filters.\nSet the operator value to specify how the filters are logically combined.", "type": "object", "properties": { @@ -802,28 +1039,28 @@ "type": "array" }, "operator": { + "enumDescriptions": [ + "Unspecified operator. It is treated as an `OR`.", + "The logical `OR` operator.", + "The logical `AND` operator." + ], "enum": [ "OPERATOR_UNSPECIFIED", "OR", "AND" ], "description": "The operator for combining multiple metric filters. If unspecified, it is\ntreated as an `OR`.", - "type": "string", - "enumDescriptions": [ - "Unspecified operator. It is treated as an `OR`.", - "The logical `OR` operator.", - "The logical `AND` operator." - ] + "type": "string" } - }, - "id": "MetricFilterClause" + } }, "Cohort": { - "id": "Cohort", "description": "Defines a cohort. A cohort is a group of users who share a common\ncharacteristic. For example, all users with the same acquisition date\nbelong to the same cohort.", "type": "object", "properties": { "type": { + "description": "Type of the cohort. The only supported type as of now is\n`FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated\nas `FIRST_VISIT_DATE` type cohort.", + "type": "string", "enumDescriptions": [ "If unspecified it's treated as `FIRST_VISIT_DATE`.", "Cohorts that are selected based on first visit date." @@ -831,19 +1068,18 @@ "enum": [ "UNSPECIFIED_COHORT_TYPE", "FIRST_VISIT_DATE" - ], - "description": "Type of the cohort. The only supported type as of now is\n`FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated\nas `FIRST_VISIT_DATE` type cohort.", - "type": "string" + ] }, "dateRange": { - "$ref": "DateRange", - "description": "This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users\nwhose first visit date is between start date and end date defined in the\nDateRange. The date ranges should be aligned for cohort requests. If the\nrequest contains `ga:cohortNthDay` it should be exactly one day long,\nif `ga:cohortNthWeek` it should be aligned to the week boundary (starting\nat Sunday and ending Saturday), and for `ga:cohortNthMonth` the date range\nshould be aligned to the month (starting at the first and ending on the\nlast day of the month).\nFor LTV requests there are no such restrictions.\nYou do not need to supply a date range for the\n`reportsRequest.dateRanges` field." + "description": "This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users\nwhose first visit date is between start date and end date defined in the\nDateRange. The date ranges should be aligned for cohort requests. If the\nrequest contains `ga:cohortNthDay` it should be exactly one day long,\nif `ga:cohortNthWeek` it should be aligned to the week boundary (starting\nat Sunday and ending Saturday), and for `ga:cohortNthMonth` the date range\nshould be aligned to the month (starting at the first and ending on the\nlast day of the month).\nFor LTV requests there are no such restrictions.\nYou do not need to supply a date range for the\n`reportsRequest.dateRanges` field.", + "$ref": "DateRange" }, "name": { "description": "A unique name for the cohort. If not defined name will be auto-generated\nwith values cohort_[1234...].", "type": "string" } - } + }, + "id": "Cohort" }, "ReportRow": { "description": "A row in the report.", @@ -857,11 +1093,11 @@ "type": "array" }, "dimensions": { - "description": "List of requested dimensions.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "List of requested dimensions." } }, "id": "ReportRow" @@ -871,157 +1107,42 @@ "type": "object", "properties": { "segmentFilterClauses": { + "description": "List of segment filters to be combined with a `OR` operator.", "items": { "$ref": "SegmentFilterClause" }, - "type": "array", - "description": "List of segment filters to be combined with a `OR` operator." + "type": "array" } }, "id": "OrFiltersForSegment" }, "MetricHeader": { + "description": "The headers for the metrics.", + "type": "object", "properties": { - "pivotHeaders": { - "description": "Headers for the pivots in the response.", - "items": { - "$ref": "PivotHeader" - }, - "type": "array" - }, "metricHeaderEntries": { "description": "Headers for the metrics in the response.", "items": { "$ref": "MetricHeaderEntry" }, "type": "array" - } - }, - "id": "MetricHeader", - "description": "The headers for the metrics.", - "type": "object" - }, - "DimensionFilterClause": { - "id": "DimensionFilterClause", - "description": "A group of dimension filters. Set the operator value to specify how\nthe filters are logically combined.", - "type": "object", - "properties": { - "filters": { - "description": "The repeated set of filters. They are logically combined based on the\noperator specified.", - "items": { - "$ref": "DimensionFilter" - }, - "type": "array" }, - "operator": { - "description": "The operator for combining multiple dimension filters. If unspecified, it\nis treated as an `OR`.", - "type": "string", - "enumDescriptions": [ - "Unspecified operator. It is treated as an `OR`.", - "The logical `OR` operator.", - "The logical `AND` operator." - ], - "enum": [ - "OPERATOR_UNSPECIFIED", - "OR", - "AND" - ] - } - } - }, - "GetReportsResponse": { - "description": "The main response class which holds the reports from the Reporting API\n`batchGet` call.", - "type": "object", - "properties": { - "reports": { - "description": "Responses corresponding to each of the request.", + "pivotHeaders": { + "description": "Headers for the pivots in the response.", "items": { - "$ref": "Report" + "$ref": "PivotHeader" }, "type": "array" } }, - "id": "GetReportsResponse" - }, - "SequenceSegment": { - "type": "object", - "properties": { - "segmentSequenceSteps": { - "description": "The list of steps in the sequence.", - "items": { - "$ref": "SegmentSequenceStep" - }, - "type": "array" - }, - "firstStepShouldMatchFirstHit": { - "description": "If set, first step condition must match the first hit of the visitor (in\nthe date range).", - "type": "boolean" - } - }, - "id": "SequenceSegment", - "description": "Sequence conditions consist of one or more steps, where each step is defined\nby one or more dimension/metric conditions. Multiple steps can be combined\nwith special sequence operators." - }, - "SegmentMetricFilter": { - "type": "object", - "properties": { - "metricName": { - "type": "string", - "description": "The metric that will be filtered on. A `metricFilter` must contain a\nmetric name." - }, - "scope": { - "enumDescriptions": [ - "If the scope is unspecified, it defaults to the condition scope,\n`USER` or `SESSION` depending on if the segment is trying to choose\nusers or sessions.", - "Product scope.", - "Hit scope.", - "Session scope.", - "User scope." - ], - "enum": [ - "UNSPECIFIED_SCOPE", - "PRODUCT", - "HIT", - "SESSION", - "USER" - ], - "description": "Scope for a metric defines the level at which that metric is defined. The\nspecified metric scope must be equal to or greater than its primary scope\nas defined in the data model. The primary scope is defined by if the\nsegment is selecting users or sessions.", - "type": "string" - }, - "maxComparisonValue": { - "description": "Max comparison value is only used for `BETWEEN` operator.", - "type": "string" - }, - "comparisonValue": { - "description": "The value to compare against. If the operator is `BETWEEN`, this value is\ntreated as minimum comparison value.", - "type": "string" - }, - "operator": { - "enumDescriptions": [ - "Unspecified operator is treated as `LESS_THAN` operator.", - "Checks if the metric value is less than comparison value.", - "Checks if the metric value is greater than comparison value.", - "Equals operator.", - "For between operator, both the minimum and maximum are exclusive.\nWe will use `LT` and `GT` for comparison." - ], - "enum": [ - "UNSPECIFIED_OPERATOR", - "LESS_THAN", - "GREATER_THAN", - "EQUAL", - "BETWEEN" - ], - "description": "Specifies is the operation to perform to compare the metric. The default\nis `EQUAL`.", - "type": "string" - } - }, - "id": "SegmentMetricFilter", - "description": "Metric filter to be used in a segment filter clause." + "id": "MetricHeader" } }, + "protocol": "rest", "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, - "protocol": "rest", "canonicalName": "AnalyticsReporting", "auth": { "oauth2": { @@ -1038,126 +1159,5 @@ "rootUrl": "https://analyticsreporting.googleapis.com/", "ownerDomain": "google.com", "name": "analyticsreporting", - "batchPath": "batch", - "title": "Google Analytics Reporting API", - "ownerName": "Google", - "resources": { - "reports": { - "methods": { - "batchGet": { - "response": { - "$ref": "GetReportsResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/analytics", - "https://www.googleapis.com/auth/analytics.readonly" - ], - "flatPath": "v4/reports:batchGet", - "id": "analyticsreporting.reports.batchGet", - "path": "v4/reports:batchGet", - "description": "Returns the Analytics data.", - "request": { - "$ref": "GetReportsRequest" - } - } - } - } - }, - "parameters": { - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "type": "string", - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "type": "string", - "location": "query", - "description": "OAuth 2.0 token for the current user." - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Returns response with indentations and line breaks." - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "type": "string", - "location": "query", - "description": "Selector specifying which fields to include in a partial response." - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - } - }, - "version": "v4", - "baseUrl": "https://analyticsreporting.googleapis.com/", - "servicePath": "", - "description": "Accesses Analytics report data.", - "kind": "discovery#restDescription", - "basePath": "" + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-api.json b/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-api.json new file mode 100644 index 0000000..4e8659a --- /dev/null +++ b/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-api.json @@ -0,0 +1,1045 @@ +{ + "ownerDomain": "google.com", + "name": "androiddeviceprovisioning", + "batchPath": "batch", + "revision": "20170825", + "documentationLink": "https://developers.google.com/zero-touch/", + "id": "androiddeviceprovisioning:v1", + "title": "Android Device Provisioning Partner API", + "ownerName": "Google", + "discoveryVersion": "v1", + "version_module": true, + "resources": { + "operations": { + "methods": { + "get": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the operation resource.", + "required": true, + "type": "string", + "pattern": "^operations/.+$", + "location": "path" + } + }, + "flatPath": "v1/operations/{operationsId}", + "path": "v1/{+name}", + "id": "androiddeviceprovisioning.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." + } + } + }, + "partners": { + "resources": { + "devices": { + "methods": { + "claim": { + "response": { + "$ref": "ClaimDeviceResponse" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "POST", + "parameters": { + "partnerId": { + "description": "Id of the partner.", + "pattern": "^[^/]+$", + "format": "int64", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/partners/{partnersId}/devices:claim", + "path": "v1/partners/{+partnerId}/devices:claim", + "id": "androiddeviceprovisioning.partners.devices.claim", + "description": "Claim the device identified by device identifier.", + "request": { + "$ref": "ClaimDeviceRequest" + } + }, + "claimAsync": { + "request": { + "$ref": "ClaimDevicesRequest" + }, + "description": "Claim devices asynchronously", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "POST", + "parameters": { + "partnerId": { + "location": "path", + "description": "partner id.", + "pattern": "^[^/]+$", + "format": "int64", + "type": "string", + "required": true + } + }, + "flatPath": "v1/partners/{partnersId}/devices:claimAsync", + "path": "v1/partners/{+partnerId}/devices:claimAsync", + "id": "androiddeviceprovisioning.partners.devices.claimAsync" + }, + "findByIdentifier": { + "request": { + "$ref": "FindDevicesByDeviceIdentifierRequest" + }, + "description": "Find devices by device identifier.", + "httpMethod": "POST", + "parameterOrder": [ + "partnerId" + ], + "response": { + "$ref": "FindDevicesByDeviceIdentifierResponse" + }, + "parameters": { + "partnerId": { + "description": "id of the partner.", + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string", + "location": "path" + } + }, + "flatPath": "v1/partners/{partnersId}/devices:findByIdentifier", + "id": "androiddeviceprovisioning.partners.devices.findByIdentifier", + "path": "v1/partners/{+partnerId}/devices:findByIdentifier" + }, + "unclaimAsync": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "POST", + "parameters": { + "partnerId": { + "location": "path", + "description": "partner id.", + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string" + } + }, + "flatPath": "v1/partners/{partnersId}/devices:unclaimAsync", + "path": "v1/partners/{+partnerId}/devices:unclaimAsync", + "id": "androiddeviceprovisioning.partners.devices.unclaimAsync", + "description": "Unclaim devices asynchronously", + "request": { + "$ref": "UnclaimDevicesRequest" + } + }, + "metadata": { + "id": "androiddeviceprovisioning.partners.devices.metadata", + "path": "v1/partners/{+metadataOwnerId}/devices/{+deviceId}/metadata", + "request": { + "$ref": "UpdateDeviceMetadataRequest" + }, + "description": "Update the metadata", + "httpMethod": "POST", + "parameterOrder": [ + "metadataOwnerId", + "deviceId" + ], + "response": { + "$ref": "DeviceMetadata" + }, + "parameters": { + "metadataOwnerId": { + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string", + "location": "path", + "description": "The owner of the newly set metadata. Should be partner id itself." + }, + "deviceId": { + "description": "id of the partner.", + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string", + "location": "path" + } + }, + "flatPath": "v1/partners/{partnersId}/devices/{devicesId}/metadata" + }, + "updateMetadataAsync": { + "description": "Set metadata in batch asynchronously.", + "request": { + "$ref": "UpdateDeviceMetadataInBatchRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "POST", + "parameters": { + "partnerId": { + "description": "partner id.", + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string", + "location": "path" + } + }, + "flatPath": "v1/partners/{partnersId}/devices:updateMetadataAsync", + "path": "v1/partners/{+partnerId}/devices:updateMetadataAsync", + "id": "androiddeviceprovisioning.partners.devices.updateMetadataAsync" + }, + "get": { + "flatPath": "v1/partners/{partnersId}/devices/{devicesId}", + "path": "v1/{+name}", + "id": "androiddeviceprovisioning.partners.devices.get", + "description": "Get a device", + "response": { + "$ref": "Device" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "resource name in 'partners/[PARTNER_ID]/devices/[DEVICE_ID]'.", + "required": true, + "type": "string", + "pattern": "^partners/[^/]+/devices/[^/]+$", + "location": "path" + } + } + }, + "unclaim": { + "path": "v1/partners/{+partnerId}/devices:unclaim", + "id": "androiddeviceprovisioning.partners.devices.unclaim", + "description": "Unclaim the device identified by device_id or identifier.", + "request": { + "$ref": "UnclaimDeviceRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "POST", + "parameters": { + "partnerId": { + "format": "int64", + "required": true, + "type": "string", + "location": "path", + "description": "Id of the partner.", + "pattern": "^[^/]+$" + } + }, + "flatPath": "v1/partners/{partnersId}/devices:unclaim" + }, + "findByOwner": { + "flatPath": "v1/partners/{partnersId}/devices:findByOwner", + "id": "androiddeviceprovisioning.partners.devices.findByOwner", + "path": "v1/partners/{+partnerId}/devices:findByOwner", + "request": { + "$ref": "FindDevicesByOwnerRequest" + }, + "description": "Find devices by ownership.", + "httpMethod": "POST", + "parameterOrder": [ + "partnerId" + ], + "response": { + "$ref": "FindDevicesByOwnerResponse" + }, + "parameters": { + "partnerId": { + "format": "int64", + "required": true, + "type": "string", + "location": "path", + "description": "id of the partner.", + "pattern": "^[^/]+$" + } + } + } + } + }, + "customers": { + "methods": { + "list": { + "description": "List all the customers that has delegates some role to this customer.", + "response": { + "$ref": "ListCustomersResponse" + }, + "parameterOrder": [ + "partnerId" + ], + "httpMethod": "GET", + "parameters": { + "partnerId": { + "description": "the id of the partner.", + "pattern": "^[^/]+$", + "format": "int64", + "required": true, + "type": "string", + "location": "path" + } + }, + "flatPath": "v1/partners/{partnersId}/customers", + "path": "v1/partners/{+partnerId}/customers", + "id": "androiddeviceprovisioning.partners.customers.list" + } + } + } + } + } + }, + "parameters": { + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "type": "boolean", + "default": "true" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "type": "boolean", + "default": "true", + "location": "query" + } + }, + "schemas": { + "FindDevicesByDeviceIdentifierResponse": { + "description": "Response containing found devices.", + "type": "object", + "properties": { + "devices": { + "description": "Found devices.", + "type": "array", + "items": { + "$ref": "Device" + } + }, + "nextPageToken": { + "description": "Page token of next page", + "type": "string" + } + }, + "id": "FindDevicesByDeviceIdentifierResponse" + }, + "PartnerClaim": { + "description": "Identifies one claim request.", + "type": "object", + "properties": { + "deviceIdentifier": { + "description": "Device identifier of the device.", + "$ref": "DeviceIdentifier" + }, + "deviceMetadata": { + "description": "metadata to set at claim.", + "$ref": "DeviceMetadata" + }, + "sectionType": { + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ], + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ], + "description": "section type to claim.", + "type": "string" + }, + "customerId": { + "description": "customer id to claim for.", + "format": "int64", + "type": "string" + } + }, + "id": "PartnerClaim" + }, + "UnclaimDeviceRequest": { + "description": "Request message to unclaim a device.", + "type": "object", + "properties": { + "deviceId": { + "description": "The device id returned by ClaimDevice.", + "format": "int64", + "type": "string" + }, + "deviceIdentifier": { + "description": "The device identifier you use when you claimed this device.", + "$ref": "DeviceIdentifier" + }, + "sectionType": { + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ], + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ], + "description": "The section type to unclaim for.", + "type": "string" + } + }, + "id": "UnclaimDeviceRequest" + }, + "DeviceMetadata": { + "description": "A key value pair of the device metadata.", + "type": "object", + "properties": { + "entries": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata entries", + "type": "object" + } + }, + "id": "DeviceMetadata" + }, + "DevicesLongRunningOperationResponse": { + "properties": { + "successCount": { + "description": "Number of succeesfully processed ones.", + "format": "int32", + "type": "integer" + }, + "perDeviceStatus": { + "description": "processing status for each device.\nOne PerDeviceStatus per device. The order is the same as in your requests.", + "type": "array", + "items": { + "$ref": "OperationPerDevice" + } + } + }, + "id": "DevicesLongRunningOperationResponse", + "description": "Long running operation response.", + "type": "object" + }, + "DeviceClaim": { + "description": "containing the necessary info about a claim for a partner.", + "type": "object", + "properties": { + "ownerCompanyId": { + "description": "owner id", + "format": "int64", + "type": "string" + }, + "sectionType": { + "description": "section type.", + "type": "string", + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ], + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ] + } + }, + "id": "DeviceClaim" + }, + "PerDeviceStatusInBatch": { + "description": "Stores the processing result for each device.", + "type": "object", + "properties": { + "status": { + "enumDescriptions": [ + "Invalid code. Shouldn' be used.", + "Unknown error.\nUnknown error is we don't expect it here.", + "Other error.\nOther error is we know/expect this error, but not having proper error\ncode yet.", + "Success.", + "Permission denied", + "Invalid device identifier.", + "Invalid section type.", + "This section is claimed by other company." + ], + "enum": [ + "SINGLE_DEVICE_STATUS_UNSPECIFIED", + "SINGLE_DEVICE_STATUS_UNKNOWN_ERROR", + "SINGLE_DEVICE_STATUS_OTHER_ERROR", + "SINGLE_DEVICE_STATUS_SUCCESS", + "SINGLE_DEVICE_STATUS_PERMISSION_DENIED", + "SINGLE_DEVICE_STATUS_INVALID_DEVICE_IDENTIFIER", + "SINGLE_DEVICE_STATUS_INVALID_SECTION_TYPE", + "SINGLE_DEVICE_STATUS_SECTION_NOT_YOURS" + ], + "description": "Process result.", + "type": "string" + }, + "errorIdentifier": { + "description": "Error identifier.", + "type": "string" + }, + "errorMessage": { + "description": "Error message", + "type": "string" + }, + "deviceId": { + "description": "device id of the device if process succeeds.", + "format": "int64", + "type": "string" + } + }, + "id": "PerDeviceStatusInBatch" + }, + "FindDevicesByOwnerRequest": { + "properties": { + "customerId": { + "description": "List of customer ids to search for.", + "type": "array", + "items": { + "format": "int64", + "type": "string" + } + }, + "limit": { + "description": "The number of devices to show in the result.", + "format": "int64", + "type": "string" + }, + "pageToken": { + "description": "Page token", + "type": "string" + }, + "sectionType": { + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ], + "description": "The section type.", + "type": "string", + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ] + } + }, + "id": "FindDevicesByOwnerRequest", + "description": "Request to find devices by customers.", + "type": "object" + }, + "ClaimDevicesRequest": { + "properties": { + "claims": { + "description": "list of claims.", + "type": "array", + "items": { + "$ref": "PartnerClaim" + } + } + }, + "id": "ClaimDevicesRequest", + "description": "Request to claim devices asynchronously in batch.", + "type": "object" + }, + "DeviceIdentifier": { + "description": "DeviceIdentifiers identifies an unique device.", + "type": "object", + "properties": { + "meid": { + "description": "MEID", + "type": "string" + }, + "manufacturer": { + "description": "Manufacturer name to match `android.os.Build.MANUFACTURER` (required).\nAllowed values listed in\n[manufacturer names](/zero-touch/resources/manufacturer-names).", + "type": "string" + }, + "serialNumber": { + "description": "Serial number (optional)", + "type": "string" + }, + "imei": { + "description": "IMEI", + "type": "string" + } + }, + "id": "DeviceIdentifier" + }, + "Operation": { + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "description": "This field will contain a `DevicesLongRunningOperationResponse` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "description": "This field will always be not set if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this case, error information for each device is set in `response.perDeviceStatus.result.status`.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "This field will contain a `DevicesLongRunningOperationMetadata` object if the operation is created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`.", + "type": "object" + } + }, + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object" + }, + "UnclaimDevicesRequest": { + "description": "Request to unclaim devices asynchronously in batch.", + "type": "object", + "properties": { + "unclaims": { + "description": "list of unclaims.", + "type": "array", + "items": { + "$ref": "PartnerUnclaim" + } + } + }, + "id": "UnclaimDevicesRequest" + }, + "FindDevicesByDeviceIdentifierRequest": { + "description": "Request to find devices.", + "type": "object", + "properties": { + "limit": { + "description": "Number of devices to show.", + "format": "int64", + "type": "string" + }, + "deviceIdentifier": { + "description": "The device identifier to search", + "$ref": "DeviceIdentifier" + }, + "pageToken": { + "description": "Page token", + "type": "string" + } + }, + "id": "FindDevicesByDeviceIdentifierRequest" + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "type": "array", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + } + }, + "code": { + "description": "The status code, which should be an enum value of google.rpc.Code.", + "format": "int32", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "OperationPerDevice": { + "properties": { + "updateMetadata": { + "description": "Request to set metadata for a device.", + "$ref": "UpdateMetadataArguments" + }, + "unclaim": { + "$ref": "PartnerUnclaim", + "description": "Request to unclaim a device." + }, + "result": { + "description": "Processing result for every device.", + "$ref": "PerDeviceStatusInBatch" + }, + "claim": { + "$ref": "PartnerClaim", + "description": "Request to claim a device." + } + }, + "id": "OperationPerDevice", + "description": "Operation the server received for every device.", + "type": "object" + }, + "FindDevicesByOwnerResponse": { + "description": "Response containing found devices.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Page token of next page", + "type": "string" + }, + "devices": { + "description": "Devices found.", + "type": "array", + "items": { + "$ref": "Device" + } + } + }, + "id": "FindDevicesByOwnerResponse" + }, + "ClaimDeviceRequest": { + "description": "Request message to claim a device on behalf of a customer.", + "type": "object", + "properties": { + "customerId": { + "description": "The customer to claim for.", + "format": "int64", + "type": "string" + }, + "deviceIdentifier": { + "$ref": "DeviceIdentifier", + "description": "The device identifier of the device to claim." + }, + "sectionType": { + "description": "Section to claim", + "type": "string", + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ], + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ] + } + }, + "id": "ClaimDeviceRequest" + }, + "DevicesLongRunningOperationMetadata": { + "description": "Long running operation metadata.", + "type": "object", + "properties": { + "processingStatus": { + "description": "The overall processing status.", + "type": "string", + "enumDescriptions": [ + "Invalid code. Shouldn't be used.", + "Pending", + "In progress", + "Processed.\nThis doesn't mean all items were processed sucessfully, you should\ncheck the `response` field for the result of every item." + ], + "enum": [ + "BATCH_PROCESS_STATUS_UNSPECIFIED", + "BATCH_PROCESS_PENDING", + "BATCH_PROCESS_IN_PROGRESS", + "BATCH_PROCESS_PROCESSED" + ] + }, + "progress": { + "description": "Processing progress from 0 to 100.", + "format": "int32", + "type": "integer" + }, + "devicesCount": { + "description": "Number of devices parsed in your requests.", + "format": "int32", + "type": "integer" + } + }, + "id": "DevicesLongRunningOperationMetadata" + }, + "UpdateDeviceMetadataInBatchRequest": { + "description": "Request to update device metadata in batch.", + "type": "object", + "properties": { + "updates": { + "description": "list of metadata updates.", + "type": "array", + "items": { + "$ref": "UpdateMetadataArguments" + } + } + }, + "id": "UpdateDeviceMetadataInBatchRequest" + }, + "ClaimDeviceResponse": { + "description": "Response message containing device id of the claim.", + "type": "object", + "properties": { + "deviceId": { + "description": "the device id of the claimed device.", + "format": "int64", + "type": "string" + }, + "deviceName": { + "description": "the resource name of the device in\n'partners/[PARTNER_ID]/devices/[DEVICE_ID]'.", + "type": "string" + } + }, + "id": "ClaimDeviceResponse" + }, + "ListCustomersResponse": { + "properties": { + "customers": { + "description": "List of customers related to this partner.", + "type": "array", + "items": { + "$ref": "Company" + } + } + }, + "id": "ListCustomersResponse", + "description": "Response message of all customers related to this partner.", + "type": "object" + }, + "UpdateMetadataArguments": { + "description": "Identifies metdata updates to one device.", + "type": "object", + "properties": { + "deviceId": { + "description": "device id of the device.", + "format": "int64", + "type": "string" + }, + "deviceIdentifier": { + "description": "device identifier.", + "$ref": "DeviceIdentifier" + }, + "deviceMetadata": { + "description": "The metadata to update.", + "$ref": "DeviceMetadata" + } + }, + "id": "UpdateMetadataArguments" + }, + "Device": { + "description": "Device", + "type": "object", + "properties": { + "deviceId": { + "description": "Device id", + "format": "int64", + "type": "string" + }, + "configuration": { + "description": "The resource name of the configuration.\nOnly set for customers.", + "type": "string" + }, + "claims": { + "description": "claims", + "type": "array", + "items": { + "$ref": "DeviceClaim" + } + }, + "deviceIdentifier": { + "description": "Device identifier", + "$ref": "DeviceIdentifier" + }, + "deviceMetadata": { + "description": "Device metadata", + "$ref": "DeviceMetadata" + }, + "name": { + "description": "Resource name in 'partners/[PARTNER_ID]/devices/[DEVICE_ID]'.", + "type": "string" + } + }, + "id": "Device" + }, + "Company": { + "description": "Company", + "type": "object", + "properties": { + "ownerEmails": { + "description": "Owner email.\nOwner is able to operate on the portal, and modify admins and other owners.\nThis field is a WRITE-only field at creation time.", + "type": "array", + "items": { + "type": "string" + } + }, + "companyId": { + "description": "company id", + "format": "int64", + "type": "string" + }, + "companyName": { + "description": "company name", + "type": "string" + }, + "name": { + "description": "REST Resource name.", + "type": "string" + }, + "adminEmails": { + "description": "Admin email.\nAdmins will be able to operate on the portal.\nThis field is a WRITE-only field at creation time.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "id": "Company" + }, + "UpdateDeviceMetadataRequest": { + "description": "Request to set metadata for a device.", + "type": "object", + "properties": { + "deviceMetadata": { + "description": "The metdata to set.", + "$ref": "DeviceMetadata" + } + }, + "id": "UpdateDeviceMetadataRequest" + }, + "PartnerUnclaim": { + "properties": { + "deviceId": { + "description": "device id of the device.", + "format": "int64", + "type": "string" + }, + "deviceIdentifier": { + "$ref": "DeviceIdentifier", + "description": "device identifier of the device." + }, + "sectionType": { + "enumDescriptions": [ + "Unspecified", + "Zero touch" + ], + "enum": [ + "SECTION_TYPE_UNSPECIFIED", + "SECTION_TYPE_ZERO_TOUCH" + ], + "description": "section type to unclaim.", + "type": "string" + } + }, + "id": "PartnerUnclaim", + "description": "Identifies one unclaim request.", + "type": "object" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + } + }, + "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "version": "v1", + "baseUrl": "https://androiddeviceprovisioning.googleapis.com/", + "canonicalName": "Android Provisioning Partner", + "kind": "discovery#restDescription", + "description": "Automates reseller integration into Zero Touch Provisioning by assigning devices to customers and creating device reports.", + "servicePath": "", + "rootUrl": "https://androiddeviceprovisioning.googleapis.com/", + "basePath": "" +} diff --git a/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go b/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go new file mode 100644 index 0000000..47ce16a --- /dev/null +++ b/vendor/google.golang.org/api/androiddeviceprovisioning/v1/androiddeviceprovisioning-gen.go @@ -0,0 +1,2742 @@ +// Package androiddeviceprovisioning provides access to the Android Device Provisioning Partner API. +// +// See https://developers.google.com/zero-touch/ +// +// Usage example: +// +// import "google.golang.org/api/androiddeviceprovisioning/v1" +// ... +// androiddeviceprovisioningService, err := androiddeviceprovisioning.New(oauthHttpClient) +package androiddeviceprovisioning // import "google.golang.org/api/androiddeviceprovisioning/v1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "androiddeviceprovisioning:v1" +const apiName = "androiddeviceprovisioning" +const apiVersion = "v1" +const basePath = "https://androiddeviceprovisioning.googleapis.com/" + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Operations = NewOperationsService(s) + s.Partners = NewPartnersService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Operations *OperationsService + + Partners *PartnersService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewOperationsService(s *Service) *OperationsService { + rs := &OperationsService{s: s} + return rs +} + +type OperationsService struct { + s *Service +} + +func NewPartnersService(s *Service) *PartnersService { + rs := &PartnersService{s: s} + rs.Customers = NewPartnersCustomersService(s) + rs.Devices = NewPartnersDevicesService(s) + return rs +} + +type PartnersService struct { + s *Service + + Customers *PartnersCustomersService + + Devices *PartnersDevicesService +} + +func NewPartnersCustomersService(s *Service) *PartnersCustomersService { + rs := &PartnersCustomersService{s: s} + return rs +} + +type PartnersCustomersService struct { + s *Service +} + +func NewPartnersDevicesService(s *Service) *PartnersDevicesService { + rs := &PartnersDevicesService{s: s} + return rs +} + +type PartnersDevicesService struct { + s *Service +} + +// ClaimDeviceRequest: Request message to claim a device on behalf of a +// customer. +type ClaimDeviceRequest struct { + // CustomerId: The customer to claim for. + CustomerId int64 `json:"customerId,omitempty,string"` + + // DeviceIdentifier: The device identifier of the device to claim. + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // SectionType: Section to claim + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomerId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomerId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClaimDeviceRequest) MarshalJSON() ([]byte, error) { + type noMethod ClaimDeviceRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClaimDeviceResponse: Response message containing device id of the +// claim. +type ClaimDeviceResponse struct { + // DeviceId: the device id of the claimed device. + DeviceId int64 `json:"deviceId,omitempty,string"` + + // DeviceName: the resource name of the device + // in + // 'partners/[PARTNER_ID]/devices/[DEVICE_ID]'. + DeviceName string `json:"deviceName,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClaimDeviceResponse) MarshalJSON() ([]byte, error) { + type noMethod ClaimDeviceResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClaimDevicesRequest: Request to claim devices asynchronously in +// batch. +type ClaimDevicesRequest struct { + // Claims: list of claims. + Claims []*PartnerClaim `json:"claims,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Claims") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Claims") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClaimDevicesRequest) MarshalJSON() ([]byte, error) { + type noMethod ClaimDevicesRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Company: Company +type Company struct { + // AdminEmails: Admin email. + // Admins will be able to operate on the portal. + // This field is a WRITE-only field at creation time. + AdminEmails []string `json:"adminEmails,omitempty"` + + // CompanyId: company id + CompanyId int64 `json:"companyId,omitempty,string"` + + // CompanyName: company name + CompanyName string `json:"companyName,omitempty"` + + // Name: REST Resource name. + Name string `json:"name,omitempty"` + + // OwnerEmails: Owner email. + // Owner is able to operate on the portal, and modify admins and other + // owners. + // This field is a WRITE-only field at creation time. + OwnerEmails []string `json:"ownerEmails,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AdminEmails") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdminEmails") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Company) MarshalJSON() ([]byte, error) { + type noMethod Company + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Device: Device +type Device struct { + // Claims: claims + Claims []*DeviceClaim `json:"claims,omitempty"` + + // Configuration: The resource name of the configuration. + // Only set for customers. + Configuration string `json:"configuration,omitempty"` + + // DeviceId: Device id + DeviceId int64 `json:"deviceId,omitempty,string"` + + // DeviceIdentifier: Device identifier + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // DeviceMetadata: Device metadata + DeviceMetadata *DeviceMetadata `json:"deviceMetadata,omitempty"` + + // Name: Resource name in 'partners/[PARTNER_ID]/devices/[DEVICE_ID]'. + Name string `json:"name,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Claims") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Claims") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Device) MarshalJSON() ([]byte, error) { + type noMethod Device + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DeviceClaim: containing the necessary info about a claim for a +// partner. +type DeviceClaim struct { + // OwnerCompanyId: owner id + OwnerCompanyId int64 `json:"ownerCompanyId,omitempty,string"` + + // SectionType: section type. + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OwnerCompanyId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OwnerCompanyId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DeviceClaim) MarshalJSON() ([]byte, error) { + type noMethod DeviceClaim + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DeviceIdentifier: DeviceIdentifiers identifies an unique device. +type DeviceIdentifier struct { + // Imei: IMEI + Imei string `json:"imei,omitempty"` + + // Manufacturer: Manufacturer name to match + // `android.os.Build.MANUFACTURER` (required). + // Allowed values listed in + // [manufacturer names](/zero-touch/resources/manufacturer-names). + Manufacturer string `json:"manufacturer,omitempty"` + + // Meid: MEID + Meid string `json:"meid,omitempty"` + + // SerialNumber: Serial number (optional) + SerialNumber string `json:"serialNumber,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Imei") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Imei") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DeviceIdentifier) MarshalJSON() ([]byte, error) { + type noMethod DeviceIdentifier + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DeviceMetadata: A key value pair of the device metadata. +type DeviceMetadata struct { + // Entries: Metadata entries + Entries map[string]string `json:"entries,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Entries") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Entries") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DeviceMetadata) MarshalJSON() ([]byte, error) { + type noMethod DeviceMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DevicesLongRunningOperationMetadata: Long running operation metadata. +type DevicesLongRunningOperationMetadata struct { + // DevicesCount: Number of devices parsed in your requests. + DevicesCount int64 `json:"devicesCount,omitempty"` + + // ProcessingStatus: The overall processing status. + // + // Possible values: + // "BATCH_PROCESS_STATUS_UNSPECIFIED" - Invalid code. Shouldn't be + // used. + // "BATCH_PROCESS_PENDING" - Pending + // "BATCH_PROCESS_IN_PROGRESS" - In progress + // "BATCH_PROCESS_PROCESSED" - Processed. + // This doesn't mean all items were processed sucessfully, you + // should + // check the `response` field for the result of every item. + ProcessingStatus string `json:"processingStatus,omitempty"` + + // Progress: Processing progress from 0 to 100. + Progress int64 `json:"progress,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DevicesCount") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DevicesCount") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DevicesLongRunningOperationMetadata) MarshalJSON() ([]byte, error) { + type noMethod DevicesLongRunningOperationMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DevicesLongRunningOperationResponse: Long running operation response. +type DevicesLongRunningOperationResponse struct { + // PerDeviceStatus: processing status for each device. + // One PerDeviceStatus per device. The order is the same as in your + // requests. + PerDeviceStatus []*OperationPerDevice `json:"perDeviceStatus,omitempty"` + + // SuccessCount: Number of succeesfully processed ones. + SuccessCount int64 `json:"successCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PerDeviceStatus") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PerDeviceStatus") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DevicesLongRunningOperationResponse) MarshalJSON() ([]byte, error) { + type noMethod DevicesLongRunningOperationResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated +// empty messages in your APIs. A typical example is to use it as the +// request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// FindDevicesByDeviceIdentifierRequest: Request to find devices. +type FindDevicesByDeviceIdentifierRequest struct { + // DeviceIdentifier: The device identifier to search + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // Limit: Number of devices to show. + Limit int64 `json:"limit,omitempty,string"` + + // PageToken: Page token + PageToken string `json:"pageToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceIdentifier") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceIdentifier") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FindDevicesByDeviceIdentifierRequest) MarshalJSON() ([]byte, error) { + type noMethod FindDevicesByDeviceIdentifierRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FindDevicesByDeviceIdentifierResponse: Response containing found +// devices. +type FindDevicesByDeviceIdentifierResponse struct { + // Devices: Found devices. + Devices []*Device `json:"devices,omitempty"` + + // NextPageToken: Page token of next page + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Devices") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Devices") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FindDevicesByDeviceIdentifierResponse) MarshalJSON() ([]byte, error) { + type noMethod FindDevicesByDeviceIdentifierResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FindDevicesByOwnerRequest: Request to find devices by customers. +type FindDevicesByOwnerRequest struct { + // CustomerId: List of customer ids to search for. + CustomerId googleapi.Int64s `json:"customerId,omitempty"` + + // Limit: The number of devices to show in the result. + Limit int64 `json:"limit,omitempty,string"` + + // PageToken: Page token + PageToken string `json:"pageToken,omitempty"` + + // SectionType: The section type. + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomerId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomerId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FindDevicesByOwnerRequest) MarshalJSON() ([]byte, error) { + type noMethod FindDevicesByOwnerRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FindDevicesByOwnerResponse: Response containing found devices. +type FindDevicesByOwnerResponse struct { + // Devices: Devices found. + Devices []*Device `json:"devices,omitempty"` + + // NextPageToken: Page token of next page + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Devices") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Devices") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FindDevicesByOwnerResponse) MarshalJSON() ([]byte, error) { + type noMethod FindDevicesByOwnerResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListCustomersResponse: Response message of all customers related to +// this partner. +type ListCustomersResponse struct { + // Customers: List of customers related to this partner. + Customers []*Company `json:"customers,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Customers") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Customers") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListCustomersResponse) MarshalJSON() ([]byte, error) { + type noMethod ListCustomersResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Operation: This resource represents a long-running operation that is +// the result of a +// network API call. +type Operation struct { + // Done: If the value is `false`, it means the operation is still in + // progress. + // If `true`, the operation is completed, and either `error` or + // `response` is + // available. + Done bool `json:"done,omitempty"` + + // Error: This field will always be not set if the operation is created + // by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. In this + // case, error information for each device is set in + // `response.perDeviceStatus.result.status`. + Error *Status `json:"error,omitempty"` + + // Metadata: This field will contain a + // `DevicesLongRunningOperationMetadata` object if the operation is + // created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. + Metadata googleapi.RawMessage `json:"metadata,omitempty"` + + // Name: The server-assigned name, which is only unique within the same + // service that + // originally returns it. If you use the default HTTP mapping, + // the + // `name` should have the format of `operations/some/unique/name`. + Name string `json:"name,omitempty"` + + // Response: This field will contain a + // `DevicesLongRunningOperationResponse` object if the operation is + // created by `claimAsync`, `unclaimAsync`, or `updateMetadataAsync`. + Response googleapi.RawMessage `json:"response,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Done") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Done") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Operation) MarshalJSON() ([]byte, error) { + type noMethod Operation + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// OperationPerDevice: Operation the server received for every device. +type OperationPerDevice struct { + // Claim: Request to claim a device. + Claim *PartnerClaim `json:"claim,omitempty"` + + // Result: Processing result for every device. + Result *PerDeviceStatusInBatch `json:"result,omitempty"` + + // Unclaim: Request to unclaim a device. + Unclaim *PartnerUnclaim `json:"unclaim,omitempty"` + + // UpdateMetadata: Request to set metadata for a device. + UpdateMetadata *UpdateMetadataArguments `json:"updateMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Claim") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Claim") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *OperationPerDevice) MarshalJSON() ([]byte, error) { + type noMethod OperationPerDevice + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PartnerClaim: Identifies one claim request. +type PartnerClaim struct { + // CustomerId: customer id to claim for. + CustomerId int64 `json:"customerId,omitempty,string"` + + // DeviceIdentifier: Device identifier of the device. + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // DeviceMetadata: metadata to set at claim. + DeviceMetadata *DeviceMetadata `json:"deviceMetadata,omitempty"` + + // SectionType: section type to claim. + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomerId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomerId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PartnerClaim) MarshalJSON() ([]byte, error) { + type noMethod PartnerClaim + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PartnerUnclaim: Identifies one unclaim request. +type PartnerUnclaim struct { + // DeviceId: device id of the device. + DeviceId int64 `json:"deviceId,omitempty,string"` + + // DeviceIdentifier: device identifier of the device. + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // SectionType: section type to unclaim. + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PartnerUnclaim) MarshalJSON() ([]byte, error) { + type noMethod PartnerUnclaim + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PerDeviceStatusInBatch: Stores the processing result for each device. +type PerDeviceStatusInBatch struct { + // DeviceId: device id of the device if process succeeds. + DeviceId int64 `json:"deviceId,omitempty,string"` + + // ErrorIdentifier: Error identifier. + ErrorIdentifier string `json:"errorIdentifier,omitempty"` + + // ErrorMessage: Error message + ErrorMessage string `json:"errorMessage,omitempty"` + + // Status: Process result. + // + // Possible values: + // "SINGLE_DEVICE_STATUS_UNSPECIFIED" - Invalid code. Shouldn' be + // used. + // "SINGLE_DEVICE_STATUS_UNKNOWN_ERROR" - Unknown error. + // Unknown error is we don't expect it here. + // "SINGLE_DEVICE_STATUS_OTHER_ERROR" - Other error. + // Other error is we know/expect this error, but not having proper + // error + // code yet. + // "SINGLE_DEVICE_STATUS_SUCCESS" - Success. + // "SINGLE_DEVICE_STATUS_PERMISSION_DENIED" - Permission denied + // "SINGLE_DEVICE_STATUS_INVALID_DEVICE_IDENTIFIER" - Invalid device + // identifier. + // "SINGLE_DEVICE_STATUS_INVALID_SECTION_TYPE" - Invalid section type. + // "SINGLE_DEVICE_STATUS_SECTION_NOT_YOURS" - This section is claimed + // by other company. + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PerDeviceStatusInBatch) MarshalJSON() ([]byte, error) { + type noMethod PerDeviceStatusInBatch + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Status: The `Status` type defines a logical error model that is +// suitable for different +// programming environments, including REST APIs and RPC APIs. It is +// used by +// [gRPC](https://github.com/grpc). The error model is designed to +// be: +// +// - Simple to use and understand for most users +// - Flexible enough to meet unexpected needs +// +// # Overview +// +// The `Status` message contains three pieces of data: error code, error +// message, +// and error details. The error code should be an enum value +// of +// google.rpc.Code, but it may accept additional error codes if needed. +// The +// error message should be a developer-facing English message that +// helps +// developers *understand* and *resolve* the error. If a localized +// user-facing +// error message is needed, put the localized message in the error +// details or +// localize it in the client. The optional error details may contain +// arbitrary +// information about the error. There is a predefined set of error +// detail types +// in the package `google.rpc` that can be used for common error +// conditions. +// +// # Language mapping +// +// The `Status` message is the logical representation of the error +// model, but it +// is not necessarily the actual wire format. When the `Status` message +// is +// exposed in different client libraries and different wire protocols, +// it can be +// mapped differently. For example, it will likely be mapped to some +// exceptions +// in Java, but more likely mapped to some error codes in C. +// +// # Other uses +// +// The error model and the `Status` message can be used in a variety +// of +// environments, either with or without APIs, to provide a +// consistent developer experience across different +// environments. +// +// Example uses of this error model include: +// +// - Partial errors. If a service needs to return partial errors to the +// client, +// it may embed the `Status` in the normal response to indicate the +// partial +// errors. +// +// - Workflow errors. A typical workflow has multiple steps. Each step +// may +// have a `Status` message for error reporting. +// +// - Batch operations. If a client uses batch request and batch +// response, the +// `Status` message should be used directly inside batch response, +// one for +// each error sub-response. +// +// - Asynchronous operations. If an API call embeds asynchronous +// operation +// results in its response, the status of those operations should +// be +// represented directly using the `Status` message. +// +// - Logging. If some API errors are stored in logs, the message +// `Status` could +// be used directly after any stripping needed for security/privacy +// reasons. +type Status struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of + // message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any + // user-facing error message should be localized and sent in + // the + // google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Status) MarshalJSON() ([]byte, error) { + type noMethod Status + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UnclaimDeviceRequest: Request message to unclaim a device. +type UnclaimDeviceRequest struct { + // DeviceId: The device id returned by ClaimDevice. + DeviceId int64 `json:"deviceId,omitempty,string"` + + // DeviceIdentifier: The device identifier you use when you claimed this + // device. + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // SectionType: The section type to unclaim for. + // + // Possible values: + // "SECTION_TYPE_UNSPECIFIED" - Unspecified + // "SECTION_TYPE_ZERO_TOUCH" - Zero touch + SectionType string `json:"sectionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UnclaimDeviceRequest) MarshalJSON() ([]byte, error) { + type noMethod UnclaimDeviceRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UnclaimDevicesRequest: Request to unclaim devices asynchronously in +// batch. +type UnclaimDevicesRequest struct { + // Unclaims: list of unclaims. + Unclaims []*PartnerUnclaim `json:"unclaims,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Unclaims") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Unclaims") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UnclaimDevicesRequest) MarshalJSON() ([]byte, error) { + type noMethod UnclaimDevicesRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UpdateDeviceMetadataInBatchRequest: Request to update device metadata +// in batch. +type UpdateDeviceMetadataInBatchRequest struct { + // Updates: list of metadata updates. + Updates []*UpdateMetadataArguments `json:"updates,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Updates") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Updates") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UpdateDeviceMetadataInBatchRequest) MarshalJSON() ([]byte, error) { + type noMethod UpdateDeviceMetadataInBatchRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UpdateDeviceMetadataRequest: Request to set metadata for a device. +type UpdateDeviceMetadataRequest struct { + // DeviceMetadata: The metdata to set. + DeviceMetadata *DeviceMetadata `json:"deviceMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceMetadata") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *UpdateDeviceMetadataRequest) MarshalJSON() ([]byte, error) { + type noMethod UpdateDeviceMetadataRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UpdateMetadataArguments: Identifies metdata updates to one device. +type UpdateMetadataArguments struct { + // DeviceId: device id of the device. + DeviceId int64 `json:"deviceId,omitempty,string"` + + // DeviceIdentifier: device identifier. + DeviceIdentifier *DeviceIdentifier `json:"deviceIdentifier,omitempty"` + + // DeviceMetadata: The metadata to update. + DeviceMetadata *DeviceMetadata `json:"deviceMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UpdateMetadataArguments) MarshalJSON() ([]byte, error) { + type noMethod UpdateMetadataArguments + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "androiddeviceprovisioning.operations.get": + +type OperationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the latest state of a long-running operation. Clients can +// use this +// method to poll the operation result at intervals as recommended by +// the API +// service. +func (r *OperationsService) Get(name string) *OperationsGetCall { + c := &OperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *OperationsGetCall) Fields(s ...googleapi.Field) *OperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *OperationsGetCall) IfNoneMatch(entityTag string) *OperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *OperationsGetCall) Context(ctx context.Context) *OperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *OperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *OperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.operations.get" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *OperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + // "flatPath": "v1/operations/{operationsId}", + // "httpMethod": "GET", + // "id": "androiddeviceprovisioning.operations.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource.", + // "location": "path", + // "pattern": "^operations/.+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Operation" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.customers.list": + +type PartnersCustomersListCall struct { + s *Service + partnerId int64 + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: List all the customers that has delegates some role to this +// customer. +func (r *PartnersCustomersService) List(partnerId int64) *PartnersCustomersListCall { + c := &PartnersCustomersListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersCustomersListCall) Fields(s ...googleapi.Field) *PartnersCustomersListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PartnersCustomersListCall) IfNoneMatch(entityTag string) *PartnersCustomersListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersCustomersListCall) Context(ctx context.Context) *PartnersCustomersListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersCustomersListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersCustomersListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/customers") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.customers.list" call. +// Exactly one of *ListCustomersResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListCustomersResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PartnersCustomersListCall) Do(opts ...googleapi.CallOption) (*ListCustomersResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListCustomersResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "List all the customers that has delegates some role to this customer.", + // "flatPath": "v1/partners/{partnersId}/customers", + // "httpMethod": "GET", + // "id": "androiddeviceprovisioning.partners.customers.list", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "the id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/customers", + // "response": { + // "$ref": "ListCustomersResponse" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.claim": + +type PartnersDevicesClaimCall struct { + s *Service + partnerId int64 + claimdevicerequest *ClaimDeviceRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Claim: Claim the device identified by device identifier. +func (r *PartnersDevicesService) Claim(partnerId int64, claimdevicerequest *ClaimDeviceRequest) *PartnersDevicesClaimCall { + c := &PartnersDevicesClaimCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.claimdevicerequest = claimdevicerequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesClaimCall) Fields(s ...googleapi.Field) *PartnersDevicesClaimCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesClaimCall) Context(ctx context.Context) *PartnersDevicesClaimCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesClaimCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesClaimCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.claimdevicerequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:claim") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.claim" call. +// Exactly one of *ClaimDeviceResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ClaimDeviceResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PartnersDevicesClaimCall) Do(opts ...googleapi.CallOption) (*ClaimDeviceResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ClaimDeviceResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Claim the device identified by device identifier.", + // "flatPath": "v1/partners/{partnersId}/devices:claim", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.claim", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "Id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:claim", + // "request": { + // "$ref": "ClaimDeviceRequest" + // }, + // "response": { + // "$ref": "ClaimDeviceResponse" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.claimAsync": + +type PartnersDevicesClaimAsyncCall struct { + s *Service + partnerId int64 + claimdevicesrequest *ClaimDevicesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// ClaimAsync: Claim devices asynchronously +func (r *PartnersDevicesService) ClaimAsync(partnerId int64, claimdevicesrequest *ClaimDevicesRequest) *PartnersDevicesClaimAsyncCall { + c := &PartnersDevicesClaimAsyncCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.claimdevicesrequest = claimdevicesrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesClaimAsyncCall) Fields(s ...googleapi.Field) *PartnersDevicesClaimAsyncCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesClaimAsyncCall) Context(ctx context.Context) *PartnersDevicesClaimAsyncCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesClaimAsyncCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesClaimAsyncCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.claimdevicesrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:claimAsync") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.claimAsync" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *PartnersDevicesClaimAsyncCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Claim devices asynchronously", + // "flatPath": "v1/partners/{partnersId}/devices:claimAsync", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.claimAsync", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "partner id.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:claimAsync", + // "request": { + // "$ref": "ClaimDevicesRequest" + // }, + // "response": { + // "$ref": "Operation" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.findByIdentifier": + +type PartnersDevicesFindByIdentifierCall struct { + s *Service + partnerId int64 + finddevicesbydeviceidentifierrequest *FindDevicesByDeviceIdentifierRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// FindByIdentifier: Find devices by device identifier. +func (r *PartnersDevicesService) FindByIdentifier(partnerId int64, finddevicesbydeviceidentifierrequest *FindDevicesByDeviceIdentifierRequest) *PartnersDevicesFindByIdentifierCall { + c := &PartnersDevicesFindByIdentifierCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.finddevicesbydeviceidentifierrequest = finddevicesbydeviceidentifierrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesFindByIdentifierCall) Fields(s ...googleapi.Field) *PartnersDevicesFindByIdentifierCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesFindByIdentifierCall) Context(ctx context.Context) *PartnersDevicesFindByIdentifierCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesFindByIdentifierCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesFindByIdentifierCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.finddevicesbydeviceidentifierrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:findByIdentifier") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.findByIdentifier" call. +// Exactly one of *FindDevicesByDeviceIdentifierResponse or error will +// be non-nil. Any non-2xx status code is an error. Response headers are +// in either +// *FindDevicesByDeviceIdentifierResponse.ServerResponse.Header or (if a +// response was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PartnersDevicesFindByIdentifierCall) Do(opts ...googleapi.CallOption) (*FindDevicesByDeviceIdentifierResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &FindDevicesByDeviceIdentifierResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Find devices by device identifier.", + // "flatPath": "v1/partners/{partnersId}/devices:findByIdentifier", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.findByIdentifier", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:findByIdentifier", + // "request": { + // "$ref": "FindDevicesByDeviceIdentifierRequest" + // }, + // "response": { + // "$ref": "FindDevicesByDeviceIdentifierResponse" + // } + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *PartnersDevicesFindByIdentifierCall) Pages(ctx context.Context, f func(*FindDevicesByDeviceIdentifierResponse) error) error { + c.ctx_ = ctx + defer func(pt string) { c.finddevicesbydeviceidentifierrequest.PageToken = pt }(c.finddevicesbydeviceidentifierrequest.PageToken) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.finddevicesbydeviceidentifierrequest.PageToken = x.NextPageToken + } +} + +// method id "androiddeviceprovisioning.partners.devices.findByOwner": + +type PartnersDevicesFindByOwnerCall struct { + s *Service + partnerId int64 + finddevicesbyownerrequest *FindDevicesByOwnerRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// FindByOwner: Find devices by ownership. +func (r *PartnersDevicesService) FindByOwner(partnerId int64, finddevicesbyownerrequest *FindDevicesByOwnerRequest) *PartnersDevicesFindByOwnerCall { + c := &PartnersDevicesFindByOwnerCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.finddevicesbyownerrequest = finddevicesbyownerrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesFindByOwnerCall) Fields(s ...googleapi.Field) *PartnersDevicesFindByOwnerCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesFindByOwnerCall) Context(ctx context.Context) *PartnersDevicesFindByOwnerCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesFindByOwnerCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesFindByOwnerCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.finddevicesbyownerrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:findByOwner") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.findByOwner" call. +// Exactly one of *FindDevicesByOwnerResponse or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *FindDevicesByOwnerResponse.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PartnersDevicesFindByOwnerCall) Do(opts ...googleapi.CallOption) (*FindDevicesByOwnerResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &FindDevicesByOwnerResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Find devices by ownership.", + // "flatPath": "v1/partners/{partnersId}/devices:findByOwner", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.findByOwner", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:findByOwner", + // "request": { + // "$ref": "FindDevicesByOwnerRequest" + // }, + // "response": { + // "$ref": "FindDevicesByOwnerResponse" + // } + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *PartnersDevicesFindByOwnerCall) Pages(ctx context.Context, f func(*FindDevicesByOwnerResponse) error) error { + c.ctx_ = ctx + defer func(pt string) { c.finddevicesbyownerrequest.PageToken = pt }(c.finddevicesbyownerrequest.PageToken) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.finddevicesbyownerrequest.PageToken = x.NextPageToken + } +} + +// method id "androiddeviceprovisioning.partners.devices.get": + +type PartnersDevicesGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Get a device +func (r *PartnersDevicesService) Get(name string) *PartnersDevicesGetCall { + c := &PartnersDevicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesGetCall) Fields(s ...googleapi.Field) *PartnersDevicesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PartnersDevicesGetCall) IfNoneMatch(entityTag string) *PartnersDevicesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesGetCall) Context(ctx context.Context) *PartnersDevicesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.get" call. +// Exactly one of *Device or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Device.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PartnersDevicesGetCall) Do(opts ...googleapi.CallOption) (*Device, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Device{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Get a device", + // "flatPath": "v1/partners/{partnersId}/devices/{devicesId}", + // "httpMethod": "GET", + // "id": "androiddeviceprovisioning.partners.devices.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "resource name in 'partners/[PARTNER_ID]/devices/[DEVICE_ID]'.", + // "location": "path", + // "pattern": "^partners/[^/]+/devices/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Device" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.metadata": + +type PartnersDevicesMetadataCall struct { + s *Service + metadataOwnerId int64 + deviceId int64 + updatedevicemetadatarequest *UpdateDeviceMetadataRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Metadata: Update the metadata +func (r *PartnersDevicesService) Metadata(metadataOwnerId int64, deviceId int64, updatedevicemetadatarequest *UpdateDeviceMetadataRequest) *PartnersDevicesMetadataCall { + c := &PartnersDevicesMetadataCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.metadataOwnerId = metadataOwnerId + c.deviceId = deviceId + c.updatedevicemetadatarequest = updatedevicemetadatarequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesMetadataCall) Fields(s ...googleapi.Field) *PartnersDevicesMetadataCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesMetadataCall) Context(ctx context.Context) *PartnersDevicesMetadataCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesMetadataCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesMetadataCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.updatedevicemetadatarequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+metadataOwnerId}/devices/{+deviceId}/metadata") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "metadataOwnerId": strconv.FormatInt(c.metadataOwnerId, 10), + "deviceId": strconv.FormatInt(c.deviceId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.metadata" call. +// Exactly one of *DeviceMetadata or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *DeviceMetadata.ServerResponse.Header or (if a response was returned +// at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PartnersDevicesMetadataCall) Do(opts ...googleapi.CallOption) (*DeviceMetadata, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &DeviceMetadata{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Update the metadata", + // "flatPath": "v1/partners/{partnersId}/devices/{devicesId}/metadata", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.metadata", + // "parameterOrder": [ + // "metadataOwnerId", + // "deviceId" + // ], + // "parameters": { + // "deviceId": { + // "description": "id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // }, + // "metadataOwnerId": { + // "description": "The owner of the newly set metadata. Should be partner id itself.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+metadataOwnerId}/devices/{+deviceId}/metadata", + // "request": { + // "$ref": "UpdateDeviceMetadataRequest" + // }, + // "response": { + // "$ref": "DeviceMetadata" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.unclaim": + +type PartnersDevicesUnclaimCall struct { + s *Service + partnerId int64 + unclaimdevicerequest *UnclaimDeviceRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Unclaim: Unclaim the device identified by device_id or identifier. +func (r *PartnersDevicesService) Unclaim(partnerId int64, unclaimdevicerequest *UnclaimDeviceRequest) *PartnersDevicesUnclaimCall { + c := &PartnersDevicesUnclaimCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.unclaimdevicerequest = unclaimdevicerequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesUnclaimCall) Fields(s ...googleapi.Field) *PartnersDevicesUnclaimCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesUnclaimCall) Context(ctx context.Context) *PartnersDevicesUnclaimCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesUnclaimCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesUnclaimCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.unclaimdevicerequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:unclaim") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.unclaim" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PartnersDevicesUnclaimCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Unclaim the device identified by device_id or identifier.", + // "flatPath": "v1/partners/{partnersId}/devices:unclaim", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.unclaim", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "Id of the partner.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:unclaim", + // "request": { + // "$ref": "UnclaimDeviceRequest" + // }, + // "response": { + // "$ref": "Empty" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.unclaimAsync": + +type PartnersDevicesUnclaimAsyncCall struct { + s *Service + partnerId int64 + unclaimdevicesrequest *UnclaimDevicesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// UnclaimAsync: Unclaim devices asynchronously +func (r *PartnersDevicesService) UnclaimAsync(partnerId int64, unclaimdevicesrequest *UnclaimDevicesRequest) *PartnersDevicesUnclaimAsyncCall { + c := &PartnersDevicesUnclaimAsyncCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.unclaimdevicesrequest = unclaimdevicesrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesUnclaimAsyncCall) Fields(s ...googleapi.Field) *PartnersDevicesUnclaimAsyncCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesUnclaimAsyncCall) Context(ctx context.Context) *PartnersDevicesUnclaimAsyncCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesUnclaimAsyncCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesUnclaimAsyncCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.unclaimdevicesrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:unclaimAsync") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.unclaimAsync" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *PartnersDevicesUnclaimAsyncCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Unclaim devices asynchronously", + // "flatPath": "v1/partners/{partnersId}/devices:unclaimAsync", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.unclaimAsync", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "partner id.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:unclaimAsync", + // "request": { + // "$ref": "UnclaimDevicesRequest" + // }, + // "response": { + // "$ref": "Operation" + // } + // } + +} + +// method id "androiddeviceprovisioning.partners.devices.updateMetadataAsync": + +type PartnersDevicesUpdateMetadataAsyncCall struct { + s *Service + partnerId int64 + updatedevicemetadatainbatchrequest *UpdateDeviceMetadataInBatchRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// UpdateMetadataAsync: Set metadata in batch asynchronously. +func (r *PartnersDevicesService) UpdateMetadataAsync(partnerId int64, updatedevicemetadatainbatchrequest *UpdateDeviceMetadataInBatchRequest) *PartnersDevicesUpdateMetadataAsyncCall { + c := &PartnersDevicesUpdateMetadataAsyncCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.partnerId = partnerId + c.updatedevicemetadatainbatchrequest = updatedevicemetadatainbatchrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PartnersDevicesUpdateMetadataAsyncCall) Fields(s ...googleapi.Field) *PartnersDevicesUpdateMetadataAsyncCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PartnersDevicesUpdateMetadataAsyncCall) Context(ctx context.Context) *PartnersDevicesUpdateMetadataAsyncCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PartnersDevicesUpdateMetadataAsyncCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PartnersDevicesUpdateMetadataAsyncCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.updatedevicemetadatainbatchrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/partners/{+partnerId}/devices:updateMetadataAsync") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "partnerId": strconv.FormatInt(c.partnerId, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androiddeviceprovisioning.partners.devices.updateMetadataAsync" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *PartnersDevicesUpdateMetadataAsyncCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Set metadata in batch asynchronously.", + // "flatPath": "v1/partners/{partnersId}/devices:updateMetadataAsync", + // "httpMethod": "POST", + // "id": "androiddeviceprovisioning.partners.devices.updateMetadataAsync", + // "parameterOrder": [ + // "partnerId" + // ], + // "parameters": { + // "partnerId": { + // "description": "partner id.", + // "format": "int64", + // "location": "path", + // "pattern": "^[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/partners/{+partnerId}/devices:updateMetadataAsync", + // "request": { + // "$ref": "UpdateDeviceMetadataInBatchRequest" + // }, + // "response": { + // "$ref": "Operation" + // } + // } + +} diff --git a/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-api.json b/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-api.json index 25e6ec2..b018196 100644 --- a/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-api.json +++ b/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-api.json @@ -1,12 +1,12 @@ { "kind": "discovery#restDescription", - "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/NquYLxR1-tsUnZG1v-8eQMTpQks\"", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/e3jcf-2wlugY_Scc81L9INYT5aA\"", "discoveryVersion": "v1", "id": "androidenterprise:v1", "name": "androidenterprise", "canonicalName": "Android Enterprise", "version": "v1", - "revision": "20170809", + "revision": "20170823", "title": "Google Play EMM API", "description": "Manages the deployment of apps to Android for Work users.", "ownerDomain": "google.com", @@ -971,6 +971,10 @@ "type": "boolean", "description": "Deprecated." }, + "signingCertificate": { + "$ref": "ProductSigningCertificate", + "description": "The certificate used to sign this product." + }, "smallIconUrl": { "type": "string", "description": "A link to a smaller image that can be used as an icon for the product. This image is suitable for use at up to 128px x 128px." @@ -1076,6 +1080,20 @@ } } }, + "ProductSigningCertificate": { + "id": "ProductSigningCertificate", + "type": "object", + "properties": { + "certificateHashSha1": { + "type": "string", + "description": "The base64 urlsafe encoded SHA1 hash of the certificate. (This field is deprecated in favor of SHA2-256. It should not be used and may be removed at any time.)" + }, + "certificateHashSha256": { + "type": "string", + "description": "The base64 urlsafe encoded SHA2-256 hash of the certificate." + } + } + }, "ProductsApproveRequest": { "id": "ProductsApproveRequest", "type": "object", @@ -1900,7 +1918,7 @@ "id": "androidenterprise.enterprises.sendTestPushNotification", "path": "enterprises/{enterpriseId}/sendTestPushNotification", "httpMethod": "POST", - "description": "Sends a test push notification to validate the EMM integration with the Google Cloud Pub/Sub service for this enterprise.", + "description": "Sends a test notification to validate the EMM integration with the Google Cloud Pub/Sub service for this enterprise.", "parameters": { "enterpriseId": { "type": "string", diff --git a/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-gen.go b/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-gen.go index 40fe77e..b2c390b 100644 --- a/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-gen.go +++ b/vendor/google.golang.org/api/androidenterprise/v1/androidenterprise-gen.go @@ -2003,6 +2003,9 @@ type Product struct { // RequiresContainerApp: Deprecated. RequiresContainerApp bool `json:"requiresContainerApp,omitempty"` + // SigningCertificate: The certificate used to sign this product. + SigningCertificate *ProductSigningCertificate `json:"signingCertificate,omitempty"` + // SmallIconUrl: A link to a smaller image that can be used as an icon // for the product. This image is suitable for use at up to 128px x // 128px. @@ -2241,6 +2244,40 @@ func (s *ProductSet) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +type ProductSigningCertificate struct { + // CertificateHashSha1: The base64 urlsafe encoded SHA1 hash of the + // certificate. (This field is deprecated in favor of SHA2-256. It + // should not be used and may be removed at any time.) + CertificateHashSha1 string `json:"certificateHashSha1,omitempty"` + + // CertificateHashSha256: The base64 urlsafe encoded SHA2-256 hash of + // the certificate. + CertificateHashSha256 string `json:"certificateHashSha256,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CertificateHashSha1") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CertificateHashSha1") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ProductSigningCertificate) MarshalJSON() ([]byte, error) { + type noMethod ProductSigningCertificate + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + type ProductsApproveRequest struct { // ApprovalUrlInfo: The approval URL that was shown to the user. Only // the permissions shown to the user with that URL will be accepted, @@ -5328,8 +5365,8 @@ type EnterprisesSendTestPushNotificationCall struct { header_ http.Header } -// SendTestPushNotification: Sends a test push notification to validate -// the EMM integration with the Google Cloud Pub/Sub service for this +// SendTestPushNotification: Sends a test notification to validate the +// EMM integration with the Google Cloud Pub/Sub service for this // enterprise. func (r *EnterprisesService) SendTestPushNotification(enterpriseId string) *EnterprisesSendTestPushNotificationCall { c := &EnterprisesSendTestPushNotificationCall{s: r.s, urlParams_: make(gensupport.URLParams)} @@ -5420,7 +5457,7 @@ func (c *EnterprisesSendTestPushNotificationCall) Do(opts ...googleapi.CallOptio } return ret, nil // { - // "description": "Sends a test push notification to validate the EMM integration with the Google Cloud Pub/Sub service for this enterprise.", + // "description": "Sends a test notification to validate the EMM integration with the Google Cloud Pub/Sub service for this enterprise.", // "httpMethod": "POST", // "id": "androidenterprise.enterprises.sendTestPushNotification", // "parameterOrder": [ diff --git a/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-api.json b/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-api.json new file mode 100644 index 0000000..9ca5bcc --- /dev/null +++ b/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-api.json @@ -0,0 +1,2345 @@ +{ + "id": "androidmanagement:v1", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/androidmanagement": { + "description": "Manage Android devices and apps for your customers" + } + } + } + }, + "description": "The Android Management API provides remote enterprise management of Android devices and apps.", + "protocol": "rest", + "title": "Android Management API", + "resources": { + "signupUrls": { + "methods": { + "create": { + "id": "androidmanagement.signupUrls.create", + "response": { + "$ref": "SignupUrl" + }, + "parameterOrder": [], + "description": "Creates an enterprise signup URL.", + "flatPath": "v1/signupUrls", + "httpMethod": "POST", + "parameters": { + "callbackUrl": { + "description": "The callback URL to which the admin will be redirected after successfully creating an enterprise. Before redirecting there the system will add a query parameter to this URL named enterpriseToken which will contain an opaque token to be used for the create enterprise request. The URL will be parsed then reformatted in order to add the enterpriseToken parameter, so there may be some minor formatting changes.", + "location": "query", + "type": "string" + }, + "projectId": { + "description": "The id of the Google Cloud Platform project which will own the enterprise.", + "location": "query", + "type": "string" + } + }, + "path": "v1/signupUrls", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + }, + "enterprises": { + "resources": { + "policies": { + "methods": { + "get": { + "id": "androidmanagement.enterprises.policies.get", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "name" + ], + "description": "Gets a policy.", + "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + "required": true, + "pattern": "^enterprises/[^/]+/policies/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "list": { + "id": "androidmanagement.enterprises.policies.list", + "response": { + "$ref": "ListPoliciesResponse" + }, + "parameterOrder": [ + "parent" + ], + "description": "Lists policies for a given enterprise.", + "flatPath": "v1/enterprises/{enterprisesId}/policies", + "httpMethod": "GET", + "parameters": { + "pageSize": { + "description": "The requested page size. The actual page size may be fixed to a min or max value.", + "location": "query", + "type": "integer", + "format": "int32" + }, + "parent": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + }, + "pageToken": { + "description": "A token identifying a page of results the server should return.", + "location": "query", + "type": "string" + } + }, + "path": "v1/{+parent}/policies", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "patch": { + "id": "androidmanagement.enterprises.policies.patch", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "name" + ], + "description": "Updates or creates a policy.", + "request": { + "$ref": "Policy" + }, + "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + "httpMethod": "PATCH", + "parameters": { + "updateMask": { + "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + "location": "query", + "type": "string", + "format": "google-fieldmask" + }, + "name": { + "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + "required": true, + "pattern": "^enterprises/[^/]+/policies/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "delete": { + "id": "androidmanagement.enterprises.policies.delete", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "description": "Deletes a policy. This operation is only permitted if no devices are currently referencing the policy.", + "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + "required": true, + "pattern": "^enterprises/[^/]+/policies/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + }, + "applications": { + "methods": { + "get": { + "id": "androidmanagement.enterprises.applications.get", + "response": { + "$ref": "Application" + }, + "parameterOrder": [ + "name" + ], + "description": "Gets info about an application.", + "flatPath": "v1/enterprises/{enterprisesId}/applications/{applicationsId}", + "httpMethod": "GET", + "parameters": { + "languageCode": { + "description": "The preferred language for localized application info, as a BCP47 tag (e.g. \"en-US\", \"de\"). If not specified the default language of the application will be used.", + "location": "query", + "type": "string" + }, + "name": { + "description": "The name of the application in the form enterprises/{enterpriseId}/applications/{package_name}", + "required": true, + "pattern": "^enterprises/[^/]+/applications/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + }, + "enrollmentTokens": { + "methods": { + "create": { + "id": "androidmanagement.enterprises.enrollmentTokens.create", + "response": { + "$ref": "EnrollmentToken" + }, + "parameterOrder": [ + "parent" + ], + "description": "Creates an enrollment token for a given enterprise.", + "request": { + "$ref": "EnrollmentToken" + }, + "flatPath": "v1/enterprises/{enterprisesId}/enrollmentTokens", + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+parent}/enrollmentTokens", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "delete": { + "id": "androidmanagement.enterprises.enrollmentTokens.delete", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "description": "Deletes an enrollment token, which prevents future use of the token.", + "flatPath": "v1/enterprises/{enterprisesId}/enrollmentTokens/{enrollmentTokensId}", + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "The name of the enrollment token in the form enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}", + "required": true, + "pattern": "^enterprises/[^/]+/enrollmentTokens/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + }, + "webTokens": { + "methods": { + "create": { + "id": "androidmanagement.enterprises.webTokens.create", + "response": { + "$ref": "WebToken" + }, + "parameterOrder": [ + "parent" + ], + "description": "Creates a web token to access an embeddable managed Google Play web UI for a given enterprise.", + "request": { + "$ref": "WebToken" + }, + "flatPath": "v1/enterprises/{enterprisesId}/webTokens", + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+parent}/webTokens", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + }, + "devices": { + "resources": { + "operations": { + "methods": { + "get": { + "id": "androidmanagement.enterprises.devices.operations.get", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}", + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the operation resource.", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "list": { + "id": "androidmanagement.enterprises.devices.operations.list", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations", + "httpMethod": "GET", + "parameters": { + "pageSize": { + "description": "The standard list page size.", + "location": "query", + "type": "integer", + "format": "int32" + }, + "filter": { + "description": "The standard list filter.", + "location": "query", + "type": "string" + }, + "name": { + "description": "The name of the operation's parent resource.", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+/operations$", + "location": "path", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "location": "query", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "delete": { + "id": "androidmanagement.enterprises.devices.operations.delete", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}", + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "The name of the operation resource to be deleted.", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "cancel": { + "id": "androidmanagement.enterprises.devices.operations.cancel", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}:cancel", + "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the operation resource to be cancelled.", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}:cancel", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + } + }, + "methods": { + "get": { + "id": "androidmanagement.enterprises.devices.get", + "response": { + "$ref": "Device" + }, + "parameterOrder": [ + "name" + ], + "description": "Gets a device.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "list": { + "id": "androidmanagement.enterprises.devices.list", + "response": { + "$ref": "ListDevicesResponse" + }, + "parameterOrder": [ + "parent" + ], + "description": "Lists devices for a given enterprise.", + "flatPath": "v1/enterprises/{enterprisesId}/devices", + "httpMethod": "GET", + "parameters": { + "pageSize": { + "description": "The requested page size. The actual page size may be fixed to a min or max value.", + "location": "query", + "type": "integer", + "format": "int32" + }, + "parent": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + }, + "pageToken": { + "description": "A token identifying a page of results the server should return.", + "location": "query", + "type": "string" + } + }, + "path": "v1/{+parent}/devices", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "issueCommand": { + "id": "androidmanagement.enterprises.devices.issueCommand", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "description": "Issues a command to a device. The Operation resource returned contains a Command in its metadata field. Use the get operation method to get the status of the command.", + "request": { + "$ref": "Command" + }, + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}:issueCommand", + "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}:issueCommand", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "patch": { + "id": "androidmanagement.enterprises.devices.patch", + "response": { + "$ref": "Device" + }, + "parameterOrder": [ + "name" + ], + "description": "Updates a device.", + "request": { + "$ref": "Device" + }, + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + "httpMethod": "PATCH", + "parameters": { + "updateMask": { + "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + "location": "query", + "type": "string", + "format": "google-fieldmask" + }, + "name": { + "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "delete": { + "id": "androidmanagement.enterprises.devices.delete", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "description": "Deletes a device, which causes the device to be wiped.", + "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + "required": true, + "pattern": "^enterprises/[^/]+/devices/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + } + }, + "methods": { + "create": { + "id": "androidmanagement.enterprises.create", + "response": { + "$ref": "Enterprise" + }, + "parameterOrder": [], + "description": "Creates an enterprise by completing the enterprise signup flow.", + "request": { + "$ref": "Enterprise" + }, + "flatPath": "v1/enterprises", + "httpMethod": "POST", + "parameters": { + "signupUrlName": { + "description": "The name of the SignupUrl used to sign up for the enterprise.", + "location": "query", + "type": "string" + }, + "enterpriseToken": { + "description": "The enterprise token appended to the callback URL.", + "location": "query", + "type": "string" + }, + "projectId": { + "description": "The id of the Google Cloud Platform project which will own the enterprise.", + "location": "query", + "type": "string" + } + }, + "path": "v1/enterprises", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "get": { + "id": "androidmanagement.enterprises.get", + "response": { + "$ref": "Enterprise" + }, + "parameterOrder": [ + "name" + ], + "description": "Gets an enterprise.", + "flatPath": "v1/enterprises/{enterprisesId}", + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + }, + "patch": { + "id": "androidmanagement.enterprises.patch", + "response": { + "$ref": "Enterprise" + }, + "parameterOrder": [ + "name" + ], + "description": "Updates an enterprise.", + "request": { + "$ref": "Enterprise" + }, + "flatPath": "v1/enterprises/{enterprisesId}", + "httpMethod": "PATCH", + "parameters": { + "updateMask": { + "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + "location": "query", + "type": "string", + "format": "google-fieldmask" + }, + "name": { + "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + "required": true, + "pattern": "^enterprises/[^/]+$", + "location": "path", + "type": "string" + } + }, + "path": "v1/{+name}", + "scopes": [ + "https://www.googleapis.com/auth/androidmanagement" + ] + } + } + } + }, + "schemas": { + "Device": { + "description": "A device owned by an enterprise. Unless otherwise noted, all fields are read-only and cannot be modified by an update device request.", + "type": "object", + "properties": { + "userName": { + "description": "The resource name of the user of the device in the form enterprises/{enterpriseId}/users/{userId}. This is the name of the device account automatically created for this device.", + "type": "string" + }, + "disabledReason": { + "description": "If the device state is DISABLED, an optional message that is displayed on the device indicating the reason the device is disabled. This field may be modified by an update request.", + "$ref": "UserFacingMessage" + }, + "policyName": { + "description": "The name of the policy that is intended to be applied to the device. If empty, the policy with id default is applied. This field may be modified by an update request. The name of the policy is in the form enterprises/{enterpriseId}/policies/{policyId}. It is also permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.", + "type": "string" + }, + "lastPolicyComplianceReportTime": { + "description": "The last time the device sent a policy compliance report.", + "type": "string", + "format": "google-datetime" + }, + "nonComplianceDetails": { + "description": "Details about policy settings for which the device is not in compliance.", + "type": "array", + "items": { + "$ref": "NonComplianceDetail" + } + }, + "lastPolicySyncTime": { + "description": "The last time the device fetched its policy.", + "type": "string", + "format": "google-datetime" + }, + "networkInfo": { + "description": "Device network information. This information is only available when networkInfoEnabled is true in the device's policy.", + "$ref": "NetworkInfo" + }, + "appliedState": { + "description": "The state that is currently applied by the device.", + "enum": [ + "DEVICE_STATE_UNSPECIFIED", + "ACTIVE", + "DISABLED", + "DELETED", + "PROVISIONING" + ], + "enumDescriptions": [ + "This value is disallowed.", + "The device is active.", + "The device is disabled.", + "The device was deleted. This state will never be returned by an API call, but will be used in the final policy compliance report published to Cloud Pub/Sub when the device acknowledges the deletion.", + "The device is being provisioned. Newly enrolled devices will be in this state until they have applied policy." + ], + "type": "string" + }, + "enrollmentTokenData": { + "description": "If this device was enrolled with an enrollment token with additional data provided, this field contains that data.", + "type": "string" + }, + "enrollmentTokenName": { + "description": "If this device was enrolled with an enrollment token, this field contains the name of the token.", + "type": "string" + }, + "memoryInfo": { + "description": "Memory information. This information is only available when memoryInfoEnabled is true in the device's policy.", + "$ref": "MemoryInfo" + }, + "state": { + "description": "The state that is intended to be applied to the device. This field may be modified by an update request. Note that UpdateDevice only handles toggling between ACTIVE and DISABLED states. Use the delete device method to cause the device to enter the DELETED state.", + "enum": [ + "DEVICE_STATE_UNSPECIFIED", + "ACTIVE", + "DISABLED", + "DELETED", + "PROVISIONING" + ], + "enumDescriptions": [ + "This value is disallowed.", + "The device is active.", + "The device is disabled.", + "The device was deleted. This state will never be returned by an API call, but will be used in the final policy compliance report published to Cloud Pub/Sub when the device acknowledges the deletion.", + "The device is being provisioned. Newly enrolled devices will be in this state until they have applied policy." + ], + "type": "string" + }, + "softwareInfo": { + "description": "Detailed information about the device software. This information is only available when softwareInfoEnabled is true in the device's policy.", + "$ref": "SoftwareInfo" + }, + "memoryEvents": { + "description": "Events related to memory and storage measurements in chronological order. This information is only available when memoryInfoEnabled is true in the device's policy.", + "type": "array", + "items": { + "$ref": "MemoryEvent" + } + }, + "previousDeviceNames": { + "description": "The previous device names used for the same physical device when it has been enrolled multiple times. The serial number is used as the unique identifier to determine if the same physical device has enrolled previously. The names are in chronological order.", + "type": "array", + "items": { + "type": "string" + } + }, + "policyCompliant": { + "description": "Whether the device is compliant with its policy.", + "type": "boolean" + }, + "lastStatusReportTime": { + "description": "The last time the device sent a status report.", + "type": "string", + "format": "google-datetime" + }, + "name": { + "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + "type": "string" + }, + "hardwareStatusSamples": { + "description": "Hardware status samples in chronological order. This information is only available when hardwareStatusEnabled is true in the device's policy.", + "type": "array", + "items": { + "$ref": "HardwareStatus" + } + }, + "enrollmentTime": { + "description": "The time of device enrollment.", + "type": "string", + "format": "google-datetime" + }, + "appliedPolicyVersion": { + "description": "The version of the policy that is currently applied by the device.", + "type": "string", + "format": "int64" + }, + "apiLevel": { + "description": "The API level of the Android platform version running on the device.", + "type": "integer", + "format": "int32" + }, + "hardwareInfo": { + "description": "Detailed information about the device hardware.", + "$ref": "HardwareInfo" + }, + "appliedPolicyName": { + "description": "The name of the policy that is currently applied by the device.", + "type": "string" + }, + "displays": { + "description": "Displays on the device. This information is only available when displayInfoEnabled is true in the device's policy.", + "type": "array", + "items": { + "$ref": "Display" + } + }, + "powerManagementEvents": { + "description": "Power management events on the device in chronological order. This information is only available when powerManagementEventsEnabled is true in the device's policy.", + "type": "array", + "items": { + "$ref": "PowerManagementEvent" + } + } + }, + "id": "Device" + }, + "PermissionGrant": { + "description": "Configuration for an Android permission and its grant state.", + "type": "object", + "properties": { + "permission": { + "description": "The android permission, e.g. android.permission.READ_CALENDAR.", + "type": "string" + }, + "policy": { + "description": "The policy for granting the permission.", + "enum": [ + "PERMISSION_POLICY_UNSPECIFIED", + "PROMPT", + "GRANT", + "DENY" + ], + "enumDescriptions": [ + "Policy not specified. If no policy is specified for a permission at any level, then the PROMPT behavior is used by default.", + "Prompt the user to grant a permission.", + "Automatically grant a permission.", + "Automatically deny a permission." + ], + "type": "string" + } + }, + "id": "PermissionGrant" + }, + "Application": { + "description": "Application information.", + "type": "object", + "properties": { + "managedProperties": { + "description": "The set of managed properties available to be pre-configured for the application.", + "type": "array", + "items": { + "$ref": "ManagedProperty" + } + }, + "title": { + "description": "The title of the application. Localized.", + "type": "string" + }, + "permissions": { + "description": "The permissions required by the app.", + "type": "array", + "items": { + "$ref": "ApplicationPermission" + } + }, + "name": { + "description": "The name of the application in the form enterprises/{enterpriseId}/applications/{package_name}", + "type": "string" + } + }, + "id": "Application" + }, + "Status": { + "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "code": { + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer", + "format": "int32" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", + "type": "array", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + } + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "ApplicationPolicy": { + "description": "Policy for an individual app.", + "type": "object", + "properties": { + "lockTaskAllowed": { + "description": "Whether the application is allowed to lock itself in full-screen mode.", + "type": "boolean" + }, + "permissionGrants": { + "description": "Explicit permission grants or denials for the app. These values override the default_permission_policy.", + "type": "array", + "items": { + "$ref": "PermissionGrant" + } + }, + "managedConfiguration": { + "description": "Managed configuration applied to the app. The format for the configuration is dictated by the ManagedProperty values supported by the app. Each field name in the managed configuration must match the key field of the ManagedProperty. The field value must be compatible with the type of the ManagedProperty: \u003ctable\u003e \u003ctr\u003e\u003ctd\u003e\u003ci\u003etype\u003c/i\u003e\u003c/td\u003e\u003ctd\u003e\u003ci\u003eJSON value\u003c/i\u003e\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eBOOL\u003c/td\u003e\u003ctd\u003etrue or false\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eSTRING\u003c/td\u003e\u003ctd\u003estring\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eINTEGER\u003c/td\u003e\u003ctd\u003enumber\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eCHOICE\u003c/td\u003e\u003ctd\u003estring\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eMULTISELECT\u003c/td\u003e\u003ctd\u003earray of strings\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eHIDDEN\u003c/td\u003e\u003ctd\u003estring\u003c/td\u003e\u003c/tr\u003e \u003ctr\u003e\u003ctd\u003eBUNDLE_ARRAY\u003c/td\u003e\u003ctd\u003earray of objects\u003c/td\u003e\u003c/tr\u003e \u003c/table\u003e", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "type": "object" + }, + "packageName": { + "description": "The package name of the app, e.g. com.google.android.youtube for the YouTube app.", + "type": "string" + }, + "installType": { + "description": "The type of installation to perform.", + "enum": [ + "INSTALL_TYPE_UNSPECIFIED", + "PREINSTALLED", + "FORCE_INSTALLED" + ], + "enumDescriptions": [ + "No automatic installation is performed. Any other app policies will be applied if the user installs the app.", + "The application is automatically installed and can be removed by the user.", + "The application is automatically installed and cannot be removed by the user." + ], + "type": "string" + }, + "defaultPermissionPolicy": { + "description": "The default policy for all permissions requested by the app. If specified, this overrides the policy-level default_permission_policy which applies to all apps.", + "enum": [ + "PERMISSION_POLICY_UNSPECIFIED", + "PROMPT", + "GRANT", + "DENY" + ], + "enumDescriptions": [ + "Policy not specified. If no policy is specified for a permission at any level, then the PROMPT behavior is used by default.", + "Prompt the user to grant a permission.", + "Automatically grant a permission.", + "Automatically deny a permission." + ], + "type": "string" + } + }, + "id": "ApplicationPolicy" + }, + "ApplicationPermission": { + "description": "Application permission.", + "type": "object", + "properties": { + "description": { + "description": "A longer description of the permission, giving more details of what it affects. Localized.", + "type": "string" + }, + "permissionId": { + "description": "An opaque string uniquely identifying the permission. Not localized.", + "type": "string" + }, + "name": { + "description": "The name of the permission. Localized.", + "type": "string" + } + }, + "id": "ApplicationPermission" + }, + "ManagedProperty": { + "description": "Managed property.", + "type": "object", + "properties": { + "nestedProperties": { + "description": "For BUNDLE_ARRAY properties, the list of nested properties. A BUNDLE_ARRAY property is at most two levels deep.", + "type": "array", + "items": { + "$ref": "ManagedProperty" + } + }, + "description": { + "description": "A longer description of the property, giving more detail of what it affects. Localized.", + "type": "string" + }, + "defaultValue": { + "description": "The default value of the properties. BUNDLE_ARRAY properties never have a default value.", + "type": "any" + }, + "title": { + "description": "The name of the property. Localized.", + "type": "string" + }, + "key": { + "description": "The unique key that the application uses to identify the property, e.g. \"com.google.android.gm.fieldname\".", + "type": "string" + }, + "entries": { + "description": "For CHOICE or MULTISELECT properties, the list of possible entries.", + "type": "array", + "items": { + "$ref": "ManagedPropertyEntry" + } + }, + "type": { + "description": "The type of the property.", + "enum": [ + "MANAGED_PROPERTY_TYPE_UNSPECIFIED", + "BOOL", + "STRING", + "INTEGER", + "CHOICE", + "MULTISELECT", + "HIDDEN", + "BUNDLE_ARRAY" + ], + "enumDescriptions": [ + "Not used.", + "A property of boolean type.", + "A property of string type.", + "A property of integer type.", + "A choice of one item from a set.", + "A choice of multiple items from a set.", + "A hidden restriction of string type (the default value can be used to pass along information that cannot be modified, such as a version code).", + "An array of property bundles." + ], + "type": "string" + } + }, + "id": "ManagedProperty" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a network API call.", + "type": "object", + "properties": { + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, + "metadata": { + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "response": { + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", + "type": "string" + } + }, + "id": "Operation" + }, + "NonComplianceDetailCondition": { + "description": "A compliance rule condition which is satisfied if there exists any matching NonComplianceDetail for the device. A NonComplianceDetail matches a NonComplianceDetailCondition if all the fields which are set within the NonComplianceDetailCondition match the corresponding NonComplianceDetail fields.", + "type": "object", + "properties": { + "nonComplianceReason": { + "description": "The reason the device is not in compliance with the setting. If not set, then this condition matches any reason.", + "enum": [ + "NON_COMPLIANCE_REASON_UNSPECIFIED", + "API_LEVEL", + "ADMIN_TYPE", + "USER_ACTION", + "INVALID_VALUE", + "APP_NOT_INSTALLED", + "UNSUPPORTED", + "APP_INSTALLED", + "PENDING", + "APP_INCOMPATIBLE" + ], + "enumDescriptions": [ + "This value is disallowed.", + "The setting is not supported in the API level of Android OS version the device is running.", + "The admin type (profile owner, device owner, etc.) does not support the setting.", + "The user has not taken required action to comply with the setting.", + "The setting has an invalid value.", + "The application required to implement the policy is not installed.", + "The policy is not supported by the version of Android Device Policy on the device.", + "A blocked application is installed.", + "The setting was not applied yet at the time of the report, but is expected to be applied shortly.", + "The setting cannot be applied to the application because its target SDK version is not high enough." + ], + "type": "string" + }, + "settingName": { + "description": "The name of the policy setting. This is the JSON field name of a top-level Policy field. If not set, then this condition matches any setting name.", + "type": "string" + }, + "packageName": { + "description": "The package name indicating which application is out of compliance. If not set, then this condition matches any package name. If this field is set, then setting_name must be unset or set to applications; otherwise, the condition would never be satisfied.", + "type": "string" + } + }, + "id": "NonComplianceDetailCondition" + }, + "NonComplianceDetail": { + "description": "Provides detail about non-compliance with a policy setting.", + "type": "object", + "properties": { + "settingName": { + "description": "The name of the policy setting. This is the JSON field name of a top-level Policy field.", + "type": "string" + }, + "currentValue": { + "description": "If the policy setting could not be applied, the current value of the setting on the device.", + "type": "any" + }, + "packageName": { + "description": "The package name indicating which application is out of compliance, if applicable.", + "type": "string" + }, + "installationFailureReason": { + "description": "If package_name is set and the non-compliance reason is APP_NOT_INSTALLED, the detailed reason the app cannot be installed.", + "enum": [ + "INSTALLATION_FAILURE_REASON_UNSPECIFIED", + "INSTALLATION_FAILURE_REASON_UNKNOWN", + "IN_PROGRESS", + "NOT_FOUND", + "NOT_COMPATIBLE_WITH_DEVICE", + "NOT_APPROVED", + "PERMISSIONS_NOT_ACCEPTED", + "NOT_AVAILABLE_IN_COUNTRY", + "NO_LICENSES_REMAINING", + "NOT_ENROLLED", + "USER_INVALID" + ], + "enumDescriptions": [ + "This value is disallowed.", + "An unknown condition is preventing the app from being installed. Some potential reaons are that the device does not have enough storage, the device network connection is unreliable, or the installation is taking longer than expected. The installation will be retried automatically.", + "The installation is still in progress.", + "The app was not found in Play.", + "The app is incompatible with the device.", + "The app has not been approved by the admin.", + "The app has new permissions that have not been accepted by the admin.", + "The app is not available in the user's country.", + "There are no more licenses to assign to the user.", + "The enterprise is no longer enrolled with Play for Work or Android Device Policy is not enabled for the enterprise.", + "The user is no longer valid. The user may have been deleted or disabled." + ], + "type": "string" + }, + "fieldPath": { + "description": "For settings with nested fields, if a particular nested field is out of compliance, this specifies the full path to the offending field. The path is formatted in the same way the policy JSON field would be referenced in JavaScript, that is: 1) For object-typed fields, the field name is followed by a dot then by a subfield name. 2) For array-typed fields, the field name is followed by the array index enclosed in brackets. For example, to indicate a problem with the url field in the externalData field in the 3rd application, the path would be applications[2].externalData.url", + "type": "string" + }, + "nonComplianceReason": { + "description": "The reason the device is not in compliance with the setting.", + "enum": [ + "NON_COMPLIANCE_REASON_UNSPECIFIED", + "API_LEVEL", + "ADMIN_TYPE", + "USER_ACTION", + "INVALID_VALUE", + "APP_NOT_INSTALLED", + "UNSUPPORTED", + "APP_INSTALLED", + "PENDING", + "APP_INCOMPATIBLE" + ], + "enumDescriptions": [ + "This value is disallowed.", + "The setting is not supported in the API level of Android OS version the device is running.", + "The admin type (profile owner, device owner, etc.) does not support the setting.", + "The user has not taken required action to comply with the setting.", + "The setting has an invalid value.", + "The application required to implement the policy is not installed.", + "The policy is not supported by the version of Android Device Policy on the device.", + "A blocked application is installed.", + "The setting was not applied yet at the time of the report, but is expected to be applied shortly.", + "The setting cannot be applied to the application because its target SDK version is not high enough." + ], + "type": "string" + } + }, + "id": "NonComplianceDetail" + }, + "ListDevicesResponse": { + "description": "Response to a request to list devices for a given enterprise.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If there are more results, a token to retrieve next page of results.", + "type": "string" + }, + "devices": { + "description": "The list of devices.", + "type": "array", + "items": { + "$ref": "Device" + } + } + }, + "id": "ListDevicesResponse" + }, + "PersistentPreferredActivity": { + "description": "A default activity for handling intents that match a particular intent filter.", + "type": "object", + "properties": { + "receiverActivity": { + "description": "The activity that should be the default intent handler. This should be an Android component name, e.g. com.android.enterprise.app/.MainActivity. Alternatively, the value may be the package name of an app, which causes Android Device Policy to choose an appropriate activity from the app to handle the intent.", + "type": "string" + }, + "actions": { + "description": "The intent actions to match in the filter. If any actions are included in the filter, then an intent's action must be one of those values for it to match. If no actions are included, the intent action is ignored.", + "type": "array", + "items": { + "type": "string" + } + }, + "categories": { + "description": "The intent categories to match in the filter. An intent includes the categories that it requires, all of which must be included in the filter in order to match. In other words, adding a category to the filter has no impact on matching unless that category is specified in the intent.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "id": "PersistentPreferredActivity" + }, + "Policy": { + "description": "A policy, which governs behavior for a device.", + "type": "object", + "properties": { + "openNetworkConfiguration": { + "description": "Network configuration for the device. See configure networks for more information.", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "type": "object" + }, + "adjustVolumeDisabled": { + "description": "Whether adjusting the master volume is disabled.", + "type": "boolean" + }, + "passwordRequirements": { + "description": "Password requirements.", + "$ref": "PasswordRequirements" + }, + "modifyAccountsDisabled": { + "description": "Whether adding or removing accounts is disabled.", + "type": "boolean" + }, + "statusReportingSettings": { + "description": "Status reporting settings", + "$ref": "StatusReportingSettings" + }, + "factoryResetDisabled": { + "description": "Whether factory resetting from settings is disabled.", + "type": "boolean" + }, + "funDisabled": { + "description": "Whether the user is allowed to have fun. Controls whether the Easter egg game in Settings is disabled.", + "type": "boolean" + }, + "applications": { + "description": "Policy applied to apps.", + "type": "array", + "items": { + "$ref": "ApplicationPolicy" + } + }, + "safeBootDisabled": { + "description": "Whether rebooting the device into safe boot is disabled.", + "type": "boolean" + }, + "complianceRules": { + "description": "Rules declaring which mitigating actions to take when a device is not compliant with its policy. When the conditions for multiple rules are satisfied, all of the mitigating actions for the rules are taken. There is a maximum limit of 100 rules.", + "type": "array", + "items": { + "$ref": "ComplianceRule" + } + }, + "unmuteMicrophoneDisabled": { + "description": "Whether the microphone is muted and adjusting microphone volume is disabled.", + "type": "boolean" + }, + "installUnknownSourcesAllowed": { + "description": "Whether the user is allowed to enable the \"Unknown Sources\" setting, which allows installation of apps from unknown sources.", + "type": "boolean" + }, + "removeUserDisabled": { + "description": "Whether removing other users is disabled.", + "type": "boolean" + }, + "statusBarDisabled": { + "description": "Whether the status bar is disabled. This disables notifications, quick settings and other screen overlays that allow escape from full-screen mode.", + "type": "boolean" + }, + "stayOnPluggedModes": { + "description": "The battery plugged in modes for which the device stays on. When using this setting, it is recommended to clear maximum_time_to_lock so that the device doesn't lock itself while it stays on.", + "enumDescriptions": [ + "This value is ignored.", + "Power source is an AC charger.", + "Power source is a USB port.", + "Power source is wireless." + ], + "type": "array", + "items": { + "enum": [ + "BATTERY_PLUGGED_MODE_UNSPECIFIED", + "AC", + "USB", + "WIRELESS" + ], + "type": "string" + } + }, + "cameraDisabled": { + "description": "Whether all cameras on the device are disabled.", + "type": "boolean" + }, + "blockApplicationsEnabled": { + "description": "Whether applications other than the ones configured in applications are blocked from being installed. When set, applications that were installed under a previous policy but no longer appear in the policy are automatically uninstalled.", + "type": "boolean" + }, + "debuggingFeaturesAllowed": { + "description": "Whether the user is allowed to enable debugging features.", + "type": "boolean" + }, + "maximumTimeToLock": { + "description": "Maximum time in milliseconds for user activity until the device will lock. A value of 0 means there is no restriction.", + "type": "string", + "format": "int64" + }, + "name": { + "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + "type": "string" + }, + "defaultPermissionPolicy": { + "description": "The default permission policy for requests for runtime permissions.", + "enum": [ + "PERMISSION_POLICY_UNSPECIFIED", + "PROMPT", + "GRANT", + "DENY" + ], + "enumDescriptions": [ + "Policy not specified. If no policy is specified for a permission at any level, then the PROMPT behavior is used by default.", + "Prompt the user to grant a permission.", + "Automatically grant a permission.", + "Automatically deny a permission." + ], + "type": "string" + }, + "persistentPreferredActivities": { + "description": "Default intent handler activities.", + "type": "array", + "items": { + "$ref": "PersistentPreferredActivity" + } + }, + "networkEscapeHatchEnabled": { + "description": "Flag to specify if network escape hatch is enabled. If this flag has been enabled then upon device boot if device has no network connection, then an activity will be shown that allows the user to temporarily connect to a network to fetch the latest policy. The launched activity will time out if no network has been connected for a given while and will return to the previous activity that was shown.", + "type": "boolean" + }, + "systemUpdate": { + "description": "The system update policy, which controls how OS updates are applied. If the update type is WINDOWED and the device has a device account, the update window will automatically apply to Play app updates as well.", + "$ref": "SystemUpdate" + }, + "frpAdminEmails": { + "description": "Email addresses of device administrators for factory reset protection. When the device is factory reset, it will require one of these admins to log in with the Google account email and password to unlock the device. If no admins are specified, the device will not provide factory reset protection.", + "type": "array", + "items": { + "type": "string" + } + }, + "version": { + "description": "The version of the policy. This is a read-only field. The version is incremented each time the policy is updated.", + "type": "string", + "format": "int64" + }, + "screenCaptureDisabled": { + "description": "Whether screen capture is disabled.", + "type": "boolean" + }, + "keyguardDisabled": { + "description": "Whether the keyguard is disabled.", + "type": "boolean" + }, + "addUserDisabled": { + "description": "Whether adding new users and profiles is disabled.", + "type": "boolean" + } + }, + "id": "Policy" + }, + "Command": { + "description": "A command.", + "type": "object", + "properties": { + "duration": { + "description": "The duration for which the command is valid. The command will expire if not executed by the device during this time. The default duration if unspecified is ten minutes. There is no maximum duration.", + "type": "string", + "format": "google-duration" + }, + "newPassword": { + "description": "For commands of type RESET_PASSWORD, optionally specifies the new password.", + "type": "string" + }, + "type": { + "description": "The type of the command.", + "enum": [ + "COMMAND_TYPE_UNSPECIFIED", + "LOCK", + "RESET_PASSWORD", + "REBOOT" + ], + "enumDescriptions": [ + "This value is disallowed.", + "Lock the device, as if the lock screen timeout had expired.", + "Reset the user's password.", + "Reboot the device. Only supported on API level 24+." + ], + "type": "string" + }, + "createTime": { + "description": "The timestamp at which the command was created. The timestamp is automatically generated by the server.", + "type": "string", + "format": "google-datetime" + }, + "resetPasswordFlags": { + "description": "For commands of type RESET_PASSWORD, optionally specifies flags.", + "enumDescriptions": [ + "This value is ignored.", + "Don't allow other admins to change the password again until the user has entered it.", + "Don't ask for user credentials on device boot." + ], + "type": "array", + "items": { + "enum": [ + "RESET_PASSWORD_FLAG_UNSPECIFIED", + "REQUIRE_ENTRY", + "DO_NOT_ASK_CREDENTIALS_ON_BOOT" + ], + "type": "string" + } + } + }, + "id": "Command" + }, + "ComplianceRule": { + "description": "A rule declaring which mitigating actions to take when a device is not compliant with its policy. For every rule, there is always an implicit mitigating action to set policy_compliant to false for the Device resource, and display a message on the device indicating that the device is not compliant with its policy. Other mitigating actions may optionally be taken as well, depending on the field values in the rule.", + "type": "object", + "properties": { + "nonComplianceDetailCondition": { + "description": "A condition which is satisfied if there exists any matching NonComplianceDetail for the device.", + "$ref": "NonComplianceDetailCondition" + }, + "disableApps": { + "description": "If set to true, the rule includes a mitigating action to disable applications so that the device is effectively disabled, but application data is preserved. If the device is running an app in locked task mode, the app will be closed and a UI showing the reason for non-compliance will be displayed.", + "type": "boolean" + }, + "apiLevelCondition": { + "description": "A condition which is satisfied if the Android Framework API level on the device does not meet a minimum requirement.", + "$ref": "ApiLevelCondition" + } + }, + "id": "ComplianceRule" + }, + "ListPoliciesResponse": { + "description": "Response to a request to list policies for a given enterprise.", + "type": "object", + "properties": { + "policies": { + "description": "The list of policies.", + "type": "array", + "items": { + "$ref": "Policy" + } + }, + "nextPageToken": { + "description": "If there are more results, a token to retrieve next page of results.", + "type": "string" + } + }, + "id": "ListPoliciesResponse" + }, + "StatusReportingSettings": { + "description": "Settings controlling the behavior of status reports.", + "type": "object", + "properties": { + "displayInfoEnabled": { + "description": "Whether displays reporting is enabled.", + "type": "boolean" + }, + "hardwareStatusEnabled": { + "description": "Whether hardware status reporting is enabled.", + "type": "boolean" + }, + "softwareInfoEnabled": { + "description": "Whether software info reporting is enabled.", + "type": "boolean" + }, + "memoryInfoEnabled": { + "description": "Whether memory info reporting is enabled.", + "type": "boolean" + }, + "powerManagementEventsEnabled": { + "description": "Whether power management event reporting is enabled.", + "type": "boolean" + }, + "networkInfoEnabled": { + "description": "Whether network info reporting is enabled.", + "type": "boolean" + } + }, + "id": "StatusReportingSettings" + }, + "Display": { + "description": "Device display information.", + "type": "object", + "properties": { + "refreshRate": { + "description": "Refresh rate of the display in frames per second.", + "type": "integer", + "format": "int32" + }, + "state": { + "description": "State of the display.", + "enum": [ + "DISPLAY_STATE_UNSPECIFIED", + "OFF", + "ON", + "DOZE", + "SUSPENDED" + ], + "enumDescriptions": [ + "This value is disallowed.", + "Display is off.", + "Display is on.", + "Display is dozing in a low power state", + "Display is dozing in a suspended low power state." + ], + "type": "string" + }, + "width": { + "description": "Display width in pixels.", + "type": "integer", + "format": "int32" + }, + "displayId": { + "description": "Unique display id.", + "type": "integer", + "format": "int32" + }, + "name": { + "description": "Name of the display.", + "type": "string" + }, + "density": { + "description": "Display density expressed as dots-per-inch.", + "type": "integer", + "format": "int32" + }, + "height": { + "description": "Display height in pixels.", + "type": "integer", + "format": "int32" + } + }, + "id": "Display" + }, + "SignupUrl": { + "description": "An enterprise signup URL.", + "type": "object", + "properties": { + "url": { + "description": "A URL under which the Admin can sign up for an enterprise. The page pointed to cannot be rendered in an iframe.", + "type": "string" + }, + "name": { + "description": "The name of the resource. This must be included in the create enterprise request at the end of the signup flow.", + "type": "string" + } + }, + "id": "SignupUrl" + }, + "EnrollmentToken": { + "description": "An enrollment token.", + "type": "object", + "properties": { + "expirationTimestamp": { + "description": "The expiration time of the token. This is a read-only field generated by the server.", + "type": "string", + "format": "google-datetime" + }, + "policyName": { + "description": "The name of the policy that will be initially applied to the enrolled device in the form enterprises/{enterpriseId}/policies/{policyId}. If not specified, the policy with id default is applied. It is permissible to only specify the policyId when updating this field as long as the policyId contains no slashes since the rest of the policy name can be inferred from context.", + "type": "string" + }, + "name": { + "description": "The name of the enrollment token, which is generated by the server during creation, in the form enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}", + "type": "string" + }, + "duration": { + "description": "The duration of the token. If not specified, the duration will be 1 hour. The allowed range is 1 minute to 30 days.", + "type": "string", + "format": "google-duration" + }, + "value": { + "description": "The token value which is passed to the device and authorizes the device to enroll. This is a read-only field generated by the server.", + "type": "string" + }, + "additionalData": { + "description": "Optional, arbitrary data associated with the enrollment token. This could contain, for example, the id of an org unit to which the device is assigned after enrollment. After a device enrolls with the token, this data will be exposed in the enrollment_token_data field of the Device resource. The data must be 1024 characters or less; otherwise, the creation request will fail.", + "type": "string" + }, + "qrCode": { + "description": "A JSON string whose UTF-8 representation can be used to generate a QR code to enroll a device with this enrollment token. To enroll a device using NFC, the NFC record must contain a serialized java.util.Properties representation of the properties in the JSON.", + "type": "string" + } + }, + "id": "EnrollmentToken" + }, + "SoftwareInfo": { + "description": "Information about device software.", + "type": "object", + "properties": { + "androidVersion": { + "description": "The user visible Android version string, e.g. 6.0.1.", + "type": "string" + }, + "androidBuildNumber": { + "description": "Android build Id string meant for displaying to the user, e.g. shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys.", + "type": "string" + }, + "androidBuildTime": { + "description": "Build time.", + "type": "string", + "format": "google-datetime" + }, + "bootloaderVersion": { + "description": "The system bootloader version number, e.g. 0.6.7.", + "type": "string" + }, + "securityPatchLevel": { + "description": "Security patch level, e.g. 2016-05-01.", + "type": "string" + }, + "deviceKernelVersion": { + "description": "Kernel version, e.g. 2.6.32.9-g103d848.", + "type": "string" + } + }, + "id": "SoftwareInfo" + }, + "ManagedPropertyEntry": { + "description": "An entry of a managed property.", + "type": "object", + "properties": { + "value": { + "description": "The machine-readable value of the entry, which should be used in the configuration. Not localized.", + "type": "string" + }, + "name": { + "description": "The human-readable name of the value. Localized.", + "type": "string" + } + }, + "id": "ManagedPropertyEntry" + }, + "WebToken": { + "description": "A web token used to access an embeddable managed Google Play web UI.", + "type": "object", + "properties": { + "value": { + "description": "The token value which is used in the hosting page to generate the iframe with the embedded UI. This is a read-only field generated by the server.", + "type": "string" + }, + "permissions": { + "description": "Permissions the admin may exercise in the embedded UI. The admin must have all of these permissions in order to view the UI.", + "enumDescriptions": [ + "This value is ignored.", + "The permission to approve apps for the enterprise." + ], + "type": "array", + "items": { + "enum": [ + "WEB_TOKEN_PERMISSION_UNSPECIFIED", + "APPROVE_APPS" + ], + "type": "string" + } + }, + "name": { + "description": "The name of the web token, which is generated by the server during creation, in the form enterprises/{enterpriseId}/webTokens/{webTokenId}.", + "type": "string" + }, + "parentFrameUrl": { + "description": "The URL of the parent frame hosting the iframe with the embedded UI. To prevent XSS, the iframe may not be hosted at other URLs. The URL must use the https scheme.", + "type": "string" + } + }, + "id": "WebToken" + }, + "Enterprise": { + "description": "The configuration applied to an enterprise.", + "type": "object", + "properties": { + "pubsubTopic": { + "description": "When Cloud Pub/Sub notifications are enabled, this field is required to indicate the topic to which the notifications will be published. The format of this field is projects/{project}/topics/{topic}. You must have granted the publish permission on this topic to android-cloud-policy@system.gserviceaccount.com", + "type": "string" + }, + "logo": { + "description": "An image displayed as a logo during device provisioning. Supported types are: image/bmp, image/gif, image/x-ico, image/jpeg, image/png, image/webp, image/vnd.wap.wbmp, image/x-adobe-dng.", + "$ref": "ExternalData" + }, + "enabledNotificationTypes": { + "description": "The notification types to enable via Google Cloud Pub/Sub.", + "enumDescriptions": [ + "This value is ignored.", + "A notification sent when a device enrolls.", + "A notification sent when a device issues a policy compliance report.", + "A notification sent when a device issues a status report.", + "A notification sent when a device command has completed." + ], + "type": "array", + "items": { + "enum": [ + "NOTIFICATION_TYPE_UNSPECIFIED", + "ENROLLMENT", + "COMPLIANCE_REPORT", + "STATUS_REPORT", + "COMMAND" + ], + "type": "string" + } + }, + "name": { + "description": "The name of the enterprise which is generated by the server during creation, in the form enterprises/{enterpriseId}", + "type": "string" + }, + "primaryColor": { + "description": "A color in RGB format indicating the predominant color to display in the device management app UI. The color components are stored as follows: (red \u003c\u003c 16) | (green \u003c\u003c 8) | blue, where each component may take a value between 0 and 255 inclusive.", + "type": "integer", + "format": "int32" + }, + "appAutoApprovalEnabled": { + "description": "Whether app auto-approval is enabled. When enabled, apps installed via policy for this enterprise have all permissions automatically approved. When enabled, it is the caller's responsibility to display the permissions required by an app to the enterprise admin before setting the app to be installed in a policy.", + "type": "boolean" + }, + "enterpriseDisplayName": { + "description": "The name of the enterprise as it will appear to users.", + "type": "string" + } + }, + "id": "Enterprise" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "type": "array", + "items": { + "$ref": "Operation" + } + } + }, + "id": "ListOperationsResponse" + }, + "MemoryEvent": { + "description": "An event related to memory and storage measurements.", + "type": "object", + "properties": { + "byteCount": { + "description": "The number of free bytes in the medium, or for EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage medium.", + "type": "string", + "format": "int64" + }, + "eventType": { + "description": "Event type.", + "enum": [ + "MEMORY_EVENT_TYPE_UNSPECIFIED", + "RAM_MEASURED", + "INTERNAL_STORAGE_MEASURED", + "EXTERNAL_STORAGE_DETECTED", + "EXTERNAL_STORAGE_REMOVED", + "EXTERNAL_STORAGE_MEASURED" + ], + "enumDescriptions": [ + "Unspecified. No events have this type.", + "Free space in RAM was measured.", + "Free space in internal storage was measured.", + "A new external storage medium was detected. The reported byte count is the total capacity of the storage medium.", + "An external storage medium was removed. The reported byte count is zero.", + "Free space in an external storage medium was measured." + ], + "type": "string" + }, + "createTime": { + "description": "The creation time of the event.", + "type": "string", + "format": "google-datetime" + } + }, + "id": "MemoryEvent" + }, + "ExternalData": { + "description": "Data hosted at an external location. The data is to be downloaded by Android Device Policy and verified against the hash.", + "type": "object", + "properties": { + "url": { + "description": "The absolute URL to the data, which must use either the http or https scheme. Android Device Policy does not provide any credentials in the GET request, so the URL must be publicly accessible. Including a long, random component in the URL may be used to prevent attackers from discovering the URL.", + "type": "string" + }, + "sha256Hash": { + "description": "The base-64 encoded SHA-256 hash of the content hosted at url. If the content does not match this hash, Android Device Policy will not use the data.", + "type": "string" + } + }, + "id": "ExternalData" + }, + "UserFacingMessage": { + "description": "Provides user facing message with locale info. The maximum message length is 4096 characters.", + "type": "object", + "properties": { + "localizedMessages": { + "description": "A map which contains \u003clocale, message\u003e pairs. The locale is a BCP 47 language code, e.g. en-US, es-ES, fr.", + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "defaultMessage": { + "description": "The default message that gets displayed if no localized message is specified, or the user's locale does not match with any of the localized messages. A default message must be provided if any localized messages are provided.", + "type": "string" + } + }, + "id": "UserFacingMessage" + }, + "PowerManagementEvent": { + "description": "A power management event.", + "type": "object", + "properties": { + "batteryLevel": { + "description": "For BATTERY_LEVEL_COLLECTED events, the battery level as a percentage.", + "type": "number", + "format": "float" + }, + "eventType": { + "description": "Event type.", + "enum": [ + "POWER_MANAGEMENT_EVENT_TYPE_UNSPECIFIED", + "BATTERY_LEVEL_COLLECTED", + "POWER_CONNECTED", + "POWER_DISCONNECTED", + "BATTERY_LOW", + "BATTERY_OKAY", + "BOOT_COMPLETED", + "SHUTDOWN" + ], + "enumDescriptions": [ + "Unspecified. No events have this type.", + "Battery level was measured.", + "The device started charging.", + "The device stopped charging.", + "The device entered low-power mode.", + "The device exited low-power mode.", + "The device booted.", + "The device shut down." + ], + "type": "string" + }, + "createTime": { + "description": "The creation time of the event.", + "type": "string", + "format": "google-datetime" + } + }, + "id": "PowerManagementEvent" + }, + "PasswordRequirements": { + "description": "Requirements for the password used to unlock a device.", + "type": "object", + "properties": { + "passwordMinimumNumeric": { + "description": "Minimum number of numerical digits required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + }, + "passwordMinimumNonLetter": { + "description": "Minimum number of non-letter characters (numerical digits or symbols) required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + }, + "maximumFailedPasswordsForWipe": { + "description": "A device will be wiped after too many incorrect device-unlock passwords have been entered. A value of 0 means there is no restriction.", + "type": "integer", + "format": "int32" + }, + "passwordMinimumLetters": { + "description": "Minimum number of letters required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + }, + "passwordMinimumUpperCase": { + "description": "Minimum number of upper case letters required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + }, + "passwordQuality": { + "description": "The required password quality.", + "enum": [ + "PASSWORD_QUALITY_UNSPECIFIED", + "SOMETHING", + "NUMERIC", + "NUMERIC_COMPLEX", + "ALPHABETIC", + "ALPHANUMERIC", + "COMPLEX" + ], + "enumDescriptions": [ + "There are no requirements for the password.", + "There must be a password, but there are no restrictions on its characters.", + "The password must contain numeric characters.", + "The password must contain numeric characters with no repeating (4444) or ordered (1234, 4321, 2468) sequences.", + "The password must contain alphabetic (or symbol) characters.", + "The password must contain at both numeric and alphabetic (or symbol) characters.", + "The password must contain at least a letter, a numerical digit and a special symbol. Other password constraints, for example, password_minimum_letters are enforced." + ], + "type": "string" + }, + "passwordMinimumLength": { + "description": "The minimum allowed password length. A value of 0 means there is no restriction. Only enforced when password_quality is NUMERIC, NUMERIC_COMPLEX, ALPHABETIC, ALPHANUMERIC, or COMPLEX.", + "type": "integer", + "format": "int32" + }, + "passwordExpirationTimeout": { + "description": "Password expiration timeout.", + "type": "string", + "format": "google-duration" + }, + "passwordMinimumSymbols": { + "description": "Minimum number of symbols required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + }, + "passwordHistoryLength": { + "description": "The length of the password history. After setting this, the user will not be able to enter a new password that is the same as any password in the history. A value of 0 means there is no restriction.", + "type": "integer", + "format": "int32" + }, + "passwordMinimumLowerCase": { + "description": "Minimum number of lower case letters required in the password. Only enforced when password_quality is COMPLEX.", + "type": "integer", + "format": "int32" + } + }, + "id": "PasswordRequirements" + }, + "HardwareInfo": { + "description": "Information about device hardware. The fields related to temperature thresholds are only available when hardwareStatusEnabled is true in the device's policy.", + "type": "object", + "properties": { + "gpuThrottlingTemperatures": { + "description": "GPU throttling temperature thresholds in Celsius for each GPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "cpuShutdownTemperatures": { + "description": "CPU shutdown temperature thresholds in Celsius for each CPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "gpuShutdownTemperatures": { + "description": "GPU shutdown temperature thresholds in Celsius for each GPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "manufacturer": { + "description": "Manufacturer, e.g. Motorola.", + "type": "string" + }, + "model": { + "description": "The model of the device, e.g. Asus Nexus 7.", + "type": "string" + }, + "serialNumber": { + "description": "The device serial number.", + "type": "string" + }, + "brand": { + "description": "Brand of the device, e.g. Google.", + "type": "string" + }, + "cpuThrottlingTemperatures": { + "description": "CPU throttling temperature thresholds in Celsius for each CPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "skinThrottlingTemperatures": { + "description": "Device skin throttling temperature thresholds in Celsius.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "deviceBasebandVersion": { + "description": "Baseband version, e.g. MDM9625_104662.22.05.34p.", + "type": "string" + }, + "hardware": { + "description": "Name of the hardware, e.g. Angler.", + "type": "string" + }, + "skinShutdownTemperatures": { + "description": "Device skin shutdown temperature thresholds in Celsius.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "batteryShutdownTemperatures": { + "description": "Battery shutdown temperature thresholds in Celsius for each battery on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "batteryThrottlingTemperatures": { + "description": "Battery throttling temperature thresholds in Celsius for each battery on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + }, + "id": "HardwareInfo" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "NetworkInfo": { + "description": "Device network info.", + "type": "object", + "properties": { + "meid": { + "description": "MEID number of the CDMA device, e.g. A00000292788E1.", + "type": "string" + }, + "wifiMacAddress": { + "description": "WiFi MAC address of the device, e.g. 7c:11:11:11:11:11.", + "type": "string" + }, + "imei": { + "description": "IMEI number of the GSM device, e.g. A1000031212.", + "type": "string" + } + }, + "id": "NetworkInfo" + }, + "MemoryInfo": { + "description": "Information about device memory and storage.", + "type": "object", + "properties": { + "totalRam": { + "description": "Total RAM on device in bytes.", + "type": "string", + "format": "int64" + }, + "totalInternalStorage": { + "description": "Total internal storage on device in bytes.", + "type": "string", + "format": "int64" + } + }, + "id": "MemoryInfo" + }, + "ApiLevelCondition": { + "description": "A compliance rule condition which is satisfied if the Android Framework API level on the device does not meet a minimum requirement. There can only be one rule with this type of condition per policy.", + "type": "object", + "properties": { + "minApiLevel": { + "description": "The minimum desired Android Framework API level. If the device does not meet the minimum requirement, this condition is satisfied. Must be greater than zero.", + "type": "integer", + "format": "int32" + } + }, + "id": "ApiLevelCondition" + }, + "SystemUpdate": { + "description": "Configuration for managing system updates", + "type": "object", + "properties": { + "startMinutes": { + "description": "If the type is WINDOWED, the start of the maintenance window, measured as the number of minutes after midnight in device local time. This value must be between 0 and 1439, inclusive.", + "type": "integer", + "format": "int32" + }, + "type": { + "description": "The type of system update to configure.", + "enum": [ + "SYSTEM_UPDATE_TYPE_UNSPECIFIED", + "AUTOMATIC", + "WINDOWED", + "POSTPONE" + ], + "enumDescriptions": [ + "Follow the default update behavior for the device, which typically requires the user to accept system updates.", + "Install automatically as soon as an update is available.", + "Install automatically within a daily maintenance window. If the device has a device account, this also configures Play apps to be updated within the window. This is strongly recommended for kiosk devices because this is the only way apps persistently pinned to the foreground can be updated by Play.", + "Postpone automatic install up to a maximum of 30 days." + ], + "type": "string" + }, + "endMinutes": { + "description": "If the type is WINDOWED, the end of the maintenance window, measured as the number of minutes after midnight in device local time. This value must be between 0 and 1439, inclusive. If this value is less than start_minutes, then the maintenance window spans midnight. If the maintenance window specified is smaller than 30 minutes, the actual window is extended to 30 minutes beyond the start time.", + "type": "integer", + "format": "int32" + } + }, + "id": "SystemUpdate" + }, + "HardwareStatus": { + "description": "Hardware status. Temperatures may be compared to the temperature thresholds available in hardwareInfo to determine hardware health.", + "type": "object", + "properties": { + "fanSpeeds": { + "description": "Fan speeds in RPM for each fan on the device. Empty array means that there are no fans or fan speed is not supported on the system.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "skinTemperatures": { + "description": "Current device skin temperatures in Celsius.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "createTime": { + "description": "The time the measurements were taken.", + "type": "string", + "format": "google-datetime" + }, + "batteryTemperatures": { + "description": "Current battery temperatures in Celsius for each battery on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "cpuTemperatures": { + "description": "Current CPU temperatures in Celsius for each CPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "gpuTemperatures": { + "description": "Current GPU temperatures in Celsius for each GPU on the device.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + }, + "cpuUsages": { + "description": "CPU usages in percentage for each core available on the device. Usage is 0 for each unplugged core. Empty array implies that CPU usage is not supported in the system.", + "type": "array", + "items": { + "type": "number", + "format": "float" + } + } + }, + "id": "HardwareStatus" + } + }, + "revision": "20170804", + "basePath": "", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "version_module": true, + "canonicalName": "Android Management", + "discoveryVersion": "v1", + "fullyEncodeReservedExpansion": true, + "baseUrl": "https://androidmanagement.googleapis.com/", + "name": "androidmanagement", + "parameters": { + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "alt": { + "description": "Data format for response.", + "location": "query", + "enum": [ + "json", + "media", + "proto" + ], + "default": "json", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "enum": [ + "1", + "2" + ], + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "type": "string", + "location": "query" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + } + }, + "documentationLink": "https://developers.google.com/android/management", + "ownerDomain": "google.com", + "batchPath": "batch", + "servicePath": "", + "ownerName": "Google", + "version": "v1", + "rootUrl": "https://androidmanagement.googleapis.com/", + "kind": "discovery#restDescription" +} diff --git a/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-gen.go b/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-gen.go new file mode 100644 index 0000000..dc24b15 --- /dev/null +++ b/vendor/google.golang.org/api/androidmanagement/v1/androidmanagement-gen.go @@ -0,0 +1,5418 @@ +// Package androidmanagement provides access to the Android Management API. +// +// See https://developers.google.com/android/management +// +// Usage example: +// +// import "google.golang.org/api/androidmanagement/v1" +// ... +// androidmanagementService, err := androidmanagement.New(oauthHttpClient) +package androidmanagement // import "google.golang.org/api/androidmanagement/v1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "androidmanagement:v1" +const apiName = "androidmanagement" +const apiVersion = "v1" +const basePath = "https://androidmanagement.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // Manage Android devices and apps for your customers + AndroidmanagementScope = "https://www.googleapis.com/auth/androidmanagement" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Enterprises = NewEnterprisesService(s) + s.SignupUrls = NewSignupUrlsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Enterprises *EnterprisesService + + SignupUrls *SignupUrlsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewEnterprisesService(s *Service) *EnterprisesService { + rs := &EnterprisesService{s: s} + rs.Applications = NewEnterprisesApplicationsService(s) + rs.Devices = NewEnterprisesDevicesService(s) + rs.EnrollmentTokens = NewEnterprisesEnrollmentTokensService(s) + rs.Policies = NewEnterprisesPoliciesService(s) + rs.WebTokens = NewEnterprisesWebTokensService(s) + return rs +} + +type EnterprisesService struct { + s *Service + + Applications *EnterprisesApplicationsService + + Devices *EnterprisesDevicesService + + EnrollmentTokens *EnterprisesEnrollmentTokensService + + Policies *EnterprisesPoliciesService + + WebTokens *EnterprisesWebTokensService +} + +func NewEnterprisesApplicationsService(s *Service) *EnterprisesApplicationsService { + rs := &EnterprisesApplicationsService{s: s} + return rs +} + +type EnterprisesApplicationsService struct { + s *Service +} + +func NewEnterprisesDevicesService(s *Service) *EnterprisesDevicesService { + rs := &EnterprisesDevicesService{s: s} + rs.Operations = NewEnterprisesDevicesOperationsService(s) + return rs +} + +type EnterprisesDevicesService struct { + s *Service + + Operations *EnterprisesDevicesOperationsService +} + +func NewEnterprisesDevicesOperationsService(s *Service) *EnterprisesDevicesOperationsService { + rs := &EnterprisesDevicesOperationsService{s: s} + return rs +} + +type EnterprisesDevicesOperationsService struct { + s *Service +} + +func NewEnterprisesEnrollmentTokensService(s *Service) *EnterprisesEnrollmentTokensService { + rs := &EnterprisesEnrollmentTokensService{s: s} + return rs +} + +type EnterprisesEnrollmentTokensService struct { + s *Service +} + +func NewEnterprisesPoliciesService(s *Service) *EnterprisesPoliciesService { + rs := &EnterprisesPoliciesService{s: s} + return rs +} + +type EnterprisesPoliciesService struct { + s *Service +} + +func NewEnterprisesWebTokensService(s *Service) *EnterprisesWebTokensService { + rs := &EnterprisesWebTokensService{s: s} + return rs +} + +type EnterprisesWebTokensService struct { + s *Service +} + +func NewSignupUrlsService(s *Service) *SignupUrlsService { + rs := &SignupUrlsService{s: s} + return rs +} + +type SignupUrlsService struct { + s *Service +} + +// ApiLevelCondition: A compliance rule condition which is satisfied if +// the Android Framework API level on the device does not meet a minimum +// requirement. There can only be one rule with this type of condition +// per policy. +type ApiLevelCondition struct { + // MinApiLevel: The minimum desired Android Framework API level. If the + // device does not meet the minimum requirement, this condition is + // satisfied. Must be greater than zero. + MinApiLevel int64 `json:"minApiLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MinApiLevel") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MinApiLevel") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ApiLevelCondition) MarshalJSON() ([]byte, error) { + type noMethod ApiLevelCondition + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Application: Application information. +type Application struct { + // ManagedProperties: The set of managed properties available to be + // pre-configured for the application. + ManagedProperties []*ManagedProperty `json:"managedProperties,omitempty"` + + // Name: The name of the application in the form + // enterprises/{enterpriseId}/applications/{package_name} + Name string `json:"name,omitempty"` + + // Permissions: The permissions required by the app. + Permissions []*ApplicationPermission `json:"permissions,omitempty"` + + // Title: The title of the application. Localized. + Title string `json:"title,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "ManagedProperties") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ManagedProperties") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *Application) MarshalJSON() ([]byte, error) { + type noMethod Application + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ApplicationPermission: Application permission. +type ApplicationPermission struct { + // Description: A longer description of the permission, giving more + // details of what it affects. Localized. + Description string `json:"description,omitempty"` + + // Name: The name of the permission. Localized. + Name string `json:"name,omitempty"` + + // PermissionId: An opaque string uniquely identifying the permission. + // Not localized. + PermissionId string `json:"permissionId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ApplicationPermission) MarshalJSON() ([]byte, error) { + type noMethod ApplicationPermission + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ApplicationPolicy: Policy for an individual app. +type ApplicationPolicy struct { + // DefaultPermissionPolicy: The default policy for all permissions + // requested by the app. If specified, this overrides the policy-level + // default_permission_policy which applies to all apps. + // + // Possible values: + // "PERMISSION_POLICY_UNSPECIFIED" - Policy not specified. If no + // policy is specified for a permission at any level, then the PROMPT + // behavior is used by default. + // "PROMPT" - Prompt the user to grant a permission. + // "GRANT" - Automatically grant a permission. + // "DENY" - Automatically deny a permission. + DefaultPermissionPolicy string `json:"defaultPermissionPolicy,omitempty"` + + // InstallType: The type of installation to perform. + // + // Possible values: + // "INSTALL_TYPE_UNSPECIFIED" - No automatic installation is + // performed. Any other app policies will be applied if the user + // installs the app. + // "PREINSTALLED" - The application is automatically installed and can + // be removed by the user. + // "FORCE_INSTALLED" - The application is automatically installed and + // cannot be removed by the user. + InstallType string `json:"installType,omitempty"` + + // LockTaskAllowed: Whether the application is allowed to lock itself in + // full-screen mode. + LockTaskAllowed bool `json:"lockTaskAllowed,omitempty"` + + // ManagedConfiguration: Managed configuration applied to the app. The + // format for the configuration is dictated by the ManagedProperty + // values supported by the app. Each field name in the managed + // configuration must match the key field of the ManagedProperty. The + // field value must be compatible with the type of the ManagedProperty: + // + // + // + // + // + // + // + //
typeJSON value
BOOLtrue or false
STRINGstring
INTEGERnumber
CHOICEstring
MULTISELECTarray of strings
HIDDENstring
BUNDLE_ARRAYarray of objects
+ ManagedConfiguration googleapi.RawMessage `json:"managedConfiguration,omitempty"` + + // PackageName: The package name of the app, e.g. + // com.google.android.youtube for the YouTube app. + PackageName string `json:"packageName,omitempty"` + + // PermissionGrants: Explicit permission grants or denials for the app. + // These values override the default_permission_policy. + PermissionGrants []*PermissionGrant `json:"permissionGrants,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DefaultPermissionPolicy") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultPermissionPolicy") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ApplicationPolicy) MarshalJSON() ([]byte, error) { + type noMethod ApplicationPolicy + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Command: A command. +type Command struct { + // CreateTime: The timestamp at which the command was created. The + // timestamp is automatically generated by the server. + CreateTime string `json:"createTime,omitempty"` + + // Duration: The duration for which the command is valid. The command + // will expire if not executed by the device during this time. The + // default duration if unspecified is ten minutes. There is no maximum + // duration. + Duration string `json:"duration,omitempty"` + + // NewPassword: For commands of type RESET_PASSWORD, optionally + // specifies the new password. + NewPassword string `json:"newPassword,omitempty"` + + // ResetPasswordFlags: For commands of type RESET_PASSWORD, optionally + // specifies flags. + // + // Possible values: + // "RESET_PASSWORD_FLAG_UNSPECIFIED" - This value is ignored. + // "REQUIRE_ENTRY" - Don't allow other admins to change the password + // again until the user has entered it. + // "DO_NOT_ASK_CREDENTIALS_ON_BOOT" - Don't ask for user credentials + // on device boot. + ResetPasswordFlags []string `json:"resetPasswordFlags,omitempty"` + + // Type: The type of the command. + // + // Possible values: + // "COMMAND_TYPE_UNSPECIFIED" - This value is disallowed. + // "LOCK" - Lock the device, as if the lock screen timeout had + // expired. + // "RESET_PASSWORD" - Reset the user's password. + // "REBOOT" - Reboot the device. Only supported on API level 24+. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CreateTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreateTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Command) MarshalJSON() ([]byte, error) { + type noMethod Command + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ComplianceRule: A rule declaring which mitigating actions to take +// when a device is not compliant with its policy. For every rule, there +// is always an implicit mitigating action to set policy_compliant to +// false for the Device resource, and display a message on the device +// indicating that the device is not compliant with its policy. Other +// mitigating actions may optionally be taken as well, depending on the +// field values in the rule. +type ComplianceRule struct { + // ApiLevelCondition: A condition which is satisfied if the Android + // Framework API level on the device does not meet a minimum + // requirement. + ApiLevelCondition *ApiLevelCondition `json:"apiLevelCondition,omitempty"` + + // DisableApps: If set to true, the rule includes a mitigating action to + // disable applications so that the device is effectively disabled, but + // application data is preserved. If the device is running an app in + // locked task mode, the app will be closed and a UI showing the reason + // for non-compliance will be displayed. + DisableApps bool `json:"disableApps,omitempty"` + + // NonComplianceDetailCondition: A condition which is satisfied if there + // exists any matching NonComplianceDetail for the device. + NonComplianceDetailCondition *NonComplianceDetailCondition `json:"nonComplianceDetailCondition,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ApiLevelCondition") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApiLevelCondition") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ComplianceRule) MarshalJSON() ([]byte, error) { + type noMethod ComplianceRule + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Device: A device owned by an enterprise. Unless otherwise noted, all +// fields are read-only and cannot be modified by an update device +// request. +type Device struct { + // ApiLevel: The API level of the Android platform version running on + // the device. + ApiLevel int64 `json:"apiLevel,omitempty"` + + // AppliedPolicyName: The name of the policy that is currently applied + // by the device. + AppliedPolicyName string `json:"appliedPolicyName,omitempty"` + + // AppliedPolicyVersion: The version of the policy that is currently + // applied by the device. + AppliedPolicyVersion int64 `json:"appliedPolicyVersion,omitempty,string"` + + // AppliedState: The state that is currently applied by the device. + // + // Possible values: + // "DEVICE_STATE_UNSPECIFIED" - This value is disallowed. + // "ACTIVE" - The device is active. + // "DISABLED" - The device is disabled. + // "DELETED" - The device was deleted. This state will never be + // returned by an API call, but will be used in the final policy + // compliance report published to Cloud Pub/Sub when the device + // acknowledges the deletion. + // "PROVISIONING" - The device is being provisioned. Newly enrolled + // devices will be in this state until they have applied policy. + AppliedState string `json:"appliedState,omitempty"` + + // DisabledReason: If the device state is DISABLED, an optional message + // that is displayed on the device indicating the reason the device is + // disabled. This field may be modified by an update request. + DisabledReason *UserFacingMessage `json:"disabledReason,omitempty"` + + // Displays: Displays on the device. This information is only available + // when displayInfoEnabled is true in the device's policy. + Displays []*Display `json:"displays,omitempty"` + + // EnrollmentTime: The time of device enrollment. + EnrollmentTime string `json:"enrollmentTime,omitempty"` + + // EnrollmentTokenData: If this device was enrolled with an enrollment + // token with additional data provided, this field contains that data. + EnrollmentTokenData string `json:"enrollmentTokenData,omitempty"` + + // EnrollmentTokenName: If this device was enrolled with an enrollment + // token, this field contains the name of the token. + EnrollmentTokenName string `json:"enrollmentTokenName,omitempty"` + + // HardwareInfo: Detailed information about the device hardware. + HardwareInfo *HardwareInfo `json:"hardwareInfo,omitempty"` + + // HardwareStatusSamples: Hardware status samples in chronological + // order. This information is only available when hardwareStatusEnabled + // is true in the device's policy. + HardwareStatusSamples []*HardwareStatus `json:"hardwareStatusSamples,omitempty"` + + // LastPolicyComplianceReportTime: The last time the device sent a + // policy compliance report. + LastPolicyComplianceReportTime string `json:"lastPolicyComplianceReportTime,omitempty"` + + // LastPolicySyncTime: The last time the device fetched its policy. + LastPolicySyncTime string `json:"lastPolicySyncTime,omitempty"` + + // LastStatusReportTime: The last time the device sent a status report. + LastStatusReportTime string `json:"lastStatusReportTime,omitempty"` + + // MemoryEvents: Events related to memory and storage measurements in + // chronological order. This information is only available when + // memoryInfoEnabled is true in the device's policy. + MemoryEvents []*MemoryEvent `json:"memoryEvents,omitempty"` + + // MemoryInfo: Memory information. This information is only available + // when memoryInfoEnabled is true in the device's policy. + MemoryInfo *MemoryInfo `json:"memoryInfo,omitempty"` + + // Name: The name of the device in the form + // enterprises/{enterpriseId}/devices/{deviceId} + Name string `json:"name,omitempty"` + + // NetworkInfo: Device network information. This information is only + // available when networkInfoEnabled is true in the device's policy. + NetworkInfo *NetworkInfo `json:"networkInfo,omitempty"` + + // NonComplianceDetails: Details about policy settings for which the + // device is not in compliance. + NonComplianceDetails []*NonComplianceDetail `json:"nonComplianceDetails,omitempty"` + + // PolicyCompliant: Whether the device is compliant with its policy. + PolicyCompliant bool `json:"policyCompliant,omitempty"` + + // PolicyName: The name of the policy that is intended to be applied to + // the device. If empty, the policy with id default is applied. This + // field may be modified by an update request. The name of the policy is + // in the form enterprises/{enterpriseId}/policies/{policyId}. It is + // also permissible to only specify the policyId when updating this + // field as long as the policyId contains no slashes since the rest of + // the policy name can be inferred from context. + PolicyName string `json:"policyName,omitempty"` + + // PowerManagementEvents: Power management events on the device in + // chronological order. This information is only available when + // powerManagementEventsEnabled is true in the device's policy. + PowerManagementEvents []*PowerManagementEvent `json:"powerManagementEvents,omitempty"` + + // PreviousDeviceNames: The previous device names used for the same + // physical device when it has been enrolled multiple times. The serial + // number is used as the unique identifier to determine if the same + // physical device has enrolled previously. The names are in + // chronological order. + PreviousDeviceNames []string `json:"previousDeviceNames,omitempty"` + + // SoftwareInfo: Detailed information about the device software. This + // information is only available when softwareInfoEnabled is true in the + // device's policy. + SoftwareInfo *SoftwareInfo `json:"softwareInfo,omitempty"` + + // State: The state that is intended to be applied to the device. This + // field may be modified by an update request. Note that UpdateDevice + // only handles toggling between ACTIVE and DISABLED states. Use the + // delete device method to cause the device to enter the DELETED state. + // + // Possible values: + // "DEVICE_STATE_UNSPECIFIED" - This value is disallowed. + // "ACTIVE" - The device is active. + // "DISABLED" - The device is disabled. + // "DELETED" - The device was deleted. This state will never be + // returned by an API call, but will be used in the final policy + // compliance report published to Cloud Pub/Sub when the device + // acknowledges the deletion. + // "PROVISIONING" - The device is being provisioned. Newly enrolled + // devices will be in this state until they have applied policy. + State string `json:"state,omitempty"` + + // UserName: The resource name of the user of the device in the form + // enterprises/{enterpriseId}/users/{userId}. This is the name of the + // device account automatically created for this device. + UserName string `json:"userName,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "ApiLevel") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApiLevel") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Device) MarshalJSON() ([]byte, error) { + type noMethod Device + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Display: Device display information. +type Display struct { + // Density: Display density expressed as dots-per-inch. + Density int64 `json:"density,omitempty"` + + // DisplayId: Unique display id. + DisplayId int64 `json:"displayId,omitempty"` + + // Height: Display height in pixels. + Height int64 `json:"height,omitempty"` + + // Name: Name of the display. + Name string `json:"name,omitempty"` + + // RefreshRate: Refresh rate of the display in frames per second. + RefreshRate int64 `json:"refreshRate,omitempty"` + + // State: State of the display. + // + // Possible values: + // "DISPLAY_STATE_UNSPECIFIED" - This value is disallowed. + // "OFF" - Display is off. + // "ON" - Display is on. + // "DOZE" - Display is dozing in a low power state + // "SUSPENDED" - Display is dozing in a suspended low power state. + State string `json:"state,omitempty"` + + // Width: Display width in pixels. + Width int64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Density") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Density") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Display) MarshalJSON() ([]byte, error) { + type noMethod Display + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated empty messages in your APIs. A typical example is to use +// it as the request or the response type of an API method. For +// instance: +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// The JSON representation for Empty is empty JSON object {}. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// EnrollmentToken: An enrollment token. +type EnrollmentToken struct { + // AdditionalData: Optional, arbitrary data associated with the + // enrollment token. This could contain, for example, the id of an org + // unit to which the device is assigned after enrollment. After a device + // enrolls with the token, this data will be exposed in the + // enrollment_token_data field of the Device resource. The data must be + // 1024 characters or less; otherwise, the creation request will fail. + AdditionalData string `json:"additionalData,omitempty"` + + // Duration: The duration of the token. If not specified, the duration + // will be 1 hour. The allowed range is 1 minute to 30 days. + Duration string `json:"duration,omitempty"` + + // ExpirationTimestamp: The expiration time of the token. This is a + // read-only field generated by the server. + ExpirationTimestamp string `json:"expirationTimestamp,omitempty"` + + // Name: The name of the enrollment token, which is generated by the + // server during creation, in the form + // enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId} + Name string `json:"name,omitempty"` + + // PolicyName: The name of the policy that will be initially applied to + // the enrolled device in the form + // enterprises/{enterpriseId}/policies/{policyId}. If not specified, the + // policy with id default is applied. It is permissible to only specify + // the policyId when updating this field as long as the policyId + // contains no slashes since the rest of the policy name can be inferred + // from context. + PolicyName string `json:"policyName,omitempty"` + + // QrCode: A JSON string whose UTF-8 representation can be used to + // generate a QR code to enroll a device with this enrollment token. To + // enroll a device using NFC, the NFC record must contain a serialized + // java.util.Properties representation of the properties in the JSON. + QrCode string `json:"qrCode,omitempty"` + + // Value: The token value which is passed to the device and authorizes + // the device to enroll. This is a read-only field generated by the + // server. + Value string `json:"value,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AdditionalData") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdditionalData") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *EnrollmentToken) MarshalJSON() ([]byte, error) { + type noMethod EnrollmentToken + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Enterprise: The configuration applied to an enterprise. +type Enterprise struct { + // AppAutoApprovalEnabled: Whether app auto-approval is enabled. When + // enabled, apps installed via policy for this enterprise have all + // permissions automatically approved. When enabled, it is the caller's + // responsibility to display the permissions required by an app to the + // enterprise admin before setting the app to be installed in a policy. + AppAutoApprovalEnabled bool `json:"appAutoApprovalEnabled,omitempty"` + + // EnabledNotificationTypes: The notification types to enable via Google + // Cloud Pub/Sub. + // + // Possible values: + // "NOTIFICATION_TYPE_UNSPECIFIED" - This value is ignored. + // "ENROLLMENT" - A notification sent when a device enrolls. + // "COMPLIANCE_REPORT" - A notification sent when a device issues a + // policy compliance report. + // "STATUS_REPORT" - A notification sent when a device issues a status + // report. + // "COMMAND" - A notification sent when a device command has + // completed. + EnabledNotificationTypes []string `json:"enabledNotificationTypes,omitempty"` + + // EnterpriseDisplayName: The name of the enterprise as it will appear + // to users. + EnterpriseDisplayName string `json:"enterpriseDisplayName,omitempty"` + + // Logo: An image displayed as a logo during device provisioning. + // Supported types are: image/bmp, image/gif, image/x-ico, image/jpeg, + // image/png, image/webp, image/vnd.wap.wbmp, image/x-adobe-dng. + Logo *ExternalData `json:"logo,omitempty"` + + // Name: The name of the enterprise which is generated by the server + // during creation, in the form enterprises/{enterpriseId} + Name string `json:"name,omitempty"` + + // PrimaryColor: A color in RGB format indicating the predominant color + // to display in the device management app UI. The color components are + // stored as follows: (red << 16) | (green << 8) | blue, where each + // component may take a value between 0 and 255 inclusive. + PrimaryColor int64 `json:"primaryColor,omitempty"` + + // PubsubTopic: When Cloud Pub/Sub notifications are enabled, this field + // is required to indicate the topic to which the notifications will be + // published. The format of this field is + // projects/{project}/topics/{topic}. You must have granted the publish + // permission on this topic to + // android-cloud-policy@system.gserviceaccount.com + PubsubTopic string `json:"pubsubTopic,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "AppAutoApprovalEnabled") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppAutoApprovalEnabled") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *Enterprise) MarshalJSON() ([]byte, error) { + type noMethod Enterprise + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ExternalData: Data hosted at an external location. The data is to be +// downloaded by Android Device Policy and verified against the hash. +type ExternalData struct { + // Sha256Hash: The base-64 encoded SHA-256 hash of the content hosted at + // url. If the content does not match this hash, Android Device Policy + // will not use the data. + Sha256Hash string `json:"sha256Hash,omitempty"` + + // Url: The absolute URL to the data, which must use either the http or + // https scheme. Android Device Policy does not provide any credentials + // in the GET request, so the URL must be publicly accessible. Including + // a long, random component in the URL may be used to prevent attackers + // from discovering the URL. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Sha256Hash") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Sha256Hash") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ExternalData) MarshalJSON() ([]byte, error) { + type noMethod ExternalData + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HardwareInfo: Information about device hardware. The fields related +// to temperature thresholds are only available when +// hardwareStatusEnabled is true in the device's policy. +type HardwareInfo struct { + // BatteryShutdownTemperatures: Battery shutdown temperature thresholds + // in Celsius for each battery on the device. + BatteryShutdownTemperatures []float64 `json:"batteryShutdownTemperatures,omitempty"` + + // BatteryThrottlingTemperatures: Battery throttling temperature + // thresholds in Celsius for each battery on the device. + BatteryThrottlingTemperatures []float64 `json:"batteryThrottlingTemperatures,omitempty"` + + // Brand: Brand of the device, e.g. Google. + Brand string `json:"brand,omitempty"` + + // CpuShutdownTemperatures: CPU shutdown temperature thresholds in + // Celsius for each CPU on the device. + CpuShutdownTemperatures []float64 `json:"cpuShutdownTemperatures,omitempty"` + + // CpuThrottlingTemperatures: CPU throttling temperature thresholds in + // Celsius for each CPU on the device. + CpuThrottlingTemperatures []float64 `json:"cpuThrottlingTemperatures,omitempty"` + + // DeviceBasebandVersion: Baseband version, e.g. + // MDM9625_104662.22.05.34p. + DeviceBasebandVersion string `json:"deviceBasebandVersion,omitempty"` + + // GpuShutdownTemperatures: GPU shutdown temperature thresholds in + // Celsius for each GPU on the device. + GpuShutdownTemperatures []float64 `json:"gpuShutdownTemperatures,omitempty"` + + // GpuThrottlingTemperatures: GPU throttling temperature thresholds in + // Celsius for each GPU on the device. + GpuThrottlingTemperatures []float64 `json:"gpuThrottlingTemperatures,omitempty"` + + // Hardware: Name of the hardware, e.g. Angler. + Hardware string `json:"hardware,omitempty"` + + // Manufacturer: Manufacturer, e.g. Motorola. + Manufacturer string `json:"manufacturer,omitempty"` + + // Model: The model of the device, e.g. Asus Nexus 7. + Model string `json:"model,omitempty"` + + // SerialNumber: The device serial number. + SerialNumber string `json:"serialNumber,omitempty"` + + // SkinShutdownTemperatures: Device skin shutdown temperature thresholds + // in Celsius. + SkinShutdownTemperatures []float64 `json:"skinShutdownTemperatures,omitempty"` + + // SkinThrottlingTemperatures: Device skin throttling temperature + // thresholds in Celsius. + SkinThrottlingTemperatures []float64 `json:"skinThrottlingTemperatures,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "BatteryShutdownTemperatures") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "BatteryShutdownTemperatures") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HardwareInfo) MarshalJSON() ([]byte, error) { + type noMethod HardwareInfo + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HardwareStatus: Hardware status. Temperatures may be compared to the +// temperature thresholds available in hardwareInfo to determine +// hardware health. +type HardwareStatus struct { + // BatteryTemperatures: Current battery temperatures in Celsius for each + // battery on the device. + BatteryTemperatures []float64 `json:"batteryTemperatures,omitempty"` + + // CpuTemperatures: Current CPU temperatures in Celsius for each CPU on + // the device. + CpuTemperatures []float64 `json:"cpuTemperatures,omitempty"` + + // CpuUsages: CPU usages in percentage for each core available on the + // device. Usage is 0 for each unplugged core. Empty array implies that + // CPU usage is not supported in the system. + CpuUsages []float64 `json:"cpuUsages,omitempty"` + + // CreateTime: The time the measurements were taken. + CreateTime string `json:"createTime,omitempty"` + + // FanSpeeds: Fan speeds in RPM for each fan on the device. Empty array + // means that there are no fans or fan speed is not supported on the + // system. + FanSpeeds []float64 `json:"fanSpeeds,omitempty"` + + // GpuTemperatures: Current GPU temperatures in Celsius for each GPU on + // the device. + GpuTemperatures []float64 `json:"gpuTemperatures,omitempty"` + + // SkinTemperatures: Current device skin temperatures in Celsius. + SkinTemperatures []float64 `json:"skinTemperatures,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BatteryTemperatures") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BatteryTemperatures") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HardwareStatus) MarshalJSON() ([]byte, error) { + type noMethod HardwareStatus + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListDevicesResponse: Response to a request to list devices for a +// given enterprise. +type ListDevicesResponse struct { + // Devices: The list of devices. + Devices []*Device `json:"devices,omitempty"` + + // NextPageToken: If there are more results, a token to retrieve next + // page of results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Devices") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Devices") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListDevicesResponse) MarshalJSON() ([]byte, error) { + type noMethod ListDevicesResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListOperationsResponse: The response message for +// Operations.ListOperations. +type ListOperationsResponse struct { + // NextPageToken: The standard List next-page token. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Operations: A list of operations that matches the specified filter in + // the request. + Operations []*Operation `json:"operations,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListOperationsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListPoliciesResponse: Response to a request to list policies for a +// given enterprise. +type ListPoliciesResponse struct { + // NextPageToken: If there are more results, a token to retrieve next + // page of results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Policies: The list of policies. + Policies []*Policy `json:"policies,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListPoliciesResponse) MarshalJSON() ([]byte, error) { + type noMethod ListPoliciesResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ManagedProperty: Managed property. +type ManagedProperty struct { + // DefaultValue: The default value of the properties. BUNDLE_ARRAY + // properties never have a default value. + DefaultValue interface{} `json:"defaultValue,omitempty"` + + // Description: A longer description of the property, giving more detail + // of what it affects. Localized. + Description string `json:"description,omitempty"` + + // Entries: For CHOICE or MULTISELECT properties, the list of possible + // entries. + Entries []*ManagedPropertyEntry `json:"entries,omitempty"` + + // Key: The unique key that the application uses to identify the + // property, e.g. "com.google.android.gm.fieldname". + Key string `json:"key,omitempty"` + + // NestedProperties: For BUNDLE_ARRAY properties, the list of nested + // properties. A BUNDLE_ARRAY property is at most two levels deep. + NestedProperties []*ManagedProperty `json:"nestedProperties,omitempty"` + + // Title: The name of the property. Localized. + Title string `json:"title,omitempty"` + + // Type: The type of the property. + // + // Possible values: + // "MANAGED_PROPERTY_TYPE_UNSPECIFIED" - Not used. + // "BOOL" - A property of boolean type. + // "STRING" - A property of string type. + // "INTEGER" - A property of integer type. + // "CHOICE" - A choice of one item from a set. + // "MULTISELECT" - A choice of multiple items from a set. + // "HIDDEN" - A hidden restriction of string type (the default value + // can be used to pass along information that cannot be modified, such + // as a version code). + // "BUNDLE_ARRAY" - An array of property bundles. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DefaultValue") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ManagedProperty) MarshalJSON() ([]byte, error) { + type noMethod ManagedProperty + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ManagedPropertyEntry: An entry of a managed property. +type ManagedPropertyEntry struct { + // Name: The human-readable name of the value. Localized. + Name string `json:"name,omitempty"` + + // Value: The machine-readable value of the entry, which should be used + // in the configuration. Not localized. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ManagedPropertyEntry) MarshalJSON() ([]byte, error) { + type noMethod ManagedPropertyEntry + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// MemoryEvent: An event related to memory and storage measurements. +type MemoryEvent struct { + // ByteCount: The number of free bytes in the medium, or for + // EXTERNAL_STORAGE_DETECTED, the total capacity in bytes of the storage + // medium. + ByteCount int64 `json:"byteCount,omitempty,string"` + + // CreateTime: The creation time of the event. + CreateTime string `json:"createTime,omitempty"` + + // EventType: Event type. + // + // Possible values: + // "MEMORY_EVENT_TYPE_UNSPECIFIED" - Unspecified. No events have this + // type. + // "RAM_MEASURED" - Free space in RAM was measured. + // "INTERNAL_STORAGE_MEASURED" - Free space in internal storage was + // measured. + // "EXTERNAL_STORAGE_DETECTED" - A new external storage medium was + // detected. The reported byte count is the total capacity of the + // storage medium. + // "EXTERNAL_STORAGE_REMOVED" - An external storage medium was + // removed. The reported byte count is zero. + // "EXTERNAL_STORAGE_MEASURED" - Free space in an external storage + // medium was measured. + EventType string `json:"eventType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ByteCount") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ByteCount") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MemoryEvent) MarshalJSON() ([]byte, error) { + type noMethod MemoryEvent + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// MemoryInfo: Information about device memory and storage. +type MemoryInfo struct { + // TotalInternalStorage: Total internal storage on device in bytes. + TotalInternalStorage int64 `json:"totalInternalStorage,omitempty,string"` + + // TotalRam: Total RAM on device in bytes. + TotalRam int64 `json:"totalRam,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. + // "TotalInternalStorage") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TotalInternalStorage") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *MemoryInfo) MarshalJSON() ([]byte, error) { + type noMethod MemoryInfo + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkInfo: Device network info. +type NetworkInfo struct { + // Imei: IMEI number of the GSM device, e.g. A1000031212. + Imei string `json:"imei,omitempty"` + + // Meid: MEID number of the CDMA device, e.g. A00000292788E1. + Meid string `json:"meid,omitempty"` + + // WifiMacAddress: WiFi MAC address of the device, e.g. + // 7c:11:11:11:11:11. + WifiMacAddress string `json:"wifiMacAddress,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Imei") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Imei") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkInfo) MarshalJSON() ([]byte, error) { + type noMethod NetworkInfo + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NonComplianceDetail: Provides detail about non-compliance with a +// policy setting. +type NonComplianceDetail struct { + // CurrentValue: If the policy setting could not be applied, the current + // value of the setting on the device. + CurrentValue interface{} `json:"currentValue,omitempty"` + + // FieldPath: For settings with nested fields, if a particular nested + // field is out of compliance, this specifies the full path to the + // offending field. The path is formatted in the same way the policy + // JSON field would be referenced in JavaScript, that is: 1) For + // object-typed fields, the field name is followed by a dot then by a + // subfield name. 2) For array-typed fields, the field name is followed + // by the array index enclosed in brackets. For example, to indicate a + // problem with the url field in the externalData field in the 3rd + // application, the path would be applications[2].externalData.url + FieldPath string `json:"fieldPath,omitempty"` + + // InstallationFailureReason: If package_name is set and the + // non-compliance reason is APP_NOT_INSTALLED, the detailed reason the + // app cannot be installed. + // + // Possible values: + // "INSTALLATION_FAILURE_REASON_UNSPECIFIED" - This value is + // disallowed. + // "INSTALLATION_FAILURE_REASON_UNKNOWN" - An unknown condition is + // preventing the app from being installed. Some potential reaons are + // that the device does not have enough storage, the device network + // connection is unreliable, or the installation is taking longer than + // expected. The installation will be retried automatically. + // "IN_PROGRESS" - The installation is still in progress. + // "NOT_FOUND" - The app was not found in Play. + // "NOT_COMPATIBLE_WITH_DEVICE" - The app is incompatible with the + // device. + // "NOT_APPROVED" - The app has not been approved by the admin. + // "PERMISSIONS_NOT_ACCEPTED" - The app has new permissions that have + // not been accepted by the admin. + // "NOT_AVAILABLE_IN_COUNTRY" - The app is not available in the user's + // country. + // "NO_LICENSES_REMAINING" - There are no more licenses to assign to + // the user. + // "NOT_ENROLLED" - The enterprise is no longer enrolled with Play for + // Work or Android Device Policy is not enabled for the enterprise. + // "USER_INVALID" - The user is no longer valid. The user may have + // been deleted or disabled. + InstallationFailureReason string `json:"installationFailureReason,omitempty"` + + // NonComplianceReason: The reason the device is not in compliance with + // the setting. + // + // Possible values: + // "NON_COMPLIANCE_REASON_UNSPECIFIED" - This value is disallowed. + // "API_LEVEL" - The setting is not supported in the API level of + // Android OS version the device is running. + // "ADMIN_TYPE" - The admin type (profile owner, device owner, etc.) + // does not support the setting. + // "USER_ACTION" - The user has not taken required action to comply + // with the setting. + // "INVALID_VALUE" - The setting has an invalid value. + // "APP_NOT_INSTALLED" - The application required to implement the + // policy is not installed. + // "UNSUPPORTED" - The policy is not supported by the version of + // Android Device Policy on the device. + // "APP_INSTALLED" - A blocked application is installed. + // "PENDING" - The setting was not applied yet at the time of the + // report, but is expected to be applied shortly. + // "APP_INCOMPATIBLE" - The setting cannot be applied to the + // application because its target SDK version is not high enough. + NonComplianceReason string `json:"nonComplianceReason,omitempty"` + + // PackageName: The package name indicating which application is out of + // compliance, if applicable. + PackageName string `json:"packageName,omitempty"` + + // SettingName: The name of the policy setting. This is the JSON field + // name of a top-level Policy field. + SettingName string `json:"settingName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CurrentValue") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CurrentValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NonComplianceDetail) MarshalJSON() ([]byte, error) { + type noMethod NonComplianceDetail + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NonComplianceDetailCondition: A compliance rule condition which is +// satisfied if there exists any matching NonComplianceDetail for the +// device. A NonComplianceDetail matches a NonComplianceDetailCondition +// if all the fields which are set within the +// NonComplianceDetailCondition match the corresponding +// NonComplianceDetail fields. +type NonComplianceDetailCondition struct { + // NonComplianceReason: The reason the device is not in compliance with + // the setting. If not set, then this condition matches any reason. + // + // Possible values: + // "NON_COMPLIANCE_REASON_UNSPECIFIED" - This value is disallowed. + // "API_LEVEL" - The setting is not supported in the API level of + // Android OS version the device is running. + // "ADMIN_TYPE" - The admin type (profile owner, device owner, etc.) + // does not support the setting. + // "USER_ACTION" - The user has not taken required action to comply + // with the setting. + // "INVALID_VALUE" - The setting has an invalid value. + // "APP_NOT_INSTALLED" - The application required to implement the + // policy is not installed. + // "UNSUPPORTED" - The policy is not supported by the version of + // Android Device Policy on the device. + // "APP_INSTALLED" - A blocked application is installed. + // "PENDING" - The setting was not applied yet at the time of the + // report, but is expected to be applied shortly. + // "APP_INCOMPATIBLE" - The setting cannot be applied to the + // application because its target SDK version is not high enough. + NonComplianceReason string `json:"nonComplianceReason,omitempty"` + + // PackageName: The package name indicating which application is out of + // compliance. If not set, then this condition matches any package name. + // If this field is set, then setting_name must be unset or set to + // applications; otherwise, the condition would never be satisfied. + PackageName string `json:"packageName,omitempty"` + + // SettingName: The name of the policy setting. This is the JSON field + // name of a top-level Policy field. If not set, then this condition + // matches any setting name. + SettingName string `json:"settingName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NonComplianceReason") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NonComplianceReason") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NonComplianceDetailCondition) MarshalJSON() ([]byte, error) { + type noMethod NonComplianceDetailCondition + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Operation: This resource represents a long-running operation that is +// the result of a network API call. +type Operation struct { + // Done: If the value is false, it means the operation is still in + // progress. If true, the operation is completed, and either error or + // response is available. + Done bool `json:"done,omitempty"` + + // Error: The error result of the operation in case of failure or + // cancellation. + Error *Status `json:"error,omitempty"` + + // Metadata: Service-specific metadata associated with the operation. It + // typically contains progress information and common metadata such as + // create time. Some services might not provide such metadata. Any + // method that returns a long-running operation should document the + // metadata type, if any. + Metadata googleapi.RawMessage `json:"metadata,omitempty"` + + // Name: The server-assigned name, which is only unique within the same + // service that originally returns it. If you use the default HTTP + // mapping, the name should have the format of + // operations/some/unique/name. + Name string `json:"name,omitempty"` + + // Response: The normal response of the operation in case of success. If + // the original method returns no data on success, such as Delete, the + // response is google.protobuf.Empty. If the original method is standard + // Get/Create/Update, the response should be the resource. For other + // methods, the response should have the type XxxResponse, where Xxx is + // the original method name. For example, if the original method name is + // TakeSnapshot(), the inferred response type is TakeSnapshotResponse. + Response googleapi.RawMessage `json:"response,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Done") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Done") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Operation) MarshalJSON() ([]byte, error) { + type noMethod Operation + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PasswordRequirements: Requirements for the password used to unlock a +// device. +type PasswordRequirements struct { + // MaximumFailedPasswordsForWipe: A device will be wiped after too many + // incorrect device-unlock passwords have been entered. A value of 0 + // means there is no restriction. + MaximumFailedPasswordsForWipe int64 `json:"maximumFailedPasswordsForWipe,omitempty"` + + // PasswordExpirationTimeout: Password expiration timeout. + PasswordExpirationTimeout string `json:"passwordExpirationTimeout,omitempty"` + + // PasswordHistoryLength: The length of the password history. After + // setting this, the user will not be able to enter a new password that + // is the same as any password in the history. A value of 0 means there + // is no restriction. + PasswordHistoryLength int64 `json:"passwordHistoryLength,omitempty"` + + // PasswordMinimumLength: The minimum allowed password length. A value + // of 0 means there is no restriction. Only enforced when + // password_quality is NUMERIC, NUMERIC_COMPLEX, ALPHABETIC, + // ALPHANUMERIC, or COMPLEX. + PasswordMinimumLength int64 `json:"passwordMinimumLength,omitempty"` + + // PasswordMinimumLetters: Minimum number of letters required in the + // password. Only enforced when password_quality is COMPLEX. + PasswordMinimumLetters int64 `json:"passwordMinimumLetters,omitempty"` + + // PasswordMinimumLowerCase: Minimum number of lower case letters + // required in the password. Only enforced when password_quality is + // COMPLEX. + PasswordMinimumLowerCase int64 `json:"passwordMinimumLowerCase,omitempty"` + + // PasswordMinimumNonLetter: Minimum number of non-letter characters + // (numerical digits or symbols) required in the password. Only enforced + // when password_quality is COMPLEX. + PasswordMinimumNonLetter int64 `json:"passwordMinimumNonLetter,omitempty"` + + // PasswordMinimumNumeric: Minimum number of numerical digits required + // in the password. Only enforced when password_quality is COMPLEX. + PasswordMinimumNumeric int64 `json:"passwordMinimumNumeric,omitempty"` + + // PasswordMinimumSymbols: Minimum number of symbols required in the + // password. Only enforced when password_quality is COMPLEX. + PasswordMinimumSymbols int64 `json:"passwordMinimumSymbols,omitempty"` + + // PasswordMinimumUpperCase: Minimum number of upper case letters + // required in the password. Only enforced when password_quality is + // COMPLEX. + PasswordMinimumUpperCase int64 `json:"passwordMinimumUpperCase,omitempty"` + + // PasswordQuality: The required password quality. + // + // Possible values: + // "PASSWORD_QUALITY_UNSPECIFIED" - There are no requirements for the + // password. + // "SOMETHING" - There must be a password, but there are no + // restrictions on its characters. + // "NUMERIC" - The password must contain numeric characters. + // "NUMERIC_COMPLEX" - The password must contain numeric characters + // with no repeating (4444) or ordered (1234, 4321, 2468) sequences. + // "ALPHABETIC" - The password must contain alphabetic (or symbol) + // characters. + // "ALPHANUMERIC" - The password must contain at both numeric and + // alphabetic (or symbol) characters. + // "COMPLEX" - The password must contain at least a letter, a + // numerical digit and a special symbol. Other password constraints, for + // example, password_minimum_letters are enforced. + PasswordQuality string `json:"passwordQuality,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "MaximumFailedPasswordsForWipe") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "MaximumFailedPasswordsForWipe") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PasswordRequirements) MarshalJSON() ([]byte, error) { + type noMethod PasswordRequirements + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PermissionGrant: Configuration for an Android permission and its +// grant state. +type PermissionGrant struct { + // Permission: The android permission, e.g. + // android.permission.READ_CALENDAR. + Permission string `json:"permission,omitempty"` + + // Policy: The policy for granting the permission. + // + // Possible values: + // "PERMISSION_POLICY_UNSPECIFIED" - Policy not specified. If no + // policy is specified for a permission at any level, then the PROMPT + // behavior is used by default. + // "PROMPT" - Prompt the user to grant a permission. + // "GRANT" - Automatically grant a permission. + // "DENY" - Automatically deny a permission. + Policy string `json:"policy,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Permission") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Permission") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PermissionGrant) MarshalJSON() ([]byte, error) { + type noMethod PermissionGrant + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PersistentPreferredActivity: A default activity for handling intents +// that match a particular intent filter. +type PersistentPreferredActivity struct { + // Actions: The intent actions to match in the filter. If any actions + // are included in the filter, then an intent's action must be one of + // those values for it to match. If no actions are included, the intent + // action is ignored. + Actions []string `json:"actions,omitempty"` + + // Categories: The intent categories to match in the filter. An intent + // includes the categories that it requires, all of which must be + // included in the filter in order to match. In other words, adding a + // category to the filter has no impact on matching unless that category + // is specified in the intent. + Categories []string `json:"categories,omitempty"` + + // ReceiverActivity: The activity that should be the default intent + // handler. This should be an Android component name, e.g. + // com.android.enterprise.app/.MainActivity. Alternatively, the value + // may be the package name of an app, which causes Android Device Policy + // to choose an appropriate activity from the app to handle the intent. + ReceiverActivity string `json:"receiverActivity,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Actions") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Actions") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PersistentPreferredActivity) MarshalJSON() ([]byte, error) { + type noMethod PersistentPreferredActivity + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Policy: A policy, which governs behavior for a device. +type Policy struct { + // AddUserDisabled: Whether adding new users and profiles is disabled. + AddUserDisabled bool `json:"addUserDisabled,omitempty"` + + // AdjustVolumeDisabled: Whether adjusting the master volume is + // disabled. + AdjustVolumeDisabled bool `json:"adjustVolumeDisabled,omitempty"` + + // Applications: Policy applied to apps. + Applications []*ApplicationPolicy `json:"applications,omitempty"` + + // BlockApplicationsEnabled: Whether applications other than the ones + // configured in applications are blocked from being installed. When + // set, applications that were installed under a previous policy but no + // longer appear in the policy are automatically uninstalled. + BlockApplicationsEnabled bool `json:"blockApplicationsEnabled,omitempty"` + + // CameraDisabled: Whether all cameras on the device are disabled. + CameraDisabled bool `json:"cameraDisabled,omitempty"` + + // ComplianceRules: Rules declaring which mitigating actions to take + // when a device is not compliant with its policy. When the conditions + // for multiple rules are satisfied, all of the mitigating actions for + // the rules are taken. There is a maximum limit of 100 rules. + ComplianceRules []*ComplianceRule `json:"complianceRules,omitempty"` + + // DebuggingFeaturesAllowed: Whether the user is allowed to enable + // debugging features. + DebuggingFeaturesAllowed bool `json:"debuggingFeaturesAllowed,omitempty"` + + // DefaultPermissionPolicy: The default permission policy for requests + // for runtime permissions. + // + // Possible values: + // "PERMISSION_POLICY_UNSPECIFIED" - Policy not specified. If no + // policy is specified for a permission at any level, then the PROMPT + // behavior is used by default. + // "PROMPT" - Prompt the user to grant a permission. + // "GRANT" - Automatically grant a permission. + // "DENY" - Automatically deny a permission. + DefaultPermissionPolicy string `json:"defaultPermissionPolicy,omitempty"` + + // FactoryResetDisabled: Whether factory resetting from settings is + // disabled. + FactoryResetDisabled bool `json:"factoryResetDisabled,omitempty"` + + // FrpAdminEmails: Email addresses of device administrators for factory + // reset protection. When the device is factory reset, it will require + // one of these admins to log in with the Google account email and + // password to unlock the device. If no admins are specified, the device + // will not provide factory reset protection. + FrpAdminEmails []string `json:"frpAdminEmails,omitempty"` + + // FunDisabled: Whether the user is allowed to have fun. Controls + // whether the Easter egg game in Settings is disabled. + FunDisabled bool `json:"funDisabled,omitempty"` + + // InstallUnknownSourcesAllowed: Whether the user is allowed to enable + // the "Unknown Sources" setting, which allows installation of apps from + // unknown sources. + InstallUnknownSourcesAllowed bool `json:"installUnknownSourcesAllowed,omitempty"` + + // KeyguardDisabled: Whether the keyguard is disabled. + KeyguardDisabled bool `json:"keyguardDisabled,omitempty"` + + // MaximumTimeToLock: Maximum time in milliseconds for user activity + // until the device will lock. A value of 0 means there is no + // restriction. + MaximumTimeToLock int64 `json:"maximumTimeToLock,omitempty,string"` + + // ModifyAccountsDisabled: Whether adding or removing accounts is + // disabled. + ModifyAccountsDisabled bool `json:"modifyAccountsDisabled,omitempty"` + + // Name: The name of the policy in the form + // enterprises/{enterpriseId}/policies/{policyId} + Name string `json:"name,omitempty"` + + // NetworkEscapeHatchEnabled: Flag to specify if network escape hatch is + // enabled. If this flag has been enabled then upon device boot if + // device has no network connection, then an activity will be shown that + // allows the user to temporarily connect to a network to fetch the + // latest policy. The launched activity will time out if no network has + // been connected for a given while and will return to the previous + // activity that was shown. + NetworkEscapeHatchEnabled bool `json:"networkEscapeHatchEnabled,omitempty"` + + // OpenNetworkConfiguration: Network configuration for the device. See + // configure networks for more information. + OpenNetworkConfiguration googleapi.RawMessage `json:"openNetworkConfiguration,omitempty"` + + // PasswordRequirements: Password requirements. + PasswordRequirements *PasswordRequirements `json:"passwordRequirements,omitempty"` + + // PersistentPreferredActivities: Default intent handler activities. + PersistentPreferredActivities []*PersistentPreferredActivity `json:"persistentPreferredActivities,omitempty"` + + // RemoveUserDisabled: Whether removing other users is disabled. + RemoveUserDisabled bool `json:"removeUserDisabled,omitempty"` + + // SafeBootDisabled: Whether rebooting the device into safe boot is + // disabled. + SafeBootDisabled bool `json:"safeBootDisabled,omitempty"` + + // ScreenCaptureDisabled: Whether screen capture is disabled. + ScreenCaptureDisabled bool `json:"screenCaptureDisabled,omitempty"` + + // StatusBarDisabled: Whether the status bar is disabled. This disables + // notifications, quick settings and other screen overlays that allow + // escape from full-screen mode. + StatusBarDisabled bool `json:"statusBarDisabled,omitempty"` + + // StatusReportingSettings: Status reporting settings + StatusReportingSettings *StatusReportingSettings `json:"statusReportingSettings,omitempty"` + + // StayOnPluggedModes: The battery plugged in modes for which the device + // stays on. When using this setting, it is recommended to clear + // maximum_time_to_lock so that the device doesn't lock itself while it + // stays on. + // + // Possible values: + // "BATTERY_PLUGGED_MODE_UNSPECIFIED" - This value is ignored. + // "AC" - Power source is an AC charger. + // "USB" - Power source is a USB port. + // "WIRELESS" - Power source is wireless. + StayOnPluggedModes []string `json:"stayOnPluggedModes,omitempty"` + + // SystemUpdate: The system update policy, which controls how OS updates + // are applied. If the update type is WINDOWED and the device has a + // device account, the update window will automatically apply to Play + // app updates as well. + SystemUpdate *SystemUpdate `json:"systemUpdate,omitempty"` + + // UnmuteMicrophoneDisabled: Whether the microphone is muted and + // adjusting microphone volume is disabled. + UnmuteMicrophoneDisabled bool `json:"unmuteMicrophoneDisabled,omitempty"` + + // Version: The version of the policy. This is a read-only field. The + // version is incremented each time the policy is updated. + Version int64 `json:"version,omitempty,string"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AddUserDisabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddUserDisabled") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *Policy) MarshalJSON() ([]byte, error) { + type noMethod Policy + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PowerManagementEvent: A power management event. +type PowerManagementEvent struct { + // BatteryLevel: For BATTERY_LEVEL_COLLECTED events, the battery level + // as a percentage. + BatteryLevel float64 `json:"batteryLevel,omitempty"` + + // CreateTime: The creation time of the event. + CreateTime string `json:"createTime,omitempty"` + + // EventType: Event type. + // + // Possible values: + // "POWER_MANAGEMENT_EVENT_TYPE_UNSPECIFIED" - Unspecified. No events + // have this type. + // "BATTERY_LEVEL_COLLECTED" - Battery level was measured. + // "POWER_CONNECTED" - The device started charging. + // "POWER_DISCONNECTED" - The device stopped charging. + // "BATTERY_LOW" - The device entered low-power mode. + // "BATTERY_OKAY" - The device exited low-power mode. + // "BOOT_COMPLETED" - The device booted. + // "SHUTDOWN" - The device shut down. + EventType string `json:"eventType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BatteryLevel") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BatteryLevel") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PowerManagementEvent) MarshalJSON() ([]byte, error) { + type noMethod PowerManagementEvent + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *PowerManagementEvent) UnmarshalJSON(data []byte) error { + type noMethod PowerManagementEvent + var s1 struct { + BatteryLevel gensupport.JSONFloat64 `json:"batteryLevel"` + *noMethod + } + s1.noMethod = (*noMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.BatteryLevel = float64(s1.BatteryLevel) + return nil +} + +// SignupUrl: An enterprise signup URL. +type SignupUrl struct { + // Name: The name of the resource. This must be included in the create + // enterprise request at the end of the signup flow. + Name string `json:"name,omitempty"` + + // Url: A URL under which the Admin can sign up for an enterprise. The + // page pointed to cannot be rendered in an iframe. + Url string `json:"url,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SignupUrl) MarshalJSON() ([]byte, error) { + type noMethod SignupUrl + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SoftwareInfo: Information about device software. +type SoftwareInfo struct { + // AndroidBuildNumber: Android build Id string meant for displaying to + // the user, e.g. shamu-userdebug 6.0.1 MOB30I 2756745 dev-keys. + AndroidBuildNumber string `json:"androidBuildNumber,omitempty"` + + // AndroidBuildTime: Build time. + AndroidBuildTime string `json:"androidBuildTime,omitempty"` + + // AndroidVersion: The user visible Android version string, e.g. 6.0.1. + AndroidVersion string `json:"androidVersion,omitempty"` + + // BootloaderVersion: The system bootloader version number, e.g. 0.6.7. + BootloaderVersion string `json:"bootloaderVersion,omitempty"` + + // DeviceKernelVersion: Kernel version, e.g. 2.6.32.9-g103d848. + DeviceKernelVersion string `json:"deviceKernelVersion,omitempty"` + + // SecurityPatchLevel: Security patch level, e.g. 2016-05-01. + SecurityPatchLevel string `json:"securityPatchLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidBuildNumber") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidBuildNumber") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *SoftwareInfo) MarshalJSON() ([]byte, error) { + type noMethod SoftwareInfo + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Status: The Status type defines a logical error model that is +// suitable for different programming environments, including REST APIs +// and RPC APIs. It is used by gRPC (https://github.com/grpc). The error +// model is designed to be: +// Simple to use and understand for most users +// Flexible enough to meet unexpected needsOverviewThe Status message +// contains three pieces of data: error code, error message, and error +// details. The error code should be an enum value of google.rpc.Code, +// but it may accept additional error codes if needed. The error message +// should be a developer-facing English message that helps developers +// understand and resolve the error. If a localized user-facing error +// message is needed, put the localized message in the error details or +// localize it in the client. The optional error details may contain +// arbitrary information about the error. There is a predefined set of +// error detail types in the package google.rpc that can be used for +// common error conditions.Language mappingThe Status message is the +// logical representation of the error model, but it is not necessarily +// the actual wire format. When the Status message is exposed in +// different client libraries and different wire protocols, it can be +// mapped differently. For example, it will likely be mapped to some +// exceptions in Java, but more likely mapped to some error codes in +// C.Other usesThe error model and the Status message can be used in a +// variety of environments, either with or without APIs, to provide a +// consistent developer experience across different environments.Example +// uses of this error model include: +// Partial errors. If a service needs to return partial errors to the +// client, it may embed the Status in the normal response to indicate +// the partial errors. +// Workflow errors. A typical workflow has multiple steps. Each step may +// have a Status message for error reporting. +// Batch operations. If a client uses batch request and batch response, +// the Status message should be used directly inside batch response, one +// for each error sub-response. +// Asynchronous operations. If an API call embeds asynchronous operation +// results in its response, the status of those operations should be +// represented directly using the Status message. +// Logging. If some API errors are stored in logs, the message Status +// could be used directly after any stripping needed for +// security/privacy reasons. +type Status struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any user-facing error message should be localized and sent + // in the google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Status) MarshalJSON() ([]byte, error) { + type noMethod Status + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// StatusReportingSettings: Settings controlling the behavior of status +// reports. +type StatusReportingSettings struct { + // DisplayInfoEnabled: Whether displays reporting is enabled. + DisplayInfoEnabled bool `json:"displayInfoEnabled,omitempty"` + + // HardwareStatusEnabled: Whether hardware status reporting is enabled. + HardwareStatusEnabled bool `json:"hardwareStatusEnabled,omitempty"` + + // MemoryInfoEnabled: Whether memory info reporting is enabled. + MemoryInfoEnabled bool `json:"memoryInfoEnabled,omitempty"` + + // NetworkInfoEnabled: Whether network info reporting is enabled. + NetworkInfoEnabled bool `json:"networkInfoEnabled,omitempty"` + + // PowerManagementEventsEnabled: Whether power management event + // reporting is enabled. + PowerManagementEventsEnabled bool `json:"powerManagementEventsEnabled,omitempty"` + + // SoftwareInfoEnabled: Whether software info reporting is enabled. + SoftwareInfoEnabled bool `json:"softwareInfoEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayInfoEnabled") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayInfoEnabled") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *StatusReportingSettings) MarshalJSON() ([]byte, error) { + type noMethod StatusReportingSettings + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SystemUpdate: Configuration for managing system updates +type SystemUpdate struct { + // EndMinutes: If the type is WINDOWED, the end of the maintenance + // window, measured as the number of minutes after midnight in device + // local time. This value must be between 0 and 1439, inclusive. If this + // value is less than start_minutes, then the maintenance window spans + // midnight. If the maintenance window specified is smaller than 30 + // minutes, the actual window is extended to 30 minutes beyond the start + // time. + EndMinutes int64 `json:"endMinutes,omitempty"` + + // StartMinutes: If the type is WINDOWED, the start of the maintenance + // window, measured as the number of minutes after midnight in device + // local time. This value must be between 0 and 1439, inclusive. + StartMinutes int64 `json:"startMinutes,omitempty"` + + // Type: The type of system update to configure. + // + // Possible values: + // "SYSTEM_UPDATE_TYPE_UNSPECIFIED" - Follow the default update + // behavior for the device, which typically requires the user to accept + // system updates. + // "AUTOMATIC" - Install automatically as soon as an update is + // available. + // "WINDOWED" - Install automatically within a daily maintenance + // window. If the device has a device account, this also configures Play + // apps to be updated within the window. This is strongly recommended + // for kiosk devices because this is the only way apps persistently + // pinned to the foreground can be updated by Play. + // "POSTPONE" - Postpone automatic install up to a maximum of 30 days. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndMinutes") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndMinutes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SystemUpdate) MarshalJSON() ([]byte, error) { + type noMethod SystemUpdate + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UserFacingMessage: Provides user facing message with locale info. The +// maximum message length is 4096 characters. +type UserFacingMessage struct { + // DefaultMessage: The default message that gets displayed if no + // localized message is specified, or the user's locale does not match + // with any of the localized messages. A default message must be + // provided if any localized messages are provided. + DefaultMessage string `json:"defaultMessage,omitempty"` + + // LocalizedMessages: A map which contains pairs. The + // locale is a BCP 47 language code, e.g. en-US, es-ES, fr. + LocalizedMessages map[string]string `json:"localizedMessages,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DefaultMessage") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultMessage") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *UserFacingMessage) MarshalJSON() ([]byte, error) { + type noMethod UserFacingMessage + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// WebToken: A web token used to access an embeddable managed Google +// Play web UI. +type WebToken struct { + // Name: The name of the web token, which is generated by the server + // during creation, in the form + // enterprises/{enterpriseId}/webTokens/{webTokenId}. + Name string `json:"name,omitempty"` + + // ParentFrameUrl: The URL of the parent frame hosting the iframe with + // the embedded UI. To prevent XSS, the iframe may not be hosted at + // other URLs. The URL must use the https scheme. + ParentFrameUrl string `json:"parentFrameUrl,omitempty"` + + // Permissions: Permissions the admin may exercise in the embedded UI. + // The admin must have all of these permissions in order to view the UI. + // + // Possible values: + // "WEB_TOKEN_PERMISSION_UNSPECIFIED" - This value is ignored. + // "APPROVE_APPS" - The permission to approve apps for the enterprise. + Permissions []string `json:"permissions,omitempty"` + + // Value: The token value which is used in the hosting page to generate + // the iframe with the embedded UI. This is a read-only field generated + // by the server. + Value string `json:"value,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *WebToken) MarshalJSON() ([]byte, error) { + type noMethod WebToken + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "androidmanagement.enterprises.create": + +type EnterprisesCreateCall struct { + s *Service + enterprise *Enterprise + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates an enterprise by completing the enterprise signup +// flow. +func (r *EnterprisesService) Create(enterprise *Enterprise) *EnterprisesCreateCall { + c := &EnterprisesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.enterprise = enterprise + return c +} + +// EnterpriseToken sets the optional parameter "enterpriseToken": The +// enterprise token appended to the callback URL. +func (c *EnterprisesCreateCall) EnterpriseToken(enterpriseToken string) *EnterprisesCreateCall { + c.urlParams_.Set("enterpriseToken", enterpriseToken) + return c +} + +// ProjectId sets the optional parameter "projectId": The id of the +// Google Cloud Platform project which will own the enterprise. +func (c *EnterprisesCreateCall) ProjectId(projectId string) *EnterprisesCreateCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// SignupUrlName sets the optional parameter "signupUrlName": The name +// of the SignupUrl used to sign up for the enterprise. +func (c *EnterprisesCreateCall) SignupUrlName(signupUrlName string) *EnterprisesCreateCall { + c.urlParams_.Set("signupUrlName", signupUrlName) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesCreateCall) Fields(s ...googleapi.Field) *EnterprisesCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesCreateCall) Context(ctx context.Context) *EnterprisesCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.enterprise) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/enterprises") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.create" call. +// Exactly one of *Enterprise or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Enterprise.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesCreateCall) Do(opts ...googleapi.CallOption) (*Enterprise, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Enterprise{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an enterprise by completing the enterprise signup flow.", + // "flatPath": "v1/enterprises", + // "httpMethod": "POST", + // "id": "androidmanagement.enterprises.create", + // "parameterOrder": [], + // "parameters": { + // "enterpriseToken": { + // "description": "The enterprise token appended to the callback URL.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The id of the Google Cloud Platform project which will own the enterprise.", + // "location": "query", + // "type": "string" + // }, + // "signupUrlName": { + // "description": "The name of the SignupUrl used to sign up for the enterprise.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/enterprises", + // "request": { + // "$ref": "Enterprise" + // }, + // "response": { + // "$ref": "Enterprise" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.get": + +type EnterprisesGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets an enterprise. +func (r *EnterprisesService) Get(name string) *EnterprisesGetCall { + c := &EnterprisesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesGetCall) Fields(s ...googleapi.Field) *EnterprisesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesGetCall) IfNoneMatch(entityTag string) *EnterprisesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesGetCall) Context(ctx context.Context) *EnterprisesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.get" call. +// Exactly one of *Enterprise or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Enterprise.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesGetCall) Do(opts ...googleapi.CallOption) (*Enterprise, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Enterprise{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets an enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Enterprise" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.patch": + +type EnterprisesPatchCall struct { + s *Service + name string + enterprise *Enterprise + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates an enterprise. +func (r *EnterprisesService) Patch(name string, enterprise *Enterprise) *EnterprisesPatchCall { + c := &EnterprisesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.enterprise = enterprise + return c +} + +// UpdateMask sets the optional parameter "updateMask": The field mask +// indicating the fields to update. If not set, all modifiable fields +// will be modified. +func (c *EnterprisesPatchCall) UpdateMask(updateMask string) *EnterprisesPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesPatchCall) Fields(s ...googleapi.Field) *EnterprisesPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesPatchCall) Context(ctx context.Context) *EnterprisesPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.enterprise) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PATCH", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.patch" call. +// Exactly one of *Enterprise or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Enterprise.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesPatchCall) Do(opts ...googleapi.CallOption) (*Enterprise, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Enterprise{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates an enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}", + // "httpMethod": "PATCH", + // "id": "androidmanagement.enterprises.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "request": { + // "$ref": "Enterprise" + // }, + // "response": { + // "$ref": "Enterprise" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.applications.get": + +type EnterprisesApplicationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets info about an application. +func (r *EnterprisesApplicationsService) Get(name string) *EnterprisesApplicationsGetCall { + c := &EnterprisesApplicationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// LanguageCode sets the optional parameter "languageCode": The +// preferred language for localized application info, as a BCP47 tag +// (e.g. "en-US", "de"). If not specified the default language of the +// application will be used. +func (c *EnterprisesApplicationsGetCall) LanguageCode(languageCode string) *EnterprisesApplicationsGetCall { + c.urlParams_.Set("languageCode", languageCode) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesApplicationsGetCall) Fields(s ...googleapi.Field) *EnterprisesApplicationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesApplicationsGetCall) IfNoneMatch(entityTag string) *EnterprisesApplicationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesApplicationsGetCall) Context(ctx context.Context) *EnterprisesApplicationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesApplicationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesApplicationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.applications.get" call. +// Exactly one of *Application or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Application.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesApplicationsGetCall) Do(opts ...googleapi.CallOption) (*Application, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Application{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets info about an application.", + // "flatPath": "v1/enterprises/{enterprisesId}/applications/{applicationsId}", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.applications.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "languageCode": { + // "description": "The preferred language for localized application info, as a BCP47 tag (e.g. \"en-US\", \"de\"). If not specified the default language of the application will be used.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name of the application in the form enterprises/{enterpriseId}/applications/{package_name}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/applications/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Application" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.delete": + +type EnterprisesDevicesDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a device, which causes the device to be wiped. +func (r *EnterprisesDevicesService) Delete(name string) *EnterprisesDevicesDeleteCall { + c := &EnterprisesDevicesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesDeleteCall) Fields(s ...googleapi.Field) *EnterprisesDevicesDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesDeleteCall) Context(ctx context.Context) *EnterprisesDevicesDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesDevicesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a device, which causes the device to be wiped.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + // "httpMethod": "DELETE", + // "id": "androidmanagement.enterprises.devices.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.get": + +type EnterprisesDevicesGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets a device. +func (r *EnterprisesDevicesService) Get(name string) *EnterprisesDevicesGetCall { + c := &EnterprisesDevicesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesGetCall) Fields(s ...googleapi.Field) *EnterprisesDevicesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesDevicesGetCall) IfNoneMatch(entityTag string) *EnterprisesDevicesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesGetCall) Context(ctx context.Context) *EnterprisesDevicesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.get" call. +// Exactly one of *Device or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Device.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesDevicesGetCall) Do(opts ...googleapi.CallOption) (*Device, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Device{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets a device.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.devices.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Device" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.issueCommand": + +type EnterprisesDevicesIssueCommandCall struct { + s *Service + name string + command *Command + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// IssueCommand: Issues a command to a device. The Operation resource +// returned contains a Command in its metadata field. Use the get +// operation method to get the status of the command. +func (r *EnterprisesDevicesService) IssueCommand(name string, command *Command) *EnterprisesDevicesIssueCommandCall { + c := &EnterprisesDevicesIssueCommandCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.command = command + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesIssueCommandCall) Fields(s ...googleapi.Field) *EnterprisesDevicesIssueCommandCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesIssueCommandCall) Context(ctx context.Context) *EnterprisesDevicesIssueCommandCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesIssueCommandCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesIssueCommandCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.command) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:issueCommand") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.issueCommand" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesDevicesIssueCommandCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Issues a command to a device. The Operation resource returned contains a Command in its metadata field. Use the get operation method to get the status of the command.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}:issueCommand", + // "httpMethod": "POST", + // "id": "androidmanagement.enterprises.devices.issueCommand", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}:issueCommand", + // "request": { + // "$ref": "Command" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.list": + +type EnterprisesDevicesListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists devices for a given enterprise. +func (r *EnterprisesDevicesService) List(parent string) *EnterprisesDevicesListCall { + c := &EnterprisesDevicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// PageSize sets the optional parameter "pageSize": The requested page +// size. The actual page size may be fixed to a min or max value. +func (c *EnterprisesDevicesListCall) PageSize(pageSize int64) *EnterprisesDevicesListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A token +// identifying a page of results the server should return. +func (c *EnterprisesDevicesListCall) PageToken(pageToken string) *EnterprisesDevicesListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesListCall) Fields(s ...googleapi.Field) *EnterprisesDevicesListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesDevicesListCall) IfNoneMatch(entityTag string) *EnterprisesDevicesListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesListCall) Context(ctx context.Context) *EnterprisesDevicesListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/devices") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.list" call. +// Exactly one of *ListDevicesResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListDevicesResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *EnterprisesDevicesListCall) Do(opts ...googleapi.CallOption) (*ListDevicesResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListDevicesResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists devices for a given enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.devices.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "pageSize": { + // "description": "The requested page size. The actual page size may be fixed to a min or max value.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A token identifying a page of results the server should return.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/devices", + // "response": { + // "$ref": "ListDevicesResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *EnterprisesDevicesListCall) Pages(ctx context.Context, f func(*ListDevicesResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "androidmanagement.enterprises.devices.patch": + +type EnterprisesDevicesPatchCall struct { + s *Service + name string + device *Device + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates a device. +func (r *EnterprisesDevicesService) Patch(name string, device *Device) *EnterprisesDevicesPatchCall { + c := &EnterprisesDevicesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.device = device + return c +} + +// UpdateMask sets the optional parameter "updateMask": The field mask +// indicating the fields to update. If not set, all modifiable fields +// will be modified. +func (c *EnterprisesDevicesPatchCall) UpdateMask(updateMask string) *EnterprisesDevicesPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesPatchCall) Fields(s ...googleapi.Field) *EnterprisesDevicesPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesPatchCall) Context(ctx context.Context) *EnterprisesDevicesPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.device) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PATCH", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.patch" call. +// Exactly one of *Device or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Device.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesDevicesPatchCall) Do(opts ...googleapi.CallOption) (*Device, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Device{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates a device.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}", + // "httpMethod": "PATCH", + // "id": "androidmanagement.enterprises.devices.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the device in the form enterprises/{enterpriseId}/devices/{deviceId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "request": { + // "$ref": "Device" + // }, + // "response": { + // "$ref": "Device" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.operations.cancel": + +type EnterprisesDevicesOperationsCancelCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Starts asynchronous cancellation on a long-running operation. +// The server makes a best effort to cancel the operation, but success +// is not guaranteed. If the server doesn't support this method, it +// returns google.rpc.Code.UNIMPLEMENTED. Clients can use +// Operations.GetOperation or other methods to check whether the +// cancellation succeeded or whether the operation completed despite +// cancellation. On successful cancellation, the operation is not +// deleted; instead, it becomes an operation with an Operation.error +// value with a google.rpc.Status.code of 1, corresponding to +// Code.CANCELLED. +func (r *EnterprisesDevicesOperationsService) Cancel(name string) *EnterprisesDevicesOperationsCancelCall { + c := &EnterprisesDevicesOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesOperationsCancelCall) Fields(s ...googleapi.Field) *EnterprisesDevicesOperationsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesOperationsCancelCall) Context(ctx context.Context) *EnterprisesDevicesOperationsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesOperationsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesOperationsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.operations.cancel" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesDevicesOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}:cancel", + // "httpMethod": "POST", + // "id": "androidmanagement.enterprises.devices.operations.cancel", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be cancelled.", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}:cancel", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.operations.delete": + +type EnterprisesDevicesOperationsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a long-running operation. This method indicates that +// the client is no longer interested in the operation result. It does +// not cancel the operation. If the server doesn't support this method, +// it returns google.rpc.Code.UNIMPLEMENTED. +func (r *EnterprisesDevicesOperationsService) Delete(name string) *EnterprisesDevicesOperationsDeleteCall { + c := &EnterprisesDevicesOperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesOperationsDeleteCall) Fields(s ...googleapi.Field) *EnterprisesDevicesOperationsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesOperationsDeleteCall) Context(ctx context.Context) *EnterprisesDevicesOperationsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesOperationsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesOperationsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.operations.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesDevicesOperationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}", + // "httpMethod": "DELETE", + // "id": "androidmanagement.enterprises.devices.operations.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be deleted.", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.operations.get": + +type EnterprisesDevicesOperationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the latest state of a long-running operation. Clients can +// use this method to poll the operation result at intervals as +// recommended by the API service. +func (r *EnterprisesDevicesOperationsService) Get(name string) *EnterprisesDevicesOperationsGetCall { + c := &EnterprisesDevicesOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesOperationsGetCall) Fields(s ...googleapi.Field) *EnterprisesDevicesOperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesDevicesOperationsGetCall) IfNoneMatch(entityTag string) *EnterprisesDevicesOperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesOperationsGetCall) Context(ctx context.Context) *EnterprisesDevicesOperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesOperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesOperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.operations.get" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesDevicesOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations/{operationsId}", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.devices.operations.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource.", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.devices.operations.list": + +type EnterprisesDevicesOperationsListCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists operations that match the specified filter in the +// request. If the server doesn't support this method, it returns +// UNIMPLEMENTED.NOTE: the name binding allows API services to override +// the binding to use different resource name schemes, such as +// users/*/operations. To override the binding, API services can add a +// binding such as "/v1/{name=users/*}/operations" to their service +// configuration. For backwards compatibility, the default name includes +// the operations collection id, however overriding users must ensure +// the name binding is the parent resource, without the operations +// collection id. +func (r *EnterprisesDevicesOperationsService) List(name string) *EnterprisesDevicesOperationsListCall { + c := &EnterprisesDevicesOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Filter sets the optional parameter "filter": The standard list +// filter. +func (c *EnterprisesDevicesOperationsListCall) Filter(filter string) *EnterprisesDevicesOperationsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The standard list +// page size. +func (c *EnterprisesDevicesOperationsListCall) PageSize(pageSize int64) *EnterprisesDevicesOperationsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The standard list +// page token. +func (c *EnterprisesDevicesOperationsListCall) PageToken(pageToken string) *EnterprisesDevicesOperationsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesDevicesOperationsListCall) Fields(s ...googleapi.Field) *EnterprisesDevicesOperationsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesDevicesOperationsListCall) IfNoneMatch(entityTag string) *EnterprisesDevicesOperationsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesDevicesOperationsListCall) Context(ctx context.Context) *EnterprisesDevicesOperationsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesDevicesOperationsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesDevicesOperationsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.devices.operations.list" call. +// Exactly one of *ListOperationsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListOperationsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *EnterprisesDevicesOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListOperationsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + // "flatPath": "v1/enterprises/{enterprisesId}/devices/{devicesId}/operations", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.devices.operations.list", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "filter": { + // "description": "The standard list filter.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name of the operation's parent resource.", + // "location": "path", + // "pattern": "^enterprises/[^/]+/devices/[^/]+/operations$", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "The standard list page size.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The standard list page token.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "ListOperationsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *EnterprisesDevicesOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "androidmanagement.enterprises.enrollmentTokens.create": + +type EnterprisesEnrollmentTokensCreateCall struct { + s *Service + parent string + enrollmenttoken *EnrollmentToken + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates an enrollment token for a given enterprise. +func (r *EnterprisesEnrollmentTokensService) Create(parent string, enrollmenttoken *EnrollmentToken) *EnterprisesEnrollmentTokensCreateCall { + c := &EnterprisesEnrollmentTokensCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.enrollmenttoken = enrollmenttoken + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesEnrollmentTokensCreateCall) Fields(s ...googleapi.Field) *EnterprisesEnrollmentTokensCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesEnrollmentTokensCreateCall) Context(ctx context.Context) *EnterprisesEnrollmentTokensCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesEnrollmentTokensCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesEnrollmentTokensCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.enrollmenttoken) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/enrollmentTokens") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.enrollmentTokens.create" call. +// Exactly one of *EnrollmentToken or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *EnrollmentToken.ServerResponse.Header or (if a response was returned +// at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *EnterprisesEnrollmentTokensCreateCall) Do(opts ...googleapi.CallOption) (*EnrollmentToken, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &EnrollmentToken{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an enrollment token for a given enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}/enrollmentTokens", + // "httpMethod": "POST", + // "id": "androidmanagement.enterprises.enrollmentTokens.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/enrollmentTokens", + // "request": { + // "$ref": "EnrollmentToken" + // }, + // "response": { + // "$ref": "EnrollmentToken" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.enrollmentTokens.delete": + +type EnterprisesEnrollmentTokensDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes an enrollment token, which prevents future use of the +// token. +func (r *EnterprisesEnrollmentTokensService) Delete(name string) *EnterprisesEnrollmentTokensDeleteCall { + c := &EnterprisesEnrollmentTokensDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesEnrollmentTokensDeleteCall) Fields(s ...googleapi.Field) *EnterprisesEnrollmentTokensDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesEnrollmentTokensDeleteCall) Context(ctx context.Context) *EnterprisesEnrollmentTokensDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesEnrollmentTokensDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesEnrollmentTokensDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.enrollmentTokens.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesEnrollmentTokensDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes an enrollment token, which prevents future use of the token.", + // "flatPath": "v1/enterprises/{enterprisesId}/enrollmentTokens/{enrollmentTokensId}", + // "httpMethod": "DELETE", + // "id": "androidmanagement.enterprises.enrollmentTokens.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the enrollment token in the form enterprises/{enterpriseId}/enrollmentTokens/{enrollmentTokenId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/enrollmentTokens/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.policies.delete": + +type EnterprisesPoliciesDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a policy. This operation is only permitted if no +// devices are currently referencing the policy. +func (r *EnterprisesPoliciesService) Delete(name string) *EnterprisesPoliciesDeleteCall { + c := &EnterprisesPoliciesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesPoliciesDeleteCall) Fields(s ...googleapi.Field) *EnterprisesPoliciesDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesPoliciesDeleteCall) Context(ctx context.Context) *EnterprisesPoliciesDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesPoliciesDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesPoliciesDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.policies.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesPoliciesDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a policy. This operation is only permitted if no devices are currently referencing the policy.", + // "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + // "httpMethod": "DELETE", + // "id": "androidmanagement.enterprises.policies.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/policies/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.policies.get": + +type EnterprisesPoliciesGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets a policy. +func (r *EnterprisesPoliciesService) Get(name string) *EnterprisesPoliciesGetCall { + c := &EnterprisesPoliciesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesPoliciesGetCall) Fields(s ...googleapi.Field) *EnterprisesPoliciesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesPoliciesGetCall) IfNoneMatch(entityTag string) *EnterprisesPoliciesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesPoliciesGetCall) Context(ctx context.Context) *EnterprisesPoliciesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesPoliciesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesPoliciesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.policies.get" call. +// Exactly one of *Policy or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Policy.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesPoliciesGetCall) Do(opts ...googleapi.CallOption) (*Policy, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Policy{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets a policy.", + // "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.policies.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/policies/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Policy" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.policies.list": + +type EnterprisesPoliciesListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists policies for a given enterprise. +func (r *EnterprisesPoliciesService) List(parent string) *EnterprisesPoliciesListCall { + c := &EnterprisesPoliciesListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// PageSize sets the optional parameter "pageSize": The requested page +// size. The actual page size may be fixed to a min or max value. +func (c *EnterprisesPoliciesListCall) PageSize(pageSize int64) *EnterprisesPoliciesListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A token +// identifying a page of results the server should return. +func (c *EnterprisesPoliciesListCall) PageToken(pageToken string) *EnterprisesPoliciesListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesPoliciesListCall) Fields(s ...googleapi.Field) *EnterprisesPoliciesListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *EnterprisesPoliciesListCall) IfNoneMatch(entityTag string) *EnterprisesPoliciesListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesPoliciesListCall) Context(ctx context.Context) *EnterprisesPoliciesListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesPoliciesListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesPoliciesListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/policies") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.policies.list" call. +// Exactly one of *ListPoliciesResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListPoliciesResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *EnterprisesPoliciesListCall) Do(opts ...googleapi.CallOption) (*ListPoliciesResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListPoliciesResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists policies for a given enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}/policies", + // "httpMethod": "GET", + // "id": "androidmanagement.enterprises.policies.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "pageSize": { + // "description": "The requested page size. The actual page size may be fixed to a min or max value.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A token identifying a page of results the server should return.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/policies", + // "response": { + // "$ref": "ListPoliciesResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *EnterprisesPoliciesListCall) Pages(ctx context.Context, f func(*ListPoliciesResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "androidmanagement.enterprises.policies.patch": + +type EnterprisesPoliciesPatchCall struct { + s *Service + name string + policy *Policy + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates or creates a policy. +func (r *EnterprisesPoliciesService) Patch(name string, policy *Policy) *EnterprisesPoliciesPatchCall { + c := &EnterprisesPoliciesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.policy = policy + return c +} + +// UpdateMask sets the optional parameter "updateMask": The field mask +// indicating the fields to update. If not set, all modifiable fields +// will be modified. +func (c *EnterprisesPoliciesPatchCall) UpdateMask(updateMask string) *EnterprisesPoliciesPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesPoliciesPatchCall) Fields(s ...googleapi.Field) *EnterprisesPoliciesPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesPoliciesPatchCall) Context(ctx context.Context) *EnterprisesPoliciesPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesPoliciesPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesPoliciesPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.policy) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PATCH", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.policies.patch" call. +// Exactly one of *Policy or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Policy.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *EnterprisesPoliciesPatchCall) Do(opts ...googleapi.CallOption) (*Policy, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Policy{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates or creates a policy.", + // "flatPath": "v1/enterprises/{enterprisesId}/policies/{policiesId}", + // "httpMethod": "PATCH", + // "id": "androidmanagement.enterprises.policies.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the policy in the form enterprises/{enterpriseId}/policies/{policyId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+/policies/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "The field mask indicating the fields to update. If not set, all modifiable fields will be modified.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "request": { + // "$ref": "Policy" + // }, + // "response": { + // "$ref": "Policy" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.enterprises.webTokens.create": + +type EnterprisesWebTokensCreateCall struct { + s *Service + parent string + webtoken *WebToken + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a web token to access an embeddable managed Google +// Play web UI for a given enterprise. +func (r *EnterprisesWebTokensService) Create(parent string, webtoken *WebToken) *EnterprisesWebTokensCreateCall { + c := &EnterprisesWebTokensCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.webtoken = webtoken + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *EnterprisesWebTokensCreateCall) Fields(s ...googleapi.Field) *EnterprisesWebTokensCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *EnterprisesWebTokensCreateCall) Context(ctx context.Context) *EnterprisesWebTokensCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *EnterprisesWebTokensCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *EnterprisesWebTokensCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.webtoken) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/webTokens") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.enterprises.webTokens.create" call. +// Exactly one of *WebToken or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *WebToken.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *EnterprisesWebTokensCreateCall) Do(opts ...googleapi.CallOption) (*WebToken, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &WebToken{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a web token to access an embeddable managed Google Play web UI for a given enterprise.", + // "flatPath": "v1/enterprises/{enterprisesId}/webTokens", + // "httpMethod": "POST", + // "id": "androidmanagement.enterprises.webTokens.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The name of the enterprise in the form enterprises/{enterpriseId}", + // "location": "path", + // "pattern": "^enterprises/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/webTokens", + // "request": { + // "$ref": "WebToken" + // }, + // "response": { + // "$ref": "WebToken" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} + +// method id "androidmanagement.signupUrls.create": + +type SignupUrlsCreateCall struct { + s *Service + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates an enterprise signup URL. +func (r *SignupUrlsService) Create() *SignupUrlsCreateCall { + c := &SignupUrlsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// CallbackUrl sets the optional parameter "callbackUrl": The callback +// URL to which the admin will be redirected after successfully creating +// an enterprise. Before redirecting there the system will add a query +// parameter to this URL named enterpriseToken which will contain an +// opaque token to be used for the create enterprise request. The URL +// will be parsed then reformatted in order to add the enterpriseToken +// parameter, so there may be some minor formatting changes. +func (c *SignupUrlsCreateCall) CallbackUrl(callbackUrl string) *SignupUrlsCreateCall { + c.urlParams_.Set("callbackUrl", callbackUrl) + return c +} + +// ProjectId sets the optional parameter "projectId": The id of the +// Google Cloud Platform project which will own the enterprise. +func (c *SignupUrlsCreateCall) ProjectId(projectId string) *SignupUrlsCreateCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *SignupUrlsCreateCall) Fields(s ...googleapi.Field) *SignupUrlsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *SignupUrlsCreateCall) Context(ctx context.Context) *SignupUrlsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *SignupUrlsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *SignupUrlsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/signupUrls") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "androidmanagement.signupUrls.create" call. +// Exactly one of *SignupUrl or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *SignupUrl.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *SignupUrlsCreateCall) Do(opts ...googleapi.CallOption) (*SignupUrl, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &SignupUrl{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an enterprise signup URL.", + // "flatPath": "v1/signupUrls", + // "httpMethod": "POST", + // "id": "androidmanagement.signupUrls.create", + // "parameterOrder": [], + // "parameters": { + // "callbackUrl": { + // "description": "The callback URL to which the admin will be redirected after successfully creating an enterprise. Before redirecting there the system will add a query parameter to this URL named enterpriseToken which will contain an opaque token to be used for the create enterprise request. The URL will be parsed then reformatted in order to add the enterpriseToken parameter, so there may be some minor formatting changes.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The id of the Google Cloud Platform project which will own the enterprise.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/signupUrls", + // "response": { + // "$ref": "SignupUrl" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidmanagement" + // ] + // } + +} diff --git a/vendor/google.golang.org/api/appengine/v1/appengine-api.json b/vendor/google.golang.org/api/appengine/v1/appengine-api.json index 4d73558..991b1d2 100644 --- a/vendor/google.golang.org/api/appengine/v1/appengine-api.json +++ b/vendor/google.golang.org/api/appengine/v1/appengine-api.json @@ -1,19 +1,84 @@ { - "rootUrl": "https://appengine.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "appengine", - "batchPath": "batch", - "id": "appengine:v1", - "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", - "revision": "20170824", - "title": "Google App Engine Admin API", - "discoveryVersion": "v1", - "ownerName": "Google", - "version_module": true, "resources": { "apps": { "methods": { + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/apps/{appsId}", + "path": "v1/apps/{appsId}", + "id": "appengine.apps.patch", + "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain - Google authentication domain for controlling user access to the application.\ndefault_cookie_expiration - Cookie expiration policy for the application.", + "request": { + "$ref": "Application" + } + }, + "get": { + "description": "Gets information about an application.", + "httpMethod": "GET", + "response": { + "$ref": "Application" + }, + "parameterOrder": [ + "appsId" + ], + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "appsId": { + "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/apps/{appsId}", + "path": "v1/apps/{appsId}", + "id": "appengine.apps.get" + }, + "create": { + "path": "v1/apps", + "id": "appengine.apps.create", + "request": { + "$ref": "Application" + }, + "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).", + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {}, + "flatPath": "v1/apps" + }, "repair": { "httpMethod": "POST", "parameterOrder": [ @@ -24,10 +89,10 @@ }, "parameters": { "appsId": { - "location": "path", "description": "Part of `name`. Name of the application to repair. Example: apps/myapp", "type": "string", - "required": true + "required": true, + "location": "path" } }, "scopes": [ @@ -40,89 +105,16 @@ "request": { "$ref": "RepairApplicationRequest" } - }, - "patch": { - "flatPath": "v1/apps/{appsId}", - "id": "appengine.apps.patch", - "path": "v1/apps/{appsId}", - "request": { - "$ref": "Application" - }, - "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain - Google authentication domain for controlling user access to the application.\ndefault_cookie_expiration - Cookie expiration policy for the application.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "updateMask": { - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string", - "location": "query" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", - "type": "string", - "required": true - } - } - }, - "get": { - "description": "Gets information about an application.", - "response": { - "$ref": "Application" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/apps/{appsId}", - "id": "appengine.apps.get", - "path": "v1/apps/{appsId}" - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1/apps", - "path": "v1/apps", - "id": "appengine.apps.create", - "request": { - "$ref": "Application" - }, - "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/)." } }, "resources": { "services": { "methods": { "patch": { + "description": "Updates the configuration of the specified service.", + "request": { + "$ref": "Service" + }, "response": { "$ref": "Operation" }, @@ -132,6 +124,17 @@ ], "httpMethod": "PATCH", "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.", + "type": "string", + "required": true + }, + "migrateTraffic": { + "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", + "type": "boolean", + "location": "query" + }, "updateMask": { "format": "google-fieldmask", "description": "Standard field mask for the set of fields to be updated.", @@ -143,17 +146,6 @@ "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.", - "type": "string", - "required": true - }, - "migrateTraffic": { - "location": "query", - "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", - "type": "boolean" } }, "scopes": [ @@ -161,13 +153,10 @@ ], "flatPath": "v1/apps/{appsId}/services/{servicesId}", "id": "appengine.apps.services.patch", - "path": "v1/apps/{appsId}/services/{servicesId}", - "description": "Updates the configuration of the specified service.", - "request": { - "$ref": "Service" - } + "path": "v1/apps/{appsId}/services/{servicesId}" }, "get": { + "description": "Gets the current configuration of the specified service.", "response": { "$ref": "Service" }, @@ -182,325 +171,98 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, "appsId": { "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", "type": "string", "required": true - }, - "servicesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" } }, "flatPath": "v1/apps/{appsId}/services/{servicesId}", "id": "appengine.apps.services.get", - "path": "v1/apps/{appsId}/services/{servicesId}", - "description": "Gets the current configuration of the specified service." + "path": "v1/apps/{appsId}/services/{servicesId}" }, "list": { "description": "Lists all the services in the application.", + "parameterOrder": [ + "appsId" + ], "httpMethod": "GET", "response": { "$ref": "ListServicesResponse" }, - "parameterOrder": [ - "appsId" - ], "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" - }, "pageToken": { "location": "query", "description": "Continuation token for fetching the next page of results.", "type": "string" }, "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp." + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" } }, "flatPath": "v1/apps/{appsId}/services", - "path": "v1/apps/{appsId}/services", - "id": "appengine.apps.services.list" + "id": "appengine.apps.services.list", + "path": "v1/apps/{appsId}/services" }, "delete": { + "id": "appengine.apps.services.delete", + "path": "v1/apps/{appsId}/services/{servicesId}", "description": "Deletes the specified service and all enclosed versions.", - "httpMethod": "DELETE", + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "appsId", "servicesId" ], - "response": { - "$ref": "Operation" - }, + "httpMethod": "DELETE", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "servicesId": { + "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true, - "location": "path" + "required": true }, "appsId": { + "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", "type": "string", - "required": true, - "location": "path" + "required": true } }, - "flatPath": "v1/apps/{appsId}/services/{servicesId}", - "path": "v1/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.delete" + "flatPath": "v1/apps/{appsId}/services/{servicesId}" } }, "resources": { "versions": { - "methods": { - "delete": { - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.delete", - "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "description": "Deletes an existing Version resource.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "httpMethod": "DELETE", - "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", - "type": "string", - "required": true - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string" - }, - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.", - "type": "string", - "required": true, - "location": "path" - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.patch", - "request": { - "$ref": "Version" - }, - "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment." - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "response": { - "$ref": "Version" - }, - "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", - "type": "string", - "required": true, - "location": "path" - }, - "view": { - "location": "query", - "enum": [ - "BASIC", - "FULL" - ], - "description": "Controls the set of fields returned in the Get response.", - "type": "string" - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.get", - "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource." - }, - "list": { - "description": "Lists the versions of a service.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId", - "servicesId" - ], - "response": { - "$ref": "ListVersionsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.", - "type": "string", - "required": true - }, - "pageSize": { - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" - }, - "view": { - "description": "Controls the set of fields returned in the List response.", - "type": "string", - "location": "query", - "enum": [ - "BASIC", - "FULL" - ] - }, - "servicesId": { - "location": "path", - "description": "Part of `parent`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions", - "path": "v1/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.list" - }, - "create": { - "description": "Deploys code and resource files to a new version.", - "request": { - "$ref": "Version" - }, - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId" - ], - "httpMethod": "POST", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default.", - "type": "string", - "required": true - }, - "servicesId": { - "location": "path", - "description": "Part of `parent`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.create", - "path": "v1/apps/{appsId}/services/{servicesId}/versions" - } - }, "resources": { "instances": { "methods": { "delete": { - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.services.versions.instances.delete", - "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", "description": "Stops a running instance.", "response": { "$ref": "Operation" @@ -512,56 +274,57 @@ "instancesId" ], "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "servicesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, "instancesId": { + "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true, - "location": "path" + "required": true }, "appsId": { "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", "type": "string", "required": true + }, + "versionsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." + }, + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.services.versions.instances.delete", + "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" }, "get": { - "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.services.versions.instances.get", "description": "Gets instance information.", - "httpMethod": "GET", + "response": { + "$ref": "Instance" + }, "parameterOrder": [ "appsId", "servicesId", "versionsId", "instancesId" ], - "response": { - "$ref": "Instance" - }, + "httpMethod": "GET", "parameters": { "servicesId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" }, "instancesId": { "location": "path", @@ -576,10 +339,10 @@ "required": true }, "versionsId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" } }, "scopes": [ @@ -587,34 +350,16 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.services.versions.instances.get", + "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" }, "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListInstancesResponse" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `parent`. See documentation of `appsId`.", - "type": "string", - "required": true - }, "pageToken": { + "location": "query", "description": "Continuation token for fetching the next page of results.", - "type": "string", - "location": "query" + "type": "string" }, "appsId": { "location": "path", @@ -623,22 +368,42 @@ "required": true }, "pageSize": { + "type": "integer", "location": "query", "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" + "description": "Maximum results to return per page." }, "versionsId": { "description": "Part of `parent`. See documentation of `appsId`.", "type": "string", "required": true, "location": "path" + }, + "servicesId": { + "description": "Part of `parent`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", "id": "appengine.apps.services.versions.instances.list", - "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)." + "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).", + "httpMethod": "GET", + "response": { + "$ref": "ListInstancesResponse" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ] }, "debug": { "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", @@ -662,34 +427,257 @@ ], "parameters": { "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1." }, "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." } }, "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug" } } } + }, + "methods": { + "patch": { + "request": { + "$ref": "Version" + }, + "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.", + "type": "string", + "required": true + }, + "versionsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string" + }, + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.patch", + "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}" + }, + "get": { + "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.", + "httpMethod": "GET", + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ], + "response": { + "$ref": "Version" + }, + "parameters": { + "view": { + "location": "query", + "enum": [ + "BASIC", + "FULL" + ], + "description": "Controls the set of fields returned in the Get response.", + "type": "string" + }, + "versionsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." + }, + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.get" + }, + "list": { + "parameters": { + "servicesId": { + "description": "Part of `parent`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.", + "type": "string", + "required": true + }, + "pageSize": { + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer", + "location": "query" + }, + "view": { + "location": "query", + "enum": [ + "BASIC", + "FULL" + ], + "description": "Controls the set of fields returned in the List response.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions", + "path": "v1/apps/{appsId}/services/{servicesId}/versions", + "id": "appengine.apps.services.versions.list", + "description": "Lists the versions of a service.", + "httpMethod": "GET", + "response": { + "$ref": "ListVersionsResponse" + }, + "parameterOrder": [ + "appsId", + "servicesId" + ] + }, + "create": { + "id": "appengine.apps.services.versions.create", + "path": "v1/apps/{appsId}/services/{servicesId}/versions", + "request": { + "$ref": "Version" + }, + "description": "Deploys code and resource files to a new version.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "servicesId": { + "location": "path", + "description": "Part of `parent`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "description": "Part of `parent`. Name of the parent resource to create this version under. Example: apps/myapp/services/default.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions" + }, + "delete": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ], + "httpMethod": "DELETE", + "parameters": { + "versionsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.delete", + "path": "v1/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "description": "Deletes an existing Version resource." + } } } } @@ -697,6 +685,7 @@ "operations": { "methods": { "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", "response": { "$ref": "Operation" }, @@ -705,33 +694,30 @@ "operationsId" ], "httpMethod": "GET", - "parameters": { - "operationsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. The name of the operation resource.", - "type": "string", - "required": true - } - }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], + "parameters": { + "appsId": { + "description": "Part of `name`. The name of the operation resource.", + "type": "string", + "required": true, + "location": "path" + }, + "operationsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, "flatPath": "v1/apps/{appsId}/operations/{operationsId}", "id": "appengine.apps.operations.get", - "path": "v1/apps/{appsId}/operations/{operationsId}", - "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service." + "path": "v1/apps/{appsId}/operations/{operationsId}" }, "list": { - "id": "appengine.apps.operations.list", - "path": "v1/apps/{appsId}/operations", "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", "response": { "$ref": "ListOperationsResponse" @@ -741,16 +727,11 @@ ], "httpMethod": "GET", "parameters": { - "filter": { - "description": "The standard list filter.", + "pageToken": { + "description": "The standard list page token.", "type": "string", "location": "query" }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, "appsId": { "location": "path", "description": "Part of `name`. The name of the operation's parent resource.", @@ -758,9 +739,14 @@ "required": true }, "pageSize": { + "location": "query", "format": "int32", "description": "The standard list page size.", - "type": "integer", + "type": "integer" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", "location": "query" } }, @@ -769,7 +755,9 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1/apps/{appsId}/operations" + "flatPath": "v1/apps/{appsId}/operations", + "id": "appengine.apps.operations.list", + "path": "v1/apps/{appsId}/operations" } } }, @@ -777,6 +765,7 @@ "methods": { "get": { "description": "Get information about a location.", + "httpMethod": "GET", "response": { "$ref": "Location" }, @@ -784,12 +773,6 @@ "appsId", "locationsId" ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], "parameters": { "appsId": { "description": "Part of `name`. Resource name for the location.", @@ -798,40 +781,39 @@ "location": "path" }, "locationsId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" } }, - "flatPath": "v1/apps/{appsId}/locations/{locationsId}", - "id": "appengine.apps.locations.get", - "path": "v1/apps/{appsId}/locations/{locationsId}" - }, - "list": { - "description": "Lists information about the supported locations for this service.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], - "response": { - "$ref": "ListLocationsResponse" - }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], + "flatPath": "v1/apps/{appsId}/locations/{locationsId}", + "path": "v1/apps/{appsId}/locations/{locationsId}", + "id": "appengine.apps.locations.get" + }, + "list": { + "response": { + "$ref": "ListLocationsResponse" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", "parameters": { "filter": { + "location": "query", "description": "The standard list filter.", - "type": "string", - "location": "query" + "type": "string" }, "pageToken": { + "location": "query", "description": "The standard list page token.", - "type": "string", - "location": "query" + "type": "string" }, "appsId": { "location": "path", @@ -846,9 +828,15 @@ "location": "query" } }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "flatPath": "v1/apps/{appsId}/locations", + "id": "appengine.apps.locations.list", "path": "v1/apps/{appsId}/locations", - "id": "appengine.apps.locations.list" + "description": "Lists information about the supported locations for this service." } } } @@ -856,15 +844,69 @@ } }, "parameters": { - "pp": { + "uploadType": { "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { "description": "Pretty-print response.", "default": "true", - "type": "boolean" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", + "type": "boolean", "location": "query" }, "bearer_token": { @@ -872,6 +914,11 @@ "description": "OAuth bearer token.", "type": "string" }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", @@ -882,218 +929,18 @@ "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" } }, "schemas": { - "ScriptHandler": { - "description": "Executes a script to handle the request that matches the URL pattern.", - "type": "object", - "properties": { - "scriptPath": { - "description": "Path to the script from the application root directory.", - "type": "string" - } - }, - "id": "ScriptHandler" - }, - "FileInfo": { - "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", - "type": "object", - "properties": { - "mimeType": { - "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", - "type": "string" - }, - "sourceUrl": { - "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", - "type": "string" - }, - "sha1Sum": { - "description": "The SHA1 hash of the file, in hex.", - "type": "string" - } - }, - "id": "FileInfo" - }, - "OperationMetadataExperimental": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataExperimental" - }, - "TrafficSplit": { - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.", - "type": "object", - "properties": { - "allocations": { - "additionalProperties": { - "format": "double", - "type": "number" - }, - "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", - "type": "object" - }, - "shardBy": { - "enumDescriptions": [ - "Diversion method unspecified.", - "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.", - "Diversion based on applying the modulus operation to a fingerprint of the IP address.", - "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share." - ], - "enum": [ - "UNSPECIFIED", - "COOKIE", - "IP", - "RANDOM" - ], - "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.", - "type": "string" - } - }, - "id": "TrafficSplit" - }, - "OperationMetadataV1Beta": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "ephemeralMessage": { - "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", - "type": "string" - }, - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta" - }, - "ListServicesResponse": { - "description": "Response message for Services.ListServices.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "services": { - "description": "The services belonging to the requested application.", - "items": { - "$ref": "Service" - }, - "type": "array" - } - }, - "id": "ListServicesResponse" - }, "Resources": { + "description": "Machine resources for a version.", + "type": "object", "properties": { + "diskGb": { + "format": "double", + "description": "Disk size (GB) needed.", + "type": "number" + }, "memoryGb": { "format": "double", "description": "Memory (GB) needed.", @@ -1110,18 +957,12 @@ "$ref": "Volume" }, "type": "array" - }, - "diskGb": { - "format": "double", - "description": "Disk size (GB) needed.", - "type": "number" } }, - "id": "Resources", - "description": "Machine resources for a version.", - "type": "object" + "id": "Resources" }, "Deployment": { + "id": "Deployment", "description": "Code and application artifacts used to deploy a version to App Engine.", "type": "object", "properties": { @@ -1140,13 +981,17 @@ "$ref": "ContainerInfo", "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment." } - }, - "id": "Deployment" + } }, "Volume": { + "id": "Volume", "description": "Volumes mounted within the app container. Only applicable for VM runtimes.", "type": "object", "properties": { + "volumeType": { + "description": "Underlying volume type, e.g. 'tmpfs'.", + "type": "string" + }, "sizeGb": { "format": "double", "description": "Volume size in gigabytes.", @@ -1155,51 +1000,35 @@ "name": { "description": "Unique name for the volume.", "type": "string" - }, - "volumeType": { - "description": "Underlying volume type, e.g. 'tmpfs'.", - "type": "string" } - }, - "id": "Volume" + } }, "ListInstancesResponse": { "description": "Response message for Instances.ListInstances.", "type": "object", "properties": { - "instances": { - "description": "The instances belonging to the requested version.", - "items": { - "$ref": "Instance" - }, - "type": "array" - }, "nextPageToken": { "description": "Continuation token for fetching the next page of results.", "type": "string" + }, + "instances": { + "items": { + "$ref": "Instance" + }, + "type": "array", + "description": "The instances belonging to the requested version." } }, "id": "ListInstancesResponse" }, "OperationMetadataV1Alpha": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "Durable messages that persist on every operation poll. @OutputOnly" }, "insertTime": { "format": "google-datetime", @@ -1217,11 +1046,23 @@ "ephemeralMessage": { "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" } }, - "id": "OperationMetadataV1Alpha" + "id": "OperationMetadataV1Alpha", + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object" }, "UrlDispatchRule": { + "id": "UrlDispatchRule", "description": "Rules to match an HTTP request and dispatch that request to a service.", "type": "object", "properties": { @@ -1234,13 +1075,13 @@ "type": "string" }, "path": { - "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.", - "type": "string" + "type": "string", + "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters." } - }, - "id": "UrlDispatchRule" + } }, "ListVersionsResponse": { + "id": "ListVersionsResponse", "description": "Response message for Versions.ListVersions.", "type": "object", "properties": { @@ -1255,32 +1096,31 @@ "description": "Continuation token for fetching the next page of results.", "type": "string" } - }, - "id": "ListVersionsResponse" + } }, "ApiEndpointHandler": { + "description": "Uses Google Cloud Endpoints to handle requests.", + "type": "object", "properties": { "scriptPath": { "description": "Path to the script from the application root directory.", "type": "string" } }, - "id": "ApiEndpointHandler", - "description": "Uses Google Cloud Endpoints to handle requests.", - "type": "object" + "id": "ApiEndpointHandler" }, "ZipInfo": { "description": "The zip file information for a zip deployment.", "type": "object", "properties": { + "filesCount": { + "type": "integer", + "format": "int32", + "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow." + }, "sourceUrl": { "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", "type": "string" - }, - "filesCount": { - "format": "int32", - "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.", - "type": "integer" } }, "id": "ZipInfo" @@ -1289,24 +1129,20 @@ "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", "type": "object", "properties": { - "diskUtilization": { - "description": "Target scaling by disk usage.", - "$ref": "DiskUtilization" - }, "minPendingLatency": { "format": "google-duration", "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.", "type": "string" }, - "requestUtilization": { - "$ref": "RequestUtilization", - "description": "Target scaling by request utilization." - }, "maxIdleInstances": { "format": "int32", "description": "Maximum number of idle instances that should be maintained for this version.", "type": "integer" }, + "requestUtilization": { + "$ref": "RequestUtilization", + "description": "Target scaling by request utilization." + }, "minIdleInstances": { "format": "int32", "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.", @@ -1326,42 +1162,46 @@ "$ref": "NetworkUtilization", "description": "Target scaling by network usage." }, + "maxConcurrentRequests": { + "type": "integer", + "format": "int32", + "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value." + }, "coolDownPeriod": { "format": "google-duration", "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.", "type": "string" }, - "maxConcurrentRequests": { - "format": "int32", - "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.", - "type": "integer" - }, "maxPendingLatency": { "format": "google-duration", "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.", "type": "string" }, "cpuUtilization": { - "description": "Target scaling by CPU usage.", - "$ref": "CpuUtilization" + "$ref": "CpuUtilization", + "description": "Target scaling by CPU usage." + }, + "diskUtilization": { + "$ref": "DiskUtilization", + "description": "Target scaling by disk usage." } }, "id": "AutomaticScaling" }, "Library": { + "id": "Library", "description": "Third-party Python runtime library that is required by the application.", "type": "object", "properties": { - "name": { - "description": "Name of the library. Example: \"django\".", - "type": "string" - }, "version": { "description": "Version of the library to select, or \"latest\".", "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the library. Example: \"django\"." } - }, - "id": "Library" + } }, "ListLocationsResponse": { "description": "The response message for Locations.ListLocations.", @@ -1382,48 +1222,42 @@ "id": "ListLocationsResponse" }, "ContainerInfo": { + "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.", + "type": "object", "properties": { "image": { "description": "URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"", "type": "string" } }, - "id": "ContainerInfo", - "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.", - "type": "object" + "id": "ContainerInfo" }, "RequestUtilization": { + "type": "object", "properties": { - "targetConcurrentRequests": { - "format": "int32", - "description": "Target number of concurrent requests.", - "type": "integer" - }, "targetRequestCountPerSecond": { "format": "int32", "description": "Target requests per second.", "type": "integer" + }, + "targetConcurrentRequests": { + "format": "int32", + "description": "Target number of concurrent requests.", + "type": "integer" } }, "id": "RequestUtilization", - "description": "Target scaling by request utilization. Only applicable for VM runtimes.", - "type": "object" + "description": "Target scaling by request utilization. Only applicable for VM runtimes." }, "UrlMap": { "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code or by serving static files uploaded with the version, such as images, CSS, or JavaScript.", "type": "object", "properties": { - "script": { - "description": "Executes a script to handle the request that matches this URL pattern.", - "$ref": "ScriptHandler" - }, "urlRegex": { "description": "URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.", "type": "string" }, "login": { - "description": "Level of login required to access this resource.", - "type": "string", "enumDescriptions": [ "Not specified. LOGIN_OPTIONAL is assumed.", "Does not require that the user is signed in.", @@ -1435,24 +1269,19 @@ "LOGIN_OPTIONAL", "LOGIN_ADMIN", "LOGIN_REQUIRED" - ] + ], + "description": "Level of login required to access this resource.", + "type": "string" }, "apiEndpoint": { - "description": "Uses API Endpoints to handle requests.", - "$ref": "ApiEndpointHandler" + "$ref": "ApiEndpointHandler", + "description": "Uses API Endpoints to handle requests." }, "staticFiles": { - "description": "Returns the contents of a file, such as an image, as the response.", - "$ref": "StaticFilesHandler" + "$ref": "StaticFilesHandler", + "description": "Returns the contents of a file, such as an image, as the response." }, "redirectHttpResponseCode": { - "enum": [ - "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", - "REDIRECT_HTTP_RESPONSE_CODE_301", - "REDIRECT_HTTP_RESPONSE_CODE_302", - "REDIRECT_HTTP_RESPONSE_CODE_303", - "REDIRECT_HTTP_RESPONSE_CODE_307" - ], "description": "30x code to use when performing redirects for the secure field. Defaults to 302.", "type": "string", "enumDescriptions": [ @@ -1461,9 +1290,23 @@ "302 Moved Temporarily code.", "303 See Other code.", "307 Temporary Redirect code." + ], + "enum": [ + "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", + "REDIRECT_HTTP_RESPONSE_CODE_301", + "REDIRECT_HTTP_RESPONSE_CODE_302", + "REDIRECT_HTTP_RESPONSE_CODE_303", + "REDIRECT_HTTP_RESPONSE_CODE_307" ] }, "securityLevel": { + "enum": [ + "SECURE_UNSPECIFIED", + "SECURE_DEFAULT", + "SECURE_NEVER", + "SECURE_OPTIONAL", + "SECURE_ALWAYS" + ], "description": "Security (HTTPS) enforcement for this URL.", "type": "string", "enumDescriptions": [ @@ -1472,35 +1315,30 @@ "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." - ], - "enum": [ - "SECURE_UNSPECIFIED", - "SECURE_DEFAULT", - "SECURE_NEVER", - "SECURE_OPTIONAL", - "SECURE_ALWAYS" ] }, "authFailAction": { - "enumDescriptions": [ - "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", - "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", - "Rejects request with a 401 HTTP status code and an error message." - ], "enum": [ "AUTH_FAIL_ACTION_UNSPECIFIED", "AUTH_FAIL_ACTION_REDIRECT", "AUTH_FAIL_ACTION_UNAUTHORIZED" ], "description": "Action to take when users access resources that require authentication. Defaults to redirect.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", + "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", + "Rejects request with a 401 HTTP status code and an error message." + ] + }, + "script": { + "description": "Executes a script to handle the request that matches this URL pattern.", + "$ref": "ScriptHandler" } }, "id": "UrlMap" }, "EndpointsApiService": { - "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).", - "type": "object", "properties": { "configId": { "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"", @@ -1511,69 +1349,8 @@ "type": "string" } }, - "id": "EndpointsApiService" - }, - "ApiConfigHandler": { - "properties": { - "securityLevel": { - "enumDescriptions": [ - "Not specified.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", - "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", - "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." - ], - "enum": [ - "SECURE_UNSPECIFIED", - "SECURE_DEFAULT", - "SECURE_NEVER", - "SECURE_OPTIONAL", - "SECURE_ALWAYS" - ], - "description": "Security (HTTPS) enforcement for this URL.", - "type": "string" - }, - "authFailAction": { - "enumDescriptions": [ - "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", - "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", - "Rejects request with a 401 HTTP status code and an error message." - ], - "enum": [ - "AUTH_FAIL_ACTION_UNSPECIFIED", - "AUTH_FAIL_ACTION_REDIRECT", - "AUTH_FAIL_ACTION_UNAUTHORIZED" - ], - "description": "Action to take when users access resources that require authentication. Defaults to redirect.", - "type": "string" - }, - "script": { - "description": "Path to the script from the application root directory.", - "type": "string" - }, - "login": { - "enum": [ - "LOGIN_UNSPECIFIED", - "LOGIN_OPTIONAL", - "LOGIN_ADMIN", - "LOGIN_REQUIRED" - ], - "description": "Level of login required to access this resource. Defaults to optional.", - "type": "string", - "enumDescriptions": [ - "Not specified. LOGIN_OPTIONAL is assumed.", - "Does not require that the user is signed in.", - "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.", - "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken." - ] - }, - "url": { - "description": "URL to serve the endpoint at.", - "type": "string" - } - }, - "id": "ApiConfigHandler", - "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", + "id": "EndpointsApiService", + "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).", "type": "object" }, "Operation": { @@ -1586,8 +1363,8 @@ }, "response": { "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." }, "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", "type": "object" @@ -1611,17 +1388,78 @@ }, "id": "Operation" }, + "ApiConfigHandler": { + "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", + "type": "object", + "properties": { + "url": { + "description": "URL to serve the endpoint at.", + "type": "string" + }, + "securityLevel": { + "enumDescriptions": [ + "Not specified.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", + "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", + "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." + ], + "enum": [ + "SECURE_UNSPECIFIED", + "SECURE_DEFAULT", + "SECURE_NEVER", + "SECURE_OPTIONAL", + "SECURE_ALWAYS" + ], + "description": "Security (HTTPS) enforcement for this URL.", + "type": "string" + }, + "authFailAction": { + "enum": [ + "AUTH_FAIL_ACTION_UNSPECIFIED", + "AUTH_FAIL_ACTION_REDIRECT", + "AUTH_FAIL_ACTION_UNAUTHORIZED" + ], + "description": "Action to take when users access resources that require authentication. Defaults to redirect.", + "type": "string", + "enumDescriptions": [ + "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", + "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", + "Rejects request with a 401 HTTP status code and an error message." + ] + }, + "script": { + "description": "Path to the script from the application root directory.", + "type": "string" + }, + "login": { + "enumDescriptions": [ + "Not specified. LOGIN_OPTIONAL is assumed.", + "Does not require that the user is signed in.", + "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.", + "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken." + ], + "enum": [ + "LOGIN_UNSPECIFIED", + "LOGIN_OPTIONAL", + "LOGIN_ADMIN", + "LOGIN_REQUIRED" + ], + "description": "Level of login required to access this resource. Defaults to optional.", + "type": "string" + } + }, + "id": "ApiConfigHandler" + }, "StaticFilesHandler": { + "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", + "type": "object", "properties": { "expiration": { "format": "google-duration", "description": "Time a static file served by this handler should be cached by web proxies and browsers.", "type": "string" }, - "applicationReadable": { - "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", - "type": "boolean" - }, "httpHeaders": { "additionalProperties": { "type": "string" @@ -1629,6 +1467,10 @@ "description": "HTTP headers to use for all responses from these URLs.", "type": "object" }, + "applicationReadable": { + "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", + "type": "boolean" + }, "uploadPathRegex": { "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.", "type": "string" @@ -1646,9 +1488,7 @@ "type": "boolean" } }, - "id": "StaticFilesHandler", - "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", - "type": "object" + "id": "StaticFilesHandler" }, "BasicScaling": { "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", @@ -1668,31 +1508,31 @@ "id": "BasicScaling" }, "DiskUtilization": { + "id": "DiskUtilization", "description": "Target scaling by disk usage. Only applicable for VM runtimes.", "type": "object", "properties": { + "targetWriteBytesPerSecond": { + "format": "int32", + "description": "Target bytes written per second.", + "type": "integer" + }, "targetReadOpsPerSecond": { "format": "int32", "description": "Target ops read per seconds.", "type": "integer" }, "targetReadBytesPerSecond": { + "type": "integer", "format": "int32", - "description": "Target bytes read per second.", - "type": "integer" + "description": "Target bytes read per second." }, "targetWriteOpsPerSecond": { "format": "int32", "description": "Target ops written per second.", "type": "integer" - }, - "targetWriteBytesPerSecond": { - "format": "int32", - "description": "Target bytes written per second.", - "type": "integer" } - }, - "id": "DiskUtilization" + } }, "CpuUtilization": { "description": "Target scaling by CPU usage.", @@ -1712,15 +1552,9 @@ "id": "CpuUtilization" }, "IdentityAwareProxy": { + "description": "Identity-Aware Proxy", + "type": "object", "properties": { - "oauth2ClientSecretSha256": { - "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly", - "type": "string" - }, - "enabled": { - "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.", - "type": "boolean" - }, "oauth2ClientSecret": { "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly", "type": "string" @@ -1728,13 +1562,20 @@ "oauth2ClientId": { "description": "OAuth2 client ID to use for the authentication flow.", "type": "string" + }, + "oauth2ClientSecretSha256": { + "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly", + "type": "string" + }, + "enabled": { + "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.", + "type": "boolean" } }, - "id": "IdentityAwareProxy", - "description": "Identity-Aware Proxy", - "type": "object" + "id": "IdentityAwareProxy" }, "Status": { + "id": "Status", "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { @@ -1758,8 +1599,7 @@ "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", "type": "string" } - }, - "id": "Status" + } }, "ManualScaling": { "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", @@ -1777,67 +1617,59 @@ "description": "Metadata for the given google.cloud.location.Location.", "type": "object", "properties": { - "flexibleEnvironmentAvailable": { - "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", - "type": "boolean" - }, "standardEnvironmentAvailable": { "description": "App Engine Standard Environment is available in the given location.@OutputOnly", "type": "boolean" + }, + "flexibleEnvironmentAvailable": { + "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", + "type": "boolean" } }, "id": "LocationMetadata" }, "Service": { + "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.", + "type": "object", "properties": { + "name": { + "type": "string", + "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly" + }, + "split": { + "$ref": "TrafficSplit", + "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service." + }, "id": { "description": "Relative name of the service within the application. Example: default.@OutputOnly", "type": "string" - }, - "name": { - "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "split": { - "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service.", - "$ref": "TrafficSplit" } }, - "id": "Service", - "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.", - "type": "object" + "id": "Service" }, "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, "operations": { "description": "A list of operations that matches the specified filter in the request.", "items": { "$ref": "Operation" }, "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" } }, - "id": "ListOperationsResponse" + "id": "ListOperationsResponse", + "description": "The response message for Operations.ListOperations.", + "type": "object" }, "OperationMetadata": { + "id": "OperationMetadata", "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, - "operationType": { - "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", - "type": "string" - }, "insertTime": { "format": "google-datetime", "description": "Timestamp that this operation was created.@OutputOnly", @@ -1848,15 +1680,23 @@ "type": "string" }, "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly", - "type": "string" + "type": "string", + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly" }, "method": { "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" + }, + "operationType": { + "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", + "type": "string" } - }, - "id": "OperationMetadata" + } }, "FeatureSettings": { "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.", @@ -1873,6 +1713,26 @@ "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, "ephemeralMessage": { "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" @@ -1885,37 +1745,20 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" } }, "id": "OperationMetadataV1" }, "ErrorHandler": { + "description": "Custom static error page to be served when an error occurs.", + "type": "object", "properties": { "mimeType": { "description": "MIME type of file. Defaults to text/html.", "type": "string" }, "errorCode": { + "type": "string", "enumDescriptions": [ "Not specified. ERROR_CODE_DEFAULT is assumed.", "All other error types.", @@ -1930,17 +1773,14 @@ "ERROR_CODE_DOS_API_DENIAL", "ERROR_CODE_TIMEOUT" ], - "description": "Error condition this handler applies to.", - "type": "string" + "description": "Error condition this handler applies to." }, "staticFile": { "description": "Static file content to be served for this error.", "type": "string" } }, - "id": "ErrorHandler", - "description": "Custom static error page to be served when an error occurs.", - "type": "object" + "id": "ErrorHandler" }, "Network": { "properties": { @@ -1972,6 +1812,34 @@ "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20", "type": "object", "properties": { + "defaultBucket": { + "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", + "type": "string" + }, + "dispatchRules": { + "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly", + "items": { + "$ref": "UrlDispatchRule" + }, + "type": "array" + }, + "gcrDomain": { + "description": "The Google Container Registry domain used for storing managed build docker images for this application.", + "type": "string" + }, + "name": { + "type": "string", + "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly" + }, + "id": { + "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", + "type": "string" + }, + "defaultCookieExpiration": { + "type": "string", + "format": "google-duration", + "description": "Cookie expiration policy for this application." + }, "locationId": { "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", "type": "string" @@ -1997,69 +1865,43 @@ "type": "string" }, "featureSettings": { - "$ref": "FeatureSettings", - "description": "The feature specific settings to be used in the application." - }, - "iap": { - "$ref": "IdentityAwareProxy" + "description": "The feature specific settings to be used in the application.", + "$ref": "FeatureSettings" }, "authDomain": { "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.", "type": "string" }, + "iap": { + "$ref": "IdentityAwareProxy" + }, "codeBucket": { "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly", "type": "string" - }, - "defaultBucket": { - "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", - "type": "string" - }, - "dispatchRules": { - "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly", - "items": { - "$ref": "UrlDispatchRule" - }, - "type": "array" - }, - "gcrDomain": { - "description": "The Google Container Registry domain used for storing managed build docker images for this application.", - "type": "string" - }, - "name": { - "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly", - "type": "string" - }, - "defaultCookieExpiration": { - "format": "google-duration", - "description": "Cookie expiration policy for this application.", - "type": "string" - }, - "id": { - "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", - "type": "string" } }, "id": "Application" }, "Instance": { + "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", + "type": "object", "properties": { "vmDebugEnabled": { "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "boolean" }, "requests": { + "type": "integer", "format": "int32", - "description": "Number of requests since this instance was started.@OutputOnly", - "type": "integer" + "description": "Number of requests since this instance was started.@OutputOnly" }, "appEngineRelease": { - "description": "App Engine release this instance is running on.@OutputOnly", - "type": "string" + "type": "string", + "description": "App Engine release this instance is running on.@OutputOnly" }, "vmName": { - "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" + "type": "string", + "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly" }, "qps": { "format": "float", @@ -2070,19 +1912,23 @@ "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, - "name": { - "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", - "type": "string" - }, "vmZoneName": { "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, + "name": { + "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", + "type": "string" + }, "averageLatency": { "format": "int32", "description": "Average latency (ms) over the last minute.@OutputOnly", "type": "integer" }, + "vmIp": { + "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, "id": { "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly", "type": "string" @@ -2092,12 +1938,16 @@ "description": "Total memory in use (bytes).@OutputOnly", "type": "string" }, - "vmIp": { - "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "errors": { + "format": "int32", + "description": "Number of errors since this instance was started.@OutputOnly", + "type": "integer" + }, + "vmStatus": { + "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, "availability": { - "description": "Availability of the instance.@OutputOnly", "type": "string", "enumDescriptions": [ "", @@ -2108,16 +1958,8 @@ "UNSPECIFIED", "RESIDENT", "DYNAMIC" - ] - }, - "vmStatus": { - "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "errors": { - "format": "int32", - "description": "Number of errors since this instance was started.@OutputOnly", - "type": "integer" + ], + "description": "Availability of the instance.@OutputOnly" }, "startTime": { "format": "google-datetime", @@ -2125,22 +1967,12 @@ "type": "string" } }, - "id": "Instance", - "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", - "type": "object" + "id": "Instance" }, "LivenessCheck": { + "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.", + "type": "object", "properties": { - "timeout": { - "format": "google-duration", - "description": "Time before the check is considered failed.", - "type": "string" - }, - "failureThreshold": { - "format": "uint32", - "description": "Number of consecutive failed checks required before considering the VM unhealthy.", - "type": "integer" - }, "initialDelay": { "format": "google-duration", "description": "The initial delay before starting to execute the checks.", @@ -2150,51 +1982,32 @@ "description": "The request path.", "type": "string" }, - "host": { - "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"", - "type": "string" - }, "successThreshold": { "format": "uint32", "description": "Number of consecutive successful checks required before considering the VM healthy.", "type": "integer" }, + "host": { + "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"", + "type": "string" + }, "checkInterval": { "format": "google-duration", "description": "Interval between health checks.", "type": "string" + }, + "failureThreshold": { + "format": "uint32", + "description": "Number of consecutive failed checks required before considering the VM unhealthy.", + "type": "integer" + }, + "timeout": { + "format": "google-duration", + "description": "Time before the check is considered failed.", + "type": "string" } }, - "id": "LivenessCheck", - "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.", - "type": "object" - }, - "NetworkUtilization": { - "description": "Target scaling by network usage. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "targetReceivedPacketsPerSecond": { - "format": "int32", - "description": "Target packets received per second.", - "type": "integer" - }, - "targetSentBytesPerSecond": { - "format": "int32", - "description": "Target bytes sent per second.", - "type": "integer" - }, - "targetReceivedBytesPerSecond": { - "format": "int32", - "description": "Target bytes received per second.", - "type": "integer" - }, - "targetSentPacketsPerSecond": { - "format": "int32", - "description": "Target packets sent per second.", - "type": "integer" - } - }, - "id": "NetworkUtilization" + "id": "LivenessCheck" }, "Location": { "description": "A resource that represents Google Cloud Platform location.", @@ -2217,8 +2030,8 @@ }, "metadata": { "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." }, "description": "Service-specific metadata. For example the available capacity at the given location.", "type": "object" @@ -2226,54 +2039,76 @@ }, "id": "Location" }, + "NetworkUtilization": { + "description": "Target scaling by network usage. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "targetSentBytesPerSecond": { + "format": "int32", + "description": "Target bytes sent per second.", + "type": "integer" + }, + "targetReceivedBytesPerSecond": { + "format": "int32", + "description": "Target bytes received per second.", + "type": "integer" + }, + "targetSentPacketsPerSecond": { + "type": "integer", + "format": "int32", + "description": "Target packets sent per second." + }, + "targetReceivedPacketsPerSecond": { + "format": "int32", + "description": "Target packets received per second.", + "type": "integer" + } + }, + "id": "NetworkUtilization" + }, "HealthCheck": { + "id": "HealthCheck", "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", "type": "object", "properties": { - "host": { - "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", - "type": "string" - }, - "restartThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before an instance is restarted.", - "type": "integer" - }, - "healthyThreshold": { - "format": "uint32", - "description": "Number of consecutive successful health checks required before receiving traffic.", - "type": "integer" - }, - "checkInterval": { - "format": "google-duration", - "description": "Interval between health checks.", - "type": "string" - }, "timeout": { "format": "google-duration", "description": "Time before the health check is considered failed.", "type": "string" }, "unhealthyThreshold": { + "type": "integer", "format": "uint32", - "description": "Number of consecutive failed health checks required before removing traffic.", - "type": "integer" + "description": "Number of consecutive failed health checks required before removing traffic." }, "disableHealthCheck": { "description": "Whether to explicitly disable health checks for this instance.", "type": "boolean" - } - }, - "id": "HealthCheck" - }, - "ReadinessCheck": { - "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.", - "type": "object", - "properties": { - "path": { - "description": "The request path.", + }, + "host": { + "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", "type": "string" }, + "healthyThreshold": { + "format": "uint32", + "description": "Number of consecutive successful health checks required before receiving traffic.", + "type": "integer" + }, + "restartThreshold": { + "format": "uint32", + "description": "Number of consecutive failed health checks required before an instance is restarted.", + "type": "integer" + }, + "checkInterval": { + "format": "google-duration", + "description": "Interval between health checks.", + "type": "string" + } + } + }, + "ReadinessCheck": { + "type": "object", + "properties": { "host": { "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"", "type": "string" @@ -2302,12 +2137,16 @@ "format": "google-duration", "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.", "type": "string" + }, + "path": { + "description": "The request path.", + "type": "string" } }, - "id": "ReadinessCheck" + "id": "ReadinessCheck", + "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation." }, "DebugInstanceRequest": { - "description": "Request message for Instances.DebugInstance.", "type": "object", "properties": { "sshKey": { @@ -2315,10 +2154,10 @@ "type": "string" } }, - "id": "DebugInstanceRequest" + "id": "DebugInstanceRequest", + "description": "Request message for Instances.DebugInstance." }, "OperationMetadataV1Beta5": { - "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { "method": { @@ -2331,9 +2170,9 @@ "type": "string" }, "endTime": { + "type": "string", "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" + "description": "Timestamp that this operation completed.@OutputOnly" }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", @@ -2344,9 +2183,12 @@ "type": "string" } }, - "id": "OperationMetadataV1Beta5" + "id": "OperationMetadataV1Beta5", + "description": "Metadata for the given google.longrunning.Operation." }, "Version": { + "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.", + "type": "object", "properties": { "env": { "description": "App Engine execution environment for this version.Defaults to standard.", @@ -2377,12 +2219,12 @@ "type": "boolean" }, "readinessCheck": { - "$ref": "ReadinessCheck", - "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set." + "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set.", + "$ref": "ReadinessCheck" }, "manualScaling": { - "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", - "$ref": "ManualScaling" + "$ref": "ManualScaling", + "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time." }, "name": { "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly", @@ -2393,48 +2235,52 @@ "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set." }, "endpointsApiService": { - "$ref": "EndpointsApiService", - "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app." - }, - "versionUrl": { - "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly", - "type": "string" + "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.", + "$ref": "EndpointsApiService" }, "vm": { "description": "Whether to deploy this version in a container on a virtual machine.", "type": "boolean" }, + "versionUrl": { + "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly", + "type": "string" + }, "instanceClass": { "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.", "type": "string" }, "servingStatus": { + "enum": [ + "SERVING_STATUS_UNSPECIFIED", + "SERVING", + "STOPPED" + ], "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", "type": "string", "enumDescriptions": [ "Not specified.", "Currently serving. Instances are created according to the scaling settings of the version.", "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING." - ], - "enum": [ - "SERVING_STATUS_UNSPECIFIED", - "SERVING", - "STOPPED" ] }, - "runtimeApiVersion": { - "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", - "type": "string" - }, "deployment": { "$ref": "Deployment", "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set." }, + "runtimeApiVersion": { + "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", + "type": "string" + }, "createTime": { "format": "google-datetime", "description": "Time that this version was created.@OutputOnly", "type": "string" }, + "resources": { + "$ref": "Resources", + "description": "Machine resources for this version. Only applicable for VM runtimes." + }, "inboundServices": { "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", "items": { @@ -2464,10 +2310,6 @@ "Enables warmup requests." ] }, - "resources": { - "description": "Machine resources for this version. Only applicable for VM runtimes.", - "$ref": "Resources" - }, "errorHandlers": { "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", "items": { @@ -2492,8 +2334,8 @@ "type": "string" }, "basicScaling": { - "$ref": "BasicScaling", - "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity." + "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", + "$ref": "BasicScaling" }, "runtime": { "description": "Desired runtime. Example: python27.", @@ -2508,15 +2350,15 @@ "type": "string" }, "envVariables": { + "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.", + "type": "object", "additionalProperties": { "type": "string" - }, - "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.", - "type": "object" + } }, "livenessCheck": { - "$ref": "LivenessCheck", - "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set." + "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.", + "$ref": "LivenessCheck" }, "network": { "$ref": "Network", @@ -2530,40 +2372,198 @@ "type": "object" } }, - "id": "Version", - "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.", - "type": "object" + "id": "Version" }, "RepairApplicationRequest": { - "properties": {}, "id": "RepairApplicationRequest", "description": "Request message for 'Applications.RepairApplication'.", + "type": "object", + "properties": {} + }, + "ScriptHandler": { + "description": "Executes a script to handle the request that matches the URL pattern.", + "type": "object", + "properties": { + "scriptPath": { + "description": "Path to the script from the application root directory.", + "type": "string" + } + }, + "id": "ScriptHandler" + }, + "FileInfo": { + "properties": { + "sha1Sum": { + "description": "The SHA1 hash of the file, in hex.", + "type": "string" + }, + "mimeType": { + "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", + "type": "string" + }, + "sourceUrl": { + "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", + "type": "string" + } + }, + "id": "FileInfo", + "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", "type": "object" + }, + "OperationMetadataExperimental": { + "type": "object", + "properties": { + "insertTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly" + }, + "endTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataExperimental", + "description": "Metadata for the given google.longrunning.Operation." + }, + "TrafficSplit": { + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.", + "type": "object", + "properties": { + "allocations": { + "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", + "type": "object", + "additionalProperties": { + "format": "double", + "type": "number" + } + }, + "shardBy": { + "enumDescriptions": [ + "Diversion method unspecified.", + "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.", + "Diversion based on applying the modulus operation to a fingerprint of the IP address.", + "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share." + ], + "enum": [ + "UNSPECIFIED", + "COOKIE", + "IP", + "RANDOM" + ], + "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.", + "type": "string" + } + }, + "id": "TrafficSplit" + }, + "OperationMetadataV1Beta": { + "type": "object", + "properties": { + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + }, + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "target": { + "type": "string", + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly" + }, + "ephemeralMessage": { + "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", + "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1Beta", + "description": "Metadata for the given google.longrunning.Operation." + }, + "ListServicesResponse": { + "description": "Response message for Services.ListServices.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "services": { + "description": "The services belonging to the requested application.", + "items": { + "$ref": "Service" + }, + "type": "array" + } + }, + "id": "ListServicesResponse" } }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, "version": "v1", "baseUrl": "https://appengine.googleapis.com/", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/appengine.admin": { - "description": "View and manage your applications deployed on Google App Engine" - }, "https://www.googleapis.com/auth/cloud-platform.read-only": { "description": "View your data across Google Cloud Platform services" }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/appengine.admin": { + "description": "View and manage your applications deployed on Google App Engine" } } } }, "servicePath": "", "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.", - "kind": "discovery#restDescription" + "kind": "discovery#restDescription", + "rootUrl": "https://appengine.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "appengine", + "batchPath": "batch", + "id": "appengine:v1", + "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", + "revision": "20170825", + "title": "Google App Engine Admin API", + "ownerName": "Google", + "discoveryVersion": "v1", + "version_module": true } diff --git a/vendor/google.golang.org/api/appengine/v1alpha/appengine-api.json b/vendor/google.golang.org/api/appengine/v1alpha/appengine-api.json index ecf1992..229cc12 100644 --- a/vendor/google.golang.org/api/appengine/v1alpha/appengine-api.json +++ b/vendor/google.golang.org/api/appengine/v1alpha/appengine-api.json @@ -1,545 +1,16 @@ { - "discoveryVersion": "v1", + "id": "appengine:v1alpha", + "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", + "revision": "20170825", + "title": "Google App Engine Admin API", "ownerName": "Google", + "discoveryVersion": "v1", "resources": { "apps": { "resources": { - "operations": { - "methods": { - "get": { - "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "operationsId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. The name of the operation resource.", - "type": "string", - "required": true - }, - "operationsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1alpha/apps/{appsId}/operations/{operationsId}", - "id": "appengine.apps.operations.get", - "path": "v1alpha/apps/{appsId}/operations/{operationsId}" - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - }, - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "The standard list page token." - }, - "appsId": { - "location": "path", - "description": "Part of `name`. The name of the operation's parent resource.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1alpha/apps/{appsId}/operations", - "path": "v1alpha/apps/{appsId}/operations", - "id": "appengine.apps.operations.list", - "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id." - } - } - }, - "locations": { - "methods": { - "get": { - "description": "Get information about a location.", - "response": { - "$ref": "Location" - }, - "parameterOrder": [ - "appsId", - "locationsId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "locationsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Resource name for the location.", - "type": "string", - "required": true - } - }, - "flatPath": "v1alpha/apps/{appsId}/locations/{locationsId}", - "id": "appengine.apps.locations.get", - "path": "v1alpha/apps/{appsId}/locations/{locationsId}" - }, - "list": { - "description": "Lists information about the supported locations for this service.", - "response": { - "$ref": "ListLocationsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "appsId": { - "description": "Part of `name`. The resource that owns the locations collection, if applicable.", - "type": "string", - "required": true, - "location": "path" - }, - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - }, - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1alpha/apps/{appsId}/locations", - "id": "appengine.apps.locations.list", - "path": "v1alpha/apps/{appsId}/locations" - } - } - }, - "domainMappings": { - "methods": { - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "appsId", - "domainMappingsId" - ], - "response": { - "$ref": "Operation" - }, - "parameters": { - "updateMask": { - "type": "string", - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated." - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com.", - "type": "string", - "required": true - }, - "domainMappingsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "noManagedCertificate": { - "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated. Only applicable if ssl_settings.certificate_id is specified in the update mask.", - "type": "boolean", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "id": "appengine.apps.domainMappings.patch", - "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.", - "request": { - "$ref": "DomainMapping" - } - }, - "get": { - "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "id": "appengine.apps.domainMappings.get", - "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "description": "Gets the specified domain mapping.", - "response": { - "$ref": "DomainMapping" - }, - "parameterOrder": [ - "appsId", - "domainMappingsId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/domainMappings/example.com.", - "type": "string", - "required": true - }, - "domainMappingsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ] - }, - "list": { - "response": { - "$ref": "ListDomainMappingsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "type": "string", - "required": true, - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1alpha/apps/{appsId}/domainMappings", - "id": "appengine.apps.domainMappings.list", - "path": "v1alpha/apps/{appsId}/domainMappings", - "description": "Lists the domain mappings on an application." - }, - "create": { - "request": { - "$ref": "DomainMapping" - }, - "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.", - "httpMethod": "POST", - "parameterOrder": [ - "appsId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true - }, - "noManagedCertificate": { - "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manaually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated.", - "type": "boolean", - "location": "query" - } - }, - "flatPath": "v1alpha/apps/{appsId}/domainMappings", - "path": "v1alpha/apps/{appsId}/domainMappings", - "id": "appengine.apps.domainMappings.create" - }, - "delete": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "domainMappingsId" - ], - "httpMethod": "DELETE", - "parameters": { - "domainMappingsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "id": "appengine.apps.domainMappings.delete", - "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", - "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource." - } - } - }, - "authorizedCertificates": { - "methods": { - "create": { - "response": { - "$ref": "AuthorizedCertificate" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "POST", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates", - "id": "appengine.apps.authorizedCertificates.create", - "path": "v1alpha/apps/{appsId}/authorizedCertificates", - "description": "Uploads the specified SSL certificate.", - "request": { - "$ref": "AuthorizedCertificate" - } - }, - "delete": { - "description": "Deletes the specified SSL certificate.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "appsId", - "authorizedCertificatesId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.", - "type": "string", - "required": true, - "location": "path" - }, - "authorizedCertificatesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.delete", - "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" - }, - "patch": { - "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.patch", - "request": { - "$ref": "AuthorizedCertificate" - }, - "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.", - "httpMethod": "PATCH", - "parameterOrder": [ - "appsId", - "authorizedCertificatesId" - ], - "response": { - "$ref": "AuthorizedCertificate" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "authorizedCertificatesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "updateMask": { - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.", - "type": "string", - "location": "query" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.", - "type": "string", - "required": true - } - }, - "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" - }, - "get": { - "response": { - "$ref": "AuthorizedCertificate" - }, - "parameterOrder": [ - "appsId", - "authorizedCertificatesId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.", - "type": "string", - "required": true - }, - "view": { - "type": "string", - "location": "query", - "enum": [ - "BASIC_CERTIFICATE", - "FULL_CERTIFICATE" - ], - "description": "Controls the set of fields returned in the GET response." - }, - "authorizedCertificatesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.get", - "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "description": "Gets the specified SSL certificate." - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListAuthorizedCertificatesResponse" - }, - "parameterOrder": [ - "appsId" - ], - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "view": { - "description": "Controls the set of fields returned in the LIST response.", - "type": "string", - "location": "query", - "enum": [ - "BASIC_CERTIFICATE", - "FULL_CERTIFICATE" - ] - }, - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true - }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Maximum results to return per page." - } - }, - "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates", - "path": "v1alpha/apps/{appsId}/authorizedCertificates", - "id": "appengine.apps.authorizedCertificates.list", - "description": "Lists all SSL certificates the user is authorized to administer." - } - } - }, "authorizedDomains": { "methods": { "list": { - "path": "v1alpha/apps/{appsId}/authorizedDomains", - "id": "appengine.apps.authorizedDomains.list", - "description": "Lists all domains the user is authorized to administer.", "httpMethod": "GET", "parameterOrder": [ "appsId" @@ -558,6 +29,309 @@ "type": "string", "location": "query" }, + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" + } + }, + "flatPath": "v1alpha/apps/{appsId}/authorizedDomains", + "path": "v1alpha/apps/{appsId}/authorizedDomains", + "id": "appengine.apps.authorizedDomains.list", + "description": "Lists all domains the user is authorized to administer." + } + } + }, + "operations": { + "methods": { + "get": { + "path": "v1alpha/apps/{appsId}/operations/{operationsId}", + "id": "appengine.apps.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + "httpMethod": "GET", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "operationsId" + ], + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. The name of the operation resource.", + "type": "string", + "required": true + }, + "operationsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1alpha/apps/{appsId}/operations/{operationsId}" + }, + "list": { + "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListOperationsResponse" + }, + "parameters": { + "pageToken": { + "type": "string", + "location": "query", + "description": "The standard list page token." + }, + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. The name of the operation's parent resource." + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1alpha/apps/{appsId}/operations", + "path": "v1alpha/apps/{appsId}/operations", + "id": "appengine.apps.operations.list" + } + } + }, + "locations": { + "methods": { + "get": { + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "locationsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "description": "Part of `name`. Resource name for the location.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1alpha/apps/{appsId}/locations/{locationsId}", + "path": "v1alpha/apps/{appsId}/locations/{locationsId}", + "id": "appengine.apps.locations.get", + "description": "Get information about a location.", + "httpMethod": "GET", + "parameterOrder": [ + "appsId", + "locationsId" + ], + "response": { + "$ref": "Location" + } + }, + "list": { + "response": { + "$ref": "ListLocationsResponse" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "The standard list page size.", + "type": "integer", + "location": "query" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. The resource that owns the locations collection, if applicable.", + "type": "string", + "required": true + } + }, + "flatPath": "v1alpha/apps/{appsId}/locations", + "id": "appengine.apps.locations.list", + "path": "v1alpha/apps/{appsId}/locations", + "description": "Lists information about the supported locations for this service." + } + } + }, + "domainMappings": { + "methods": { + "delete": { + "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", + "id": "appengine.apps.domainMappings.delete", + "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", + "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.", + "parameterOrder": [ + "appsId", + "domainMappingsId" + ], + "response": { + "$ref": "Operation" + }, + "httpMethod": "DELETE", + "parameters": { + "domainMappingsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." + }, + "appsId": { + "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.", + "request": { + "$ref": "DomainMapping" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "domainMappingsId" + ], + "httpMethod": "PATCH", + "parameters": { + "noManagedCertificate": { + "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated. Only applicable if ssl_settings.certificate_id is specified in the update mask.", + "type": "boolean", + "location": "query" + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string" + }, + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com." + }, + "domainMappingsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", + "id": "appengine.apps.domainMappings.patch", + "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}" + }, + "get": { + "flatPath": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", + "id": "appengine.apps.domainMappings.get", + "path": "v1alpha/apps/{appsId}/domainMappings/{domainMappingsId}", + "description": "Gets the specified domain mapping.", + "response": { + "$ref": "DomainMapping" + }, + "parameterOrder": [ + "appsId", + "domainMappingsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/domainMappings/example.com.", + "type": "string", + "required": true, + "location": "path" + }, + "domainMappingsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListDomainMappingsResponse" + }, + "parameters": { + "pageToken": { + "location": "query", + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, "appsId": { "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", "type": "string", @@ -565,13 +339,243 @@ "location": "path" }, "pageSize": { + "location": "query", "format": "int32", "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" + "type": "integer" } }, - "flatPath": "v1alpha/apps/{appsId}/authorizedDomains" + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1alpha/apps/{appsId}/domainMappings", + "path": "v1alpha/apps/{appsId}/domainMappings", + "id": "appengine.apps.domainMappings.list", + "description": "Lists the domain mappings on an application." + }, + "create": { + "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.", + "request": { + "$ref": "DomainMapping" + }, + "httpMethod": "POST", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true + }, + "noManagedCertificate": { + "location": "query", + "description": "Whether a managed certificate should be provided by App Engine. If true, a certificate ID must be manaually set in the DomainMapping resource to configure SSL for this domain. If false, a managed certificate will be provisioned and a certificate ID will be automatically populated.", + "type": "boolean" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1alpha/apps/{appsId}/domainMappings", + "path": "v1alpha/apps/{appsId}/domainMappings", + "id": "appengine.apps.domainMappings.create" + } + } + }, + "authorizedCertificates": { + "methods": { + "patch": { + "request": { + "$ref": "AuthorizedCertificate" + }, + "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.", + "response": { + "$ref": "AuthorizedCertificate" + }, + "parameterOrder": [ + "appsId", + "authorizedCertificatesId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.", + "type": "string" + }, + "appsId": { + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.", + "type": "string", + "required": true, + "location": "path" + }, + "authorizedCertificatesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.patch", + "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" + }, + "get": { + "description": "Gets the specified SSL certificate.", + "httpMethod": "GET", + "parameterOrder": [ + "appsId", + "authorizedCertificatesId" + ], + "response": { + "$ref": "AuthorizedCertificate" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "authorizedCertificatesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.", + "type": "string", + "required": true, + "location": "path" + }, + "view": { + "location": "query", + "enum": [ + "BASIC_CERTIFICATE", + "FULL_CERTIFICATE" + ], + "description": "Controls the set of fields returned in the GET response.", + "type": "string" + } + }, + "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.get" + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListAuthorizedCertificatesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" + }, + "view": { + "location": "query", + "enum": [ + "BASIC_CERTIFICATE", + "FULL_CERTIFICATE" + ], + "description": "Controls the set of fields returned in the LIST response.", + "type": "string" + } + }, + "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates", + "path": "v1alpha/apps/{appsId}/authorizedCertificates", + "id": "appengine.apps.authorizedCertificates.list", + "description": "Lists all SSL certificates the user is authorized to administer." + }, + "create": { + "description": "Uploads the specified SSL certificate.", + "request": { + "$ref": "AuthorizedCertificate" + }, + "httpMethod": "POST", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "AuthorizedCertificate" + }, + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates", + "path": "v1alpha/apps/{appsId}/authorizedCertificates", + "id": "appengine.apps.authorizedCertificates.create" + }, + "delete": { + "parameters": { + "authorizedCertificatesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.delete", + "path": "v1alpha/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "description": "Deletes the specified SSL certificate.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "appsId", + "authorizedCertificatesId" + ], + "httpMethod": "DELETE" } } } @@ -579,79 +583,42 @@ } }, "parameters": { - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], + "oauth_token": { "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", + "description": "OAuth 2.0 token for the current user.", "type": "string" }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, "bearer_token": { "description": "OAuth bearer token.", "type": "string", "location": "query" }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" + "type": "boolean", + "location": "query" }, "fields": { "location": "query", "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, - "callback": { - "description": "JSONP", + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, + "callback": { + "type": "string", + "location": "query", + "description": "JSONP" + }, "$.xgafv": { "enumDescriptions": [ "v1 error format", @@ -664,31 +631,239 @@ ], "description": "V1 error format.", "type": "string" + }, + "alt": { + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ] + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Pretty-print response." } }, "schemas": { - "ListDomainMappingsResponse": { - "id": "ListDomainMappingsResponse", - "description": "Response message for DomainMappings.ListDomainMappings.", + "ResourceRecord": { + "description": "A DNS resource record.", "type": "object", "properties": { - "domainMappings": { - "description": "The domain mappings for the application.", + "type": { + "description": "Resource record type. Example: AAAA.", + "type": "string", + "enumDescriptions": [ + "An A resource record. Data is an IPv4 address.", + "An AAAA resource record. Data is an IPv6 address.", + "A CNAME resource record. Data is a domain name to be aliased." + ], + "enum": [ + "A", + "AAAA", + "CNAME" + ] + }, + "rrdata": { + "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).", + "type": "string" + }, + "name": { + "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.", + "type": "string" + } + }, + "id": "ResourceRecord" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "operations": { + "description": "A list of operations that matches the specified filter in the request.", "items": { - "$ref": "DomainMapping" + "$ref": "Operation" }, "type": "array" }, "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", + "description": "The standard List next-page token.", "type": "string" } - } + }, + "id": "ListOperationsResponse" }, - "OperationMetadataV1Alpha": { + "OperationMetadata": { + "type": "object", + "properties": { + "insertTime": { + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" + }, + "operationType": { + "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadata", + "description": "Metadata for the given google.longrunning.Operation." + }, + "ListAuthorizedCertificatesResponse": { + "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "certificates": { + "description": "The SSL certificates the user is authorized to administer.", + "items": { + "$ref": "AuthorizedCertificate" + }, + "type": "array" + } + }, + "id": "ListAuthorizedCertificatesResponse", + "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.", + "type": "object" + }, + "OperationMetadataV1Beta5": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { + "method": { + "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "insertTime": { + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1Beta5" + }, + "ListLocationsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + } + }, + "id": "ListLocationsResponse", + "description": "The response message for Locations.ListLocations." + }, + "ManagedCertificate": { + "description": "A certificate managed by App Engine.", + "type": "object", + "properties": { + "lastRenewalTime": { + "format": "google-datetime", + "description": "Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly", + "type": "string" + }, + "status": { + "enumDescriptions": [ + "", + "Certificate was successfully obtained and inserted into the serving system.", + "Certificate is under active attempts to acquire or renew.", + "Most recent renewal failed due to a system failure and will be retried. System failure is likely transient, and subsequent renewal attempts may succeed. The last successfully provisioned certificate may still be serving.", + "Most recent renewal failed due to an invalid DNS setup and will be retried. Renewal attempts will continue to fail until the certificate domain's DNS configuration is fixed. The last successfully provisioned certificate may still be serving.", + "All renewal attempts have been exhausted. Most recent renewal failed due to an invalid DNS setup and will not be retried. The last successfully provisioned certificate may still be serving." + ], + "enum": [ + "UNSPECIFIED_STATUS", + "OK", + "PENDING", + "FAILED_RETRYING_INTERNAL", + "FAILED_RETRYING_NOT_VISIBLE", + "FAILED_PERMANENTLY_NOT_VISIBLE" + ], + "description": "Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly", + "type": "string" + } + }, + "id": "ManagedCertificate" + }, + "OperationMetadataV1": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly" + }, "user": { "description": "User who requested this operation.@OutputOnly", "type": "string" @@ -701,6 +876,129 @@ "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly" + } + }, + "id": "OperationMetadataV1" + }, + "SslSettings": { + "properties": { + "isManagedCertificate": { + "description": "Whether the mapped certificate is an App Engine managed certificate. Managed certificates are created by default with a domain mapping. To opt out, specify no_managed_certificate on a CREATE or UPDATE request.@OutputOnly", + "type": "boolean" + }, + "certificateId": { + "type": "string", + "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify no_managed_certificate on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345." + } + }, + "id": "SslSettings", + "description": "SSL configuration for a DomainMapping resource.", + "type": "object" + }, + "CertificateRawData": { + "id": "CertificateRawData", + "description": "An SSL certificate obtained from a certificate authority.", + "type": "object", + "properties": { + "privateKey": { + "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN RSA PRIVATE KEY----- \u003cunencrypted_key_value\u003e -----END RSA PRIVATE KEY----- \u003c/pre\u003e @InputOnly", + "type": "string" + }, + "publicCertificate": { + "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN CERTIFICATE----- \u003ccertificate_value\u003e -----END CERTIFICATE----- \u003c/pre\u003e", + "type": "string" + } + } + }, + "Operation": { + "type": "object", + "properties": { + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", + "type": "string" + }, + "error": { + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any." + }, + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "type": "object" + } + }, + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a network API call." + }, + "ListDomainMappingsResponse": { + "description": "Response message for DomainMappings.ListDomainMappings.", + "type": "object", + "properties": { + "domainMappings": { + "description": "The domain mappings for the application.", + "items": { + "$ref": "DomainMapping" + }, + "type": "array" + }, + "nextPageToken": { + "type": "string", + "description": "Continuation token for fetching the next page of results." + } + }, + "id": "ListDomainMappingsResponse" + }, + "OperationMetadataV1Alpha": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "ephemeralMessage": { + "type": "string", + "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly" + }, "method": { "description": "API method that initiated this operation. Example: google.appengine.v1alpha.Versions.CreateVersion.@OutputOnly", "type": "string" @@ -709,18 +1007,6 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" } }, "id": "OperationMetadataV1Alpha" @@ -754,23 +1040,7 @@ }, "id": "OperationMetadataExperimental" }, - "AuthorizedDomain": { - "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).", - "type": "object", - "properties": { - "name": { - "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly", - "type": "string" - }, - "id": { - "description": "Fully qualified domain name of the domain authorized for use. Example: example.com.", - "type": "string" - } - }, - "id": "AuthorizedDomain" - }, "ListAuthorizedDomainsResponse": { - "id": "ListAuthorizedDomainsResponse", "description": "Response message for AuthorizedDomains.ListAuthorizedDomains.", "type": "object", "properties": { @@ -785,12 +1055,23 @@ }, "type": "array" } - } + }, + "id": "ListAuthorizedDomainsResponse" }, "Status": { + "id": "Status", "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" + }, "details": { "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", "items": { @@ -801,33 +1082,29 @@ "type": "object" }, "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", - "type": "string" } - }, - "id": "Status" + } }, - "LocationMetadata": { + "AuthorizedDomain": { + "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).", + "type": "object", "properties": { - "standardEnvironmentAvailable": { - "description": "App Engine Standard Environment is available in the given location.@OutputOnly", - "type": "boolean" + "name": { + "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly", + "type": "string" }, - "flexibleEnvironmentAvailable": { - "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", - "type": "boolean" + "id": { + "type": "string", + "description": "Fully qualified domain name of the domain authorized for use. Example: example.com." } }, - "id": "LocationMetadata", - "description": "Metadata for the given google.cloud.location.Location.", - "type": "object" + "id": "AuthorizedDomain" + }, + "Empty": { + "type": "object", + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}." }, "DomainMapping": { "description": "A domain serving an App Engine application.", @@ -845,8 +1122,8 @@ "type": "string" }, "sslSettings": { - "$ref": "SslSettings", - "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL." + "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL.", + "$ref": "SslSettings" }, "name": { "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.@OutputOnly", @@ -855,16 +1132,37 @@ }, "id": "DomainMapping" }, - "Empty": { + "LocationMetadata": { + "description": "Metadata for the given google.cloud.location.Location.", "type": "object", - "properties": {}, - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}." + "properties": { + "standardEnvironmentAvailable": { + "type": "boolean", + "description": "App Engine Standard Environment is available in the given location.@OutputOnly" + }, + "flexibleEnvironmentAvailable": { + "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", + "type": "boolean" + } + }, + "id": "LocationMetadata" }, "OperationMetadataV1Beta": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, "user": { "description": "User who requested this operation.@OutputOnly", "type": "string" @@ -885,34 +1183,13 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" } }, "id": "OperationMetadataV1Beta" }, "Location": { - "id": "Location", - "description": "A resource that represents Google Cloud Platform location.", "type": "object", "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", - "type": "object" - }, "name": { "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", "type": "string" @@ -922,38 +1199,32 @@ "type": "string" }, "metadata": { + "description": "Service-specific metadata. For example the available capacity at the given location.", + "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" + } + }, + "labels": { + "additionalProperties": { + "type": "string" }, - "description": "Service-specific metadata. For example the available capacity at the given location.", + "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", "type": "object" } - } + }, + "id": "Location", + "description": "A resource that represents Google Cloud Platform location." }, "AuthorizedCertificate": { "description": "An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.", "type": "object", "properties": { - "certificateRawData": { - "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.", - "$ref": "CertificateRawData" - }, - "managedCertificate": { - "$ref": "ManagedCertificate", - "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly" - }, - "visibleDomainMappings": { - "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, "expireTime": { + "type": "string", "format": "google-datetime", - "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly", - "type": "string" + "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly" }, "name": { "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly", @@ -965,11 +1236,11 @@ "type": "integer" }, "domainNames": { + "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly", "items": { "type": "string" }, - "type": "array", - "description": "Topmost applicable domains of this certificate. This certificate applies to these domains and their subdomains. Example: example.com.@OutputOnly" + "type": "array" }, "id": { "description": "Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly", @@ -978,298 +1249,31 @@ "displayName": { "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.", "type": "string" - } - }, - "id": "AuthorizedCertificate" - }, - "ResourceRecord": { - "description": "A DNS resource record.", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'." }, - "type": { - "enumDescriptions": [ - "An A resource record. Data is an IPv4 address.", - "An AAAA resource record. Data is an IPv6 address.", - "A CNAME resource record. Data is a domain name to be aliased." - ], - "enum": [ - "A", - "AAAA", - "CNAME" - ], - "description": "Resource record type. Example: AAAA.", - "type": "string" + "managedCertificate": { + "description": "Only applicable if this certificate is managed by App Engine. Managed certificates are tied to the lifecycle of a DomainMapping and cannot be updated or deleted via the AuthorizedCertificates API. If this certificate is manually administered by the user, this field will be empty.@OutputOnly", + "$ref": "ManagedCertificate" }, - "rrdata": { - "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).", - "type": "string" - } - }, - "id": "ResourceRecord" - }, - "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" + "certificateRawData": { + "description": "The SSL certificate serving the AuthorizedCertificate resource. This must be obtained independently from a certificate authority.", + "$ref": "CertificateRawData" }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - } - }, - "id": "ListOperationsResponse" - }, - "OperationMetadata": { - "properties": { - "operationType": { - "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly", - "type": "string" - }, - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadata", - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object" - }, - "ListAuthorizedCertificatesResponse": { - "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.", - "type": "object", - "properties": { - "certificates": { - "description": "The SSL certificates the user is authorized to administer.", - "items": { - "$ref": "AuthorizedCertificate" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" - } - }, - "id": "ListAuthorizedCertificatesResponse" - }, - "OperationMetadataV1Beta5": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta5" - }, - "ListLocationsResponse": { - "description": "The response message for Locations.ListLocations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse" - }, - "ManagedCertificate": { - "description": "A certificate managed by App Engine.", - "type": "object", - "properties": { - "status": { - "description": "Status of certificate management. Refers to the most recent certificate acquisition or renewal attempt.@OutputOnly", - "type": "string", - "enumDescriptions": [ - "", - "Certificate was successfully obtained and inserted into the serving system.", - "Certificate is under active attempts to acquire or renew.", - "Most recent renewal failed due to a system failure and will be retried. System failure is likely transient, and subsequent renewal attempts may succeed. The last successfully provisioned certificate may still be serving.", - "Most recent renewal failed due to an invalid DNS setup and will be retried. Renewal attempts will continue to fail until the certificate domain's DNS configuration is fixed. The last successfully provisioned certificate may still be serving.", - "All renewal attempts have been exhausted. Most recent renewal failed due to an invalid DNS setup and will not be retried. The last successfully provisioned certificate may still be serving." - ], - "enum": [ - "UNSPECIFIED_STATUS", - "OK", - "PENDING", - "FAILED_RETRYING_INTERNAL", - "FAILED_RETRYING_NOT_VISIBLE", - "FAILED_PERMANENTLY_NOT_VISIBLE" - ] - }, - "lastRenewalTime": { - "format": "google-datetime", - "description": "Time at which the certificate was last renewed. The renewal process is fully managed. Certificate renewal will automatically occur before the certificate expires. Renewal errors can be tracked via ManagementStatus.@OutputOnly", - "type": "string" - } - }, - "id": "ManagedCertificate" - }, - "OperationMetadataV1": { - "id": "OperationMetadataV1", - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", + "visibleDomainMappings": { + "description": "The full paths to user visible Domain Mapping resources that have this certificate mapped. Example: apps/myapp/domainMappings/example.com.This may not represent the full list of mapped domain mappings if the user does not have VIEWER permissions on all of the applications that have this certificate mapped. See domain_mappings_count for a complete count.Only returned by GET or LIST requests when specifically requested by the view=FULL_CERTIFICATE option.@OutputOnly", "items": { "type": "string" }, "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "ephemeralMessage": { - "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", - "type": "string" - } - } - }, - "SslSettings": { - "description": "SSL configuration for a DomainMapping resource.", - "type": "object", - "properties": { - "isManagedCertificate": { - "description": "Whether the mapped certificate is an App Engine managed certificate. Managed certificates are created by default with a domain mapping. To opt out, specify no_managed_certificate on a CREATE or UPDATE request.@OutputOnly", - "type": "boolean" - }, - "certificateId": { - "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support.By default, a managed certificate is automatically created for every domain mapping. To omit SSL support or to configure SSL manually, specify no_managed_certificate on a CREATE or UPDATE request. You must be authorized to administer the AuthorizedCertificate resource to manually map it to a DomainMapping resource. Example: 12345.", - "type": "string" } }, - "id": "SslSettings" - }, - "CertificateRawData": { - "properties": { - "privateKey": { - "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN RSA PRIVATE KEY----- \u003cunencrypted_key_value\u003e -----END RSA PRIVATE KEY----- \u003c/pre\u003e @InputOnly", - "type": "string" - }, - "publicCertificate": { - "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN CERTIFICATE----- \u003ccertificate_value\u003e -----END CERTIFICATE----- \u003c/pre\u003e", - "type": "string" - } - }, - "id": "CertificateRawData", - "description": "An SSL certificate obtained from a certificate authority.", - "type": "object" - }, - "Operation": { - "description": "This resource represents a long-running operation that is the result of a network API call.", - "type": "object", - "properties": { - "response": { - "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any." - }, - "done": { - "type": "boolean", - "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available." - } - }, - "id": "Operation" + "id": "AuthorizedCertificate" } }, - "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, + "protocol": "rest", "version": "v1alpha", "baseUrl": "https://appengine.googleapis.com/", "auth": { @@ -1287,16 +1291,12 @@ } } }, - "servicePath": "", - "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.", "kind": "discovery#restDescription", + "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.", + "servicePath": "", "rootUrl": "https://appengine.googleapis.com/", "basePath": "", "ownerDomain": "google.com", "name": "appengine", - "batchPath": "batch", - "id": "appengine:v1alpha", - "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", - "revision": "20170824", - "title": "Google App Engine Admin API" + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/appengine/v1beta/appengine-api.json b/vendor/google.golang.org/api/appengine/v1beta/appengine-api.json index 07141ec..af0e36b 100644 --- a/vendor/google.golang.org/api/appengine/v1beta/appengine-api.json +++ b/vendor/google.golang.org/api/appengine/v1beta/appengine-api.json @@ -1,95 +1,8 @@ { - "title": "Google App Engine Admin API", - "discoveryVersion": "v1", - "ownerName": "Google", "resources": { "apps": { "methods": { - "patch": { - "request": { - "$ref": "Application" - }, - "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain - Google authentication domain for controlling user access to the application.\ndefault_cookie_expiration - Cookie expiration policy for the application.", - "httpMethod": "PATCH", - "parameterOrder": [ - "appsId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string" - }, - "appsId": { - "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta/apps/{appsId}", - "path": "v1beta/apps/{appsId}", - "id": "appengine.apps.patch" - }, - "get": { - "description": "Gets information about an application.", - "response": { - "$ref": "Application" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta/apps/{appsId}", - "id": "appengine.apps.get", - "path": "v1beta/apps/{appsId}" - }, - "create": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1beta/apps", - "id": "appengine.apps.create", - "path": "v1beta/apps", - "request": { - "$ref": "Application" - }, - "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/)." - }, "repair": { - "flatPath": "v1beta/apps/{appsId}:repair", - "id": "appengine.apps.repair", - "path": "v1beta/apps/{appsId}:repair", - "request": { - "$ref": "RepairApplicationRequest" - }, - "description": "Recreates the required App Engine features for the specified App Engine application, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example, Error retrieving the App Engine service account.", "response": { "$ref": "Operation" }, @@ -107,38 +20,136 @@ "type": "string", "required": true } - } + }, + "flatPath": "v1beta/apps/{appsId}:repair", + "id": "appengine.apps.repair", + "path": "v1beta/apps/{appsId}:repair", + "request": { + "$ref": "RepairApplicationRequest" + }, + "description": "Recreates the required App Engine features for the specified App Engine application, for example a Cloud Storage bucket or App Engine service account. Use this method if you receive an error message about a missing feature, for example, Error retrieving the App Engine service account." + }, + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "appsId": { + "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string" + } + }, + "flatPath": "v1beta/apps/{appsId}", + "path": "v1beta/apps/{appsId}", + "id": "appengine.apps.patch", + "request": { + "$ref": "Application" + }, + "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain - Google authentication domain for controlling user access to the application.\ndefault_cookie_expiration - Cookie expiration policy for the application." + }, + "get": { + "flatPath": "v1beta/apps/{appsId}", + "id": "appengine.apps.get", + "path": "v1beta/apps/{appsId}", + "description": "Gets information about an application.", + "response": { + "$ref": "Application" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the Application resource to get. Example: apps/myapp.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "create": { + "flatPath": "v1beta/apps", + "path": "v1beta/apps", + "id": "appengine.apps.create", + "request": { + "$ref": "Application" + }, + "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).", + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {} } }, "resources": { "authorizedCertificates": { "methods": { - "patch": { + "create": { + "id": "appengine.apps.authorizedCertificates.create", + "path": "v1beta/apps/{appsId}/authorizedCertificates", + "description": "Uploads the specified SSL certificate.", "request": { "$ref": "AuthorizedCertificate" }, - "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.", "response": { "$ref": "AuthorizedCertificate" }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "POST", + "parameters": { + "appsId": { + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/authorizedCertificates" + }, + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, "parameterOrder": [ "appsId", "authorizedCertificatesId" ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.", - "type": "string" - }, "appsId": { "location": "path", - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345.", + "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.", "type": "string", "required": true }, @@ -149,12 +160,19 @@ "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.patch", - "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" + "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.delete", + "description": "Deletes the specified SSL certificate." }, - "get": { - "description": "Gets the specified SSL certificate.", + "patch": { + "description": "Updates the specified SSL certificate. To renew a certificate and maintain its existing domain mappings, update certificate_data with a new certificate. The new certificate must be applicable to the same domains as the original certificate. The certificate display_name may also be updated.", + "request": { + "$ref": "AuthorizedCertificate" + }, "response": { "$ref": "AuthorizedCertificate" }, @@ -162,43 +180,77 @@ "appsId", "authorizedCertificatesId" ], + "httpMethod": "PATCH", + "parameters": { + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/authorizedCertificates/12345." + }, + "authorizedCertificatesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated. Updates are only supported on the certificate_raw_data and display_name fields.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.patch", + "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" + }, + "get": { + "description": "Gets the specified SSL certificate.", "httpMethod": "GET", + "response": { + "$ref": "AuthorizedCertificate" + }, + "parameterOrder": [ + "appsId", + "authorizedCertificatesId" + ], + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.", + "type": "string", + "required": true + }, + "view": { + "description": "Controls the set of fields returned in the GET response.", + "type": "string", + "location": "query", + "enum": [ + "BASIC_CERTIFICATE", + "FULL_CERTIFICATE" + ] + }, + "authorizedCertificatesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/authorizedCertificates/12345.", - "type": "string", - "required": true, - "location": "path" - }, - "view": { - "location": "query", - "enum": [ - "BASIC_CERTIFICATE", - "FULL_CERTIFICATE" - ], - "description": "Controls the set of fields returned in the GET response.", - "type": "string" - }, - "authorizedCertificatesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, "flatPath": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.get", - "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}" + "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", + "id": "appengine.apps.authorizedCertificates.get" }, "list": { - "flatPath": "v1beta/apps/{appsId}/authorizedCertificates", - "path": "v1beta/apps/{appsId}/authorizedCertificates", - "id": "appengine.apps.authorizedCertificates.list", "description": "Lists all SSL certificates the user is authorized to administer.", "httpMethod": "GET", "parameterOrder": [ @@ -209,9 +261,9 @@ }, "parameters": { "pageToken": { + "type": "string", "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" + "description": "Continuation token for fetching the next page of results." }, "appsId": { "location": "path", @@ -220,94 +272,35 @@ "required": true }, "pageSize": { + "location": "query", "format": "int32", "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" + "type": "integer" }, "view": { - "location": "query", "enum": [ "BASIC_CERTIFICATE", "FULL_CERTIFICATE" ], "description": "Controls the set of fields returned in the LIST response.", - "type": "string" + "type": "string", + "location": "query" } }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" - ] - }, - "create": { - "request": { - "$ref": "AuthorizedCertificate" - }, - "description": "Uploads the specified SSL certificate.", - "httpMethod": "POST", - "parameterOrder": [ - "appsId" ], - "response": { - "$ref": "AuthorizedCertificate" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "appsId": { - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true, - "location": "path" - } - }, "flatPath": "v1beta/apps/{appsId}/authorizedCertificates", "path": "v1beta/apps/{appsId}/authorizedCertificates", - "id": "appengine.apps.authorizedCertificates.create" - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "appsId", - "authorizedCertificatesId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "authorizedCertificatesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/authorizedCertificates/12345.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "id": "appengine.apps.authorizedCertificates.delete", - "path": "v1beta/apps/{appsId}/authorizedCertificates/{authorizedCertificatesId}", - "description": "Deletes the specified SSL certificate." + "id": "appengine.apps.authorizedCertificates.list" } } }, "services": { "methods": { "patch": { - "request": { - "$ref": "Service" - }, - "description": "Updates the configuration of the specified service.", "response": { "$ref": "Operation" }, @@ -316,21 +309,7 @@ "servicesId" ], "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { - "migrateTraffic": { - "location": "query", - "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", - "type": "boolean" - }, - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string" - }, "servicesId": { "description": "Part of `name`. See documentation of `appsId`.", "type": "string", @@ -338,18 +317,40 @@ "location": "path" }, "appsId": { - "location": "path", "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.", "type": "string", - "required": true + "required": true, + "location": "path" + }, + "migrateTraffic": { + "type": "boolean", + "location": "query", + "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic)." + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1beta/apps/{appsId}/services/{servicesId}", "id": "appengine.apps.services.patch", - "path": "v1beta/apps/{appsId}/services/{servicesId}" + "path": "v1beta/apps/{appsId}/services/{servicesId}", + "description": "Updates the configuration of the specified service.", + "request": { + "$ref": "Service" + } }, "get": { + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}", + "path": "v1beta/apps/{appsId}/services/{servicesId}", + "id": "appengine.apps.services.get", "description": "Gets the current configuration of the specified service.", + "httpMethod": "GET", "response": { "$ref": "Service" }, @@ -357,7 +358,6 @@ "appsId", "servicesId" ], - "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", @@ -371,17 +371,41 @@ "location": "path" }, "appsId": { - "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", "type": "string", - "required": true + "required": true, + "location": "path" } - }, - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.get", - "path": "v1beta/apps/{appsId}/services/{servicesId}" + } }, "list": { + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" + } + }, + "flatPath": "v1beta/apps/{appsId}/services", + "id": "appengine.apps.services.list", + "path": "v1beta/apps/{appsId}/services", "description": "Lists all the services in the application.", "response": { "$ref": "ListServicesResponse" @@ -389,36 +413,11 @@ "parameterOrder": [ "appsId" ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - }, - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta/apps/{appsId}/services", - "id": "appengine.apps.services.list", - "path": "v1beta/apps/{appsId}/services" + "httpMethod": "GET" }, "delete": { + "path": "v1beta/apps/{appsId}/services/{servicesId}", + "id": "appengine.apps.services.delete", "description": "Deletes the specified service and all enclosed versions.", "httpMethod": "DELETE", "parameterOrder": [ @@ -428,89 +427,45 @@ "response": { "$ref": "Operation" }, - "parameters": { - "servicesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", - "type": "string", - "required": true, - "location": "path" - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}", - "path": "v1beta/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.delete" + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + "type": "string", + "required": true + }, + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}" } }, "resources": { "versions": { "methods": { - "delete": { - "description": "Deletes an existing Version resource.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.delete", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}" - }, "patch": { - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.patch", "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.patch", + "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.", "request": { "$ref": "Version" }, - "description": "Updates the specified Version resource. You can specify the following fields depending on the App Engine environment and type of scaling that the version resource uses:\nserving_status (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.serving_status): For Version resources that use basic scaling, manual scaling, or run in the App Engine flexible environment.\ninstance_class (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.instance_class): For Version resources that run in the App Engine standard environment.\nautomatic_scaling.min_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.max_idle_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine standard environment.\nautomatic_scaling.min_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.max_total_instances (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cool_down_period_sec (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.\nautomatic_scaling.cpu_utilization.target_utilization (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#Version.FIELDS.automatic_scaling): For Version resources that use automatic scaling and run in the App Engine Flexible environment.", - "response": { - "$ref": "Operation" - }, + "httpMethod": "PATCH", "parameterOrder": [ "appsId", "servicesId", "versionsId" ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], + "response": { + "$ref": "Operation" + }, "parameters": { "updateMask": { "format": "google-fieldmask", @@ -519,10 +474,10 @@ "location": "query" }, "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "appsId": { "location": "path", @@ -531,15 +486,23 @@ "required": true }, "versionsId": { + "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true, - "location": "path" + "required": true } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}" }, "get": { + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.get", "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.", + "httpMethod": "GET", "response": { "$ref": "Version" }, @@ -548,46 +511,46 @@ "servicesId", "versionsId" ], - "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "view": { - "description": "Controls the set of fields returned in the Get response.", + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", "type": "string", + "required": true + }, + "view": { "location": "query", "enum": [ "BASIC", "FULL" - ] + ], + "description": "Controls the set of fields returned in the Get response.", + "type": "string" }, "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "servicesId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", - "type": "string", "required": true, "location": "path" } - }, - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.get", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}" + } }, "list": { + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions", + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions", + "id": "appengine.apps.services.versions.list", + "description": "Lists the versions of a service.", "httpMethod": "GET", "parameterOrder": [ "appsId", @@ -597,21 +560,6 @@ "$ref": "ListVersionsResponse" }, "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - }, - "view": { - "description": "Controls the set of fields returned in the List response.", - "type": "string", - "location": "query", - "enum": [ - "BASIC", - "FULL" - ] - }, "servicesId": { "description": "Part of `parent`. See documentation of `appsId`.", "type": "string", @@ -619,35 +567,39 @@ "location": "path" }, "pageToken": { + "location": "query", "description": "Continuation token for fetching the next page of results.", - "type": "string", - "location": "query" + "type": "string" }, "appsId": { - "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `parent`. Name of the parent Service resource. Example: apps/myapp/services/default." + }, + "pageSize": { + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer", + "location": "query" + }, + "view": { + "enum": [ + "BASIC", + "FULL" + ], + "description": "Controls the set of fields returned in the List response.", + "type": "string", + "location": "query" } }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.list", - "description": "Lists the versions of a service." + ] }, "create": { - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.create", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions", - "request": { - "$ref": "Version" - }, - "description": "Deploys code and resource files to a new version.", "response": { "$ref": "Operation" }, @@ -656,9 +608,6 @@ "servicesId" ], "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "servicesId": { "description": "Part of `parent`. See documentation of `appsId`.", @@ -672,14 +621,106 @@ "type": "string", "required": true } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions", + "id": "appengine.apps.services.versions.create", + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions", + "description": "Deploys code and resource files to a new version.", + "request": { + "$ref": "Version" } + }, + "delete": { + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.delete", + "description": "Deletes an existing Version resource.", + "httpMethod": "DELETE", + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", + "type": "string", + "required": true + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] } }, "resources": { "instances": { "methods": { - "get": { + "delete": { + "parameters": { + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "instancesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.services.versions.instances.delete", + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "description": "Stops a running instance.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId", + "instancesId" + ], + "httpMethod": "DELETE" + }, + "get": { "id": "appengine.apps.services.versions.instances.get", "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", "description": "Gets instance information.", @@ -693,6 +734,11 @@ "instancesId" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "parameters": { "versionsId": { "description": "Part of `name`. See documentation of `appsId`.", @@ -707,10 +753,10 @@ "location": "path" }, "instancesId": { + "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true, - "location": "path" + "required": true }, "appsId": { "location": "path", @@ -719,11 +765,7 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ] + "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" }, "list": { "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).", @@ -736,24 +778,29 @@ "versionsId" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "parameters": { "servicesId": { + "location": "path", "description": "Part of `parent`. See documentation of `appsId`.", "type": "string", + "required": true + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "Continuation token for fetching the next page of results." + }, + "appsId": { + "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.", + "type": "string", "required": true, "location": "path" }, - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Version resource. Example: apps/myapp/services/default/versions/v1.", - "type": "string", - "required": true - }, "pageSize": { "location": "query", "format": "int32", @@ -767,20 +814,11 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", "id": "appengine.apps.services.versions.instances.list", "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances" }, "debug": { - "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", - "request": { - "$ref": "DebugInstanceRequest" - }, "response": { "$ref": "Operation" }, @@ -792,29 +830,29 @@ ], "httpMethod": "POST", "parameters": { - "servicesId": { + "instancesId": { "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, "location": "path" }, - "instancesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, "appsId": { + "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", "type": "string", - "required": true, - "location": "path" + "required": true }, "versionsId": { "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, "location": "path" + }, + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true } }, "scopes": [ @@ -822,52 +860,11 @@ ], "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", "id": "appengine.apps.services.versions.instances.debug", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug" - }, - "delete": { - "description": "Stops a running instance.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId", - "instancesId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "instancesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true, - "location": "path" - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.services.versions.instances.delete", - "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" + "path": "v1beta/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", + "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", + "request": { + "$ref": "DebugInstanceRequest" + } } } } @@ -878,6 +875,9 @@ "authorizedDomains": { "methods": { "list": { + "flatPath": "v1beta/apps/{appsId}/authorizedDomains", + "id": "appengine.apps.authorizedDomains.list", + "path": "v1beta/apps/{appsId}/authorizedDomains", "description": "Lists all domains the user is authorized to administer.", "response": { "$ref": "ListAuthorizedDomainsResponse" @@ -886,6 +886,11 @@ "appsId" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "parameters": { "pageToken": { "location": "query", @@ -904,34 +909,22 @@ "description": "Maximum results to return per page.", "type": "integer" } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta/apps/{appsId}/authorizedDomains", - "id": "appengine.apps.authorizedDomains.list", - "path": "v1beta/apps/{appsId}/authorizedDomains" + } } } }, "operations": { "methods": { "get": { - "httpMethod": "GET", + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "appsId", "operationsId" ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], + "httpMethod": "GET", "parameters": { "appsId": { "description": "Part of `name`. The name of the operation resource.", @@ -940,71 +933,126 @@ "location": "path" }, "operationsId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" } }, - "flatPath": "v1beta/apps/{appsId}/operations/{operationsId}", - "path": "v1beta/apps/{appsId}/operations/{operationsId}", - "id": "appengine.apps.operations.get", - "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service." - }, - "list": { - "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], - "response": { - "$ref": "ListOperationsResponse" - }, "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], + "flatPath": "v1beta/apps/{appsId}/operations/{operationsId}", + "id": "appengine.apps.operations.get", + "path": "v1beta/apps/{appsId}/operations/{operationsId}" + }, + "list": { + "id": "appengine.apps.operations.list", + "path": "v1beta/apps/{appsId}/operations", + "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, "pageToken": { "location": "query", "description": "The standard list page token.", "type": "string" }, "appsId": { + "location": "path", "description": "Part of `name`. The name of the operation's parent resource.", "type": "string", - "required": true, - "location": "path" + "required": true }, "pageSize": { - "location": "query", "format": "int32", "description": "The standard list page size.", - "type": "integer" + "type": "integer", + "location": "query" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" } }, - "flatPath": "v1beta/apps/{appsId}/operations", - "path": "v1beta/apps/{appsId}/operations", - "id": "appengine.apps.operations.list" + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta/apps/{appsId}/operations" } } }, "domainMappings": { "methods": { - "patch": { - "flatPath": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", - "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", - "id": "appengine.apps.domainMappings.patch", + "create": { + "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.", "request": { "$ref": "DomainMapping" }, - "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "POST", + "parameters": { + "appsId": { + "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/domainMappings", + "id": "appengine.apps.domainMappings.create", + "path": "v1beta/apps/{appsId}/domainMappings" + }, + "delete": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "domainMappingsId" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "appsId": { + "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.", + "type": "string", + "required": true, + "location": "path" + }, + "domainMappingsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", + "id": "appengine.apps.domainMappings.delete", + "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", + "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource." + }, + "patch": { "httpMethod": "PATCH", "parameterOrder": [ "appsId", @@ -1013,83 +1061,79 @@ "response": { "$ref": "Operation" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { - "domainMappingsId": { + "appsId": { "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com.", "type": "string", "required": true }, + "domainMappingsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, "updateMask": { "location": "query", "format": "google-fieldmask", "description": "Standard field mask for the set of fields to be updated.", "type": "string" - }, - "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/domainMappings/example.com.", - "type": "string", - "required": true, - "location": "path" } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", + "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", + "id": "appengine.apps.domainMappings.patch", + "description": "Updates the specified domain mapping. To map an SSL certificate to a domain mapping, update certificate_id to point to an AuthorizedCertificate resource. A user must be authorized to administer the associated domain in order to update a DomainMapping resource.", + "request": { + "$ref": "DomainMapping" } }, "get": { - "httpMethod": "GET", + "description": "Gets the specified domain mapping.", + "response": { + "$ref": "DomainMapping" + }, "parameterOrder": [ "appsId", "domainMappingsId" ], - "response": { - "$ref": "DomainMapping" - }, + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { + "domainMappingsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, "appsId": { "location": "path", "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/domainMappings/example.com.", "type": "string", "required": true - }, - "domainMappingsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true } }, "flatPath": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", - "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", "id": "appengine.apps.domainMappings.get", - "description": "Gets the specified domain mapping." + "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}" }, "list": { - "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], "response": { "$ref": "ListDomainMappingsResponse" }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" + "parameterOrder": [ + "appsId" ], + "httpMethod": "GET", "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - }, "pageToken": { "description": "Continuation token for fetching the next page of results.", "type": "string", @@ -1100,70 +1144,23 @@ "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", "type": "string", "required": true - } - }, - "flatPath": "v1beta/apps/{appsId}/domainMappings", - "path": "v1beta/apps/{appsId}/domainMappings", - "id": "appengine.apps.domainMappings.list", - "description": "Lists the domain mappings on an application." - }, - "create": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "POST", - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `parent`. Name of the parent Application resource. Example: apps/myapp.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta/apps/{appsId}/domainMappings", - "id": "appengine.apps.domainMappings.create", - "path": "v1beta/apps/{appsId}/domainMappings", - "description": "Maps a domain to an application. A user must be authorized to administer a domain in order to map it to an application. For a list of available authorized domains, see AuthorizedDomains.ListAuthorizedDomains.", - "request": { - "$ref": "DomainMapping" - } - }, - "delete": { - "description": "Deletes the specified domain mapping. A user must be authorized to administer the associated domain in order to delete a DomainMapping resource.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "domainMappingsId" - ], - "httpMethod": "DELETE", - "parameters": { - "domainMappingsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to delete. Example: apps/myapp/domainMappings/example.com.", - "type": "string", - "required": true + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" } }, "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}", - "id": "appengine.apps.domainMappings.delete", - "path": "v1beta/apps/{appsId}/domainMappings/{domainMappingsId}" + "flatPath": "v1beta/apps/{appsId}/domainMappings", + "id": "appengine.apps.domainMappings.list", + "path": "v1beta/apps/{appsId}/domainMappings", + "description": "Lists the domain mappings on an application." } } }, @@ -1187,17 +1184,17 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "ingressRulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, "appsId": { "location": "path", "description": "Part of `name`. Name of the Firewall resource to retrieve. Example: apps/myapp/firewall/ingressRules/100.", "type": "string", "required": true + }, + "ingressRulesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" } }, "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}", @@ -1222,10 +1219,10 @@ ], "parameters": { "ingressRulesId": { - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "updateMask": { "format": "google-fieldmask", @@ -1234,10 +1231,10 @@ "location": "query" }, "appsId": { + "location": "path", "description": "Part of `name`. Name of the Firewall resource to update. Example: apps/myapp/firewall/ingressRules/100.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}", @@ -1245,17 +1242,13 @@ "id": "appengine.apps.firewall.ingressRules.patch" }, "batchUpdate": { - "description": "Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the '*' wildcard IP range, then an \"allow all\" rule is explicitly added to the end of the list.", - "request": { - "$ref": "BatchUpdateIngressRulesRequest" - }, - "response": { - "$ref": "BatchUpdateIngressRulesResponse" - }, + "httpMethod": "POST", "parameterOrder": [ "appsId" ], - "httpMethod": "POST", + "response": { + "$ref": "BatchUpdateIngressRulesResponse" + }, "parameters": { "appsId": { "location": "path", @@ -1268,10 +1261,15 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules:batchUpdate", + "path": "v1beta/apps/{appsId}/firewall/ingressRules:batchUpdate", "id": "appengine.apps.firewall.ingressRules.batchUpdate", - "path": "v1beta/apps/{appsId}/firewall/ingressRules:batchUpdate" + "description": "Replaces the entire firewall ruleset in one bulk operation. This overrides and replaces the rules of an existing firewall with the new rules.If the final rule does not match traffic with the '*' wildcard IP range, then an \"allow all\" rule is explicitly added to the end of the list.", + "request": { + "$ref": "BatchUpdateIngressRulesRequest" + } }, "delete": { + "description": "Deletes the specified firewall rule.", "response": { "$ref": "Empty" }, @@ -1280,6 +1278,9 @@ "ingressRulesId" ], "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "appsId": { "location": "path", @@ -1294,15 +1295,14 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}", "id": "appengine.apps.firewall.ingressRules.delete", - "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}", - "description": "Deletes the specified firewall rule." + "path": "v1beta/apps/{appsId}/firewall/ingressRules/{ingressRulesId}" }, "list": { + "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules", + "path": "v1beta/apps/{appsId}/firewall/ingressRules", + "id": "appengine.apps.firewall.ingressRules.list", "description": "Lists the firewall rules of an application.", "httpMethod": "GET", "parameterOrder": [ @@ -1324,9 +1324,9 @@ "type": "string" }, "pageToken": { - "location": "query", "description": "Continuation token for fetching the next page of results.", - "type": "string" + "type": "string", + "location": "query" }, "appsId": { "location": "path", @@ -1339,37 +1339,34 @@ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules", - "path": "v1beta/apps/{appsId}/firewall/ingressRules", - "id": "appengine.apps.firewall.ingressRules.list" + ] }, "create": { - "description": "Creates a firewall rule for the application.", - "request": { - "$ref": "FirewallRule" - }, - "response": { - "$ref": "FirewallRule" - }, + "httpMethod": "POST", "parameterOrder": [ "appsId" ], - "httpMethod": "POST", + "response": { + "$ref": "FirewallRule" + }, "parameters": { "appsId": { + "location": "path", "description": "Part of `parent`. Name of the parent Firewall collection in which to create a new rule. Example: apps/myapp/firewall/ingressRules.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1beta/apps/{appsId}/firewall/ingressRules", + "path": "v1beta/apps/{appsId}/firewall/ingressRules", "id": "appengine.apps.firewall.ingressRules.create", - "path": "v1beta/apps/{appsId}/firewall/ingressRules" + "description": "Creates a firewall rule for the application.", + "request": { + "$ref": "FirewallRule" + } } } } @@ -1378,19 +1375,15 @@ "locations": { "methods": { "get": { - "response": { - "$ref": "Location" - }, + "description": "Get information about a location.", + "httpMethod": "GET", "parameterOrder": [ "appsId", "locationsId" ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], + "response": { + "$ref": "Location" + }, "parameters": { "locationsId": { "location": "path", @@ -1405,52 +1398,56 @@ "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "flatPath": "v1beta/apps/{appsId}/locations/{locationsId}", - "id": "appengine.apps.locations.get", "path": "v1beta/apps/{appsId}/locations/{locationsId}", - "description": "Get information about a location." + "id": "appengine.apps.locations.get" }, "list": { - "flatPath": "v1beta/apps/{appsId}/locations", - "path": "v1beta/apps/{appsId}/locations", - "id": "appengine.apps.locations.list", "description": "Lists information about the supported locations for this service.", "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], "response": { "$ref": "ListLocationsResponse" }, + "parameterOrder": [ + "appsId" + ], "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, "pageToken": { "description": "The standard list page token.", "type": "string", "location": "query" }, "appsId": { - "location": "path", "description": "Part of `name`. The resource that owns the locations collection, if applicable.", "type": "string", - "required": true + "required": true, + "location": "path" }, "pageSize": { "format": "int32", "description": "The standard list page size.", "type": "integer", "location": "query" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" } - } + }, + "flatPath": "v1beta/apps/{appsId}/locations", + "path": "v1beta/apps/{appsId}/locations", + "id": "appengine.apps.locations.list" } } } @@ -1464,9 +1461,14 @@ "type": "string" }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", + "type": "boolean" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", "location": "query" }, "fields": { @@ -1474,12 +1476,13 @@ "type": "string", "location": "query" }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" }, "$.xgafv": { + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -1489,15 +1492,14 @@ "1", "2" ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + "description": "V1 error format." }, "alt": { + "enum": [ + "json", + "media", + "proto" + ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -1506,12 +1508,7 @@ ], "location": "query", "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] + "default": "json" }, "access_token": { "location": "query", @@ -1519,14 +1516,14 @@ "type": "string" }, "key": { + "location": "query", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "type": "string" }, "quotaUser": { + "location": "query", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" + "type": "string" }, "pp": { "description": "Pretty-print response.", @@ -1534,1185 +1531,18 @@ "type": "boolean", "location": "query" }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, "oauth_token": { "location": "query", "description": "OAuth 2.0 token for the current user.", "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" } }, "schemas": { - "LocationMetadata": { - "description": "Metadata for the given google.cloud.location.Location.", - "type": "object", - "properties": { - "flexibleEnvironmentAvailable": { - "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", - "type": "boolean" - }, - "standardEnvironmentAvailable": { - "description": "App Engine Standard Environment is available in the given location.@OutputOnly", - "type": "boolean" - } - }, - "id": "LocationMetadata" - }, - "Service": { - "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.", - "type": "object", - "properties": { - "split": { - "$ref": "TrafficSplit", - "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service." - }, - "id": { - "description": "Relative name of the service within the application. Example: default.@OutputOnly", - "type": "string" - }, - "name": { - "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - } - }, - "id": "Service" - }, - "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - } - }, - "id": "ListOperationsResponse" - }, - "FirewallRule": { - "description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.", - "type": "object", - "properties": { - "sourceRange": { - "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334.\u003cp\u003eTruncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32.", - "type": "string" - }, - "priority": { - "format": "int32", - "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.", - "type": "integer" - }, - "action": { - "enumDescriptions": [ - "", - "Matching requests are allowed.", - "Matching requests are denied." - ], - "enum": [ - "UNSPECIFIED_ACTION", - "ALLOW", - "DENY" - ], - "description": "The action to take on matched requests.", - "type": "string" - }, - "description": { - "description": "An optional string description of this rule. This field has a maximum length of 100 characters.", - "type": "string" - } - }, - "id": "FirewallRule" - }, - "OperationMetadata": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, - "operationType": { - "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadata" - }, - "ListAuthorizedCertificatesResponse": { - "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "certificates": { - "description": "The SSL certificates the user is authorized to administer.", - "items": { - "$ref": "AuthorizedCertificate" - }, - "type": "array" - } - }, - "id": "ListAuthorizedCertificatesResponse" - }, - "FeatureSettings": { - "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.", - "type": "object", - "properties": { - "splitHealthChecks": { - "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.", - "type": "boolean" - } - }, - "id": "FeatureSettings" - }, - "ErrorHandler": { - "description": "Custom static error page to be served when an error occurs.", - "type": "object", - "properties": { - "mimeType": { - "description": "MIME type of file. Defaults to text/html.", - "type": "string" - }, - "errorCode": { - "description": "Error condition this handler applies to.", - "type": "string", - "enumDescriptions": [ - "Not specified. ERROR_CODE_DEFAULT is assumed.", - "All other error types.", - "Application has exceeded a resource quota.", - "Client blocked by the application's Denial of Service protection configuration.", - "Deadline reached before the application responds." - ], - "enum": [ - "ERROR_CODE_UNSPECIFIED", - "ERROR_CODE_DEFAULT", - "ERROR_CODE_OVER_QUOTA", - "ERROR_CODE_DOS_API_DENIAL", - "ERROR_CODE_TIMEOUT" - ] - }, - "staticFile": { - "description": "Static file content to be served for this error.", - "type": "string" - } - }, - "id": "ErrorHandler" - }, - "SslSettings": { - "description": "SSL configuration for a DomainMapping resource.", - "type": "object", - "properties": { - "certificateId": { - "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support. Example: 12345.", - "type": "string" - } - }, - "id": "SslSettings" - }, - "OperationMetadataV1": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "ephemeralMessage": { - "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", - "type": "string" - }, - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1" - }, - "Application": { - "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20", - "type": "object", - "properties": { - "gcrDomain": { - "description": "The Google Container Registry domain used for storing managed build docker images for this application.", - "type": "string" - }, - "name": { - "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly", - "type": "string" - }, - "defaultCookieExpiration": { - "format": "google-duration", - "description": "Cookie expiration policy for this application.", - "type": "string" - }, - "id": { - "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", - "type": "string" - }, - "locationId": { - "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", - "type": "string" - }, - "servingStatus": { - "enumDescriptions": [ - "Serving status is unspecified.", - "Application is serving.", - "Application has been disabled by the user.", - "Application has been disabled by the system." - ], - "enum": [ - "UNSPECIFIED", - "SERVING", - "USER_DISABLED", - "SYSTEM_DISABLED" - ], - "description": "Serving status of this application.", - "type": "string" - }, - "defaultHostname": { - "description": "Hostname used to reach this application, as resolved by App Engine.@OutputOnly", - "type": "string" - }, - "featureSettings": { - "$ref": "FeatureSettings", - "description": "The feature specific settings to be used in the application." - }, - "iap": { - "$ref": "IdentityAwareProxy" - }, - "authDomain": { - "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.", - "type": "string" - }, - "codeBucket": { - "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly", - "type": "string" - }, - "defaultBucket": { - "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", - "type": "string" - }, - "dispatchRules": { - "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly", - "items": { - "$ref": "UrlDispatchRule" - }, - "type": "array" - } - }, - "id": "Application" - }, - "Network": { - "description": "Extra network settings. Only applicable for App Engine flexible environment versions", - "type": "object", - "properties": { - "subnetworkName": { - "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.", - "type": "string" - }, - "instanceTag": { - "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.", - "type": "string" - }, - "forwardedPorts": { - "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable for App Engine flexible environment versions.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.", - "type": "string" - } - }, - "id": "Network" - }, - "Instance": { - "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", - "type": "object", - "properties": { - "vmDebugEnabled": { - "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "boolean" - }, - "requests": { - "format": "int32", - "description": "Number of requests since this instance was started.@OutputOnly", - "type": "integer" - }, - "appEngineRelease": { - "description": "App Engine release this instance is running on.@OutputOnly", - "type": "string" - }, - "vmName": { - "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "qps": { - "format": "float", - "description": "Average queries per second (QPS) over the last minute.@OutputOnly", - "type": "number" - }, - "vmId": { - "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "name": { - "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", - "type": "string" - }, - "vmZoneName": { - "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "averageLatency": { - "format": "int32", - "description": "Average latency (ms) over the last minute.@OutputOnly", - "type": "integer" - }, - "id": { - "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly", - "type": "string" - }, - "memoryUsage": { - "format": "int64", - "description": "Total memory in use (bytes).@OutputOnly", - "type": "string" - }, - "vmIp": { - "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "errors": { - "format": "int32", - "description": "Number of errors since this instance was started.@OutputOnly", - "type": "integer" - }, - "availability": { - "enumDescriptions": [ - "", - "", - "" - ], - "enum": [ - "UNSPECIFIED", - "RESIDENT", - "DYNAMIC" - ], - "description": "Availability of the instance.@OutputOnly", - "type": "string" - }, - "vmStatus": { - "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Time that this instance was started.@OutputOnly", - "type": "string" - } - }, - "id": "Instance" - }, - "LivenessCheck": { - "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.", - "type": "object", - "properties": { - "timeout": { - "format": "google-duration", - "description": "Time before the check is considered failed.", - "type": "string" - }, - "failureThreshold": { - "format": "uint32", - "description": "Number of consecutive failed checks required before considering the VM unhealthy.", - "type": "integer" - }, - "initialDelay": { - "format": "google-duration", - "description": "The initial delay before starting to execute the checks.", - "type": "string" - }, - "path": { - "description": "The request path.", - "type": "string" - }, - "successThreshold": { - "format": "uint32", - "description": "Number of consecutive successful checks required before considering the VM healthy.", - "type": "integer" - }, - "host": { - "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"", - "type": "string" - }, - "checkInterval": { - "format": "google-duration", - "description": "Interval between health checks.", - "type": "string" - } - }, - "id": "LivenessCheck" - }, - "BatchUpdateIngressRulesRequest": { - "description": "Request message for Firewall.BatchUpdateIngressRules.", - "type": "object", - "properties": { - "ingressRules": { - "description": "A list of FirewallRules to replace the existing set.", - "items": { - "$ref": "FirewallRule" - }, - "type": "array" - } - }, - "id": "BatchUpdateIngressRulesRequest" - }, - "NetworkUtilization": { - "description": "Target scaling by network usage. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "targetReceivedPacketsPerSecond": { - "format": "int32", - "description": "Target packets received per second.", - "type": "integer" - }, - "targetSentBytesPerSecond": { - "format": "int32", - "description": "Target bytes sent per second.", - "type": "integer" - }, - "targetReceivedBytesPerSecond": { - "format": "int32", - "description": "Target bytes received per second.", - "type": "integer" - }, - "targetSentPacketsPerSecond": { - "format": "int32", - "description": "Target packets sent per second.", - "type": "integer" - } - }, - "id": "NetworkUtilization" - }, - "Location": { - "description": "A resource that represents Google Cloud Platform location.", - "type": "object", - "properties": { - "labels": { - "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", - "type": "string" - }, - "locationId": { - "description": "The canonical id for this location. For example: \"us-east1\".", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata. For example the available capacity at the given location.", - "type": "object" - } - }, - "id": "Location" - }, - "HealthCheck": { - "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", - "type": "object", - "properties": { - "host": { - "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", - "type": "string" - }, - "restartThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before an instance is restarted.", - "type": "integer" - }, - "healthyThreshold": { - "format": "uint32", - "description": "Number of consecutive successful health checks required before receiving traffic.", - "type": "integer" - }, - "checkInterval": { - "format": "google-duration", - "description": "Interval between health checks.", - "type": "string" - }, - "timeout": { - "format": "google-duration", - "description": "Time before the health check is considered failed.", - "type": "string" - }, - "unhealthyThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before removing traffic.", - "type": "integer" - }, - "disableHealthCheck": { - "description": "Whether to explicitly disable health checks for this instance.", - "type": "boolean" - } - }, - "id": "HealthCheck" - }, - "ReadinessCheck": { - "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.", - "type": "object", - "properties": { - "checkInterval": { - "format": "google-duration", - "description": "Interval between health checks.", - "type": "string" - }, - "failureThreshold": { - "format": "uint32", - "description": "Number of consecutive failed checks required before removing traffic.", - "type": "integer" - }, - "timeout": { - "format": "google-duration", - "description": "Time before the check is considered failed.", - "type": "string" - }, - "appStartTimeout": { - "format": "google-duration", - "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.", - "type": "string" - }, - "path": { - "description": "The request path.", - "type": "string" - }, - "host": { - "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"", - "type": "string" - }, - "successThreshold": { - "format": "uint32", - "description": "Number of consecutive successful checks required before receiving traffic.", - "type": "integer" - } - }, - "id": "ReadinessCheck" - }, - "DebugInstanceRequest": { - "description": "Request message for Instances.DebugInstance.", - "type": "object", - "properties": { - "sshKey": { - "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", - "type": "string" - } - }, - "id": "DebugInstanceRequest" - }, - "StandardSchedulerSettings": { - "description": "Scheduler settings for standard environment.", - "type": "object", - "properties": { - "targetCpuUtilization": { - "format": "double", - "description": "Target CPU utilization ratio to maintain when scaling.", - "type": "number" - }, - "targetThroughputUtilization": { - "format": "double", - "description": "Target throughput utilization ratio to maintain when scaling", - "type": "number" - }, - "maxInstances": { - "format": "int32", - "description": "Maximum number of instances for an app version. Set to a non-positive value (0 by convention) to disable max_instances configuration.", - "type": "integer" - }, - "minInstances": { - "format": "int32", - "description": "Minimum number of instances for an app version. Set to a non-positive value (0 by convention) to disable min_instances configuration.", - "type": "integer" - } - }, - "id": "StandardSchedulerSettings" - }, - "OperationMetadataV1Beta5": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta5" - }, - "Version": { - "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.", - "type": "object", - "properties": { - "instanceClass": { - "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.", - "type": "string" - }, - "servingStatus": { - "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", - "type": "string", - "enumDescriptions": [ - "Not specified.", - "Currently serving. Instances are created according to the scaling settings of the version.", - "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING." - ], - "enum": [ - "SERVING_STATUS_UNSPECIFIED", - "SERVING", - "STOPPED" - ] - }, - "runtimeApiVersion": { - "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", - "type": "string" - }, - "deployment": { - "$ref": "Deployment", - "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set." - }, - "createTime": { - "format": "google-datetime", - "description": "Time that this version was created.@OutputOnly", - "type": "string" - }, - "inboundServices": { - "enumDescriptions": [ - "Not specified.", - "Allows an application to receive mail.", - "Allows an application to receive email-bound notifications.", - "Allows an application to receive error stanzas.", - "Allows an application to receive instant messages.", - "Allows an application to receive user subscription POSTs.", - "Allows an application to receive a user's chat presence.", - "Registers an application for notifications when a client connects or disconnects from a channel.", - "Enables warmup requests." - ], - "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", - "items": { - "type": "string", - "enum": [ - "INBOUND_SERVICE_UNSPECIFIED", - "INBOUND_SERVICE_MAIL", - "INBOUND_SERVICE_MAIL_BOUNCE", - "INBOUND_SERVICE_XMPP_ERROR", - "INBOUND_SERVICE_XMPP_MESSAGE", - "INBOUND_SERVICE_XMPP_SUBSCRIBE", - "INBOUND_SERVICE_XMPP_PRESENCE", - "INBOUND_SERVICE_CHANNEL_PRESENCE", - "INBOUND_SERVICE_WARMUP" - ] - }, - "type": "array" - }, - "resources": { - "description": "Machine resources for this version. Only applicable for VM runtimes.", - "$ref": "Resources" - }, - "errorHandlers": { - "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "ErrorHandler" - }, - "type": "array" - }, - "defaultExpiration": { - "format": "google-duration", - "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.", - "type": "string" - }, - "libraries": { - "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "Library" - }, - "type": "array" - }, - "nobuildFilesRegex": { - "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", - "type": "string" - }, - "basicScaling": { - "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", - "$ref": "BasicScaling" - }, - "runtime": { - "description": "Desired runtime. Example: python27.", - "type": "string" - }, - "id": { - "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", - "type": "string" - }, - "createdBy": { - "description": "Email address of the user who created this version.@OutputOnly", - "type": "string" - }, - "envVariables": { - "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "livenessCheck": { - "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set.", - "$ref": "LivenessCheck" - }, - "network": { - "description": "Extra network settings. Only applicable for App Engine flexible environment versions.", - "$ref": "Network" - }, - "betaSettings": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata settings that are supplied to this version to enable beta runtime features.", - "type": "object" - }, - "env": { - "description": "App Engine execution environment for this version.Defaults to standard.", - "type": "string" - }, - "handlers": { - "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "UrlMap" - }, - "type": "array" - }, - "automaticScaling": { - "$ref": "AutomaticScaling", - "description": "Automatic scaling is based on request rate, response latencies, and other application metrics." - }, - "diskUsageBytes": { - "format": "int64", - "description": "Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly", - "type": "string" - }, - "healthCheck": { - "description": "Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.", - "$ref": "HealthCheck" - }, - "threadsafe": { - "description": "Whether multiple requests can be dispatched to this version at once.", - "type": "boolean" - }, - "readinessCheck": { - "$ref": "ReadinessCheck", - "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set." - }, - "manualScaling": { - "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", - "$ref": "ManualScaling" - }, - "name": { - "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly", - "type": "string" - }, - "apiConfig": { - "$ref": "ApiConfigHandler", - "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set." - }, - "endpointsApiService": { - "$ref": "EndpointsApiService", - "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app." - }, - "vm": { - "description": "Whether to deploy this version in a container on a virtual machine.", - "type": "boolean" - }, - "versionUrl": { - "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly", - "type": "string" - } - }, - "id": "Version" - }, - "RepairApplicationRequest": { - "description": "Request message for 'Applications.RepairApplication'.", - "type": "object", - "properties": {}, - "id": "RepairApplicationRequest" - }, - "BuildInfo": { - "description": "Google Cloud Container Builder build information.", - "type": "object", - "properties": { - "cloudBuildId": { - "description": "The Google Cloud Container Builder build id. Example: \"f966068f-08b2-42c8-bdfe-74137dff2bf9\"", - "type": "string" - } - }, - "id": "BuildInfo" - }, - "CertificateRawData": { - "description": "An SSL certificate obtained from a certificate authority.", - "type": "object", - "properties": { - "privateKey": { - "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN RSA PRIVATE KEY----- \u003cunencrypted_key_value\u003e -----END RSA PRIVATE KEY----- \u003c/pre\u003e @InputOnly", - "type": "string" - }, - "publicCertificate": { - "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN CERTIFICATE----- \u003ccertificate_value\u003e -----END CERTIFICATE----- \u003c/pre\u003e", - "type": "string" - } - }, - "id": "CertificateRawData" - }, - "FileInfo": { - "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", - "type": "object", - "properties": { - "sha1Sum": { - "description": "The SHA1 hash of the file, in hex.", - "type": "string" - }, - "mimeType": { - "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", - "type": "string" - }, - "sourceUrl": { - "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", - "type": "string" - } - }, - "id": "FileInfo" - }, - "ScriptHandler": { - "description": "Executes a script to handle the request that matches the URL pattern.", - "type": "object", - "properties": { - "scriptPath": { - "description": "Path to the script from the application root directory.", - "type": "string" - } - }, - "id": "ScriptHandler" - }, - "OperationMetadataExperimental": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataExperimental" - }, - "AuthorizedDomain": { - "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).", - "type": "object", - "properties": { - "name": { - "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly", - "type": "string" - }, - "id": { - "description": "Fully qualified domain name of the domain authorized for use. Example: example.com.", - "type": "string" - } - }, - "id": "AuthorizedDomain" - }, - "TrafficSplit": { - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.", - "type": "object", - "properties": { - "allocations": { - "additionalProperties": { - "format": "double", - "type": "number" - }, - "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", - "type": "object" - }, - "shardBy": { - "enumDescriptions": [ - "Diversion method unspecified.", - "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.", - "Diversion based on applying the modulus operation to a fingerprint of the IP address.", - "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share." - ], - "enum": [ - "UNSPECIFIED", - "COOKIE", - "IP", - "RANDOM" - ], - "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.", - "type": "string" - } - }, - "id": "TrafficSplit" - }, - "OperationMetadataV1Beta": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "ephemeralMessage": { - "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", - "type": "string" - }, - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta" - }, - "ListServicesResponse": { - "description": "Response message for Services.ListServices.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "services": { - "description": "The services belonging to the requested application.", - "items": { - "$ref": "Service" - }, - "type": "array" - } - }, - "id": "ListServicesResponse" - }, - "ListIngressRulesResponse": { - "description": "Response message for Firewall.ListIngressRules.", - "type": "object", - "properties": { - "ingressRules": { - "description": "The ingress FirewallRules for this application.", - "items": { - "$ref": "FirewallRule" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" - } - }, - "id": "ListIngressRulesResponse" - }, - "Resources": { - "description": "Machine resources for a version.", - "type": "object", - "properties": { - "memoryGb": { - "format": "double", - "description": "Memory (GB) needed.", - "type": "number" - }, - "cpu": { - "format": "double", - "description": "Number of CPU cores needed.", - "type": "number" - }, - "volumes": { - "description": "User specified volumes.", - "items": { - "$ref": "Volume" - }, - "type": "array" - }, - "diskGb": { - "format": "double", - "description": "Disk size (GB) needed.", - "type": "number" - } - }, - "id": "Resources" - }, - "Deployment": { - "description": "Code and application artifacts used to deploy a version to App Engine.", - "type": "object", - "properties": { - "zip": { - "description": "The zip file for this deployment, if this is a zip deployment.", - "$ref": "ZipInfo" - }, - "container": { - "$ref": "ContainerInfo", - "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment." - }, - "build": { - "$ref": "BuildInfo", - "description": "Google Cloud Container Builder build information." - }, - "files": { - "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.", - "type": "object", - "additionalProperties": { - "$ref": "FileInfo" - } - } - }, - "id": "Deployment" - }, - "Volume": { - "description": "Volumes mounted within the app container. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "volumeType": { - "description": "Underlying volume type, e.g. 'tmpfs'.", - "type": "string" - }, - "sizeGb": { - "format": "double", - "description": "Volume size in gigabytes.", - "type": "number" - }, - "name": { - "description": "Unique name for the volume.", - "type": "string" - } - }, - "id": "Volume" - }, - "BatchUpdateIngressRulesResponse": { - "description": "Response message for Firewall.UpdateAllIngressRules.", - "type": "object", - "properties": { - "ingressRules": { - "description": "The full list of ingress FirewallRules for this application.", - "items": { - "$ref": "FirewallRule" - }, - "type": "array" - } - }, - "id": "BatchUpdateIngressRulesResponse" - }, "ListInstancesResponse": { "description": "Response message for Instances.ListInstances.", "type": "object", @@ -2732,6 +1562,7 @@ "id": "ListInstancesResponse" }, "ListDomainMappingsResponse": { + "id": "ListDomainMappingsResponse", "description": "Response message for DomainMappings.ListDomainMappings.", "type": "object", "properties": { @@ -2740,19 +1571,26 @@ "type": "string" }, "domainMappings": { - "description": "The domain mappings for the application.", "items": { "$ref": "DomainMapping" }, - "type": "array" + "type": "array", + "description": "The domain mappings for the application." } - }, - "id": "ListDomainMappingsResponse" + } }, "OperationMetadataV1Alpha": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, "ephemeralMessage": { "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" @@ -2774,39 +1612,31 @@ "type": "array" }, "insertTime": { + "type": "string", "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" + "description": "Time that this operation was created.@OutputOnly" } }, "id": "OperationMetadataV1Alpha" }, "UrlDispatchRule": { - "description": "Rules to match an HTTP request and dispatch that request to a service.", - "type": "object", "properties": { - "path": { - "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.", - "type": "string" - }, "service": { - "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default.", - "type": "string" + "type": "string", + "description": "Resource ID of a service in this application that should serve the matched request. The service must already exist. Example: default." }, "domain": { "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".", "type": "string" + }, + "path": { + "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.The sum of the lengths of the domain and path may not exceed 100 characters.", + "type": "string" } }, - "id": "UrlDispatchRule" + "id": "UrlDispatchRule", + "description": "Rules to match an HTTP request and dispatch that request to a service.", + "type": "object" }, "ListVersionsResponse": { "description": "Response message for Versions.ListVersions.", @@ -2835,15 +1665,47 @@ "type": "string" }, "domains": { - "description": "The authorized domains belonging to the user.", "items": { "$ref": "AuthorizedDomain" }, - "type": "array" + "type": "array", + "description": "The authorized domains belonging to the user." } }, "id": "ListAuthorizedDomainsResponse" }, + "DomainMapping": { + "description": "A domain serving an App Engine application.", + "type": "object", + "properties": { + "sslSettings": { + "$ref": "SslSettings", + "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL." + }, + "name": { + "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.@OutputOnly", + "type": "string" + }, + "resourceRecords": { + "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.@OutputOnly", + "items": { + "$ref": "ResourceRecord" + }, + "type": "array" + }, + "id": { + "description": "Relative name of the domain serving the application. Example: example.com.", + "type": "string" + } + }, + "id": "DomainMapping" + }, + "Empty": { + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object" + }, "ApiEndpointHandler": { "description": "Uses Google Cloud Endpoints to handle requests.", "type": "object", @@ -2855,61 +1717,28 @@ }, "id": "ApiEndpointHandler" }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "DomainMapping": { - "description": "A domain serving an App Engine application.", - "type": "object", - "properties": { - "resourceRecords": { - "description": "The resource records required to configure this domain mapping. These records must be added to the domain's DNS configuration in order to serve the application via this domain mapping.@OutputOnly", - "items": { - "$ref": "ResourceRecord" - }, - "type": "array" - }, - "id": { - "description": "Relative name of the domain serving the application. Example: example.com.", - "type": "string" - }, - "sslSettings": { - "$ref": "SslSettings", - "description": "SSL configuration for this domain. If unconfigured, this domain will not serve with SSL." - }, - "name": { - "description": "Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.@OutputOnly", - "type": "string" - } - }, - "id": "DomainMapping" - }, - "ZipInfo": { - "description": "The zip file information for a zip deployment.", - "type": "object", - "properties": { - "filesCount": { - "format": "int32", - "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.", - "type": "integer" - }, - "sourceUrl": { - "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", - "type": "string" - } - }, - "id": "ZipInfo" - }, "AutomaticScaling": { "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", "type": "object", "properties": { + "minIdleInstances": { + "type": "integer", + "format": "int32", + "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service." + }, + "maxTotalInstances": { + "format": "int32", + "description": "Maximum number of instances that should be started to handle requests.", + "type": "integer" + }, + "minTotalInstances": { + "format": "int32", + "description": "Minimum number of instances that should be maintained for this version.", + "type": "integer" + }, "networkUtilization": { - "description": "Target scaling by network usage.", - "$ref": "NetworkUtilization" + "$ref": "NetworkUtilization", + "description": "Target scaling by network usage." }, "maxConcurrentRequests": { "format": "int32", @@ -2931,8 +1760,8 @@ "$ref": "CpuUtilization" }, "diskUtilization": { - "description": "Target scaling by disk usage.", - "$ref": "DiskUtilization" + "$ref": "DiskUtilization", + "description": "Target scaling by disk usage." }, "minPendingLatency": { "format": "google-duration", @@ -2949,27 +1778,28 @@ "type": "integer" }, "requestUtilization": { - "description": "Target scaling by request utilization.", - "$ref": "RequestUtilization" - }, - "minIdleInstances": { - "format": "int32", - "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.", - "type": "integer" - }, - "maxTotalInstances": { - "format": "int32", - "description": "Maximum number of instances that should be started to handle requests.", - "type": "integer" - }, - "minTotalInstances": { - "format": "int32", - "description": "Minimum number of instances that should be maintained for this version.", - "type": "integer" + "$ref": "RequestUtilization", + "description": "Target scaling by request utilization." } }, "id": "AutomaticScaling" }, + "ZipInfo": { + "id": "ZipInfo", + "description": "The zip file information for a zip deployment.", + "type": "object", + "properties": { + "sourceUrl": { + "description": "URL of the zip file to deploy from. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", + "type": "string" + }, + "filesCount": { + "format": "int32", + "description": "An estimate of the number of files in a zip for a zip deployment. If set, must be greater than or equal to the actual number of files. Used for optimizing performance; if not provided, deployment may be slow.", + "type": "integer" + } + } + }, "AuthorizedCertificate": { "description": "An SSL certificate that a user has been authorized to administer. A user is authorized to administer any certificate that applies to one of their authorized domains.", "type": "object", @@ -2987,8 +1817,8 @@ "type": "array" }, "id": { - "description": "Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly", - "type": "string" + "type": "string", + "description": "Relative name of the certificate. This is a unique value autogenerated on AuthorizedCertificate resource creation. Example: 12345.@OutputOnly" }, "displayName": { "description": "The user-specified display name of the certificate. This is not guaranteed to be unique. Example: My Certificate.", @@ -3006,9 +1836,9 @@ "type": "array" }, "expireTime": { + "type": "string", "format": "google-datetime", - "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly", - "type": "string" + "description": "The time when this certificate expires. To update the renewal time on this certificate, upload an SSL certificate with a different expiration time using AuthorizedCertificates.UpdateAuthorizedCertificate.@OutputOnly" }, "name": { "description": "Full path to the AuthorizedCertificate resource in the API. Example: apps/myapp/authorizedCertificates/12345.@OutputOnly", @@ -3018,12 +1848,15 @@ "id": "AuthorizedCertificate" }, "ResourceRecord": { + "id": "ResourceRecord", "description": "A DNS resource record.", "type": "object", "properties": { + "name": { + "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.", + "type": "string" + }, "type": { - "description": "Resource record type. Example: AAAA.", - "type": "string", "enumDescriptions": [ "An A resource record. Data is an IPv4 address.", "An AAAA resource record. Data is an IPv6 address.", @@ -3033,18 +1866,15 @@ "A", "AAAA", "CNAME" - ] + ], + "description": "Resource record type. Example: AAAA.", + "type": "string" }, "rrdata": { - "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1).", - "type": "string" - }, - "name": { - "description": "Relative name of the object affected by this record. Only applicable for CNAME records. Example: 'www'.", - "type": "string" + "type": "string", + "description": "Data for this record. Values vary by record type, as defined in RFC 1035 (section 5) and RFC 1034 (section 3.6.1)." } - }, - "id": "ResourceRecord" + } }, "Library": { "description": "Third-party Python runtime library that is required by the application.", @@ -3080,7 +1910,6 @@ "id": "ListLocationsResponse" }, "ContainerInfo": { - "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.", "type": "object", "properties": { "image": { @@ -3088,32 +1917,33 @@ "type": "string" } }, - "id": "ContainerInfo" + "id": "ContainerInfo", + "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment." }, "RequestUtilization": { - "description": "Target scaling by request utilization. Only applicable for VM runtimes.", - "type": "object", "properties": { - "targetConcurrentRequests": { - "format": "int32", - "description": "Target number of concurrent requests.", - "type": "integer" - }, "targetRequestCountPerSecond": { "format": "int32", "description": "Target requests per second.", "type": "integer" + }, + "targetConcurrentRequests": { + "format": "int32", + "description": "Target number of concurrent requests.", + "type": "integer" } }, - "id": "RequestUtilization" + "id": "RequestUtilization", + "description": "Target scaling by request utilization. Only applicable for VM runtimes.", + "type": "object" }, "EndpointsApiService": { "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).", "type": "object", "properties": { "configId": { - "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"", - "type": "string" + "type": "string", + "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"" }, "name": { "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"", @@ -3127,8 +1957,6 @@ "type": "object", "properties": { "securityLevel": { - "description": "Security (HTTPS) enforcement for this URL.", - "type": "string", "enumDescriptions": [ "Not specified.", "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", @@ -3142,21 +1970,23 @@ "SECURE_NEVER", "SECURE_OPTIONAL", "SECURE_ALWAYS" - ] + ], + "description": "Security (HTTPS) enforcement for this URL.", + "type": "string" }, "authFailAction": { - "enumDescriptions": [ - "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", - "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", - "Rejects request with a 401 HTTP status code and an error message." - ], "enum": [ "AUTH_FAIL_ACTION_UNSPECIFIED", "AUTH_FAIL_ACTION_REDIRECT", "AUTH_FAIL_ACTION_UNAUTHORIZED" ], "description": "Action to take when users access resources that require authentication. Defaults to redirect.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", + "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", + "Rejects request with a 401 HTTP status code and an error message." + ] }, "script": { "$ref": "ScriptHandler", @@ -3167,6 +1997,8 @@ "type": "string" }, "login": { + "description": "Level of login required to access this resource.", + "type": "string", "enumDescriptions": [ "Not specified. LOGIN_OPTIONAL is assumed.", "Does not require that the user is signed in.", @@ -3178,9 +2010,7 @@ "LOGIN_OPTIONAL", "LOGIN_ADMIN", "LOGIN_REQUIRED" - ], - "description": "Level of login required to access this resource.", - "type": "string" + ] }, "apiEndpoint": { "description": "Uses API Endpoints to handle requests.", @@ -3215,22 +2045,6 @@ "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", "type": "object", "properties": { - "login": { - "description": "Level of login required to access this resource. Defaults to optional.", - "type": "string", - "enumDescriptions": [ - "Not specified. LOGIN_OPTIONAL is assumed.", - "Does not require that the user is signed in.", - "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.", - "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken." - ], - "enum": [ - "LOGIN_UNSPECIFIED", - "LOGIN_OPTIONAL", - "LOGIN_ADMIN", - "LOGIN_REQUIRED" - ] - }, "url": { "description": "URL to serve the endpoint at.", "type": "string" @@ -3254,30 +2068,60 @@ ] }, "authFailAction": { - "enumDescriptions": [ - "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", - "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", - "Rejects request with a 401 HTTP status code and an error message." - ], "enum": [ "AUTH_FAIL_ACTION_UNSPECIFIED", "AUTH_FAIL_ACTION_REDIRECT", "AUTH_FAIL_ACTION_UNAUTHORIZED" ], "description": "Action to take when users access resources that require authentication. Defaults to redirect.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", + "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", + "Rejects request with a 401 HTTP status code and an error message." + ] }, "script": { - "description": "Path to the script from the application root directory.", + "type": "string", + "description": "Path to the script from the application root directory." + }, + "login": { + "enumDescriptions": [ + "Not specified. LOGIN_OPTIONAL is assumed.", + "Does not require that the user is signed in.", + "If the user is not signed in, the auth_fail_action is taken. In addition, if the user is not an administrator for the application, they are given an error message regardless of auth_fail_action. If the user is an administrator, the handler proceeds.", + "If the user has signed in, the handler proceeds normally. Otherwise, the auth_fail_action is taken." + ], + "enum": [ + "LOGIN_UNSPECIFIED", + "LOGIN_OPTIONAL", + "LOGIN_ADMIN", + "LOGIN_REQUIRED" + ], + "description": "Level of login required to access this resource. Defaults to optional.", "type": "string" } }, "id": "ApiConfigHandler" }, "Operation": { - "description": "This resource represents a long-running operation that is the result of a network API call.", - "type": "object", "properties": { + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, + "response": { + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "name": { + "type": "string", + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name." + }, "error": { "$ref": "Status", "description": "The error result of the operation in case of failure or cancellation." @@ -3289,39 +2133,37 @@ }, "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", "type": "object" - }, - "done": { - "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", - "type": "string" } }, - "id": "Operation" + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a network API call.", + "type": "object" }, "StaticFilesHandler": { "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", "type": "object", "properties": { + "uploadPathRegex": { + "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.", + "type": "string" + }, + "path": { + "type": "string", + "description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern." + }, + "mimeType": { + "type": "string", + "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension." + }, + "requireMatchingFile": { + "description": "Whether this handler should match the request if the file referenced by the handler does not exist.", + "type": "boolean" + }, "expiration": { "format": "google-duration", "description": "Time a static file served by this handler should be cached by web proxies and browsers.", "type": "string" }, - "applicationReadable": { - "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", - "type": "boolean" - }, "httpHeaders": { "additionalProperties": { "type": "string" @@ -3329,52 +2171,13 @@ "description": "HTTP headers to use for all responses from these URLs.", "type": "object" }, - "uploadPathRegex": { - "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.", - "type": "string" - }, - "path": { - "description": "Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.", - "type": "string" - }, - "mimeType": { - "description": "MIME type used to serve all files served by this handler.Defaults to file-specific MIME types, which are derived from each file's filename extension.", - "type": "string" - }, - "requireMatchingFile": { - "description": "Whether this handler should match the request if the file referenced by the handler does not exist.", + "applicationReadable": { + "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", "type": "boolean" } }, "id": "StaticFilesHandler" }, - "DiskUtilization": { - "description": "Target scaling by disk usage. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "targetWriteOpsPerSecond": { - "format": "int32", - "description": "Target ops written per second.", - "type": "integer" - }, - "targetWriteBytesPerSecond": { - "format": "int32", - "description": "Target bytes written per second.", - "type": "integer" - }, - "targetReadOpsPerSecond": { - "format": "int32", - "description": "Target ops read per seconds.", - "type": "integer" - }, - "targetReadBytesPerSecond": { - "format": "int32", - "description": "Target bytes read per second.", - "type": "integer" - } - }, - "id": "DiskUtilization" - }, "BasicScaling": { "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", "type": "object", @@ -3392,8 +2195,34 @@ }, "id": "BasicScaling" }, + "DiskUtilization": { + "description": "Target scaling by disk usage. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "targetReadOpsPerSecond": { + "format": "int32", + "description": "Target ops read per seconds.", + "type": "integer" + }, + "targetReadBytesPerSecond": { + "format": "int32", + "description": "Target bytes read per second.", + "type": "integer" + }, + "targetWriteOpsPerSecond": { + "format": "int32", + "description": "Target ops written per second.", + "type": "integer" + }, + "targetWriteBytesPerSecond": { + "format": "int32", + "description": "Target bytes written per second.", + "type": "integer" + } + }, + "id": "DiskUtilization" + }, "CpuUtilization": { - "description": "Target scaling by CPU usage.", "type": "object", "properties": { "aggregationWindowLength": { @@ -3407,7 +2236,31 @@ "type": "number" } }, - "id": "CpuUtilization" + "id": "CpuUtilization", + "description": "Target scaling by CPU usage." + }, + "IdentityAwareProxy": { + "type": "object", + "properties": { + "oauth2ClientSecret": { + "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly", + "type": "string" + }, + "oauth2ClientId": { + "description": "OAuth2 client ID to use for the authentication flow.", + "type": "string" + }, + "oauth2ClientSecretSha256": { + "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly", + "type": "string" + }, + "enabled": { + "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.", + "type": "boolean" + } + }, + "id": "IdentityAwareProxy", + "description": "Identity-Aware Proxy" }, "Status": { "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", @@ -3436,29 +2289,6 @@ }, "id": "Status" }, - "IdentityAwareProxy": { - "description": "Identity-Aware Proxy", - "type": "object", - "properties": { - "oauth2ClientSecret": { - "description": "OAuth2 client secret to use for the authentication flow.For security reasons, this value cannot be retrieved via the API. Instead, the SHA-256 hash of the value is returned in the oauth2_client_secret_sha256 field.@InputOnly", - "type": "string" - }, - "oauth2ClientId": { - "description": "OAuth2 client ID to use for the authentication flow.", - "type": "string" - }, - "oauth2ClientSecretSha256": { - "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly", - "type": "string" - }, - "enabled": { - "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.", - "type": "boolean" - } - }, - "id": "IdentityAwareProxy" - }, "ManualScaling": { "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", "type": "object", @@ -3470,12 +2300,1179 @@ } }, "id": "ManualScaling" + }, + "LocationMetadata": { + "description": "Metadata for the given google.cloud.location.Location.", + "type": "object", + "properties": { + "flexibleEnvironmentAvailable": { + "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", + "type": "boolean" + }, + "standardEnvironmentAvailable": { + "description": "App Engine Standard Environment is available in the given location.@OutputOnly", + "type": "boolean" + } + }, + "id": "LocationMetadata" + }, + "Service": { + "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle tasks such as backend data analysis or API requests from mobile devices. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.", + "type": "object", + "properties": { + "id": { + "description": "Relative name of the service within the application. Example: default.@OutputOnly", + "type": "string" + }, + "name": { + "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "split": { + "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service.", + "$ref": "TrafficSplit" + } + }, + "id": "Service" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "operations": { + "items": { + "$ref": "Operation" + }, + "type": "array", + "description": "A list of operations that matches the specified filter in the request." + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "ListOperationsResponse" + }, + "OperationMetadata": { + "id": "OperationMetadata", + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" + }, + "operationType": { + "type": "string", + "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly" + }, + "insertTime": { + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly", + "type": "string" + }, + "user": { + "type": "string", + "description": "User who requested this operation.@OutputOnly" + }, + "target": { + "type": "string", + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly" + } + } + }, + "FirewallRule": { + "description": "A single firewall rule that is evaluated against incoming traffic and provides an action to take on matched requests.", + "type": "object", + "properties": { + "sourceRange": { + "type": "string", + "description": "IP address or range, defined using CIDR notation, of requests that this rule applies to. You can use the wildcard character \"*\" to match all IPs equivalent to \"0/0\" and \"::/0\" together. Examples: 192.168.1.1 or 192.168.0.0/16 or 2001:db8::/32 or 2001:0db8:0000:0042:0000:8a2e:0370:7334.\u003cp\u003eTruncation will be silently performed on addresses which are not properly truncated. For example, 1.2.3.4/24 is accepted as the same address as 1.2.3.0/24. Similarly, for IPv6, 2001:db8::1/32 is accepted as the same address as 2001:db8::/32." + }, + "priority": { + "format": "int32", + "description": "A positive integer between 1, Int32.MaxValue-1 that defines the order of rule evaluation. Rules with the lowest priority are evaluated first.A default rule at priority Int32.MaxValue matches all IPv4 and IPv6 traffic when no previous rule matches. Only the action of this rule can be modified by the user.", + "type": "integer" + }, + "action": { + "enum": [ + "UNSPECIFIED_ACTION", + "ALLOW", + "DENY" + ], + "description": "The action to take on matched requests.", + "type": "string", + "enumDescriptions": [ + "", + "Matching requests are allowed.", + "Matching requests are denied." + ] + }, + "description": { + "description": "An optional string description of this rule. This field has a maximum length of 100 characters.", + "type": "string" + } + }, + "id": "FirewallRule" + }, + "ListAuthorizedCertificatesResponse": { + "id": "ListAuthorizedCertificatesResponse", + "description": "Response message for AuthorizedCertificates.ListAuthorizedCertificates.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "certificates": { + "description": "The SSL certificates the user is authorized to administer.", + "items": { + "$ref": "AuthorizedCertificate" + }, + "type": "array" + } + } + }, + "FeatureSettings": { + "description": "The feature specific settings to be used in the application. These define behaviors that are user configurable.", + "type": "object", + "properties": { + "splitHealthChecks": { + "description": "Boolean value indicating if split health checks should be used instead of the legacy health checks. At an app.yaml level, this means defaulting to 'readiness_check' and 'liveness_check' values instead of 'health_check' ones. Once the legacy 'health_check' behavior is deprecated, and this value is always true, this setting can be removed.", + "type": "boolean" + } + }, + "id": "FeatureSettings" + }, + "ErrorHandler": { + "type": "object", + "properties": { + "staticFile": { + "description": "Static file content to be served for this error.", + "type": "string" + }, + "mimeType": { + "description": "MIME type of file. Defaults to text/html.", + "type": "string" + }, + "errorCode": { + "enumDescriptions": [ + "Not specified. ERROR_CODE_DEFAULT is assumed.", + "All other error types.", + "Application has exceeded a resource quota.", + "Client blocked by the application's Denial of Service protection configuration.", + "Deadline reached before the application responds." + ], + "enum": [ + "ERROR_CODE_UNSPECIFIED", + "ERROR_CODE_DEFAULT", + "ERROR_CODE_OVER_QUOTA", + "ERROR_CODE_DOS_API_DENIAL", + "ERROR_CODE_TIMEOUT" + ], + "description": "Error condition this handler applies to.", + "type": "string" + } + }, + "id": "ErrorHandler", + "description": "Custom static error page to be served when an error occurs." + }, + "SslSettings": { + "description": "SSL configuration for a DomainMapping resource.", + "type": "object", + "properties": { + "certificateId": { + "description": "ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will remove SSL support. Example: 12345.", + "type": "string" + } + }, + "id": "SslSettings" + }, + "OperationMetadataV1": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "ephemeralMessage": { + "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", + "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + }, + "warning": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Durable messages that persist on every operation poll. @OutputOnly" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1" + }, + "Application": { + "id": "Application", + "description": "An Application resource contains the top-level configuration of an App Engine application. Next tag: 20", + "type": "object", + "properties": { + "dispatchRules": { + "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a service or version. Rules are order-dependent. Up to 20 dispatch rules can be supported.@OutputOnly", + "items": { + "$ref": "UrlDispatchRule" + }, + "type": "array" + }, + "gcrDomain": { + "description": "The Google Container Registry domain used for storing managed build docker images for this application.", + "type": "string" + }, + "name": { + "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly", + "type": "string" + }, + "id": { + "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", + "type": "string" + }, + "defaultCookieExpiration": { + "format": "google-duration", + "description": "Cookie expiration policy for this application.", + "type": "string" + }, + "locationId": { + "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", + "type": "string" + }, + "servingStatus": { + "enum": [ + "UNSPECIFIED", + "SERVING", + "USER_DISABLED", + "SYSTEM_DISABLED" + ], + "description": "Serving status of this application.", + "type": "string", + "enumDescriptions": [ + "Serving status is unspecified.", + "Application is serving.", + "Application has been disabled by the user.", + "Application has been disabled by the system." + ] + }, + "defaultHostname": { + "description": "Hostname used to reach this application, as resolved by App Engine.@OutputOnly", + "type": "string" + }, + "featureSettings": { + "$ref": "FeatureSettings", + "description": "The feature specific settings to be used in the application." + }, + "iap": { + "$ref": "IdentityAwareProxy" + }, + "authDomain": { + "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.", + "type": "string" + }, + "codeBucket": { + "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly", + "type": "string" + }, + "defaultBucket": { + "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", + "type": "string" + } + } + }, + "Network": { + "description": "Extra network settings. Only applicable for App Engine flexible environment versions", + "type": "object", + "properties": { + "subnetworkName": { + "description": "Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.If a subnetwork name is specified, a network name will also be required unless it is for the default network.\nIf the network the VM instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network the VM instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetwork_name) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network the VM instance is being created in is a custom Subnet Mode Network, then the subnetwork_name must be specified and the IP address is created from the IPCidrRange of the subnetwork.If specified, the subnetwork must exist in the same region as the App Engine flexible environment application.", + "type": "string" + }, + "instanceTag": { + "description": "Tag to apply to the VM instance during creation. Only applicable for for App Engine flexible environment versions.", + "type": "string" + }, + "forwardedPorts": { + "description": "List of ports, or port pairs, to forward from the virtual machine to the application container. Only applicable for App Engine flexible environment versions.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.Defaults to default.", + "type": "string" + } + }, + "id": "Network" + }, + "Instance": { + "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", + "type": "object", + "properties": { + "requests": { + "type": "integer", + "format": "int32", + "description": "Number of requests since this instance was started.@OutputOnly" + }, + "appEngineRelease": { + "description": "App Engine release this instance is running on.@OutputOnly", + "type": "string" + }, + "vmName": { + "type": "string", + "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly" + }, + "qps": { + "type": "number", + "format": "float", + "description": "Average queries per second (QPS) over the last minute.@OutputOnly" + }, + "vmId": { + "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "vmZoneName": { + "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "name": { + "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", + "type": "string" + }, + "averageLatency": { + "format": "int32", + "description": "Average latency (ms) over the last minute.@OutputOnly", + "type": "integer" + }, + "id": { + "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly", + "type": "string" + }, + "vmIp": { + "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "memoryUsage": { + "format": "int64", + "description": "Total memory in use (bytes).@OutputOnly", + "type": "string" + }, + "errors": { + "format": "int32", + "description": "Number of errors since this instance was started.@OutputOnly", + "type": "integer" + }, + "availability": { + "type": "string", + "enumDescriptions": [ + "", + "", + "" + ], + "enum": [ + "UNSPECIFIED", + "RESIDENT", + "DYNAMIC" + ], + "description": "Availability of the instance.@OutputOnly" + }, + "vmStatus": { + "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Time that this instance was started.@OutputOnly", + "type": "string" + }, + "vmDebugEnabled": { + "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "boolean" + } + }, + "id": "Instance" + }, + "LivenessCheck": { + "properties": { + "checkInterval": { + "type": "string", + "format": "google-duration", + "description": "Interval between health checks." + }, + "timeout": { + "format": "google-duration", + "description": "Time before the check is considered failed.", + "type": "string" + }, + "failureThreshold": { + "type": "integer", + "format": "uint32", + "description": "Number of consecutive failed checks required before considering the VM unhealthy." + }, + "initialDelay": { + "format": "google-duration", + "description": "The initial delay before starting to execute the checks.", + "type": "string" + }, + "path": { + "description": "The request path.", + "type": "string" + }, + "successThreshold": { + "format": "uint32", + "description": "Number of consecutive successful checks required before considering the VM healthy.", + "type": "integer" + }, + "host": { + "description": "Host header to send when performing a HTTP Liveness check. Example: \"myapp.appspot.com\"", + "type": "string" + } + }, + "id": "LivenessCheck", + "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.", + "type": "object" + }, + "BatchUpdateIngressRulesRequest": { + "properties": { + "ingressRules": { + "description": "A list of FirewallRules to replace the existing set.", + "items": { + "$ref": "FirewallRule" + }, + "type": "array" + } + }, + "id": "BatchUpdateIngressRulesRequest", + "description": "Request message for Firewall.BatchUpdateIngressRules.", + "type": "object" + }, + "Location": { + "properties": { + "name": { + "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", + "type": "string" + }, + "locationId": { + "description": "The canonical id for this location. For example: \"us-east1\".", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata. For example the available capacity at the given location.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", + "type": "object" + } + }, + "id": "Location", + "description": "A resource that represents Google Cloud Platform location.", + "type": "object" + }, + "NetworkUtilization": { + "description": "Target scaling by network usage. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "targetSentBytesPerSecond": { + "format": "int32", + "description": "Target bytes sent per second.", + "type": "integer" + }, + "targetReceivedBytesPerSecond": { + "format": "int32", + "description": "Target bytes received per second.", + "type": "integer" + }, + "targetSentPacketsPerSecond": { + "format": "int32", + "description": "Target packets sent per second.", + "type": "integer" + }, + "targetReceivedPacketsPerSecond": { + "format": "int32", + "description": "Target packets received per second.", + "type": "integer" + } + }, + "id": "NetworkUtilization" + }, + "HealthCheck": { + "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", + "type": "object", + "properties": { + "unhealthyThreshold": { + "type": "integer", + "format": "uint32", + "description": "Number of consecutive failed health checks required before removing traffic." + }, + "disableHealthCheck": { + "description": "Whether to explicitly disable health checks for this instance.", + "type": "boolean" + }, + "host": { + "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", + "type": "string" + }, + "restartThreshold": { + "format": "uint32", + "description": "Number of consecutive failed health checks required before an instance is restarted.", + "type": "integer" + }, + "healthyThreshold": { + "format": "uint32", + "description": "Number of consecutive successful health checks required before receiving traffic.", + "type": "integer" + }, + "checkInterval": { + "format": "google-duration", + "description": "Interval between health checks.", + "type": "string" + }, + "timeout": { + "format": "google-duration", + "description": "Time before the health check is considered failed.", + "type": "string" + } + }, + "id": "HealthCheck" + }, + "ReadinessCheck": { + "description": "Readiness checking configuration for VM instances. Unhealthy instances are removed from traffic rotation.", + "type": "object", + "properties": { + "appStartTimeout": { + "format": "google-duration", + "description": "A maximum time limit on application initialization, measured from moment the application successfully replies to a healthcheck until it is ready to serve traffic.", + "type": "string" + }, + "path": { + "description": "The request path.", + "type": "string" + }, + "successThreshold": { + "format": "uint32", + "description": "Number of consecutive successful checks required before receiving traffic.", + "type": "integer" + }, + "host": { + "description": "Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"", + "type": "string" + }, + "checkInterval": { + "format": "google-duration", + "description": "Interval between health checks.", + "type": "string" + }, + "failureThreshold": { + "format": "uint32", + "description": "Number of consecutive failed checks required before removing traffic.", + "type": "integer" + }, + "timeout": { + "format": "google-duration", + "description": "Time before the check is considered failed.", + "type": "string" + } + }, + "id": "ReadinessCheck" + }, + "StandardSchedulerSettings": { + "description": "Scheduler settings for standard environment.", + "type": "object", + "properties": { + "targetThroughputUtilization": { + "type": "number", + "format": "double", + "description": "Target throughput utilization ratio to maintain when scaling" + }, + "maxInstances": { + "format": "int32", + "description": "Maximum number of instances for an app version. Set to a non-positive value (0 by convention) to disable max_instances configuration.", + "type": "integer" + }, + "minInstances": { + "format": "int32", + "description": "Minimum number of instances for an app version. Set to a non-positive value (0 by convention) to disable min_instances configuration.", + "type": "integer" + }, + "targetCpuUtilization": { + "format": "double", + "description": "Target CPU utilization ratio to maintain when scaling.", + "type": "number" + } + }, + "id": "StandardSchedulerSettings" + }, + "DebugInstanceRequest": { + "description": "Request message for Instances.DebugInstance.", + "type": "object", + "properties": { + "sshKey": { + "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", + "type": "string" + } + }, + "id": "DebugInstanceRequest" + }, + "OperationMetadataV1Beta5": { + "type": "object", + "properties": { + "endTime": { + "type": "string", + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "method": { + "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "insertTime": { + "type": "string", + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly" + } + }, + "id": "OperationMetadataV1Beta5", + "description": "Metadata for the given google.longrunning.Operation." + }, + "Version": { + "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.", + "type": "object", + "properties": { + "automaticScaling": { + "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", + "$ref": "AutomaticScaling" + }, + "diskUsageBytes": { + "format": "int64", + "description": "Total size in bytes of all the files that are included in this version and curerntly hosted on the App Engine disk.@OutputOnly", + "type": "string" + }, + "healthCheck": { + "$ref": "HealthCheck", + "description": "Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set." + }, + "threadsafe": { + "type": "boolean", + "description": "Whether multiple requests can be dispatched to this version at once." + }, + "readinessCheck": { + "$ref": "ReadinessCheck", + "description": "Configures readiness health checking for VM instances. Unhealthy instances are not put into the backend traffic rotation.Only returned in GET requests if view=FULL is set." + }, + "manualScaling": { + "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", + "$ref": "ManualScaling" + }, + "name": { + "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly", + "type": "string" + }, + "apiConfig": { + "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.", + "$ref": "ApiConfigHandler" + }, + "endpointsApiService": { + "$ref": "EndpointsApiService", + "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app." + }, + "vm": { + "description": "Whether to deploy this version in a container on a virtual machine.", + "type": "boolean" + }, + "versionUrl": { + "description": "Serving URL for this version. Example: \"https://myversion-dot-myservice-dot-myapp.appspot.com\"@OutputOnly", + "type": "string" + }, + "instanceClass": { + "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.", + "type": "string" + }, + "servingStatus": { + "enum": [ + "SERVING_STATUS_UNSPECIFIED", + "SERVING", + "STOPPED" + ], + "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", + "type": "string", + "enumDescriptions": [ + "Not specified.", + "Currently serving. Instances are created according to the scaling settings of the version.", + "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING." + ] + }, + "runtimeApiVersion": { + "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", + "type": "string" + }, + "deployment": { + "$ref": "Deployment", + "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set." + }, + "createTime": { + "format": "google-datetime", + "description": "Time that this version was created.@OutputOnly", + "type": "string" + }, + "inboundServices": { + "enumDescriptions": [ + "Not specified.", + "Allows an application to receive mail.", + "Allows an application to receive email-bound notifications.", + "Allows an application to receive error stanzas.", + "Allows an application to receive instant messages.", + "Allows an application to receive user subscription POSTs.", + "Allows an application to receive a user's chat presence.", + "Registers an application for notifications when a client connects or disconnects from a channel.", + "Enables warmup requests." + ], + "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", + "items": { + "enum": [ + "INBOUND_SERVICE_UNSPECIFIED", + "INBOUND_SERVICE_MAIL", + "INBOUND_SERVICE_MAIL_BOUNCE", + "INBOUND_SERVICE_XMPP_ERROR", + "INBOUND_SERVICE_XMPP_MESSAGE", + "INBOUND_SERVICE_XMPP_SUBSCRIBE", + "INBOUND_SERVICE_XMPP_PRESENCE", + "INBOUND_SERVICE_CHANNEL_PRESENCE", + "INBOUND_SERVICE_WARMUP" + ], + "type": "string" + }, + "type": "array" + }, + "resources": { + "description": "Machine resources for this version. Only applicable for VM runtimes.", + "$ref": "Resources" + }, + "errorHandlers": { + "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "ErrorHandler" + }, + "type": "array" + }, + "defaultExpiration": { + "format": "google-duration", + "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "libraries": { + "description": "Configuration for third-party Python runtime libraries that are required by the application.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "Library" + }, + "type": "array" + }, + "nobuildFilesRegex": { + "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "basicScaling": { + "$ref": "BasicScaling", + "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity." + }, + "runtime": { + "description": "Desired runtime. Example: python27.", + "type": "string" + }, + "createdBy": { + "description": "Email address of the user who created this version.@OutputOnly", + "type": "string" + }, + "id": { + "description": "Relative name of the version within the service. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", + "type": "string" + }, + "envVariables": { + "description": "Environment variables available to the application.Only returned in GET requests if view=FULL is set.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "livenessCheck": { + "$ref": "LivenessCheck", + "description": "Configures liveness health checking for VM instances. Unhealthy instances are stopped and replaced with new instancesOnly returned in GET requests if view=FULL is set." + }, + "network": { + "$ref": "Network", + "description": "Extra network settings. Only applicable for App Engine flexible environment versions." + }, + "betaSettings": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata settings that are supplied to this version to enable beta runtime features.", + "type": "object" + }, + "env": { + "description": "App Engine execution environment for this version.Defaults to standard.", + "type": "string" + }, + "handlers": { + "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "UrlMap" + }, + "type": "array" + } + }, + "id": "Version" + }, + "RepairApplicationRequest": { + "description": "Request message for 'Applications.RepairApplication'.", + "type": "object", + "properties": {}, + "id": "RepairApplicationRequest" + }, + "CertificateRawData": { + "description": "An SSL certificate obtained from a certificate authority.", + "type": "object", + "properties": { + "privateKey": { + "description": "Unencrypted PEM encoded RSA private key. This field is set once on certificate creation and then encrypted. The key size must be 2048 bits or fewer. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN RSA PRIVATE KEY----- \u003cunencrypted_key_value\u003e -----END RSA PRIVATE KEY----- \u003c/pre\u003e @InputOnly", + "type": "string" + }, + "publicCertificate": { + "description": "PEM encoded x.509 public key certificate. This field is set once on certificate creation. Must include the header and footer. Example: \u003cpre\u003e -----BEGIN CERTIFICATE----- \u003ccertificate_value\u003e -----END CERTIFICATE----- \u003c/pre\u003e", + "type": "string" + } + }, + "id": "CertificateRawData" + }, + "BuildInfo": { + "description": "Google Cloud Container Builder build information.", + "type": "object", + "properties": { + "cloudBuildId": { + "description": "The Google Cloud Container Builder build id. Example: \"f966068f-08b2-42c8-bdfe-74137dff2bf9\"", + "type": "string" + } + }, + "id": "BuildInfo" + }, + "ScriptHandler": { + "id": "ScriptHandler", + "description": "Executes a script to handle the request that matches the URL pattern.", + "type": "object", + "properties": { + "scriptPath": { + "description": "Path to the script from the application root directory.", + "type": "string" + } + } + }, + "FileInfo": { + "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", + "type": "object", + "properties": { + "sha1Sum": { + "description": "The SHA1 hash of the file, in hex.", + "type": "string" + }, + "mimeType": { + "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", + "type": "string" + }, + "sourceUrl": { + "type": "string", + "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'." + } + }, + "id": "FileInfo" + }, + "OperationMetadataExperimental": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "method": { + "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", + "type": "string" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataExperimental" + }, + "AuthorizedDomain": { + "id": "AuthorizedDomain", + "description": "A domain that a user has been authorized to administer. To authorize use of a domain, verify ownership via Webmaster Central (https://www.google.com/webmasters/verification/home).", + "type": "object", + "properties": { + "name": { + "description": "Full path to the AuthorizedDomain resource in the API. Example: apps/myapp/authorizedDomains/example.com.@OutputOnly", + "type": "string" + }, + "id": { + "description": "Fully qualified domain name of the domain authorized for use. Example: example.com.", + "type": "string" + } + } + }, + "TrafficSplit": { + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.", + "type": "object", + "properties": { + "allocations": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", + "type": "object" + }, + "shardBy": { + "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.", + "type": "string", + "enumDescriptions": [ + "Diversion method unspecified.", + "Diversion based on a specially named cookie, \"GOOGAPPUID.\" The cookie must be set by the application itself or no diversion will occur.", + "Diversion based on applying the modulus operation to a fingerprint of the IP address.", + "Diversion based on weighted random assignment. An incoming request is randomly routed to a version in the traffic split, with probability proportional to the version's traffic share." + ], + "enum": [ + "UNSPECIFIED", + "COOKIE", + "IP", + "RANDOM" + ] + } + }, + "id": "TrafficSplit" + }, + "OperationMetadataV1Beta": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "type": "string", + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly" + }, + "target": { + "type": "string", + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, + "ephemeralMessage": { + "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", + "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1Beta" + }, + "ListIngressRulesResponse": { + "id": "ListIngressRulesResponse", + "description": "Response message for Firewall.ListIngressRules.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "ingressRules": { + "description": "The ingress FirewallRules for this application.", + "items": { + "$ref": "FirewallRule" + }, + "type": "array" + } + } + }, + "ListServicesResponse": { + "description": "Response message for Services.ListServices.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, + "services": { + "description": "The services belonging to the requested application.", + "items": { + "$ref": "Service" + }, + "type": "array" + } + }, + "id": "ListServicesResponse" + }, + "Deployment": { + "type": "object", + "properties": { + "zip": { + "description": "The zip file for this deployment, if this is a zip deployment.", + "$ref": "ZipInfo" + }, + "container": { + "$ref": "ContainerInfo", + "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment." + }, + "build": { + "$ref": "BuildInfo", + "description": "Google Cloud Container Builder build information." + }, + "files": { + "additionalProperties": { + "$ref": "FileInfo" + }, + "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.", + "type": "object" + } + }, + "id": "Deployment", + "description": "Code and application artifacts used to deploy a version to App Engine." + }, + "Resources": { + "description": "Machine resources for a version.", + "type": "object", + "properties": { + "diskGb": { + "format": "double", + "description": "Disk size (GB) needed.", + "type": "number" + }, + "memoryGb": { + "format": "double", + "description": "Memory (GB) needed.", + "type": "number" + }, + "cpu": { + "format": "double", + "description": "Number of CPU cores needed.", + "type": "number" + }, + "volumes": { + "description": "User specified volumes.", + "items": { + "$ref": "Volume" + }, + "type": "array" + } + }, + "id": "Resources" + }, + "BatchUpdateIngressRulesResponse": { + "description": "Response message for Firewall.UpdateAllIngressRules.", + "type": "object", + "properties": { + "ingressRules": { + "description": "The full list of ingress FirewallRules for this application.", + "items": { + "$ref": "FirewallRule" + }, + "type": "array" + } + }, + "id": "BatchUpdateIngressRulesResponse" + }, + "Volume": { + "description": "Volumes mounted within the app container. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "volumeType": { + "description": "Underlying volume type, e.g. 'tmpfs'.", + "type": "string" + }, + "sizeGb": { + "format": "double", + "description": "Volume size in gigabytes.", + "type": "number" + }, + "name": { + "description": "Unique name for the volume.", + "type": "string" + } + }, + "id": "Volume" } }, "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "version": "v1beta", "baseUrl": "https://appengine.googleapis.com/", @@ -3494,9 +3491,9 @@ } } }, - "kind": "discovery#restDescription", - "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.", "servicePath": "", + "description": "The App Engine Admin API enables developers to provision and manage their App Engine applications.", + "kind": "discovery#restDescription", "rootUrl": "https://appengine.googleapis.com/", "basePath": "", "ownerDomain": "google.com", @@ -3504,5 +3501,8 @@ "batchPath": "batch", "id": "appengine:v1beta", "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", - "revision": "20170824" + "revision": "20170825", + "title": "Google App Engine Admin API", + "ownerName": "Google", + "discoveryVersion": "v1" } diff --git a/vendor/google.golang.org/api/appengine/v1beta4/appengine-api.json b/vendor/google.golang.org/api/appengine/v1beta4/appengine-api.json index 28cebbb..7e2bb37 100644 --- a/vendor/google.golang.org/api/appengine/v1beta4/appengine-api.json +++ b/vendor/google.golang.org/api/appengine/v1beta4/appengine-api.json @@ -1,210 +1,279 @@ { + "title": "Google App Engine Admin API", + "discoveryVersion": "v1", + "ownerName": "Google", "resources": { "apps": { + "methods": { + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "mask": { + "type": "string", + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated." + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta4/apps/{appsId}", + "path": "v1beta4/apps/{appsId}", + "id": "appengine.apps.patch", + "request": { + "$ref": "Application" + }, + "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.auth_domain)\ndefault_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.default_cookie_expiration)" + }, + "get": { + "description": "Gets information about an application.", + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "Application" + }, + "parameters": { + "ensureResourcesExist": { + "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.", + "type": "boolean", + "location": "query" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the application to get. Example: apps/myapp.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps/{appsId}", + "path": "v1beta4/apps/{appsId}", + "id": "appengine.apps.get" + }, + "create": { + "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).", + "request": { + "$ref": "Application" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps", + "id": "appengine.apps.create", + "path": "v1beta4/apps" + } + }, "resources": { "modules": { - "resources": { - "versions": { - "resources": { - "instances": { - "methods": { - "delete": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "modulesId", - "versionsId", - "instancesId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true, - "location": "path" - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "modulesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.modules.versions.instances.delete", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", - "description": "Stops a running instance." - }, - "list": { - "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).", - "response": { - "$ref": "ListInstancesResponse" - }, - "parameterOrder": [ - "appsId", - "modulesId", - "versionsId" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string", - "location": "query" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1.", - "type": "string", - "required": true - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "modulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances", - "id": "appengine.apps.modules.versions.instances.list", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances" - }, - "get": { - "response": { - "$ref": "Instance" - }, - "parameterOrder": [ - "appsId", - "modulesId", - "versionsId", - "instancesId" - ], - "httpMethod": "GET", - "parameters": { - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "modulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.modules.versions.instances.get", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", - "description": "Gets instance information." - }, - "debug": { - "request": { - "$ref": "DebugInstanceRequest" - }, - "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "modulesId", - "versionsId", - "instancesId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true, - "location": "path" - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "modulesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}:debug", - "id": "appengine.apps.modules.versions.instances.debug", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}:debug" - } - } + "methods": { + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "appsId", + "modulesId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default." + }, + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}", + "id": "appengine.apps.modules.delete", + "description": "Deletes the specified module and all enclosed versions." + }, + "patch": { + "description": "Updates the configuration of the specified module.", + "request": { + "$ref": "Module" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "modulesId" + ], + "httpMethod": "PATCH", + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default.", + "type": "string", + "required": true + }, + "migrateTraffic": { + "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules#shardby) field in the Module resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", + "type": "boolean", + "location": "query" + }, + "mask": { + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string", + "location": "query" + }, + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}", + "id": "appengine.apps.modules.patch", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}" + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListModulesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageToken": { + "type": "string", + "location": "query", + "description": "Continuation token for fetching the next page of results." + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp.", + "type": "string", + "required": true, + "location": "path" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" + } + }, + "flatPath": "v1beta4/apps/{appsId}/modules", + "path": "v1beta4/apps/{appsId}/modules", + "id": "appengine.apps.modules.list", + "description": "Lists all the modules in the application." + }, + "get": { + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}", + "id": "appengine.apps.modules.get", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}", + "description": "Gets the current configuration of the specified module.", + "response": { + "$ref": "Module" + }, + "parameterOrder": [ + "appsId", + "modulesId" + ], + "httpMethod": "GET", + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default.", + "type": "string", + "required": true + }, + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + } + }, + "resources": { + "versions": { "methods": { + "create": { + "description": "Deploys code and resource files to a new version.", + "request": { + "$ref": "Version" + }, + "httpMethod": "POST", + "parameterOrder": [ + "appsId", + "modulesId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", + "id": "appengine.apps.modules.versions.create" + }, "delete": { - "description": "Deletes an existing version.", "response": { "$ref": "Operation" }, @@ -228,10 +297,10 @@ "location": "path" }, "modulesId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" } }, "scopes": [ @@ -239,9 +308,12 @@ ], "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", "id": "appengine.apps.modules.versions.delete", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}" + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", + "description": "Deletes an existing version." }, "patch": { + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", + "id": "appengine.apps.modules.versions.patch", "request": { "$ref": "Version" }, @@ -260,23 +332,23 @@ ], "parameters": { "appsId": { - "location": "path", "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default/versions/1.", "type": "string", - "required": true - }, - "mask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string" - }, - "versionsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", "required": true, "location": "path" }, + "mask": { + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.", + "type": "string", + "location": "query" + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, "modulesId": { "location": "path", "description": "Part of `name`. See documentation of `appsId`.", @@ -284,11 +356,11 @@ "required": true } }, - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", - "id": "appengine.apps.modules.versions.patch" + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}" }, "list": { + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", + "id": "appengine.apps.modules.versions.list", "description": "Lists the versions of a module.", "httpMethod": "GET", "parameterOrder": [ @@ -337,12 +409,10 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", - "id": "appengine.apps.modules.versions.list" + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions" }, "get": { - "httpMethod": "GET", + "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.", "response": { "$ref": "Version" }, @@ -351,21 +421,22 @@ "modulesId", "versionsId" ], + "httpMethod": "GET", "parameters": { "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1." }, "view": { + "location": "query", "enum": [ "BASIC", "FULL" ], "description": "Controls the set of fields returned in the Get response.", - "type": "string", - "location": "query" + "type": "string" }, "versionsId": { "location": "path", @@ -374,10 +445,10 @@ "required": true }, "modulesId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" } }, "scopes": [ @@ -386,200 +457,214 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}", "id": "appengine.apps.modules.versions.get", - "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource." - }, - "create": { - "id": "appengine.apps.modules.versions.create", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions", - "request": { - "$ref": "Version" - }, - "description": "Deploys code and resource files to a new version.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "modulesId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default.", - "type": "string", - "required": true, - "location": "path" + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}" + } + }, + "resources": { + "instances": { + "methods": { + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListInstancesResponse" + }, + "parameterOrder": [ + "appsId", + "modulesId", + "versionsId" + ], + "parameters": { + "pageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string", + "location": "query" + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1.", + "type": "string", + "required": true, + "location": "path" + }, + "pageSize": { + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer", + "location": "query" + }, + "versionsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." + }, + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances", + "id": "appengine.apps.modules.versions.instances.list", + "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)." }, - "modulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" + "get": { + "httpMethod": "GET", + "response": { + "$ref": "Instance" + }, + "parameterOrder": [ + "appsId", + "modulesId", + "versionsId", + "instancesId" + ], + "parameters": { + "instancesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", + "type": "string", + "required": true, + "location": "path" + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "modulesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.modules.versions.instances.get", + "description": "Gets instance information." + }, + "debug": { + "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", + "request": { + "$ref": "DebugInstanceRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "modulesId", + "versionsId", + "instancesId" + ], + "httpMethod": "POST", + "parameters": { + "instancesId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", + "type": "string", + "required": true, + "location": "path" + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "modulesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}:debug", + "id": "appengine.apps.modules.versions.instances.debug", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}:debug" + }, + "delete": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "modulesId", + "versionsId", + "instancesId" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "instancesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.", + "type": "string", + "required": true + }, + "versionsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "modulesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.modules.versions.instances.delete", + "path": "v1beta4/apps/{appsId}/modules/{modulesId}/versions/{versionsId}/instances/{instancesId}", + "description": "Stops a running instance." } - }, - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}/versions" + } } } } - }, - "methods": { - "patch": { - "id": "appengine.apps.modules.patch", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}", - "description": "Updates the configuration of the specified module.", - "request": { - "$ref": "Module" - }, - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "modulesId" - ], - "httpMethod": "PATCH", - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/modules/default.", - "type": "string", - "required": true, - "location": "path" - }, - "migrateTraffic": { - "location": "query", - "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps.modules#shardby) field in the Module resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", - "type": "boolean" - }, - "mask": { - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string", - "location": "query" - }, - "modulesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}" - }, - "list": { - "response": { - "$ref": "ListModulesResponse" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "pageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string", - "location": "query" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp.", - "type": "string", - "required": true - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - } - }, - "flatPath": "v1beta4/apps/{appsId}/modules", - "id": "appengine.apps.modules.list", - "path": "v1beta4/apps/{appsId}/modules", - "description": "Lists all the modules in the application." - }, - "get": { - "id": "appengine.apps.modules.get", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}", - "description": "Gets the current configuration of the specified module.", - "response": { - "$ref": "Module" - }, - "parameterOrder": [ - "appsId", - "modulesId" - ], - "httpMethod": "GET", - "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default.", - "type": "string", - "required": true, - "location": "path" - }, - "modulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}" - }, - "delete": { - "description": "Deletes the specified module and all enclosed versions.", - "httpMethod": "DELETE", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "modulesId" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "modulesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/modules/default.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta4/apps/{appsId}/modules/{modulesId}", - "path": "v1beta4/apps/{appsId}/modules/{modulesId}", - "id": "appengine.apps.modules.delete" - } } }, "operations": { "methods": { "get": { - "httpMethod": "GET", + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", "response": { "$ref": "Operation" }, @@ -587,39 +672,42 @@ "appsId", "operationsId" ], - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], + "httpMethod": "GET", "parameters": { - "operationsId": { + "appsId": { "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", + "description": "Part of `name`. The name of the operation resource.", "type": "string", "required": true }, - "appsId": { - "description": "Part of `name`. The name of the operation resource.", + "operationsId": { + "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true, "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "flatPath": "v1beta4/apps/{appsId}/operations/{operationsId}", - "path": "v1beta4/apps/{appsId}/operations/{operationsId}", "id": "appengine.apps.operations.get", - "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service." + "path": "v1beta4/apps/{appsId}/operations/{operationsId}" }, "list": { + "flatPath": "v1beta4/apps/{appsId}/operations", + "path": "v1beta4/apps/{appsId}/operations", + "id": "appengine.apps.operations.list", "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], "response": { "$ref": "ListOperationsResponse" }, + "parameterOrder": [ + "appsId" + ], "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", @@ -627,82 +715,16 @@ ], "parameters": { "pageToken": { + "location": "query", "description": "The standard list page token.", - "type": "string", - "location": "query" + "type": "string" }, "appsId": { - "description": "Part of `name`. The name of the operation's parent resource.", "type": "string", "required": true, - "location": "path" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - }, - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - } - }, - "flatPath": "v1beta4/apps/{appsId}/operations", - "path": "v1beta4/apps/{appsId}/operations", - "id": "appengine.apps.operations.list" - } - } - }, - "locations": { - "methods": { - "get": { - "flatPath": "v1beta4/apps/{appsId}/locations/{locationsId}", - "path": "v1beta4/apps/{appsId}/locations/{locationsId}", - "id": "appengine.apps.locations.get", - "description": "Get information about a location.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId", - "locationsId" - ], - "response": { - "$ref": "Location" - }, - "parameters": { - "locationsId": { "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true + "description": "Part of `name`. The name of the operation's parent resource." }, - "appsId": { - "location": "path", - "description": "Part of `name`. Resource name for the location.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ] - }, - "list": { - "flatPath": "v1beta4/apps/{appsId}/locations", - "id": "appengine.apps.locations.list", - "path": "v1beta4/apps/{appsId}/locations", - "description": "Lists information about the supported locations for this service.", - "response": { - "$ref": "ListLocationsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "parameters": { "pageSize": { "format": "int32", "description": "The standard list page size.", @@ -710,9 +732,67 @@ "location": "query" }, "filter": { - "location": "query", "description": "The standard list filter.", - "type": "string" + "type": "string", + "location": "query" + } + } + } + } + }, + "locations": { + "methods": { + "get": { + "response": { + "$ref": "Location" + }, + "parameterOrder": [ + "appsId", + "locationsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "appsId": { + "location": "path", + "description": "Part of `name`. Resource name for the location.", + "type": "string", + "required": true + }, + "locationsId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta4/apps/{appsId}/locations/{locationsId}", + "id": "appengine.apps.locations.get", + "path": "v1beta4/apps/{appsId}/locations/{locationsId}", + "description": "Get information about a location." + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListLocationsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" }, "pageToken": { "location": "query", @@ -724,98 +804,21 @@ "type": "string", "required": true, "location": "path" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "The standard list page size." } }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ] + "flatPath": "v1beta4/apps/{appsId}/locations", + "path": "v1beta4/apps/{appsId}/locations", + "id": "appengine.apps.locations.list", + "description": "Lists information about the supported locations for this service." } } } - }, - "methods": { - "create": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1beta4/apps", - "id": "appengine.apps.create", - "path": "v1beta4/apps", - "request": { - "$ref": "Application" - }, - "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/)." - }, - "patch": { - "flatPath": "v1beta4/apps/{appsId}", - "id": "appengine.apps.patch", - "path": "v1beta4/apps/{appsId}", - "request": { - "$ref": "Application" - }, - "description": "Updates the specified Application resource. You can update the following fields:\nauth_domain (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.auth_domain)\ndefault_cookie_expiration (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta4/apps#Application.FIELDS.default_cookie_expiration)", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "mask": { - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.", - "type": "string" - }, - "appsId": { - "description": "Part of `name`. Name of the Application resource to update. Example: apps/myapp.", - "type": "string", - "required": true, - "location": "path" - } - } - }, - "get": { - "description": "Gets information about an application.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], - "response": { - "$ref": "Application" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "ensureResourcesExist": { - "location": "query", - "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete.", - "type": "boolean" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the application to get. Example: apps/myapp.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta4/apps/{appsId}", - "path": "v1beta4/apps/{appsId}", - "id": "appengine.apps.get" - } } } }, @@ -831,41 +834,35 @@ "type": "boolean", "location": "query" }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, "uploadType": { "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", + "$.xgafv": { "type": "string", - "location": "query" + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format." }, "callback": { "location": "query", "description": "JSONP", "type": "string" }, - "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -873,7 +870,13 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" }, "key": { "location": "query", @@ -881,9 +884,9 @@ "type": "string" }, "access_token": { + "location": "query", "description": "OAuth access token.", - "type": "string", - "location": "query" + "type": "string" }, "quotaUser": { "location": "query", @@ -896,55 +899,403 @@ "default": "true", "type": "boolean" }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, "bearer_token": { + "location": "query", "description": "OAuth bearer token.", - "type": "string", - "location": "query" + "type": "string" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" } }, "schemas": { + "Location": { + "description": "A resource that represents Google Cloud Platform location.", + "type": "object", + "properties": { + "name": { + "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", + "type": "string" + }, + "locationId": { + "description": "The canonical id for this location. For example: \"us-east1\".", + "type": "string" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata. For example the available capacity at the given location.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", + "type": "object" + } + }, + "id": "Location" + }, + "NetworkUtilization": { + "description": "Target scaling by network usage. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "targetReceivedBytesPerSec": { + "format": "int32", + "description": "Target bytes received per second.", + "type": "integer" + }, + "targetSentPacketsPerSec": { + "format": "int32", + "description": "Target packets sent per second.", + "type": "integer" + }, + "targetReceivedPacketsPerSec": { + "format": "int32", + "description": "Target packets received per second.", + "type": "integer" + }, + "targetSentBytesPerSec": { + "format": "int32", + "description": "Target bytes sent per second.", + "type": "integer" + } + }, + "id": "NetworkUtilization" + }, + "HealthCheck": { + "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", + "type": "object", + "properties": { + "restartThreshold": { + "format": "uint32", + "description": "Number of consecutive failed health checks required before an instance is restarted.", + "type": "integer" + }, + "healthyThreshold": { + "format": "uint32", + "description": "Number of consecutive successful health checks required before receiving traffic.", + "type": "integer" + }, + "checkInterval": { + "format": "google-duration", + "description": "Interval between health checks.", + "type": "string" + }, + "timeout": { + "format": "google-duration", + "description": "Time before the health check is considered failed.", + "type": "string" + }, + "unhealthyThreshold": { + "format": "uint32", + "description": "Number of consecutive failed health checks required before removing traffic.", + "type": "integer" + }, + "disableHealthCheck": { + "description": "Whether to explicitly disable health checks for this instance.", + "type": "boolean" + }, + "host": { + "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", + "type": "string" + } + }, + "id": "HealthCheck" + }, + "DebugInstanceRequest": { + "description": "Request message for Instances.DebugInstance.", + "type": "object", + "properties": { + "sshKey": { + "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", + "type": "string" + } + }, + "id": "DebugInstanceRequest" + }, + "SourceReference": { + "description": "Reference to a particular snapshot of the source tree used to build and deploy the application.", + "type": "object", + "properties": { + "revisionId": { + "description": "The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): \"2198322f89e0bb2e25021667c2ed489d1fd34e6b\"", + "type": "string" + }, + "repository": { + "description": "URI string identifying the repository. Example: \"https://source.developers.google.com/p/app-123/r/default\"", + "type": "string" + } + }, + "id": "SourceReference" + }, + "OperationMetadataV1Beta5": { + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object", + "properties": { + "method": { + "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "insertTime": { + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1Beta5" + }, + "Library": { + "properties": { + "name": { + "description": "Name of the library. Example: \"django\".", + "type": "string" + }, + "version": { + "description": "Version of the library to select, or \"latest\".", + "type": "string" + } + }, + "id": "Library", + "description": "Third-party Python runtime library that is required by the application.", + "type": "object" + }, + "ListLocationsResponse": { + "properties": { + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "ListLocationsResponse", + "description": "The response message for Locations.ListLocations.", + "type": "object" + }, + "ContainerInfo": { + "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.", + "type": "object", + "properties": { + "image": { + "description": "URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"", + "type": "string" + } + }, + "id": "ContainerInfo" + }, + "Version": { + "properties": { + "automaticScaling": { + "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", + "$ref": "AutomaticScaling" + }, + "healthCheck": { + "description": "Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set.", + "$ref": "HealthCheck" + }, + "threadsafe": { + "description": "Whether multiple requests can be dispatched to this version at once.", + "type": "boolean" + }, + "manualScaling": { + "description": "A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", + "$ref": "ManualScaling" + }, + "name": { + "description": "Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly", + "type": "string" + }, + "apiConfig": { + "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.", + "$ref": "ApiConfigHandler" + }, + "vm": { + "description": "Whether to deploy this version in a container on a virtual machine.", + "type": "boolean" + }, + "instanceClass": { + "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.", + "type": "string" + }, + "servingStatus": { + "enum": [ + "SERVING_STATUS_UNSPECIFIED", + "SERVING", + "STOPPED" + ], + "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", + "type": "string", + "enumDescriptions": [ + "Not specified.", + "Currently serving. Instances are created according to the scaling settings of the version.", + "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING." + ] + }, + "runtimeApiVersion": { + "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", + "type": "string" + }, + "deployment": { + "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.", + "$ref": "Deployment" + }, + "resources": { + "$ref": "Resources", + "description": "Machine resources for this version. Only applicable for VM runtimes." + }, + "inboundServices": { + "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", + "items": { + "enum": [ + "INBOUND_SERVICE_UNSPECIFIED", + "INBOUND_SERVICE_MAIL", + "INBOUND_SERVICE_MAIL_BOUNCE", + "INBOUND_SERVICE_XMPP_ERROR", + "INBOUND_SERVICE_XMPP_MESSAGE", + "INBOUND_SERVICE_XMPP_SUBSCRIBE", + "INBOUND_SERVICE_XMPP_PRESENCE", + "INBOUND_SERVICE_CHANNEL_PRESENCE", + "INBOUND_SERVICE_WARMUP" + ], + "type": "string" + }, + "type": "array", + "enumDescriptions": [ + "Not specified.", + "Allows an application to receive mail.", + "Allows an application to receive email-bound notifications.", + "Allows an application to receive error stanzas.", + "Allows an application to receive instant messages.", + "Allows an application to receive user subscription POSTs.", + "Allows an application to receive a user's chat presence.", + "Registers an application for notifications when a client connects or disconnects from a channel.", + "Enables warmup requests." + ] + }, + "errorHandlers": { + "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "ErrorHandler" + }, + "type": "array" + }, + "defaultExpiration": { + "format": "google-duration", + "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "libraries": { + "description": "Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "Library" + }, + "type": "array" + }, + "nobuildFilesRegex": { + "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "creationTime": { + "format": "google-datetime", + "description": "Time that this version was created.@OutputOnly", + "type": "string" + }, + "basicScaling": { + "description": "A module with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", + "$ref": "BasicScaling" + }, + "runtime": { + "description": "Desired runtime. Example: python27.", + "type": "string" + }, + "id": { + "description": "Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", + "type": "string" + }, + "envVariables": { + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.", + "type": "object" + }, + "network": { + "description": "Extra network settings. Only applicable for VM runtimes.", + "$ref": "Network" + }, + "betaSettings": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata settings that are supplied to this version to enable beta runtime features.", + "type": "object" + }, + "env": { + "description": "App Engine execution environment to use for this version.Defaults to 1.", + "type": "string" + }, + "handlers": { + "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "UrlMap" + }, + "type": "array" + }, + "deployer": { + "description": "Email address of the user who created this version.@OutputOnly", + "type": "string" + } + }, + "id": "Version", + "description": "A Version resource is a specific set of source code and configuration files that are deployed into a module.", + "type": "object" + }, + "RequestUtilization": { + "description": "Target scaling by request utilization. Only applicable for VM runtimes.", + "type": "object", + "properties": { + "targetConcurrentRequests": { + "format": "int32", + "description": "Target number of concurrent requests.", + "type": "integer" + }, + "targetRequestCountPerSec": { + "format": "int32", + "description": "Target requests per second.", + "type": "integer" + } + }, + "id": "RequestUtilization" + }, "UrlMap": { "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.", "type": "object", "properties": { - "apiEndpoint": { - "description": "Uses API Endpoints to handle requests.", - "$ref": "ApiEndpointHandler" - }, - "staticDirectory": { - "description": "Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.", - "$ref": "StaticDirectoryHandler" - }, - "staticFiles": { - "description": "Returns the contents of a file, such as an image, as the response.", - "$ref": "StaticFilesHandler" - }, - "redirectHttpResponseCode": { - "enum": [ - "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", - "REDIRECT_HTTP_RESPONSE_CODE_301", - "REDIRECT_HTTP_RESPONSE_CODE_302", - "REDIRECT_HTTP_RESPONSE_CODE_303", - "REDIRECT_HTTP_RESPONSE_CODE_307" - ], - "description": "30x code to use when performing redirects for the secure field. Defaults to 302.", - "type": "string", - "enumDescriptions": [ - "Not specified. 302 is assumed.", - "301 Moved Permanently code.", - "302 Moved Temporarily code.", - "303 See Other code.", - "307 Temporary Redirect code." - ] - }, "securityLevel": { - "description": "Security (HTTPS) enforcement for this URL.", - "type": "string", "enumDescriptions": [ "Not specified.", "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", @@ -958,7 +1309,9 @@ "SECURE_NEVER", "SECURE_OPTIONAL", "SECURE_ALWAYS" - ] + ], + "description": "Security (HTTPS) enforcement for this URL.", + "type": "string" }, "authFailAction": { "enumDescriptions": [ @@ -975,8 +1328,8 @@ "type": "string" }, "script": { - "description": "Executes a script to handle the request that matches this URL pattern.", - "$ref": "ScriptHandler" + "$ref": "ScriptHandler", + "description": "Executes a script to handle the request that matches this URL pattern." }, "urlRegex": { "description": "A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.", @@ -997,13 +1350,41 @@ ], "description": "Level of login required to access this resource.", "type": "string" + }, + "apiEndpoint": { + "description": "Uses API Endpoints to handle requests.", + "$ref": "ApiEndpointHandler" + }, + "staticDirectory": { + "description": "Serves the entire contents of a directory as static files.This attribute is deprecated. You can mimic the behavior of static directories using static files.", + "$ref": "StaticDirectoryHandler" + }, + "staticFiles": { + "$ref": "StaticFilesHandler", + "description": "Returns the contents of a file, such as an image, as the response." + }, + "redirectHttpResponseCode": { + "enumDescriptions": [ + "Not specified. 302 is assumed.", + "301 Moved Permanently code.", + "302 Moved Temporarily code.", + "303 See Other code.", + "307 Temporary Redirect code." + ], + "enum": [ + "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", + "REDIRECT_HTTP_RESPONSE_CODE_301", + "REDIRECT_HTTP_RESPONSE_CODE_302", + "REDIRECT_HTTP_RESPONSE_CODE_303", + "REDIRECT_HTTP_RESPONSE_CODE_307" + ], + "description": "30x code to use when performing redirects for the secure field. Defaults to 302.", + "type": "string" } }, "id": "UrlMap" }, "ApiConfigHandler": { - "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", - "type": "object", "properties": { "script": { "description": "Path to the script from the application root directory.", @@ -1030,13 +1411,6 @@ "type": "string" }, "securityLevel": { - "enumDescriptions": [ - "Not specified.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", - "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", - "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." - ], "enum": [ "SECURE_UNSPECIFIED", "SECURE_DEFAULT", @@ -1045,29 +1419,40 @@ "SECURE_ALWAYS" ], "description": "Security (HTTPS) enforcement for this URL.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Not specified.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", + "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", + "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." + ] }, "authFailAction": { + "enum": [ + "AUTH_FAIL_ACTION_UNSPECIFIED", + "AUTH_FAIL_ACTION_REDIRECT", + "AUTH_FAIL_ACTION_UNAUTHORIZED" + ], "description": "Action to take when users access resources that require authentication. Defaults to redirect.", "type": "string", "enumDescriptions": [ "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", "Rejects request with a 401 HTTP status code and an error message." - ], - "enum": [ - "AUTH_FAIL_ACTION_UNSPECIFIED", - "AUTH_FAIL_ACTION_REDIRECT", - "AUTH_FAIL_ACTION_UNAUTHORIZED" ] } }, - "id": "ApiConfigHandler" + "id": "ApiConfigHandler", + "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", + "type": "object" }, "Operation": { - "description": "This resource represents a long-running operation that is the result of a network API call.", - "type": "object", "properties": { + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, "response": { "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", @@ -1081,32 +1466,26 @@ "type": "string" }, "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." }, "metadata": { - "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } - }, - "done": { - "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", - "type": "boolean" + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "type": "object" } }, - "id": "Operation" + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a network API call.", + "type": "object" }, "FileInfo": { "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", "type": "object", "properties": { - "sourceUrl": { - "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", - "type": "string" - }, "sha1Sum": { "description": "The SHA1 hash of the file, in hex.", "type": "string" @@ -1114,16 +1493,18 @@ "mimeType": { "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", "type": "string" + }, + "sourceUrl": { + "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'.", + "type": "string" } }, "id": "FileInfo" }, "StaticFilesHandler": { + "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", + "type": "object", "properties": { - "requireMatchingFile": { - "description": "Whether this handler should match the request if the file referenced by the handler does not exist.", - "type": "boolean" - }, "expiration": { "format": "google-duration", "description": "Time a static file served by this handler should be cached.", @@ -1134,11 +1515,11 @@ "type": "boolean" }, "httpHeaders": { - "description": "HTTP headers to use for all responses from these URLs.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "HTTP headers to use for all responses from these URLs.", + "type": "object" }, "uploadPathRegex": { "description": "Regular expression that matches the file paths for all files that should be referenced by this handler.", @@ -1151,27 +1532,34 @@ "mimeType": { "description": "MIME type used to serve all files served by this handler. Defaults to file-specific MIME types, which are derived from each file's filename extension.", "type": "string" + }, + "requireMatchingFile": { + "description": "Whether this handler should match the request if the file referenced by the handler does not exist.", + "type": "boolean" } }, - "id": "StaticFilesHandler", - "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", - "type": "object" + "id": "StaticFilesHandler" }, "ScriptHandler": { - "description": "Executes a script to handle the request that matches the URL pattern.", - "type": "object", "properties": { "scriptPath": { "description": "Path to the script from the application root directory.", "type": "string" } }, - "id": "ScriptHandler" + "id": "ScriptHandler", + "description": "Executes a script to handle the request that matches the URL pattern.", + "type": "object" }, "DiskUtilization": { "description": "Target scaling by disk usage. Only applicable for VM runtimes.", "type": "object", "properties": { + "targetReadOpsPerSec": { + "format": "int32", + "description": "Target ops read per second.", + "type": "integer" + }, "targetReadBytesPerSec": { "format": "int32", "description": "Target bytes read per second.", @@ -1186,11 +1574,6 @@ "format": "int32", "description": "Target bytes written per second.", "type": "integer" - }, - "targetReadOpsPerSec": { - "format": "int32", - "description": "Target ops read per second.", - "type": "integer" } }, "id": "DiskUtilization" @@ -1199,23 +1582,25 @@ "description": "A module with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", "type": "object", "properties": { - "idleTimeout": { - "format": "google-duration", - "description": "Duration of time after the last request that an instance must wait before the instance is shut down.", - "type": "string" - }, "maxInstances": { "format": "int32", "description": "Maximum number of instances to create for this version.", "type": "integer" + }, + "idleTimeout": { + "format": "google-duration", + "description": "Duration of time after the last request that an instance must wait before the instance is shut down.", + "type": "string" } }, "id": "BasicScaling" }, "OperationMetadataExperimental": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", "properties": { + "method": { + "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", + "type": "string" + }, "insertTime": { "format": "google-datetime", "description": "Time that this operation was created.@OutputOnly", @@ -1233,32 +1618,31 @@ "user": { "description": "User who requested this operation.@OutputOnly", "type": "string" - }, - "method": { - "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", - "type": "string" } }, - "id": "OperationMetadataExperimental" + "id": "OperationMetadataExperimental", + "description": "Metadata for the given google.longrunning.Operation.", + "type": "object" }, "CpuUtilization": { - "description": "Target scaling by CPU usage.", - "type": "object", "properties": { - "aggregationWindowLength": { - "format": "google-duration", - "description": "Period of time over which CPU utilization is calculated.", - "type": "string" - }, "targetUtilization": { "format": "double", "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.", "type": "number" + }, + "aggregationWindowLength": { + "format": "google-duration", + "description": "Period of time over which CPU utilization is calculated.", + "type": "string" } }, - "id": "CpuUtilization" + "id": "CpuUtilization", + "description": "Target scaling by CPU usage.", + "type": "object" }, "IdentityAwareProxy": { + "id": "IdentityAwareProxy", "description": "Identity-Aware Proxy", "type": "object", "properties": { @@ -1278,8 +1662,7 @@ "description": "Hex-encoded SHA-256 hash of the client secret.@OutputOnly", "type": "string" } - }, - "id": "IdentityAwareProxy" + } }, "Status": { "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", @@ -1309,16 +1692,14 @@ "id": "Status" }, "TrafficSplit": { - "description": "Traffic routing configuration for versions within a single module. Traffic splits define how traffic directed to the module is assigned to versions.", - "type": "object", "properties": { "allocations": { + "description": "Mapping from version IDs within the module to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the module may not have any traffic allocation. Modules that have traffic allocated cannot be deleted until either the module is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", + "type": "object", "additionalProperties": { "format": "double", "type": "number" - }, - "description": "Mapping from version IDs within the module to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the module may not have any traffic allocation. Modules that have traffic allocated cannot be deleted until either the module is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.", - "type": "object" + } }, "shardBy": { "description": "Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed.", @@ -1335,10 +1716,11 @@ ] } }, - "id": "TrafficSplit" + "id": "TrafficSplit", + "description": "Traffic routing configuration for versions within a single module. Traffic splits define how traffic directed to the module is assigned to versions.", + "type": "object" }, "ManualScaling": { - "description": "A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", "type": "object", "properties": { "instances": { @@ -1347,19 +1729,20 @@ "type": "integer" } }, - "id": "ManualScaling" + "id": "ManualScaling", + "description": "A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time." }, "LocationMetadata": { "description": "Metadata for the given google.cloud.location.Location.", "type": "object", "properties": { + "standardEnvironmentAvailable": { + "type": "boolean", + "description": "App Engine Standard Environment is available in the given location.@OutputOnly" + }, "flexibleEnvironmentAvailable": { "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", "type": "boolean" - }, - "standardEnvironmentAvailable": { - "description": "App Engine Standard Environment is available in the given location.@OutputOnly", - "type": "boolean" } }, "id": "LocationMetadata" @@ -1441,8 +1824,8 @@ "type": "array" }, "container": { - "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.", - "$ref": "ContainerInfo" + "$ref": "ContainerInfo", + "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment." } }, "id": "Deployment" @@ -1451,6 +1834,16 @@ "description": "Machine resources for a version.", "type": "object", "properties": { + "memoryGb": { + "format": "double", + "description": "Memory (GB) needed.", + "type": "number" + }, + "cpu": { + "format": "double", + "description": "Number of CPU cores needed.", + "type": "number" + }, "volumes": { "description": "User specified volumes.", "items": { @@ -1462,16 +1855,6 @@ "format": "double", "description": "Disk size (GB) needed.", "type": "number" - }, - "memoryGb": { - "format": "double", - "description": "Memory (GB) needed.", - "type": "number" - }, - "cpu": { - "format": "double", - "description": "Number of CPU cores needed.", - "type": "number" } }, "id": "Resources" @@ -1497,8 +1880,6 @@ "id": "Volume" }, "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", "properties": { "nextPageToken": { "description": "The standard List next-page token.", @@ -1512,21 +1893,14 @@ "type": "array" } }, - "id": "ListOperationsResponse" + "id": "ListOperationsResponse", + "description": "The response message for Operations.ListOperations.", + "type": "object" }, "OperationMetadata": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "method": { - "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, "operationType": { "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", "type": "string" @@ -1543,6 +1917,15 @@ "user": { "description": "User who requested this operation.@OutputOnly", "type": "string" + }, + "method": { + "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Timestamp that this operation completed.@OutputOnly", + "type": "string" } }, "id": "OperationMetadata" @@ -1551,63 +1934,44 @@ "description": "Response message for Instances.ListInstances.", "type": "object", "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, "instances": { "description": "The instances belonging to the requested version.", "items": { "$ref": "Instance" }, "type": "array" - }, - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" } }, "id": "ListInstancesResponse" }, - "ErrorHandler": { - "description": "Custom static error page to be served when an error occurs.", + "OperationMetadataV1": { + "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "mimeType": { - "description": "MIME type of file. Defaults to text/html.", - "type": "string" + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" }, - "errorCode": { - "enumDescriptions": [ - "Not specified. ERROR_CODE_DEFAULT is assumed.", - "All other error types.", - "Application has exceeded a resource quota.", - "Client blocked by the application's Denial of Service protection configuration.", - "Deadline reached before the application responds." - ], - "enum": [ - "ERROR_CODE_UNSPECIFIED", - "ERROR_CODE_DEFAULT", - "ERROR_CODE_OVER_QUOTA", - "ERROR_CODE_DOS_API_DENIAL", - "ERROR_CODE_TIMEOUT" - ], - "description": "Error condition this handler applies to.", - "type": "string" - }, - "staticFile": { - "description": "Static file content to be served for this error.", - "type": "string" - } - }, - "id": "ErrorHandler" - }, - "OperationMetadataV1": { - "properties": { - "user": { - "description": "User who requested this operation.@OutputOnly", + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", "type": "string" }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", "type": "string" }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, "ephemeralMessage": { "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" @@ -1620,40 +1984,47 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" + } + }, + "id": "OperationMetadataV1" + }, + "ErrorHandler": { + "description": "Custom static error page to be served when an error occurs.", + "type": "object", + "properties": { + "mimeType": { + "description": "MIME type of file. Defaults to text/html.", + "type": "string" }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" + "errorCode": { + "enum": [ + "ERROR_CODE_UNSPECIFIED", + "ERROR_CODE_DEFAULT", + "ERROR_CODE_OVER_QUOTA", + "ERROR_CODE_DOS_API_DENIAL", + "ERROR_CODE_TIMEOUT" + ], + "description": "Error condition this handler applies to.", + "type": "string", + "enumDescriptions": [ + "Not specified. ERROR_CODE_DEFAULT is assumed.", + "All other error types.", + "Application has exceeded a resource quota.", + "Client blocked by the application's Denial of Service protection configuration.", + "Deadline reached before the application responds." + ] }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", + "staticFile": { + "description": "Static file content to be served for this error.", "type": "string" } }, - "id": "OperationMetadataV1", - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object" + "id": "ErrorHandler" }, "OperationMetadataV1Alpha": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", "type": "string" @@ -1674,10 +2045,72 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" + }, + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" } }, "id": "OperationMetadataV1Alpha" }, + "Application": { + "properties": { + "defaultBucket": { + "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", + "type": "string" + }, + "dispatchRules": { + "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly", + "items": { + "$ref": "UrlDispatchRule" + }, + "type": "array" + }, + "defaultHostname": { + "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly", + "type": "string" + }, + "name": { + "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly", + "type": "string" + }, + "iap": { + "$ref": "IdentityAwareProxy" + }, + "authDomain": { + "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.", + "type": "string" + }, + "defaultCookieExpiration": { + "format": "google-duration", + "description": "Cookie expiration policy for this application.", + "type": "string" + }, + "id": { + "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", + "type": "string" + }, + "codeBucket": { + "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly", + "type": "string" + }, + "location": { + "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", + "type": "string" + } + }, + "id": "Application", + "description": "An Application resource contains the top-level configuration of an App Engine application.", + "type": "object" + }, "Network": { "description": "Extra network settings. Only applicable for VM runtimes.", "type": "object", @@ -1700,76 +2133,9 @@ }, "id": "Network" }, - "Application": { - "description": "An Application resource contains the top-level configuration of an App Engine application.", - "type": "object", - "properties": { - "defaultBucket": { - "description": "Google Cloud Storage bucket that can be used by this application to store content.@OutputOnly", - "type": "string" - }, - "dispatchRules": { - "description": "HTTP path dispatch rules for requests to the application that do not explicitly target a module or version. Rules are order-dependent.@OutputOnly", - "items": { - "$ref": "UrlDispatchRule" - }, - "type": "array" - }, - "defaultHostname": { - "description": "Hostname used to reach the application, as resolved by App Engine.@OutputOnly", - "type": "string" - }, - "name": { - "description": "Full path to the Application resource in the API. Example: apps/myapp.@OutputOnly", - "type": "string" - }, - "authDomain": { - "description": "Google Apps authentication domain that controls which users can access this application.Defaults to open access for any Google Account.", - "type": "string" - }, - "iap": { - "$ref": "IdentityAwareProxy" - }, - "id": { - "description": "Identifier of the Application resource. This identifier is equivalent to the project ID of the Google Cloud Platform project where you want to deploy your application. Example: myapp.", - "type": "string" - }, - "defaultCookieExpiration": { - "format": "google-duration", - "description": "Cookie expiration policy for this application.", - "type": "string" - }, - "codeBucket": { - "description": "Google Cloud Storage bucket that can be used for storing files associated with this application. This bucket is associated with the application and can be used by the gcloud deployment commands.@OutputOnly", - "type": "string" - }, - "location": { - "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", - "type": "string" - } - }, - "id": "Application" - }, - "UrlDispatchRule": { - "description": "Rules to match an HTTP request and dispatch that request to a module.", - "type": "object", - "properties": { - "path": { - "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.", - "type": "string" - }, - "module": { - "description": "Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.", - "type": "string" - }, - "domain": { - "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".", - "type": "string" - } - }, - "id": "UrlDispatchRule" - }, "Instance": { + "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", + "type": "object", "properties": { "requests": { "format": "int32", @@ -1798,10 +2164,6 @@ "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, - "name": { - "description": "Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly", - "type": "string" - }, "vmUnlocked": { "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "boolean" @@ -1810,6 +2172,10 @@ "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, + "name": { + "description": "Full path to the Instance resource in the API. Example: apps/myapp/modules/default/versions/v1/instances/instance-1.@OutputOnly", + "type": "string" + }, "averageLatency": { "format": "int32", "description": "Average latency (ms) over the last minute.@OutputOnly", @@ -1828,10 +2194,6 @@ "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, - "vmStatus": { - "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, "availability": { "enumDescriptions": [ "", @@ -1846,49 +2208,70 @@ "description": "Availability of the instance.@OutputOnly", "type": "string" }, + "vmStatus": { + "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, "errors": { "format": "uint32", "description": "Number of errors since this instance was started.@OutputOnly", "type": "integer" } }, - "id": "Instance", - "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", + "id": "Instance" + }, + "UrlDispatchRule": { + "properties": { + "path": { + "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.", + "type": "string" + }, + "module": { + "description": "Resource ID of a module in this application that should serve the matched request. The module must already exist. Example: default.", + "type": "string" + }, + "domain": { + "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".", + "type": "string" + } + }, + "id": "UrlDispatchRule", + "description": "Rules to match an HTTP request and dispatch that request to a module.", "type": "object" }, "Module": { - "description": "A Module resource is a logical component of an application that can share state and communicate in a secure fashion with other modules. For example, an application that handles customer requests might include separate modules to handle tasks such as backend data analysis or API requests from mobile devices. Each module has a collection of versions that define a specific set of code used to implement the functionality of that module.", - "type": "object", "properties": { + "id": { + "description": "Relative name of the module within the application. Example: default.@OutputOnly", + "type": "string" + }, "name": { "description": "Full path to the Module resource in the API. Example: apps/myapp/modules/default.@OutputOnly", "type": "string" }, "split": { - "$ref": "TrafficSplit", - "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the module." - }, - "id": { - "description": "Relative name of the module within the application. Example: default.@OutputOnly", - "type": "string" + "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the module.", + "$ref": "TrafficSplit" } }, - "id": "Module" + "id": "Module", + "description": "A Module resource is a logical component of an application that can share state and communicate in a secure fashion with other modules. For example, an application that handles customer requests might include separate modules to handle tasks such as backend data analysis or API requests from mobile devices. Each module has a collection of versions that define a specific set of code used to implement the functionality of that module.", + "type": "object" }, "ListVersionsResponse": { "description": "Response message for Versions.ListVersions.", "type": "object", "properties": { + "nextPageToken": { + "description": "Continuation token for fetching the next page of results.", + "type": "string" + }, "versions": { "description": "The versions belonging to the requested module.", "items": { "$ref": "Version" }, "type": "array" - }, - "nextPageToken": { - "description": "Continuation token for fetching the next page of results.", - "type": "string" } }, "id": "ListVersionsResponse" @@ -1904,9 +2287,70 @@ }, "id": "ApiEndpointHandler" }, + "AutomaticScaling": { + "properties": { + "diskUtilization": { + "description": "Target scaling by disk usage.", + "$ref": "DiskUtilization" + }, + "minPendingLatency": { + "format": "google-duration", + "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.", + "type": "string" + }, + "requestUtilization": { + "$ref": "RequestUtilization", + "description": "Target scaling by request utilization." + }, + "maxIdleInstances": { + "format": "int32", + "description": "Maximum number of idle instances that should be maintained for this version.", + "type": "integer" + }, + "minIdleInstances": { + "format": "int32", + "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.", + "type": "integer" + }, + "maxTotalInstances": { + "format": "int32", + "description": "Maximum number of instances that should be started to handle requests.", + "type": "integer" + }, + "minTotalInstances": { + "format": "int32", + "description": "Minimum number of instances that should be maintained for this version.", + "type": "integer" + }, + "networkUtilization": { + "description": "Target scaling by network usage.", + "$ref": "NetworkUtilization" + }, + "coolDownPeriod": { + "format": "google-duration", + "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.", + "type": "string" + }, + "maxConcurrentRequests": { + "format": "int32", + "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.", + "type": "integer" + }, + "maxPendingLatency": { + "format": "google-duration", + "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.", + "type": "string" + }, + "cpuUtilization": { + "description": "Target scaling by CPU usage.", + "$ref": "CpuUtilization" + } + }, + "id": "AutomaticScaling", + "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", + "type": "object" + }, "StaticDirectoryHandler": { - "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files.", - "type": "object", "properties": { "applicationReadable": { "description": "Whether files should also be uploaded as code data. By default, files declared in static directory handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", @@ -1937,450 +2381,9 @@ "type": "string" } }, - "id": "StaticDirectoryHandler" - }, - "AutomaticScaling": { - "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", - "type": "object", - "properties": { - "diskUtilization": { - "$ref": "DiskUtilization", - "description": "Target scaling by disk usage." - }, - "minPendingLatency": { - "format": "google-duration", - "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.", - "type": "string" - }, - "requestUtilization": { - "description": "Target scaling by request utilization.", - "$ref": "RequestUtilization" - }, - "maxIdleInstances": { - "format": "int32", - "description": "Maximum number of idle instances that should be maintained for this version.", - "type": "integer" - }, - "minIdleInstances": { - "format": "int32", - "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.", - "type": "integer" - }, - "maxTotalInstances": { - "format": "int32", - "description": "Maximum number of instances that should be started to handle requests.", - "type": "integer" - }, - "minTotalInstances": { - "format": "int32", - "description": "Minimum number of instances that should be maintained for this version.", - "type": "integer" - }, - "networkUtilization": { - "$ref": "NetworkUtilization", - "description": "Target scaling by network usage." - }, - "coolDownPeriod": { - "format": "google-duration", - "description": "Amount of time that the Autoscaler (https://cloud.google.com/compute/docs/autoscaler/) should wait between changes to the number of virtual machines. Only applicable for VM runtimes.", - "type": "string" - }, - "maxConcurrentRequests": { - "format": "int32", - "description": "Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.Defaults to a runtime-specific value.", - "type": "integer" - }, - "maxPendingLatency": { - "format": "google-duration", - "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.", - "type": "string" - }, - "cpuUtilization": { - "description": "Target scaling by CPU usage.", - "$ref": "CpuUtilization" - } - }, - "id": "AutomaticScaling" - }, - "Location": { - "description": "A resource that represents Google Cloud Platform location.", - "type": "object", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", - "type": "object" - }, - "name": { - "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", - "type": "string" - }, - "locationId": { - "description": "The canonical id for this location. For example: \"us-east1\".", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata. For example the available capacity at the given location.", - "type": "object" - } - }, - "id": "Location" - }, - "NetworkUtilization": { - "description": "Target scaling by network usage. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "targetSentPacketsPerSec": { - "format": "int32", - "description": "Target packets sent per second.", - "type": "integer" - }, - "targetReceivedPacketsPerSec": { - "format": "int32", - "description": "Target packets received per second.", - "type": "integer" - }, - "targetSentBytesPerSec": { - "format": "int32", - "description": "Target bytes sent per second.", - "type": "integer" - }, - "targetReceivedBytesPerSec": { - "format": "int32", - "description": "Target bytes received per second.", - "type": "integer" - } - }, - "id": "NetworkUtilization" - }, - "HealthCheck": { - "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", - "type": "object", - "properties": { - "restartThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before an instance is restarted.", - "type": "integer" - }, - "healthyThreshold": { - "format": "uint32", - "description": "Number of consecutive successful health checks required before receiving traffic.", - "type": "integer" - }, - "checkInterval": { - "format": "google-duration", - "description": "Interval between health checks.", - "type": "string" - }, - "timeout": { - "format": "google-duration", - "description": "Time before the health check is considered failed.", - "type": "string" - }, - "unhealthyThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before removing traffic.", - "type": "integer" - }, - "disableHealthCheck": { - "description": "Whether to explicitly disable health checks for this instance.", - "type": "boolean" - }, - "host": { - "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", - "type": "string" - } - }, - "id": "HealthCheck" - }, - "DebugInstanceRequest": { - "description": "Request message for Instances.DebugInstance.", - "type": "object", - "properties": { - "sshKey": { - "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", - "type": "string" - } - }, - "id": "DebugInstanceRequest" - }, - "SourceReference": { - "description": "Reference to a particular snapshot of the source tree used to build and deploy the application.", - "type": "object", - "properties": { - "repository": { - "description": "URI string identifying the repository. Example: \"https://source.developers.google.com/p/app-123/r/default\"", - "type": "string" - }, - "revisionId": { - "description": "The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): \"2198322f89e0bb2e25021667c2ed489d1fd34e6b\"", - "type": "string" - } - }, - "id": "SourceReference" - }, - "OperationMetadataV1Beta5": { - "description": "Metadata for the given google.longrunning.Operation.", - "type": "object", - "properties": { - "method": { - "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Timestamp that this operation completed.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta5" - }, - "Library": { - "description": "Third-party Python runtime library that is required by the application.", - "type": "object", - "properties": { - "name": { - "description": "Name of the library. Example: \"django\".", - "type": "string" - }, - "version": { - "description": "Version of the library to select, or \"latest\".", - "type": "string" - } - }, - "id": "Library" - }, - "ListLocationsResponse": { - "description": "The response message for Locations.ListLocations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse" - }, - "ContainerInfo": { - "description": "Docker image that is used to create a container and start a VM instance for the version that you deploy. Only applicable for instances running in the App Engine flexible environment.", - "type": "object", - "properties": { - "image": { - "description": "URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest. Examples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"", - "type": "string" - } - }, - "id": "ContainerInfo" - }, - "Version": { - "properties": { - "network": { - "$ref": "Network", - "description": "Extra network settings. Only applicable for VM runtimes." - }, - "betaSettings": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata settings that are supplied to this version to enable beta runtime features.", - "type": "object" - }, - "env": { - "description": "App Engine execution environment to use for this version.Defaults to 1.", - "type": "string" - }, - "handlers": { - "description": "An ordered list of URL-matching patterns that should be applied to incoming requests. The first matching URL handles the request and other request handlers are not attempted.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "UrlMap" - }, - "type": "array" - }, - "deployer": { - "description": "Email address of the user who created this version.@OutputOnly", - "type": "string" - }, - "automaticScaling": { - "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", - "$ref": "AutomaticScaling" - }, - "healthCheck": { - "$ref": "HealthCheck", - "description": "Configures health checking for VM instances. Unhealthy instances are stopped and replaced with new instances. Only applicable for VM runtimes.Only returned in GET requests if view=FULL is set." - }, - "threadsafe": { - "description": "Whether multiple requests can be dispatched to this version at once.", - "type": "boolean" - }, - "manualScaling": { - "description": "A module with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", - "$ref": "ManualScaling" - }, - "name": { - "description": "Full path to the Version resource in the API. Example: apps/myapp/modules/default/versions/v1.@OutputOnly", - "type": "string" - }, - "apiConfig": { - "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.", - "$ref": "ApiConfigHandler" - }, - "vm": { - "description": "Whether to deploy this version in a container on a virtual machine.", - "type": "boolean" - }, - "instanceClass": { - "description": "Instance class that is used to run this version. Valid values are:\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling or BasicScaling: B1, B2, B4, B8, B4_1GDefaults to F1 for AutomaticScaling and B1 for ManualScaling or BasicScaling.", - "type": "string" - }, - "servingStatus": { - "enumDescriptions": [ - "Not specified.", - "Currently serving. Instances are created according to the scaling settings of the version.", - "Disabled. No instances will be created and the scaling settings are ignored until the state of the version changes to SERVING." - ], - "enum": [ - "SERVING_STATUS_UNSPECIFIED", - "SERVING", - "STOPPED" - ], - "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", - "type": "string" - }, - "deployment": { - "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.", - "$ref": "Deployment" - }, - "runtimeApiVersion": { - "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", - "type": "string" - }, - "inboundServices": { - "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", - "items": { - "enum": [ - "INBOUND_SERVICE_UNSPECIFIED", - "INBOUND_SERVICE_MAIL", - "INBOUND_SERVICE_MAIL_BOUNCE", - "INBOUND_SERVICE_XMPP_ERROR", - "INBOUND_SERVICE_XMPP_MESSAGE", - "INBOUND_SERVICE_XMPP_SUBSCRIBE", - "INBOUND_SERVICE_XMPP_PRESENCE", - "INBOUND_SERVICE_CHANNEL_PRESENCE", - "INBOUND_SERVICE_WARMUP" - ], - "type": "string" - }, - "type": "array", - "enumDescriptions": [ - "Not specified.", - "Allows an application to receive mail.", - "Allows an application to receive email-bound notifications.", - "Allows an application to receive error stanzas.", - "Allows an application to receive instant messages.", - "Allows an application to receive user subscription POSTs.", - "Allows an application to receive a user's chat presence.", - "Registers an application for notifications when a client connects or disconnects from a channel.", - "Enables warmup requests." - ] - }, - "resources": { - "$ref": "Resources", - "description": "Machine resources for this version. Only applicable for VM runtimes." - }, - "errorHandlers": { - "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "ErrorHandler" - }, - "type": "array" - }, - "defaultExpiration": { - "format": "google-duration", - "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.", - "type": "string" - }, - "libraries": { - "description": "Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "Library" - }, - "type": "array" - }, - "creationTime": { - "format": "google-datetime", - "description": "Time that this version was created.@OutputOnly", - "type": "string" - }, - "nobuildFilesRegex": { - "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", - "type": "string" - }, - "basicScaling": { - "description": "A module with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", - "$ref": "BasicScaling" - }, - "runtime": { - "description": "Desired runtime. Example: python27.", - "type": "string" - }, - "id": { - "description": "Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", - "type": "string" - }, - "envVariables": { - "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "id": "Version", - "description": "A Version resource is a specific set of source code and configuration files that are deployed into a module.", + "id": "StaticDirectoryHandler", + "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static directory handlers make it easy to serve the entire contents of a directory as static files.", "type": "object" - }, - "RequestUtilization": { - "description": "Target scaling by request utilization. Only applicable for VM runtimes.", - "type": "object", - "properties": { - "targetConcurrentRequests": { - "format": "int32", - "description": "Target number of concurrent requests.", - "type": "integer" - }, - "targetRequestCountPerSec": { - "format": "int32", - "description": "Target requests per second.", - "type": "integer" - } - }, - "id": "RequestUtilization" } }, "protocol": "rest", @@ -2393,14 +2396,14 @@ "auth": { "oauth2": { "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, "https://www.googleapis.com/auth/appengine.admin": { "description": "View and manage your applications deployed on Google App Engine" }, "https://www.googleapis.com/auth/cloud-platform.read-only": { "description": "View your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" } } } @@ -2413,10 +2416,7 @@ "ownerDomain": "google.com", "name": "appengine", "batchPath": "batch", - "revision": "20170824", - "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", + "revision": "20170825", "id": "appengine:v1beta4", - "title": "Google App Engine Admin API", - "discoveryVersion": "v1", - "ownerName": "Google" + "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/" } diff --git a/vendor/google.golang.org/api/appengine/v1beta5/appengine-api.json b/vendor/google.golang.org/api/appengine/v1beta5/appengine-api.json index 804ade1..97e9ac3 100644 --- a/vendor/google.golang.org/api/appengine/v1beta5/appengine-api.json +++ b/vendor/google.golang.org/api/appengine/v1beta5/appengine-api.json @@ -4,24 +4,6 @@ "resources": { "apps": { "methods": { - "create": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Operation" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta5/apps", - "path": "v1beta5/apps", - "id": "appengine.apps.create", - "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).", - "request": { - "$ref": "Application" - } - }, "patch": { "request": { "$ref": "Application" @@ -45,10 +27,10 @@ "required": true }, "mask": { - "location": "query", "format": "google-fieldmask", "description": "Standard field mask for the set of fields to be updated.", - "type": "string" + "type": "string", + "location": "query" } }, "flatPath": "v1beta5/apps/{appsId}", @@ -56,11 +38,14 @@ "path": "v1beta5/apps/{appsId}" }, "get": { + "flatPath": "v1beta5/apps/{appsId}", + "path": "v1beta5/apps/{appsId}", + "id": "appengine.apps.get", "description": "Gets information about an application.", + "httpMethod": "GET", "response": { "$ref": "Application" }, - "httpMethod": "GET", "parameterOrder": [ "appsId" ], @@ -68,89 +53,204 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "ensureResourcesExist": { - "type": "boolean", - "location": "query", - "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API." - }, "appsId": { - "type": "string", - "required": true, "location": "path", - "description": "Part of `name`. Name of the application to get. Example: apps/myapp." + "description": "Part of `name`. Name of the application to get. Example: apps/myapp.", + "type": "string", + "required": true + }, + "ensureResourcesExist": { + "location": "query", + "description": "Certain resources associated with an application are created on-demand. Controls whether these resources should be created when performing the GET operation. If specified and any resources could not be created, the request will fail with an error code. Additionally, this parameter can cause the request to take longer to complete. Note: This parameter will be deprecated in a future version of the API.", + "type": "boolean" } + } + }, + "create": { + "id": "appengine.apps.create", + "path": "v1beta5/apps", + "request": { + "$ref": "Application" }, - "flatPath": "v1beta5/apps/{appsId}", - "id": "appengine.apps.get", - "path": "v1beta5/apps/{appsId}" + "description": "Creates an App Engine application for a Google Cloud Platform project. Required fields:\nid - The ID of the target Cloud Platform project.\nlocation - The region (https://cloud.google.com/appengine/docs/locations) where you want the App Engine application located.For more information about App Engine applications, see Managing Projects, Applications, and Billing (https://cloud.google.com/appengine/docs/python/console/).", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {}, + "flatPath": "v1beta5/apps" } }, "resources": { - "services": { + "operations": { "methods": { - "delete": { - "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" + "get": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId", + "operationsId" ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}", - "path": "v1beta5/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.delete", - "description": "Deletes the specified service and all enclosed versions.", - "httpMethod": "DELETE", "response": { "$ref": "Operation" }, - "parameterOrder": [ - "appsId", - "servicesId" - ] - }, - "patch": { - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.patch", - "path": "v1beta5/apps/{appsId}/services/{servicesId}", - "request": { - "$ref": "Service" - }, - "description": "Updates the configuration of the specified service.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId" - ], - "httpMethod": "PATCH", "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.", + "description": "Part of `name`. The name of the operation resource.", "type": "string", "required": true, "location": "path" }, + "operationsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta5/apps/{appsId}/operations/{operationsId}", + "path": "v1beta5/apps/{appsId}/operations/{operationsId}", + "id": "appengine.apps.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service." + }, + "list": { + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "appsId": { + "description": "Part of `name`. The name of the operation's parent resource.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta5/apps/{appsId}/operations", + "id": "appengine.apps.operations.list", + "path": "v1beta5/apps/{appsId}/operations", + "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id." + } + } + }, + "locations": { + "methods": { + "get": { + "description": "Get information about a location.", + "response": { + "$ref": "Location" + }, + "parameterOrder": [ + "appsId", + "locationsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "appsId": { + "description": "Part of `name`. Resource name for the location.", + "type": "string", + "required": true, + "location": "path" + }, + "locationsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta5/apps/{appsId}/locations/{locationsId}", + "id": "appengine.apps.locations.get", + "path": "v1beta5/apps/{appsId}/locations/{locationsId}" + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "appsId" + ], + "response": { + "$ref": "ListLocationsResponse" + }, + "parameters": { + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. The resource that owns the locations collection, if applicable.", + "type": "string", + "required": true + }, + "pageSize": { + "format": "int32", + "description": "The standard list page size.", + "type": "integer", + "location": "query" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta5/apps/{appsId}/locations", + "path": "v1beta5/apps/{appsId}/locations", + "id": "appengine.apps.locations.list", + "description": "Lists information about the supported locations for this service." + } + } + }, + "services": { + "methods": { + "patch": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { "migrateTraffic": { "location": "query", "description": "Set to true to gradually shift traffic to one or more versions that you specify. By default, traffic is shifted immediately. For gradual traffic migration, the target versions must be located within instances that are configured for both warmup requests (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#inboundservicetype) and automatic scaling (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services.versions#automaticscaling). You must specify the shardBy (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1beta5/apps.services#shardby) field in the Service resource. Gradual traffic migration is not supported in the App Engine flexible environment. For examples, see Migrating and Splitting Traffic (https://cloud.google.com/appengine/docs/admin-api/migrating-splitting-traffic).", @@ -161,32 +261,51 @@ "format": "google-fieldmask", "description": "Standard field mask for the set of fields to be updated.", "type": "string" + }, + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default.", + "type": "string", + "required": true } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}", + "path": "v1beta5/apps/{appsId}/services/{servicesId}", + "id": "appengine.apps.services.patch", + "request": { + "$ref": "Service" + }, + "description": "Updates the configuration of the specified service.", + "httpMethod": "PATCH", + "parameterOrder": [ + "appsId", + "servicesId" + ], + "response": { + "$ref": "Operation" } }, "list": { - "path": "v1beta5/apps/{appsId}/services", - "id": "appengine.apps.services.list", "description": "Lists all the services in the application.", - "httpMethod": "GET", - "parameterOrder": [ - "appsId" - ], "response": { "$ref": "ListServicesResponse" }, + "parameterOrder": [ + "appsId" + ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/appengine.admin", "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" - }, "pageToken": { "location": "query", "description": "Continuation token for fetching the next page of results.", @@ -197,34 +316,40 @@ "description": "Part of `name`. Name of the resource requested. Example: apps/myapp.", "type": "string", "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" } }, - "flatPath": "v1beta5/apps/{appsId}/services" + "flatPath": "v1beta5/apps/{appsId}/services", + "id": "appengine.apps.services.list", + "path": "v1beta5/apps/{appsId}/services" }, "get": { - "path": "v1beta5/apps/{appsId}/services/{servicesId}", - "id": "appengine.apps.services.get", "description": "Gets the current configuration of the specified service.", "httpMethod": "GET", + "response": { + "$ref": "Service" + }, "parameterOrder": [ "appsId", "servicesId" ], - "response": { - "$ref": "Service" - }, "parameters": { + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + "type": "string", + "required": true, + "location": "path" + }, "servicesId": { "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true - }, - "appsId": { - "type": "string", - "required": true, - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default." } }, "scopes": [ @@ -232,46 +357,242 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}" + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}", + "path": "v1beta5/apps/{appsId}/services/{servicesId}", + "id": "appengine.apps.services.get" + }, + "delete": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}", + "id": "appengine.apps.services.delete", + "path": "v1beta5/apps/{appsId}/services/{servicesId}", + "description": "Deletes the specified service and all enclosed versions." } }, "resources": { "versions": { - "methods": { - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "appsId", - "servicesId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "servicesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" + "resources": { + "instances": { + "methods": { + "delete": { + "description": "Stops a running instance.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId", + "instancesId" + ], + "httpMethod": "DELETE", + "parameters": { + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "instancesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1/instances/instance-1\".", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.services.versions.instances.delete", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\".", - "type": "string", - "required": true + "list": { + "response": { + "$ref": "ListInstancesResponse" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "Continuation token for fetching the next page of results." + }, + "appsId": { + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", + "type": "string", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum results to return per page.", + "type": "integer" + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", + "id": "appengine.apps.services.versions.instances.list", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", + "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list)." + }, + "get": { + "description": "Gets instance information.", + "response": { + "$ref": "Instance" + }, + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId", + "instancesId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "instancesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "appsId": { + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", + "type": "string", + "required": true, + "location": "path" + }, + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", + "id": "appengine.apps.services.versions.instances.get", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" + }, + "debug": { + "request": { + "$ref": "DebugInstanceRequest" + }, + "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", + "httpMethod": "POST", + "parameterOrder": [ + "appsId", + "servicesId", + "versionsId", + "instancesId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "versionsId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "servicesId": { + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true, + "location": "path" + }, + "instancesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true + }, + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1." + } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", + "id": "appengine.apps.services.versions.instances.debug" } - }, - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.create", - "request": { - "$ref": "Version" - }, - "description": "Deploys new code and resource files to a new version." - }, + } + } + }, + "methods": { "delete": { "description": "Deletes an existing version.", "response": { @@ -285,10 +606,10 @@ "httpMethod": "DELETE", "parameters": { "versionsId": { - "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path" }, "servicesId": { "location": "path", @@ -297,10 +618,10 @@ "required": true }, "appsId": { - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1." } }, "scopes": [ @@ -311,6 +632,7 @@ "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}" }, "patch": { + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}", "id": "appengine.apps.services.versions.patch", "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}", "request": { @@ -330,12 +652,6 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "appsId": { - "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.", - "type": "string", - "required": true, - "location": "path" - }, "mask": { "format": "google-fieldmask", "description": "Standard field mask for the set of fields to be updated.", @@ -343,21 +659,29 @@ "location": "query" }, "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." }, "servicesId": { "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", "required": true + }, + "appsId": { + "description": "Part of `name`. Name of the resource to update. Example: apps/myapp/services/default/versions/1.", + "type": "string", + "required": true, + "location": "path" } - }, - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}" + } }, "list": { + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions", + "id": "appengine.apps.services.versions.list", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions", "description": "Lists the versions of a service.", "response": { "$ref": "ListVersionsResponse" @@ -367,13 +691,12 @@ "servicesId" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/appengine.admin", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "parameters": { - "servicesId": { - "type": "string", - "required": true, - "location": "path", - "description": "Part of `name`. See documentation of `appsId`." - }, "pageToken": { "location": "query", "description": "Continuation token for fetching the next page of results.", @@ -386,33 +709,29 @@ "location": "path" }, "pageSize": { + "location": "query", "format": "int32", "description": "Maximum results to return per page.", - "type": "integer", - "location": "query" + "type": "integer" }, "view": { + "location": "query", "enum": [ "BASIC", "FULL" ], "description": "Controls the set of fields returned in the List response.", + "type": "string" + }, + "servicesId": { "type": "string", - "location": "query" + "required": true, + "location": "path", + "description": "Part of `name`. See documentation of `appsId`." } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions", - "id": "appengine.apps.services.versions.list", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions" + } }, "get": { - "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource.", - "httpMethod": "GET", "response": { "$ref": "Version" }, @@ -421,6 +740,7 @@ "servicesId", "versionsId" ], + "httpMethod": "GET", "parameters": { "servicesId": { "location": "path", @@ -444,10 +764,10 @@ "type": "string" }, "versionsId": { + "location": "path", "description": "Part of `name`. See documentation of `appsId`.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "scopes": [ @@ -456,372 +776,73 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}", + "id": "appengine.apps.services.versions.get", "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}", - "id": "appengine.apps.services.versions.get" - } - }, - "resources": { - "instances": { - "methods": { - "debug": { - "description": "Enables debugging on a VM instance. This allows you to use the SSH command to connect to the virtual machine where the instance lives. While in \"debug mode\", the instance continues to serve live traffic. You should delete the instance when you are done debugging and then allow the system to take over and determine if another instance should be started.Only applicable for instances in App Engine flexible environment.", - "request": { - "$ref": "DebugInstanceRequest" - }, - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId", - "instancesId" - ], - "httpMethod": "POST", - "parameters": { - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug", - "id": "appengine.apps.services.versions.instances.debug", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}:debug" + "description": "Gets the specified Version resource. By default, only a BASIC_VIEW will be returned. Specify the FULL_VIEW parameter to get the full resource." + }, + "create": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "appsId", + "servicesId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "servicesId": { + "location": "path", + "description": "Part of `name`. See documentation of `appsId`.", + "type": "string", + "required": true }, - "delete": { - "id": "appengine.apps.services.versions.instances.delete", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", - "description": "Stops a running instance.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId", - "instancesId" - ], - "httpMethod": "DELETE", - "parameters": { - "servicesId": { - "type": "string", - "required": true, - "location": "path", - "description": "Part of `name`. See documentation of `appsId`." - }, - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. For example: \"apps/myapp/services/default/versions/v1/instances/instance-1\".", - "type": "string", - "required": true - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" - }, - "list": { - "description": "Lists the instances of a version.Tip: To aggregate details about instances over time, see the Stackdriver Monitoring API (https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).", - "httpMethod": "GET", - "response": { - "$ref": "ListInstancesResponse" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId" - ], - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "servicesId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "Continuation token for fetching the next page of results.", - "type": "string" - }, - "appsId": { - "type": "string", - "required": true, - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum results to return per page.", - "type": "integer" - } - }, - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances", - "id": "appengine.apps.services.versions.instances.list" - }, - "get": { - "description": "Gets instance information.", - "response": { - "$ref": "Instance" - }, - "parameterOrder": [ - "appsId", - "servicesId", - "versionsId", - "instancesId" - ], - "httpMethod": "GET", - "parameters": { - "instancesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - }, - "appsId": { - "location": "path", - "description": "Part of `name`. Name of the resource requested. Example: apps/myapp/services/default/versions/v1/instances/instance-1.", - "type": "string", - "required": true - }, - "versionsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - }, - "servicesId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}", - "id": "appengine.apps.services.versions.instances.get", - "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions/{versionsId}/instances/{instancesId}" + "appsId": { + "type": "string", + "required": true, + "location": "path", + "description": "Part of `name`. Name of the resource to update. For example: \"apps/myapp/services/default\"." } - } + }, + "flatPath": "v1beta5/apps/{appsId}/services/{servicesId}/versions", + "id": "appengine.apps.services.versions.create", + "path": "v1beta5/apps/{appsId}/services/{servicesId}/versions", + "request": { + "$ref": "Version" + }, + "description": "Deploys new code and resource files to a new version." } } } } - }, - "operations": { - "methods": { - "get": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "appsId", - "operationsId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. The name of the operation resource.", - "type": "string", - "required": true - }, - "operationsId": { - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta5/apps/{appsId}/operations/{operationsId}", - "id": "appengine.apps.operations.get", - "path": "v1beta5/apps/{appsId}/operations/{operationsId}", - "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service." - }, - "list": { - "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", - "httpMethod": "GET", - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "appsId": { - "description": "Part of `name`. The name of the operation's parent resource.", - "type": "string", - "required": true, - "location": "path" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - } - }, - "flatPath": "v1beta5/apps/{appsId}/operations", - "path": "v1beta5/apps/{appsId}/operations", - "id": "appengine.apps.operations.list" - } - } - }, - "locations": { - "methods": { - "get": { - "description": "Get information about a location.", - "httpMethod": "GET", - "response": { - "$ref": "Location" - }, - "parameterOrder": [ - "appsId", - "locationsId" - ], - "parameters": { - "appsId": { - "location": "path", - "description": "Part of `name`. Resource name for the location.", - "type": "string", - "required": true - }, - "locationsId": { - "location": "path", - "description": "Part of `name`. See documentation of `appsId`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta5/apps/{appsId}/locations/{locationsId}", - "path": "v1beta5/apps/{appsId}/locations/{locationsId}", - "id": "appengine.apps.locations.get" - }, - "list": { - "response": { - "$ref": "ListLocationsResponse" - }, - "parameterOrder": [ - "appsId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/appengine.admin", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "appsId": { - "description": "Part of `name`. The resource that owns the locations collection, if applicable.", - "type": "string", - "required": true, - "location": "path" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - } - }, - "flatPath": "v1beta5/apps/{appsId}/locations", - "id": "appengine.apps.locations.list", - "path": "v1beta5/apps/{appsId}/locations", - "description": "Lists information about the supported locations for this service." - } - } } } } }, "parameters": { + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, "oauth_token": { "description": "OAuth 2.0 token for the current user.", "type": "string", @@ -833,9 +854,9 @@ "location": "query" }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { "location": "query", @@ -849,16 +870,18 @@ "type": "string" }, "fields": { + "location": "query", "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "description": "JSONP", "type": "string", "location": "query" }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -867,82 +890,33 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" + ] }, "alt": { - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", "default": "json", "enum": [ "json", "media", "proto" ], - "type": "string" - }, - "access_token": { "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], "location": "query", - "description": "OAuth access token." - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" + "description": "Data format for response." } }, "schemas": { - "SourceReference": { - "type": "object", - "properties": { - "repository": { - "description": "URI string identifying the repository. Example: \"https://source.developers.google.com/p/app-123/r/default\"", - "type": "string" - }, - "revisionId": { - "description": "The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): \"2198322f89e0bb2e25021667c2ed489d1fd34e6b\"", - "type": "string" - } - }, - "id": "SourceReference", - "description": "Reference to a particular snapshot of the source tree used to build and deploy the application." - }, - "DebugInstanceRequest": { - "id": "DebugInstanceRequest", - "description": "Request message for Instances.DebugInstance.", - "type": "object", - "properties": { - "sshKey": { - "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", - "type": "string" - } - } - }, "OperationMetadataV1Beta5": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { "method": { - "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly", - "type": "string" + "type": "string", + "description": "API method name that initiated this operation. Example: google.appengine.v1beta5.Version.CreateVersion.@OutputOnly" }, "insertTime": { "format": "google-datetime", @@ -955,8 +929,8 @@ "type": "string" }, "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" + "type": "string", + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly" }, "user": { "description": "User who requested this operation.@OutputOnly", @@ -970,8 +944,8 @@ "type": "object", "properties": { "version": { - "type": "string", - "description": "Version of the library to select, or \"latest\"." + "description": "Version of the library to select, or \"latest\".", + "type": "string" }, "name": { "description": "Name of the library. Example: \"django\".", @@ -992,8 +966,8 @@ "type": "array" }, "nextPageToken": { - "type": "string", - "description": "The standard List next-page token." + "description": "The standard List next-page token.", + "type": "string" } }, "id": "ListLocationsResponse" @@ -1010,98 +984,8 @@ "id": "ContainerInfo" }, "Version": { + "type": "object", "properties": { - "resources": { - "description": "Machine resources for this version. Only applicable for VM runtimes.", - "$ref": "Resources" - }, - "inboundServices": { - "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", - "items": { - "enum": [ - "INBOUND_SERVICE_UNSPECIFIED", - "INBOUND_SERVICE_MAIL", - "INBOUND_SERVICE_MAIL_BOUNCE", - "INBOUND_SERVICE_XMPP_ERROR", - "INBOUND_SERVICE_XMPP_MESSAGE", - "INBOUND_SERVICE_XMPP_SUBSCRIBE", - "INBOUND_SERVICE_XMPP_PRESENCE", - "INBOUND_SERVICE_CHANNEL_PRESENCE", - "INBOUND_SERVICE_WARMUP" - ], - "type": "string" - }, - "type": "array", - "enumDescriptions": [ - "Not specified.", - "Allows an application to receive mail.", - "Allows an application to receive email-bound notifications.", - "Allows an application to receive error stanzas.", - "Allows an application to receive instant messages.", - "Allows an application to receive user subscription POSTs.", - "Allows an application to receive a user's chat presence.", - "Registers an application for notifications when a client connects or disconnects from a channel.", - "Enables warmup requests." - ] - }, - "errorHandlers": { - "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "ErrorHandler" - }, - "type": "array" - }, - "defaultExpiration": { - "type": "string", - "format": "google-duration", - "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set." - }, - "libraries": { - "description": "Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.", - "items": { - "$ref": "Library" - }, - "type": "array" - }, - "creationTime": { - "format": "google-datetime", - "description": "Time that this version was created.@OutputOnly", - "type": "string" - }, - "nobuildFilesRegex": { - "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", - "type": "string" - }, - "basicScaling": { - "$ref": "BasicScaling", - "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity." - }, - "runtime": { - "type": "string", - "description": "Desired runtime. Example: python27." - }, - "id": { - "description": "Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", - "type": "string" - }, - "envVariables": { - "additionalProperties": { - "type": "string" - }, - "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.", - "type": "object" - }, - "network": { - "$ref": "Network", - "description": "Extra network settings. Only applicable for VM runtimes." - }, - "betaSettings": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata settings that are supplied to this version to enable beta runtime features.", - "type": "object" - }, "env": { "description": "App Engine execution environment to use for this version.Defaults to 1.", "type": "string" @@ -1118,8 +1002,8 @@ "type": "string" }, "automaticScaling": { - "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", - "$ref": "AutomaticScaling" + "$ref": "AutomaticScaling", + "description": "Automatic scaling is based on request rate, response latencies, and other application metrics." }, "diskUsageBytes": { "format": "int64", @@ -1135,20 +1019,20 @@ "type": "boolean" }, "manualScaling": { - "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", - "$ref": "ManualScaling" + "$ref": "ManualScaling", + "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time." }, "name": { "description": "Full path to the Version resource in the API. Example: apps/myapp/services/default/versions/v1.@OutputOnly", "type": "string" }, "apiConfig": { - "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set.", - "$ref": "ApiConfigHandler" + "$ref": "ApiConfigHandler", + "description": "Serving configuration for Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/).Only returned in GET requests if view=FULL is set." }, "endpointsApiService": { - "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app.", - "$ref": "EndpointsApiService" + "$ref": "EndpointsApiService", + "description": "Cloud Endpoints configuration.If endpoints_api_service is set, the Cloud Endpoints Extensible Service Proxy will be provided to serve the API implemented by the app." }, "vm": { "description": "Whether to deploy this version in a container on a virtual machine.", @@ -1172,18 +1056,108 @@ "description": "Current serving status of this version. Only the versions with a SERVING status create instances and can be billed.SERVING_STATUS_UNSPECIFIED is an invalid value. Defaults to SERVING.", "type": "string" }, - "deployment": { - "$ref": "Deployment", - "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set." - }, "runtimeApiVersion": { "description": "The version of the API in the given runtime environment. Please see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard/\u003clanguage\u003e/config/appref", "type": "string" + }, + "deployment": { + "description": "Code and application artifacts that make up this version.Only returned in GET requests if view=FULL is set.", + "$ref": "Deployment" + }, + "inboundServices": { + "enumDescriptions": [ + "Not specified.", + "Allows an application to receive mail.", + "Allows an application to receive email-bound notifications.", + "Allows an application to receive error stanzas.", + "Allows an application to receive instant messages.", + "Allows an application to receive user subscription POSTs.", + "Allows an application to receive a user's chat presence.", + "Registers an application for notifications when a client connects or disconnects from a channel.", + "Enables warmup requests." + ], + "description": "Before an application can receive email or XMPP messages, the application must be configured to enable the service.", + "items": { + "enum": [ + "INBOUND_SERVICE_UNSPECIFIED", + "INBOUND_SERVICE_MAIL", + "INBOUND_SERVICE_MAIL_BOUNCE", + "INBOUND_SERVICE_XMPP_ERROR", + "INBOUND_SERVICE_XMPP_MESSAGE", + "INBOUND_SERVICE_XMPP_SUBSCRIBE", + "INBOUND_SERVICE_XMPP_PRESENCE", + "INBOUND_SERVICE_CHANNEL_PRESENCE", + "INBOUND_SERVICE_WARMUP" + ], + "type": "string" + }, + "type": "array" + }, + "resources": { + "description": "Machine resources for this version. Only applicable for VM runtimes.", + "$ref": "Resources" + }, + "errorHandlers": { + "description": "Custom static error pages. Limited to 10KB per page.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "ErrorHandler" + }, + "type": "array" + }, + "defaultExpiration": { + "format": "google-duration", + "description": "Duration that static files should be cached by web proxies and browsers. Only applicable if the corresponding StaticFilesHandler (https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions#staticfileshandler) does not specify its own expiration time.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "libraries": { + "description": "Configuration for third-party Python runtime libraries required by the application.Only returned in GET requests if view=FULL is set.", + "items": { + "$ref": "Library" + }, + "type": "array" + }, + "nobuildFilesRegex": { + "description": "Files that match this pattern will not be built into this version. Only applicable for Go runtimes.Only returned in GET requests if view=FULL is set.", + "type": "string" + }, + "creationTime": { + "format": "google-datetime", + "description": "Time that this version was created.@OutputOnly", + "type": "string" + }, + "basicScaling": { + "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", + "$ref": "BasicScaling" + }, + "runtime": { + "type": "string", + "description": "Desired runtime. Example: python27." + }, + "id": { + "description": "Relative name of the version within the module. Example: v1. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names: \"default\", \"latest\", and any name with the prefix \"ah-\".", + "type": "string" + }, + "envVariables": { + "additionalProperties": { + "type": "string" + }, + "description": "Environment variables made available to the application.Only returned in GET requests if view=FULL is set.", + "type": "object" + }, + "network": { + "$ref": "Network", + "description": "Extra network settings. Only applicable for VM runtimes." + }, + "betaSettings": { + "description": "Metadata settings that are supplied to this version to enable beta runtime features.", + "type": "object", + "additionalProperties": { + "type": "string" + } } }, "id": "Version", - "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service.", - "type": "object" + "description": "A Version resource is a specific set of source code and configuration files that are deployed into a service." }, "RequestUtilization": { "description": "Target scaling by request utilization. Only applicable for VM runtimes.", @@ -1202,9 +1176,81 @@ }, "id": "RequestUtilization" }, - "UrlMap": { - "type": "object", + "EndpointsApiService": { "properties": { + "configId": { + "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"", + "type": "string" + }, + "name": { + "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"", + "type": "string" + } + }, + "id": "EndpointsApiService", + "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).", + "type": "object" + }, + "UrlMap": { + "properties": { + "redirectHttpResponseCode": { + "enum": [ + "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", + "REDIRECT_HTTP_RESPONSE_CODE_301", + "REDIRECT_HTTP_RESPONSE_CODE_302", + "REDIRECT_HTTP_RESPONSE_CODE_303", + "REDIRECT_HTTP_RESPONSE_CODE_307" + ], + "description": "30x code to use when performing redirects for the secure field. Defaults to 302.", + "type": "string", + "enumDescriptions": [ + "Not specified. 302 is assumed.", + "301 Moved Permanently code.", + "302 Moved Temporarily code.", + "303 See Other code.", + "307 Temporary Redirect code." + ] + }, + "securityLevel": { + "enumDescriptions": [ + "Not specified.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", + "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", + "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", + "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." + ], + "enum": [ + "SECURE_UNSPECIFIED", + "SECURE_DEFAULT", + "SECURE_NEVER", + "SECURE_OPTIONAL", + "SECURE_ALWAYS" + ], + "description": "Security (HTTPS) enforcement for this URL.", + "type": "string" + }, + "authFailAction": { + "enum": [ + "AUTH_FAIL_ACTION_UNSPECIFIED", + "AUTH_FAIL_ACTION_REDIRECT", + "AUTH_FAIL_ACTION_UNAUTHORIZED" + ], + "description": "Action to take when users access resources that require authentication. Defaults to redirect.", + "type": "string", + "enumDescriptions": [ + "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", + "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", + "Rejects request with an401 HTTP status code and an error message." + ] + }, + "script": { + "$ref": "ScriptHandler", + "description": "Executes a script to handle the request that matches this URL pattern." + }, + "urlRegex": { + "description": "A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.", + "type": "string" + }, "login": { "enumDescriptions": [ "Not specified. LOGIN_OPTIONAL is assumed.", @@ -1222,126 +1268,20 @@ "type": "string" }, "apiEndpoint": { - "$ref": "ApiEndpointHandler", - "description": "Uses API Endpoints to handle requests." + "description": "Uses API Endpoints to handle requests.", + "$ref": "ApiEndpointHandler" }, "staticFiles": { "$ref": "StaticFilesHandler", "description": "Returns the contents of a file, such as an image, as the response." - }, - "redirectHttpResponseCode": { - "enumDescriptions": [ - "Not specified. 302 is assumed.", - "301 Moved Permanently code.", - "302 Moved Temporarily code.", - "303 See Other code.", - "307 Temporary Redirect code." - ], - "enum": [ - "REDIRECT_HTTP_RESPONSE_CODE_UNSPECIFIED", - "REDIRECT_HTTP_RESPONSE_CODE_301", - "REDIRECT_HTTP_RESPONSE_CODE_302", - "REDIRECT_HTTP_RESPONSE_CODE_303", - "REDIRECT_HTTP_RESPONSE_CODE_307" - ], - "description": "30x code to use when performing redirects for the secure field. Defaults to 302.", - "type": "string" - }, - "securityLevel": { - "description": "Security (HTTPS) enforcement for this URL.", - "type": "string", - "enumDescriptions": [ - "Not specified.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used, and respond accordingly.", - "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", - "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", - "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." - ], - "enum": [ - "SECURE_UNSPECIFIED", - "SECURE_DEFAULT", - "SECURE_NEVER", - "SECURE_OPTIONAL", - "SECURE_ALWAYS" - ] - }, - "authFailAction": { - "type": "string", - "enumDescriptions": [ - "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", - "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", - "Rejects request with an401 HTTP status code and an error message." - ], - "enum": [ - "AUTH_FAIL_ACTION_UNSPECIFIED", - "AUTH_FAIL_ACTION_REDIRECT", - "AUTH_FAIL_ACTION_UNAUTHORIZED" - ], - "description": "Action to take when users access resources that require authentication. Defaults to redirect." - }, - "script": { - "$ref": "ScriptHandler", - "description": "Executes a script to handle the request that matches this URL pattern." - }, - "urlRegex": { - "description": "A URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings. All URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.", - "type": "string" } }, "id": "UrlMap", - "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript." - }, - "EndpointsApiService": { - "description": "Cloud Endpoints (https://cloud.google.com/endpoints) configuration. The Endpoints API Service provides tooling for serving Open API and gRPC endpoints via an NGINX proxy.The fields here refer to the name and configuration id of a \"service\" resource in the Service Management API (https://cloud.google.com/service-management/overview).", - "type": "object", - "properties": { - "configId": { - "description": "Endpoints service configuration id as specified by the Service Management API. For example \"2016-09-19r1\"", - "type": "string" - }, - "name": { - "description": "Endpoints service name which is the name of the \"service\" resource in the Service Management API. For example \"myapi.endpoints.myproject.cloud.goog\"", - "type": "string" - } - }, - "id": "EndpointsApiService" - }, - "Operation": { - "description": "This resource represents a long-running operation that is the result of a network API call.", - "type": "object", - "properties": { - "done": { - "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", - "type": "string" - }, - "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - } - }, - "id": "Operation" + "description": "URL pattern and description of how the URL should be handled. App Engine can handle URLs by executing application code, or by serving static files uploaded with the version, such as images, CSS, or JavaScript.", + "type": "object" }, "ApiConfigHandler": { + "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers.", "type": "object", "properties": { "login": { @@ -1365,13 +1305,6 @@ "type": "string" }, "securityLevel": { - "enum": [ - "SECURE_UNSPECIFIED", - "SECURE_DEFAULT", - "SECURE_NEVER", - "SECURE_OPTIONAL", - "SECURE_ALWAYS" - ], "description": "Security (HTTPS) enforcement for this URL.", "type": "string", "enumDescriptions": [ @@ -1380,9 +1313,18 @@ "Requests for a URL that match this handler that use HTTPS are automatically redirected to the HTTP equivalent URL.", "Both HTTP and HTTPS requests with URLs that match the handler succeed without redirects. The application can examine the request to determine which protocol was used and respond accordingly.", "Requests for a URL that match this handler that do not use HTTPS are automatically redirected to the HTTPS URL with the same path. Query parameters are reserved for the redirect." + ], + "enum": [ + "SECURE_UNSPECIFIED", + "SECURE_DEFAULT", + "SECURE_NEVER", + "SECURE_OPTIONAL", + "SECURE_ALWAYS" ] }, "authFailAction": { + "description": "Action to take when users access resources that require authentication. Defaults to redirect.", + "type": "string", "enumDescriptions": [ "Not specified. AUTH_FAIL_ACTION_REDIRECT is assumed.", "Redirects user to \"accounts.google.com\". The user is redirected back to the application URL after signing in or creating an account.", @@ -1392,28 +1334,68 @@ "AUTH_FAIL_ACTION_UNSPECIFIED", "AUTH_FAIL_ACTION_REDIRECT", "AUTH_FAIL_ACTION_UNAUTHORIZED" - ], - "description": "Action to take when users access resources that require authentication. Defaults to redirect.", - "type": "string" + ] }, "script": { "description": "Path to the script from the application root directory.", "type": "string" } }, - "id": "ApiConfigHandler", - "description": "Google Cloud Endpoints (https://cloud.google.com/appengine/docs/python/endpoints/) configuration for API handlers." + "id": "ApiConfigHandler" }, - "ScriptHandler": { + "Operation": { + "description": "This resource represents a long-running operation that is the result of a network API call.", "type": "object", "properties": { - "scriptPath": { - "description": "Path to the script from the application root directory.", + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "type": "object" } }, - "id": "ScriptHandler", - "description": "Executes a script to handle the request that matches the URL pattern." + "id": "Operation" + }, + "FileInfo": { + "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", + "type": "object", + "properties": { + "sha1Sum": { + "description": "The SHA1 hash of the file, in hex.", + "type": "string" + }, + "mimeType": { + "type": "string", + "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage." + }, + "sourceUrl": { + "type": "string", + "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'." + } + }, + "id": "FileInfo" }, "StaticFilesHandler": { "description": "Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.", @@ -1432,55 +1414,45 @@ "type": "string" }, "requireMatchingFile": { - "type": "boolean", - "description": "Whether this handler should match the request if the file referenced by the handler does not exist." + "description": "Whether this handler should match the request if the file referenced by the handler does not exist.", + "type": "boolean" }, "expiration": { "format": "google-duration", "description": "Time a static file served by this handler should be cached.", "type": "string" }, + "applicationReadable": { + "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", + "type": "boolean" + }, "httpHeaders": { "additionalProperties": { "type": "string" }, "description": "HTTP headers to use for all responses from these URLs.", "type": "object" - }, - "applicationReadable": { - "description": "Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as static data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged against both your code and static data storage resource quotas.", - "type": "boolean" } }, "id": "StaticFilesHandler" }, - "FileInfo": { - "description": "Single source file that is part of the version to be deployed. Each source file that is deployed must be specified separately.", + "ScriptHandler": { + "description": "Executes a script to handle the request that matches the URL pattern.", "type": "object", "properties": { - "sha1Sum": { - "description": "The SHA1 hash of the file, in hex.", + "scriptPath": { + "description": "Path to the script from the application root directory.", "type": "string" - }, - "mimeType": { - "description": "The MIME type of the file.Defaults to the value from Google Cloud Storage.", - "type": "string" - }, - "sourceUrl": { - "type": "string", - "description": "URL source to use to fetch this file. Must be a URL to a resource in Google Cloud Storage in the form 'http(s)://storage.googleapis.com/\u003cbucket\u003e/\u003cobject\u003e'." } }, - "id": "FileInfo" + "id": "ScriptHandler" }, "DiskUtilization": { - "description": "Target scaling by disk usage. Only applicable for VM runtimes.", - "type": "object", "properties": { "targetReadOpsPerSec": { - "type": "integer", "format": "int32", - "description": "Target ops read per second." + "description": "Target ops read per second.", + "type": "integer" }, "targetReadBytesPerSec": { "format": "int32", @@ -1498,16 +1470,16 @@ "type": "integer" } }, - "id": "DiskUtilization" + "id": "DiskUtilization", + "description": "Target scaling by disk usage. Only applicable for VM runtimes.", + "type": "object" }, "BasicScaling": { - "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", - "type": "object", "properties": { "maxInstances": { + "type": "integer", "format": "int32", - "description": "Maximum number of instances to create for this version.", - "type": "integer" + "description": "Maximum number of instances to create for this version." }, "idleTimeout": { "format": "google-duration", @@ -1515,10 +1487,22 @@ "type": "string" } }, - "id": "BasicScaling" + "id": "BasicScaling", + "description": "A service with basic scaling will create an instance when the application receives a request. The instance will be turned down when the app becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.", + "type": "object" }, "OperationMetadataExperimental": { "properties": { + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/customDomains/example.com.@OutputOnly", "type": "string" @@ -1530,16 +1514,6 @@ "method": { "description": "API method that initiated this operation. Example: google.appengine.experimental.CustomDomains.CreateCustomDomain.@OutputOnly", "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" } }, "id": "OperationMetadataExperimental", @@ -1550,21 +1524,20 @@ "description": "Target scaling by CPU usage.", "type": "object", "properties": { + "aggregationWindowLength": { + "type": "string", + "format": "google-duration", + "description": "Period of time over which CPU utilization is calculated." + }, "targetUtilization": { "format": "double", "description": "Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.", "type": "number" - }, - "aggregationWindowLength": { - "format": "google-duration", - "description": "Period of time over which CPU utilization is calculated.", - "type": "string" } }, "id": "CpuUtilization" }, "IdentityAwareProxy": { - "id": "IdentityAwareProxy", "description": "Identity-Aware Proxy", "type": "object", "properties": { @@ -1584,24 +1557,21 @@ "description": "Whether the serving infrastructure will authenticate and authorize all incoming requests.If true, the oauth2_client_id and oauth2_client_secret fields must be non-empty.", "type": "boolean" } - } + }, + "id": "IdentityAwareProxy" }, "Status": { "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", - "type": "string" - }, "details": { "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", "items": { + "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - }, - "type": "object" + } }, "type": "array" }, @@ -1609,11 +1579,28 @@ "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" } }, "id": "Status" }, + "ManualScaling": { + "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", + "type": "object", + "properties": { + "instances": { + "format": "int32", + "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.", + "type": "integer" + } + }, + "id": "ManualScaling" + }, "TrafficSplit": { + "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions.", "type": "object", "properties": { "allocations": { @@ -1639,41 +1626,39 @@ "type": "string" } }, - "id": "TrafficSplit", - "description": "Traffic routing configuration for versions within a single service. Traffic splits define how traffic directed to the service is assigned to versions." - }, - "ManualScaling": { - "description": "A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.", - "type": "object", - "properties": { - "instances": { - "format": "int32", - "description": "Number of instances to assign to the service at the start. This number can later be altered by using the Modules API (https://cloud.google.com/appengine/docs/python/modules/functions) set_num_instances() function.", - "type": "integer" - } - }, - "id": "ManualScaling" + "id": "TrafficSplit" }, "LocationMetadata": { "description": "Metadata for the given google.cloud.location.Location.", "type": "object", "properties": { - "flexibleEnvironmentAvailable": { - "type": "boolean", - "description": "App Engine Flexible Environment is available in the given location.@OutputOnly" - }, "standardEnvironmentAvailable": { "description": "App Engine Standard Environment is available in the given location.@OutputOnly", "type": "boolean" + }, + "flexibleEnvironmentAvailable": { + "description": "App Engine Flexible Environment is available in the given location.@OutputOnly", + "type": "boolean" } }, "id": "LocationMetadata" }, "OperationMetadataV1Beta": { - "id": "OperationMetadataV1Beta", "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { + "user": { + "type": "string", + "description": "User who requested this operation.@OutputOnly" + }, + "target": { + "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "ephemeralMessage": { + "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", + "type": "string" + }, "method": { "description": "API method that initiated this operation. Example: google.appengine.v1beta.Versions.CreateVersion.@OutputOnly", "type": "string" @@ -1683,31 +1668,20 @@ "description": "Time that this operation completed.@OutputOnly", "type": "string" }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", + "type": "string" + }, "warning": { "description": "Durable messages that persist on every operation poll. @OutputOnly", "items": { "type": "string" }, "type": "array" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "user": { - "description": "User who requested this operation.@OutputOnly", - "type": "string" - }, - "target": { - "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", - "type": "string" - }, - "ephemeralMessage": { - "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", - "type": "string" } - } + }, + "id": "OperationMetadataV1Beta" }, "ListServicesResponse": { "description": "Response message for Services.ListServices.", @@ -1731,13 +1705,6 @@ "description": "Code and application artifacts used to deploy a version to App Engine.", "type": "object", "properties": { - "files": { - "type": "object", - "additionalProperties": { - "$ref": "FileInfo" - }, - "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call." - }, "sourceReferences": { "description": "Origin of the source code for this deployment. There can be more than one source reference per version if source code is distributed among multiple repositories.", "items": { @@ -1748,23 +1715,21 @@ "container": { "description": "The Docker image for the container that runs the version. Only applicable for instances running in the App Engine flexible environment.", "$ref": "ContainerInfo" + }, + "files": { + "additionalProperties": { + "$ref": "FileInfo" + }, + "description": "Manifest of the files stored in Google Cloud Storage that are included as part of this version. All files must be readable using the credentials supplied with this call.", + "type": "object" } }, "id": "Deployment" }, "Resources": { + "description": "Machine resources for a version.", "type": "object", "properties": { - "memoryGb": { - "format": "double", - "description": "Memory (GB) needed.", - "type": "number" - }, - "cpu": { - "format": "double", - "description": "Number of CPU cores needed.", - "type": "number" - }, "volumes": { "description": "Volumes mounted within the app container.", "items": { @@ -1776,32 +1741,21 @@ "format": "double", "description": "Disk size (GB) needed.", "type": "number" + }, + "memoryGb": { + "format": "double", + "description": "Memory (GB) needed.", + "type": "number" + }, + "cpu": { + "format": "double", + "description": "Number of CPU cores needed.", + "type": "number" } }, - "id": "Resources", - "description": "Machine resources for a version." - }, - "Service": { - "type": "object", - "properties": { - "id": { - "description": "Relative name of the service within the application. Example: default.@OutputOnly", - "type": "string" - }, - "name": { - "type": "string", - "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly" - }, - "split": { - "$ref": "TrafficSplit", - "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service." - } - }, - "id": "Service", - "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service." + "id": "Resources" }, "Volume": { - "description": "Volumes mounted within the app container. Only applicable for VM runtimes.", "type": "object", "properties": { "volumeType": { @@ -1818,11 +1772,29 @@ "type": "string" } }, - "id": "Volume" + "id": "Volume", + "description": "Volumes mounted within the app container. Only applicable for VM runtimes." + }, + "Service": { + "description": "A Service resource is a logical component of an application that can share state and communicate in a secure fashion with other services. For example, an application that handles customer requests might include separate services to handle other tasks such as API requests from mobile devices or backend data analysis. Each service has a collection of versions that define a specific set of code used to implement the functionality of that service.", + "type": "object", + "properties": { + "name": { + "description": "Full path to the Service resource in the API. Example: apps/myapp/services/default.@OutputOnly", + "type": "string" + }, + "split": { + "description": "Mapping that defines fractional HTTP traffic diversion to different versions within the service.", + "$ref": "TrafficSplit" + }, + "id": { + "description": "Relative name of the service within the application. Example: default.@OutputOnly", + "type": "string" + } + }, + "id": "Service" }, "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", "properties": { "nextPageToken": { "description": "The standard List next-page token.", @@ -1836,20 +1808,27 @@ "type": "array" } }, - "id": "ListOperationsResponse" + "id": "ListOperationsResponse", + "description": "The response message for Operations.ListOperations.", + "type": "object" }, "OperationMetadata": { "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "user": { - "description": "User who requested this operation.@OutputOnly", + "insertTime": { + "format": "google-datetime", + "description": "Timestamp that this operation was created.@OutputOnly", "type": "string" }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/modules/default.@OutputOnly", "type": "string" }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, "method": { "description": "API method that initiated this operation. Example: google.appengine.v1beta4.Version.CreateVersion.@OutputOnly", "type": "string" @@ -1860,90 +1839,46 @@ "type": "string" }, "operationType": { - "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly", - "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Timestamp that this operation was created.@OutputOnly", - "type": "string" + "type": "string", + "description": "Type of this operation. Deprecated, use method field instead. Example: \"create_version\".@OutputOnly" } }, "id": "OperationMetadata" }, "ListInstancesResponse": { + "description": "Response message for Instances.ListInstances.", "type": "object", "properties": { "instances": { - "description": "The instances belonging to the requested version.", "items": { "$ref": "Instance" }, - "type": "array" + "type": "array", + "description": "The instances belonging to the requested version." }, "nextPageToken": { "description": "Continuation token for fetching the next page of results.", "type": "string" } }, - "id": "ListInstancesResponse", - "description": "Response message for Instances.ListInstances." - }, - "ErrorHandler": { - "properties": { - "staticFile": { - "description": "Static file content to be served for this error.", - "type": "string" - }, - "mimeType": { - "description": "MIME type of file. Defaults to text/html.", - "type": "string" - }, - "errorCode": { - "description": "Error condition this handler applies to.", - "type": "string", - "enumDescriptions": [ - "Not specified. ERROR_CODE_DEFAULT is assumed.", - "All other error types.", - "Application has exceeded a resource quota.", - "Client blocked by the application's Denial of Service protection configuration.", - "Deadline reached before the application responds." - ], - "enum": [ - "ERROR_CODE_UNSPECIFIED", - "ERROR_CODE_DEFAULT", - "ERROR_CODE_OVER_QUOTA", - "ERROR_CODE_DOS_API_DENIAL", - "ERROR_CODE_TIMEOUT" - ] - } - }, - "id": "ErrorHandler", - "description": "Custom static error page to be served when an error occurs.", - "type": "object" + "id": "ListInstancesResponse" }, "OperationMetadataV1": { - "id": "OperationMetadataV1", "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "endTime": { - "format": "google-datetime", - "description": "Time that this operation completed.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, "insertTime": { "format": "google-datetime", "description": "Time that this operation was created.@OutputOnly", "type": "string" }, + "warning": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Durable messages that persist on every operation poll. @OutputOnly" + }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", "type": "string" @@ -1959,6 +1894,45 @@ "method": { "description": "API method that initiated this operation. Example: google.appengine.v1.Versions.CreateVersion.@OutputOnly", "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Time that this operation completed.@OutputOnly", + "type": "string" + } + }, + "id": "OperationMetadataV1" + }, + "ErrorHandler": { + "id": "ErrorHandler", + "description": "Custom static error page to be served when an error occurs.", + "type": "object", + "properties": { + "mimeType": { + "description": "MIME type of file. Defaults to text/html.", + "type": "string" + }, + "errorCode": { + "enumDescriptions": [ + "Not specified. ERROR_CODE_DEFAULT is assumed.", + "All other error types.", + "Application has exceeded a resource quota.", + "Client blocked by the application's Denial of Service protection configuration.", + "Deadline reached before the application responds." + ], + "enum": [ + "ERROR_CODE_UNSPECIFIED", + "ERROR_CODE_DEFAULT", + "ERROR_CODE_OVER_QUOTA", + "ERROR_CODE_DOS_API_DENIAL", + "ERROR_CODE_TIMEOUT" + ], + "description": "Error condition this handler applies to.", + "type": "string" + }, + "staticFile": { + "description": "Static file content to be served for this error.", + "type": "string" } } }, @@ -1966,14 +1940,26 @@ "description": "Metadata for the given google.longrunning.Operation.", "type": "object", "properties": { - "user": { - "description": "User who requested this operation.@OutputOnly", + "warning": { + "description": "Durable messages that persist on every operation poll. @OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertTime": { + "format": "google-datetime", + "description": "Time that this operation was created.@OutputOnly", "type": "string" }, "target": { "description": "Name of the resource that this operation is acting on. Example: apps/myapp/services/default.@OutputOnly", "type": "string" }, + "user": { + "description": "User who requested this operation.@OutputOnly", + "type": "string" + }, "ephemeralMessage": { "description": "Ephemeral message that may change every time the operation is polled. @OutputOnly", "type": "string" @@ -1986,18 +1972,6 @@ "format": "google-datetime", "description": "Time that this operation completed.@OutputOnly", "type": "string" - }, - "insertTime": { - "format": "google-datetime", - "description": "Time that this operation was created.@OutputOnly", - "type": "string" - }, - "warning": { - "description": "Durable messages that persist on every operation poll. @OutputOnly", - "items": { - "type": "string" - }, - "type": "array" } }, "id": "OperationMetadataV1Alpha" @@ -2042,8 +2016,8 @@ "type": "string" }, "location": { - "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US", - "type": "string" + "type": "string", + "description": "Location from which this application will be run. Application instances will run out of data centers in the chosen location, which is also where all of the application's end user content is stored.Defaults to us-central.Options are:us-central - Central USeurope-west - Western Europeus-east1 - Eastern US" }, "defaultBucket": { "description": "A Google Cloud Storage bucket that can be used by the application to store content.@OutputOnly", @@ -2053,6 +2027,7 @@ "id": "Application" }, "Network": { + "description": "Extra network settings. Only applicable for VM runtimes.", "type": "object", "properties": { "subnetworkName": { @@ -2060,8 +2035,8 @@ "type": "string" }, "instanceTag": { - "type": "string", - "description": "Tag to apply to the VM instance during creation." + "description": "Tag to apply to the VM instance during creation.", + "type": "string" }, "forwardedPorts": { "description": "List of ports, or port pairs, to forward from the virtual machine to the application container.", @@ -2075,86 +2050,19 @@ "type": "string" } }, - "id": "Network", - "description": "Extra network settings. Only applicable for VM runtimes." - }, - "UrlDispatchRule": { - "description": "Rules to match an HTTP request and dispatch that request to a service.", - "type": "object", - "properties": { - "path": { - "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.", - "type": "string" - }, - "service": { - "description": "Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default.", - "type": "string" - }, - "domain": { - "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".", - "type": "string" - } - }, - "id": "UrlDispatchRule" + "id": "Network" }, "Instance": { "description": "An Instance resource is the computing unit that App Engine uses to automatically scale an application.", "type": "object", "properties": { - "startTimestamp": { - "format": "google-datetime", - "description": "Time that this instance was started.@OutputOnly", + "vmStatus": { + "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", "type": "string" }, - "vmName": { - "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "qps": { - "format": "float", - "description": "Average queries per second (QPS) over the last minute.@OutputOnly", - "type": "number" - }, - "vmId": { - "type": "string", - "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly" - }, - "vmZoneName": { - "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "name": { - "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", - "type": "string" - }, - "vmUnlocked": { - "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "boolean" - }, - "averageLatency": { - "format": "int32", - "description": "Average latency (ms) over the last minute.@OutputOnly", - "type": "integer" - }, - "vmIp": { - "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" - }, - "memoryUsage": { - "format": "int64", - "description": "Total memory in use (bytes).@OutputOnly", - "type": "string" - }, - "id": { - "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly", - "type": "string" - }, - "errors": { - "format": "uint32", - "description": "Number of errors since this instance was started.@OutputOnly", - "type": "integer" - }, "availability": { + "description": "Availability of the instance.@OutputOnly", + "type": "string", "enumDescriptions": [ "", "", @@ -2164,13 +2072,12 @@ "UNSPECIFIED", "RESIDENT", "DYNAMIC" - ], - "description": "Availability of the instance.@OutputOnly", - "type": "string" + ] }, - "vmStatus": { - "description": "Status of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", - "type": "string" + "errors": { + "format": "uint32", + "description": "Number of errors since this instance was started.@OutputOnly", + "type": "integer" }, "requests": { "format": "int32", @@ -2180,10 +2087,77 @@ "appEngineRelease": { "description": "App Engine release this instance is running on.@OutputOnly", "type": "string" + }, + "startTimestamp": { + "format": "google-datetime", + "description": "Time that this instance was started.@OutputOnly", + "type": "string" + }, + "vmName": { + "description": "Name of the virtual machine where this instance lives. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "vmId": { + "description": "Virtual machine ID of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "qps": { + "format": "float", + "description": "Average queries per second (QPS) over the last minute.@OutputOnly", + "type": "number" + }, + "vmUnlocked": { + "description": "Whether this instance is in debug mode. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "boolean" + }, + "name": { + "description": "Full path to the Instance resource in the API. Example: apps/myapp/services/default/versions/v1/instances/instance-1.@OutputOnly", + "type": "string" + }, + "vmZoneName": { + "description": "Zone where the virtual machine is located. Only applicable for instances in App Engine flexible environment.@OutputOnly", + "type": "string" + }, + "averageLatency": { + "format": "int32", + "description": "Average latency (ms) over the last minute.@OutputOnly", + "type": "integer" + }, + "vmIp": { + "type": "string", + "description": "The IP address of this instance. Only applicable for instances in App Engine flexible environment.@OutputOnly" + }, + "memoryUsage": { + "format": "int64", + "description": "Total memory in use (bytes).@OutputOnly", + "type": "string" + }, + "id": { + "description": "Relative name of the instance within the version. Example: instance-1.@OutputOnly", + "type": "string" } }, "id": "Instance" }, + "UrlDispatchRule": { + "id": "UrlDispatchRule", + "description": "Rules to match an HTTP request and dispatch that request to a service.", + "type": "object", + "properties": { + "service": { + "type": "string", + "description": "Resource id of a service in this application that should serve the matched request. The service must already exist. Example: default." + }, + "domain": { + "description": "Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".Defaults to matching all domains: \"*\".", + "type": "string" + }, + "path": { + "description": "Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path. The sum of the lengths of the domain and path may not exceed 100 characters.", + "type": "string" + } + } + }, "ListVersionsResponse": { "properties": { "versions": { @@ -2203,6 +2177,7 @@ "type": "object" }, "ApiEndpointHandler": { + "id": "ApiEndpointHandler", "description": "Uses Google Cloud Endpoints to handle requests.", "type": "object", "properties": { @@ -2210,21 +2185,16 @@ "description": "Path to the script from the application root directory.", "type": "string" } - }, - "id": "ApiEndpointHandler" + } }, "AutomaticScaling": { "description": "Automatic scaling is based on request rate, response latencies, and other application metrics.", "type": "object", "properties": { - "diskUtilization": { - "$ref": "DiskUtilization", - "description": "Target scaling by disk usage." - }, "minPendingLatency": { - "type": "string", "format": "google-duration", - "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it." + "description": "Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.", + "type": "string" }, "requestUtilization": { "description": "Target scaling by request utilization.", @@ -2236,9 +2206,9 @@ "type": "integer" }, "minIdleInstances": { + "type": "integer", "format": "int32", - "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module.", - "type": "integer" + "description": "Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a module." }, "maxTotalInstances": { "format": "int32", @@ -2265,21 +2235,65 @@ "type": "integer" }, "maxPendingLatency": { + "type": "string", "format": "google-duration", - "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.", - "type": "string" + "description": "Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it." }, "cpuUtilization": { "description": "Target scaling by CPU usage.", "$ref": "CpuUtilization" + }, + "diskUtilization": { + "description": "Target scaling by disk usage.", + "$ref": "DiskUtilization" } }, "id": "AutomaticScaling" }, + "Location": { + "description": "A resource that represents Google Cloud Platform location.", + "type": "object", + "properties": { + "metadata": { + "description": "Service-specific metadata. For example the available capacity at the given location.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "labels": { + "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "name": { + "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", + "type": "string" + }, + "locationId": { + "description": "The canonical id for this location. For example: \"us-east1\".", + "type": "string" + } + }, + "id": "Location" + }, "NetworkUtilization": { "description": "Target scaling by network usage. Only applicable for VM runtimes.", "type": "object", "properties": { + "targetReceivedBytesPerSec": { + "format": "int32", + "description": "Target bytes received per second.", + "type": "integer" + }, + "targetSentPacketsPerSec": { + "format": "int32", + "description": "Target packets sent per second.", + "type": "integer" + }, "targetReceivedPacketsPerSec": { "format": "int32", "description": "Target packets received per second.", @@ -2289,75 +2303,14 @@ "format": "int32", "description": "Target bytes sent per second.", "type": "integer" - }, - "targetReceivedBytesPerSec": { - "format": "int32", - "description": "Target bytes received per second.", - "type": "integer" - }, - "targetSentPacketsPerSec": { - "type": "integer", - "format": "int32", - "description": "Target packets sent per second." } }, "id": "NetworkUtilization" }, - "Location": { - "description": "A resource that represents Google Cloud Platform location.", + "HealthCheck": { + "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", "type": "object", "properties": { - "name": { - "description": "Resource name for the location, which may vary between implementations. For example: \"projects/example-project/locations/us-east1\"", - "type": "string" - }, - "locationId": { - "description": "The canonical id for this location. For example: \"us-east1\".", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata. For example the available capacity at the given location.", - "type": "object" - }, - "labels": { - "description": "Cross-service attributes for the location. For example\n{\"cloud.googleapis.com/region\": \"us-east1\"}\n", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - }, - "id": "Location" - }, - "HealthCheck": { - "properties": { - "unhealthyThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before removing traffic.", - "type": "integer" - }, - "disableHealthCheck": { - "description": "Whether to explicitly disable health checks for this instance.", - "type": "boolean" - }, - "host": { - "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", - "type": "string" - }, - "healthyThreshold": { - "format": "uint32", - "description": "Number of consecutive successful health checks required before receiving traffic.", - "type": "integer" - }, - "restartThreshold": { - "format": "uint32", - "description": "Number of consecutive failed health checks required before an instance is restarted.", - "type": "integer" - }, "checkInterval": { "format": "google-duration", "description": "Interval between health checks.", @@ -2367,18 +2320,65 @@ "format": "google-duration", "description": "Time before the health check is considered failed.", "type": "string" + }, + "unhealthyThreshold": { + "type": "integer", + "format": "uint32", + "description": "Number of consecutive failed health checks required before removing traffic." + }, + "disableHealthCheck": { + "description": "Whether to explicitly disable health checks for this instance.", + "type": "boolean" + }, + "host": { + "description": "Host header to send when performing an HTTP health check. Example: \"myapp.appspot.com\"", + "type": "string" + }, + "restartThreshold": { + "type": "integer", + "format": "uint32", + "description": "Number of consecutive failed health checks required before an instance is restarted." + }, + "healthyThreshold": { + "format": "uint32", + "description": "Number of consecutive successful health checks required before receiving traffic.", + "type": "integer" } }, - "id": "HealthCheck", - "description": "Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances. Only applicable for instances in App Engine flexible environment.", + "id": "HealthCheck" + }, + "DebugInstanceRequest": { + "description": "Request message for Instances.DebugInstance.", + "type": "object", + "properties": { + "sshKey": { + "description": "Public SSH key to add to the instance. Examples:\n[USERNAME]:ssh-rsa [KEY_VALUE] [USERNAME]\n[USERNAME]:ssh-rsa [KEY_VALUE] google-ssh {\"userName\":\"[USERNAME]\",\"expireOn\":\"[EXPIRE_TIME]\"}For more information, see Adding and Removing SSH Keys (https://cloud.google.com/compute/docs/instances/adding-removing-ssh-keys).", + "type": "string" + } + }, + "id": "DebugInstanceRequest" + }, + "SourceReference": { + "properties": { + "repository": { + "description": "URI string identifying the repository. Example: \"https://source.developers.google.com/p/app-123/r/default\"", + "type": "string" + }, + "revisionId": { + "type": "string", + "description": "The canonical, persistent identifier of the deployed revision. Aliases that include tags or branch names are not allowed. Example (git): \"2198322f89e0bb2e25021667c2ed489d1fd34e6b\"" + } + }, + "id": "SourceReference", + "description": "Reference to a particular snapshot of the source tree used to build and deploy the application.", "type": "object" } }, + "protocol": "rest", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" }, - "protocol": "rest", "version": "v1beta5", "baseUrl": "https://appengine.googleapis.com/", "auth": { @@ -2405,7 +2405,7 @@ "name": "appengine", "batchPath": "batch", "id": "appengine:v1beta5", - "revision": "20170824", + "revision": "20170825", "documentationLink": "https://cloud.google.com/appengine/docs/admin-api/", "title": "Google App Engine Admin API" } diff --git a/vendor/google.golang.org/api/bigquerydatatransfer/v1/bigquerydatatransfer-api.json b/vendor/google.golang.org/api/bigquerydatatransfer/v1/bigquerydatatransfer-api.json index 9b228b1..ded5d84 100644 --- a/vendor/google.golang.org/api/bigquerydatatransfer/v1/bigquerydatatransfer-api.json +++ b/vendor/google.golang.org/api/bigquerydatatransfer/v1/bigquerydatatransfer-api.json @@ -1,307 +1,1290 @@ { + "title": "BigQuery Data Transfer Service API", + "ownerName": "Google", + "resources": { + "projects": { + "methods": { + "isEnabled": { + "flatPath": "v1/projects/{projectsId}:isEnabled", + "id": "bigquerydatatransfer.projects.isEnabled", + "path": "v1/{+name}:isEnabled", + "request": { + "$ref": "IsEnabledRequest" + }, + "description": "Returns true if data transfer is enabled for a project.", + "response": { + "$ref": "IsEnabledResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "description": "The name of the project resource in the form:\n`projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + } + }, + "setEnabled": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The name of the project resource in the form:\n`projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}:setEnabled", + "path": "v1/{+name}:setEnabled", + "id": "bigquerydatatransfer.projects.setEnabled", + "request": { + "$ref": "SetEnabledRequest" + }, + "description": "Enables or disables data transfer for a project. This\nmethod requires the additional scope of\n'https://www.googleapis.com/auth/cloudplatformprojects'\nto manage the cloud project permissions." + } + }, + "resources": { + "locations": { + "methods": { + "setEnabled": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:setEnabled", + "id": "bigquerydatatransfer.projects.locations.setEnabled", + "path": "v1/{+name}:setEnabled", + "description": "Enables or disables data transfer for a project. This\nmethod requires the additional scope of\n'https://www.googleapis.com/auth/cloudplatformprojects'\nto manage the cloud project permissions.", + "request": { + "$ref": "SetEnabledRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the project resource in the form:\n`projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.get", + "description": "Get information about a location.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Location" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "location": "path", + "description": "Resource name for the location.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$" + } + } + }, + "list": { + "response": { + "$ref": "ListLocationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The resource that owns the locations collection, if applicable." + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + } + }, + "flatPath": "v1/projects/{projectsId}/locations", + "id": "bigquerydatatransfer.projects.locations.list", + "path": "v1/{+name}/locations", + "description": "Lists information about the supported locations for this service." + }, + "isEnabled": { + "description": "Returns true if data transfer is enabled for a project.", + "request": { + "$ref": "IsEnabledRequest" + }, + "response": { + "$ref": "IsEnabledResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path", + "description": "The name of the project resource in the form:\n`projects/{project_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:isEnabled", + "id": "bigquerydatatransfer.projects.locations.isEnabled", + "path": "v1/{+name}:isEnabled" + } + }, + "resources": { + "transferConfigs": { + "methods": { + "create": { + "request": { + "$ref": "TransferConfig" + }, + "description": "Creates a new data transfer configuration.", + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "TransferConfig" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "parent": { + "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + }, + "authorizationCode": { + "location": "query", + "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs", + "path": "v1/{+parent}/transferConfigs", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.create" + }, + "scheduleRuns": { + "id": "bigquerydatatransfer.projects.locations.transferConfigs.scheduleRuns", + "path": "v1/{+parent}:scheduleRuns", + "request": { + "$ref": "ScheduleTransferRunsRequest" + }, + "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range.", + "response": { + "$ref": "ScheduleTransferRunsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}:scheduleRuns" + }, + "get": { + "description": "Returns information about a data transfer config.", + "response": { + "$ref": "TransferConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.get", + "path": "v1/{+name}" + }, + "patch": { + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.patch", + "request": { + "$ref": "TransferConfig" + }, + "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.", + "httpMethod": "PATCH", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "TransferConfig" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "authorizationCode": { + "location": "query", + "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", + "type": "string" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "Required list of fields to be updated in this request.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}" + }, + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.delete", + "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs." + }, + "list": { + "description": "Returns information about all data transfers in the project.", + "response": { + "$ref": "ListTransferConfigsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer" + }, + "dataSourceIds": { + "location": "query", + "description": "When specified, only configurations of requested data sources are returned.", + "type": "string", + "repeated": true + }, + "parent": { + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path", + "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.", + "type": "string", + "required": true + }, + "pageToken": { + "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.list", + "path": "v1/{+parent}/transferConfigs" + } + }, + "resources": { + "runs": { + "methods": { + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.delete", + "description": "Deletes the specified transfer run." + }, + "list": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs", + "path": "v1/{+parent}/runs", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.list", + "description": "Returns information about running and completed jobs.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListTransferRunsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer", + "location": "query" + }, + "statuses": { + "enum": [ + "TRANSFER_STATUS_UNSPECIFIED", + "INACTIVE", + "PENDING", + "RUNNING", + "SUCCEEDED", + "FAILED", + "CANCELLED" + ], + "description": "When specified, only transfer runs with requested statuses are returned.", + "type": "string", + "repeated": true, + "location": "query" + }, + "runAttempt": { + "description": "Indicates how run attempts are to be pulled.", + "type": "string", + "location": "query", + "enum": [ + "RUN_ATTEMPT_UNSPECIFIED", + "LATEST" + ] + }, + "parent": { + "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", + "location": "path" + }, + "pageToken": { + "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string", + "location": "query" + } + } + }, + "get": { + "description": "Returns information about the particular transfer run.", + "httpMethod": "GET", + "response": { + "$ref": "TransferRun" + }, + "parameterOrder": [ + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.get" + } + }, + "resources": { + "transferLogs": { + "methods": { + "list": { + "response": { + "$ref": "ListTransferLogsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer" + }, + "messageTypes": { + "enum": [ + "MESSAGE_SEVERITY_UNSPECIFIED", + "INFO", + "WARNING", + "ERROR" + ], + "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.", + "type": "string", + "repeated": true, + "location": "query" + }, + "parent": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", + "location": "path", + "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}/transferLogs", + "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.transferLogs.list", + "path": "v1/{+parent}/transferLogs", + "description": "Returns user facing log messages for the data transfer run." + } + } + } + } + } + } + }, + "dataSources": { + "methods": { + "list": { + "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.", + "httpMethod": "GET", + "response": { + "$ref": "ListDataSourcesResponse" + }, + "parameterOrder": [ + "parent" + ], + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer" + }, + "parent": { + "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources", + "path": "v1/{+parent}/dataSources", + "id": "bigquerydatatransfer.projects.locations.dataSources.list" + }, + "get": { + "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering.", + "httpMethod": "GET", + "response": { + "$ref": "DataSource" + }, + "parameterOrder": [ + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources/{dataSourcesId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.locations.dataSources.get" + }, + "checkValidCreds": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources/{dataSourcesId}:checkValidCreds", + "id": "bigquerydatatransfer.projects.locations.dataSources.checkValidCreds", + "path": "v1/{+name}:checkValidCreds", + "request": { + "$ref": "CheckValidCredsRequest" + }, + "description": "Returns true if valid credentials exist for the given data source and\nrequesting user.", + "response": { + "$ref": "CheckValidCredsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$", + "location": "path" + } + } + } + } + } + } + }, + "transferConfigs": { + "methods": { + "list": { + "parameters": { + "pageToken": { + "location": "query", + "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer" + }, + "dataSourceIds": { + "repeated": true, + "location": "query", + "description": "When specified, only configurations of requested data sources are returned.", + "type": "string" + }, + "parent": { + "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/transferConfigs", + "id": "bigquerydatatransfer.projects.transferConfigs.list", + "path": "v1/{+parent}/transferConfigs", + "description": "Returns information about all data transfers in the project.", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListTransferConfigsResponse" + }, + "httpMethod": "GET" + }, + "create": { + "response": { + "$ref": "TransferConfig" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "authorizationCode": { + "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", + "type": "string", + "location": "query" + }, + "parent": { + "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/transferConfigs", + "id": "bigquerydatatransfer.projects.transferConfigs.create", + "path": "v1/{+parent}/transferConfigs", + "request": { + "$ref": "TransferConfig" + }, + "description": "Creates a new data transfer configuration." + }, + "scheduleRuns": { + "id": "bigquerydatatransfer.projects.transferConfigs.scheduleRuns", + "path": "v1/{+parent}:scheduleRuns", + "request": { + "$ref": "ScheduleTransferRunsRequest" + }, + "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range.", + "response": { + "$ref": "ScheduleTransferRunsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "parent": { + "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}:scheduleRuns" + }, + "patch": { + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}", + "id": "bigquerydatatransfer.projects.transferConfigs.patch", + "path": "v1/{+name}", + "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.", + "request": { + "$ref": "TransferConfig" + }, + "response": { + "$ref": "TransferConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PATCH", + "parameters": { + "name": { + "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", + "location": "path" + }, + "authorizationCode": { + "location": "query", + "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", + "type": "string" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "Required list of fields to be updated in this request.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "response": { + "$ref": "TransferConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}", + "id": "bigquerydatatransfer.projects.transferConfigs.get", + "path": "v1/{+name}", + "description": "Returns information about a data transfer config." + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}", + "id": "bigquerydatatransfer.projects.transferConfigs.delete", + "path": "v1/{+name}", + "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs." + } + }, + "resources": { + "runs": { + "methods": { + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", + "location": "path", + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", + "id": "bigquerydatatransfer.projects.transferConfigs.runs.delete", + "path": "v1/{+name}", + "description": "Deletes the specified transfer run." + }, + "list": { + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results." + }, + "statuses": { + "repeated": true, + "location": "query", + "enum": [ + "TRANSFER_STATUS_UNSPECIFIED", + "INACTIVE", + "PENDING", + "RUNNING", + "SUCCEEDED", + "FAILED", + "CANCELLED" + ], + "description": "When specified, only transfer runs with requested statuses are returned.", + "type": "string" + }, + "runAttempt": { + "description": "Indicates how run attempts are to be pulled.", + "type": "string", + "location": "query", + "enum": [ + "RUN_ATTEMPT_UNSPECIFIED", + "LATEST" + ] + }, + "parent": { + "location": "path", + "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+$" + }, + "pageToken": { + "location": "query", + "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs", + "path": "v1/{+parent}/runs", + "id": "bigquerydatatransfer.projects.transferConfigs.runs.list", + "description": "Returns information about running and completed jobs.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListTransferRunsResponse" + } + }, + "get": { + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", + "path": "v1/{+name}", + "id": "bigquerydatatransfer.projects.transferConfigs.runs.get", + "description": "Returns information about the particular transfer run.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "TransferRun" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", + "location": "path" + } + } + } + }, + "resources": { + "transferLogs": { + "methods": { + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListTransferLogsResponse" + }, + "parameterOrder": [ + "parent" + ], + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$" + }, + "pageToken": { + "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string", + "location": "query" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results." + }, + "messageTypes": { + "enum": [ + "MESSAGE_SEVERITY_UNSPECIFIED", + "INFO", + "WARNING", + "ERROR" + ], + "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.", + "type": "string", + "repeated": true, + "location": "query" + } + }, + "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}/transferLogs", + "path": "v1/{+parent}/transferLogs", + "id": "bigquerydatatransfer.projects.transferConfigs.runs.transferLogs.list", + "description": "Returns user facing log messages for the data transfer run." + } + } + } + } + } + } + }, + "dataSources": { + "methods": { + "list": { + "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListDataSourcesResponse" + }, + "parameters": { + "pageToken": { + "location": "query", + "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Page size. The default page size is the maximum value of 1000 results.", + "type": "integer", + "location": "query" + }, + "parent": { + "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{projectsId}/dataSources", + "path": "v1/{+parent}/dataSources", + "id": "bigquerydatatransfer.projects.dataSources.list" + }, + "get": { + "flatPath": "v1/projects/{projectsId}/dataSources/{dataSourcesId}", + "id": "bigquerydatatransfer.projects.dataSources.get", + "path": "v1/{+name}", + "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering.", + "response": { + "$ref": "DataSource" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/dataSources/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "checkValidCreds": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "CheckValidCredsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "location": "path", + "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/dataSources/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/dataSources/{dataSourcesId}:checkValidCreds", + "path": "v1/{+name}:checkValidCreds", + "id": "bigquerydatatransfer.projects.dataSources.checkValidCreds", + "request": { + "$ref": "CheckValidCredsRequest" + }, + "description": "Returns true if valid credentials exist for the given data source and\nrequesting user." + } + } + } + } + } + }, + "parameters": { + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "type": "string", + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "type": "string", + "location": "query", + "description": "OAuth bearer token." + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + } + }, + "version": "v1", + "baseUrl": "https://bigquerydatatransfer.googleapis.com/", "servicePath": "", "kind": "discovery#restDescription", "description": "Transfers data from partner SaaS applications to Google BigQuery on a scheduled, managed basis.", "basePath": "", - "revision": "20170825", - "documentationLink": "https://cloud.google.com/bigquery/", "id": "bigquerydatatransfer:v1", + "revision": "20170826", + "documentationLink": "https://cloud.google.com/bigquery/", "discoveryVersion": "v1", "version_module": true, "schemas": { - "ScheduleTransferRunsResponse": { - "properties": { - "createdRuns": { - "description": "The transfer runs that were created.", - "items": { - "$ref": "TransferRun" - }, - "type": "array" - } - }, - "id": "ScheduleTransferRunsResponse", - "description": "A response to schedule transfer runs for a time range.", - "type": "object" - }, - "TransferMessage": { - "properties": { - "messageText": { - "description": "Message text.", - "type": "string" - }, - "severity": { - "enum": [ - "MESSAGE_SEVERITY_UNSPECIFIED", - "INFO", - "WARNING", - "ERROR" - ], - "description": "Message severity.", - "type": "string", - "enumDescriptions": [ - "No severity specified.", - "Informational message.", - "Warning message.", - "Error message." - ] - }, - "messageTime": { - "format": "google-datetime", - "description": "Time when message was logged.", - "type": "string" - } - }, - "id": "TransferMessage", - "description": "Represents a user facing message for a particular data transfer run.", - "type": "object" - }, - "ListTransferLogsResponse": { - "description": "The returned list transfer run messages.", - "type": "object", - "properties": { - "transferMessages": { - "description": "The stored pipeline transfer messages.\n@OutputOnly", - "items": { - "$ref": "TransferMessage" - }, - "type": "array" - }, - "nextPageToken": { - "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`GetTransferRunLogRequest.page_token`\nto request the next page of list results.\n@OutputOnly", - "type": "string" - } - }, - "id": "ListTransferLogsResponse" - }, - "ListDataSourcesResponse": { - "description": "Returns list of supported data sources and their metadata.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListDataSourcesRequest.page_token`\nto request the next page of list results.\n@OutputOnly", - "type": "string" - }, - "dataSources": { - "description": "List of supported data sources and their transfer settings.", - "items": { - "$ref": "DataSource" - }, - "type": "array" - } - }, - "id": "ListDataSourcesResponse" - }, - "DataSourceParameter": { - "description": "Represents a data source parameter with validation rules, so that\nparameters can be rendered in the UI. These parameters are given to us by\nsupported data sources, and include all needed information for rendering\nand validation.\nThus, whoever uses this api can decide to generate either generic ui,\nor custom data source specific forms.", - "type": "object", - "properties": { - "validationDescription": { - "description": "Description of the requirements for this field, in case the user input does\nnot fulfill the regex pattern or min/max values.", - "type": "string" - }, - "immutable": { - "description": "Cannot be changed after initial creation.", - "type": "boolean" - }, - "fields": { - "description": "When parameter is a record, describes child fields.", - "items": { - "$ref": "DataSourceParameter" - }, - "type": "array" - }, - "maxValue": { - "format": "double", - "description": "For integer and double values specifies maxminum allowed value.", - "type": "number" - }, - "type": { - "enum": [ - "TYPE_UNSPECIFIED", - "STRING", - "INTEGER", - "DOUBLE", - "BOOLEAN", - "RECORD", - "PLUS_PAGE" - ], - "description": "Parameter type.", - "type": "string", - "enumDescriptions": [ - "Type unspecified.", - "String parameter.", - "Integer parameter (64-bits).\nWill be serialized to json as string.", - "Double precision floating point parameter.", - "Boolean parameter.", - "Record parameter.", - "Page ID for a Google+ Page." - ] - }, - "recurse": { - "description": "If set to true, schema should be taken from the parent with the same\nparameter_id. Only applicable when parameter type is RECORD.", - "type": "boolean" - }, - "description": { - "description": "Parameter description.", - "type": "string" - }, - "allowedValues": { - "description": "All possible values for the parameter.", - "items": { - "type": "string" - }, - "type": "array" - }, - "minValue": { - "format": "double", - "description": "For integer and double values specifies minimum allowed value.", - "type": "number" - }, - "validationHelpUrl": { - "description": "URL to a help document to further explain the naming requirements.", - "type": "string" - }, - "validationRegex": { - "description": "Regular expression which can be used for parameter validation.", - "type": "string" - }, - "paramId": { - "description": "Parameter identifier.", - "type": "string" - }, - "required": { - "description": "Is parameter required.", - "type": "boolean" - }, - "repeated": { - "description": "Can parameter have multiple values.", - "type": "boolean" - }, - "displayName": { - "description": "Parameter display name in the user interface.", - "type": "string" - } - }, - "id": "DataSourceParameter" - }, - "ListTransferRunsResponse": { - "description": "The returned list of pipelines in the project.", - "type": "object", - "properties": { - "transferRuns": { - "description": "The stored pipeline transfer runs.\n@OutputOnly", - "items": { - "$ref": "TransferRun" - }, - "type": "array" - }, - "nextPageToken": { - "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferRunsRequest.page_token`\nto request the next page of list results.\n@OutputOnly", - "type": "string" - } - }, - "id": "ListTransferRunsResponse" - }, - "ListLocationsResponse": { - "description": "The response message for Locations.ListLocations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse" - }, - "IsEnabledRequest": { - "description": "A request to determine whether data transfer is enabled for the project.", - "type": "object", - "properties": {}, - "id": "IsEnabledRequest" - }, - "ListTransferConfigsResponse": { - "description": "The returned list of pipelines in the project.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferConfigsRequest.page_token`\nto request the next page of list results.\n@OutputOnly", - "type": "string" - }, - "transferConfigs": { - "description": "The stored pipeline transfer configurations.\n@OutputOnly", - "items": { - "$ref": "TransferConfig" - }, - "type": "array" - } - }, - "id": "ListTransferConfigsResponse" - }, - "SetEnabledRequest": { - "properties": { - "enabled": { - "description": "Whether data transfer should be enabled or disabled for the project.", - "type": "boolean" - } - }, - "id": "SetEnabledRequest", - "description": "A request to set whether data transfer is enabled or disabled for a project.", - "type": "object" - }, - "IsEnabledResponse": { - "properties": { - "enabled": { - "description": "Indicates whether the project is enabled.", - "type": "boolean" - } - }, - "id": "IsEnabledResponse", - "description": "A response to indicate whether data transfer is enabled for the project.", - "type": "object" - }, "DataSource": { + "description": "Represents data source metadata. Metadata is sufficient to\nrender UI and request proper OAuth tokens.", + "type": "object", "properties": { - "parameters": { - "description": "Data source parameters.", - "items": { - "$ref": "DataSourceParameter" - }, - "type": "array" - }, - "helpUrl": { - "description": "Url for the help document for this data source.", - "type": "string" - }, - "defaultSchedule": { - "description": "Default data transfer schedule.\nExamples of valid schedules include:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.", - "type": "string" - }, "supportsMultipleTransfers": { "description": "Indicates whether the data source supports multiple transfers\nto different BigQuery targets.", "type": "boolean" }, "statusUpdateDeadlineSeconds": { + "type": "integer", "format": "int32", - "description": "The number of seconds to wait for a status update from the data source\nbefore BigQuery marks the transfer as failed.", - "type": "integer" + "description": "The number of seconds to wait for a status update from the data source\nbefore BigQuery marks the transfer as failed." + }, + "manualRunsDisabled": { + "type": "boolean", + "description": "Disables backfilling and manual run scheduling\nfor the data source." }, "defaultDataRefreshWindowDays": { "format": "int32", "description": "Default data refresh window on days.\nOnly meaningful when `data_refresh_type` = `SLIDING_WINDOW`.", "type": "integer" }, - "manualRunsDisabled": { - "description": "Disables backfilling and manual run scheduling\nfor the data source.", - "type": "boolean" - }, "transferType": { + "type": "string", "enumDescriptions": [ "Invalid or Unknown transfer type placeholder.", "Batch data transfer.", @@ -312,8 +1295,7 @@ "BATCH", "STREAMING" ], - "description": "Transfer type. Currently supports only batch transfers,\nwhich are transfers that use the BigQuery batch APIs (load or\nquery) to ingest the data.", - "type": "string" + "description": "Transfer type. Currently supports only batch transfers,\nwhich are transfers that use the BigQuery batch APIs (load or\nquery) to ingest the data." }, "description": { "description": "User friendly data source description string.", @@ -339,17 +1321,17 @@ "type": "string" }, "authorizationType": { - "enum": [ - "AUTHORIZATION_TYPE_UNSPECIFIED", - "AUTHORIZATION_CODE", - "GOOGLE_PLUS_AUTHORIZATION_CODE" - ], "description": "Indicates the type of authorization.", "type": "string", "enumDescriptions": [ "Type unspecified.", "Use OAuth 2 authorization codes that can be exchanged\nfor a refresh token on the backend.", "Return an authorization code for a given Google+ page that can then be\nexchanged for a refresh token on the backend." + ], + "enum": [ + "AUTHORIZATION_TYPE_UNSPECIFIED", + "AUTHORIZATION_CODE", + "GOOGLE_PLUS_AUTHORIZATION_CODE" ] }, "supportsCustomSchedule": { @@ -373,13 +1355,28 @@ "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Does not allow custom values to be set for each\ntransfer config.", "The data source supports data auto refresh, and runs will be scheduled\nfor the past few days. Allows custom values to be set for each transfer\nconfig." ] + }, + "parameters": { + "items": { + "$ref": "DataSourceParameter" + }, + "type": "array", + "description": "Data source parameters." + }, + "helpUrl": { + "type": "string", + "description": "Url for the help document for this data source." + }, + "defaultSchedule": { + "description": "Default data transfer schedule.\nExamples of valid schedules include:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.", + "type": "string" } }, - "id": "DataSource", - "description": "Represents data source metadata. Metadata is sufficient to\nrender UI and request proper OAuth tokens.", - "type": "object" + "id": "DataSource" }, "ScheduleTransferRunsRequest": { + "description": "A request to schedule transfer runs for a time range.", + "type": "object", "properties": { "rangeStartTime": { "format": "google-datetime", @@ -392,17 +1389,17 @@ "type": "string" } }, - "id": "ScheduleTransferRunsRequest", - "description": "A request to schedule transfer runs for a time range.", - "type": "object" + "id": "ScheduleTransferRunsRequest" }, "Empty": { - "properties": {}, - "id": "Empty", "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object" + "type": "object", + "properties": {}, + "id": "Empty" }, "Location": { + "description": "A resource that represents Google Cloud Platform location.", + "type": "object", "properties": { "labels": { "additionalProperties": { @@ -421,24 +1418,56 @@ }, "metadata": { "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." }, "description": "Service-specific metadata. For example the available capacity at the given\nlocation.", "type": "object" } }, - "id": "Location", - "description": "A resource that represents Google Cloud Platform location.", - "type": "object" + "id": "Location" }, "TransferConfig": { + "description": "Represents a data transfer configuration. A transfer configuration\ncontains all metadata needed to perform a data transfer. For example,\n`destination_dataset_id` specifies where data should be stored.\nWhen a new transfer configuration is created, the specified\n`destination_dataset_id` is created when needed and shared with the\nappropriate data source service account.", + "type": "object", "properties": { + "nextRunTime": { + "format": "google-datetime", + "description": "Next time when data transfer will run. Output only. Applicable\nonly for batch data transfers.\n@OutputOnly", + "type": "string" + }, + "disabled": { + "description": "Is this config disabled. When set to true, no runs are scheduled\nfor a given transfer.", + "type": "boolean" + }, + "updateTime": { + "format": "google-datetime", + "description": "Data transfer modification time. Ignored by server on input.\n@OutputOnly", + "type": "string" + }, + "schedule": { + "type": "string", + "description": "Data transfer schedule.\nIf the data source does not support a custom schedule, this should be\nempty. If it is empty, the default value for the data source will be\nused.\nThe specified times are in UTC.\nExamples of valid format:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.\nSee more explanation about the format here:\nhttps://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format\nNOTE: the granularity should be at least 8 hours, or less frequent." + }, + "dataRefreshWindowDays": { + "format": "int32", + "description": "The number of days to look back to automatically refresh the data.\nFor example, if `data_refresh_window_days = 10`, then every day\nBigQuery reingests data for [today-10, today-1], rather than ingesting data\nfor just [today-1].\nOnly valid if the data source supports the feature. Set the value to 0\nto use the default value.", + "type": "integer" + }, "dataSourceId": { "description": "Data source id. Cannot be changed once data transfer is created.", "type": "string" }, "status": { + "enumDescriptions": [ + "Status placeholder.", + "Data transfer is inactive.", + "Data transfer is scheduled and is waiting to be picked up by\ndata transfer backend.", + "Data transfer is in progress.", + "Data transfer completed successsfully.", + "Data transfer failed.", + "Data transfer is cancelled." + ], "enum": [ "TRANSFER_STATUS_UNSPECIFIED", "INACTIVE", @@ -449,19 +1478,6 @@ "CANCELLED" ], "description": "Status of the most recently updated transfer run.\n@OutputOnly", - "type": "string", - "enumDescriptions": [ - "Status placeholder.", - "Data transfer is inactive.", - "Data transfer is scheduled and is waiting to be picked up by\ndata transfer backend.", - "Data transfer is in progress.", - "Data transfer completed successsfully.", - "Data transfer failed.", - "Data transfer is cancelled." - ] - }, - "name": { - "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", "type": "string" }, "userId": { @@ -469,6 +1485,10 @@ "description": "GaiaID of the user on whose behalf transfer is done. Applicable only\nto data sources that do not support service accounts. When set to 0,\nthe data source service account credentials are used.\n@OutputOnly", "type": "string" }, + "name": { + "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", + "type": "string" + }, "destinationDatasetId": { "description": "The BigQuery target dataset id.", "type": "string" @@ -488,62 +1508,27 @@ "displayName": { "description": "User specified display name for the data transfer.", "type": "string" - }, - "disabled": { - "description": "Is this config disabled. When set to true, no runs are scheduled\nfor a given transfer.", - "type": "boolean" - }, - "nextRunTime": { - "format": "google-datetime", - "description": "Next time when data transfer will run. Output only. Applicable\nonly for batch data transfers.\n@OutputOnly", - "type": "string" - }, - "updateTime": { - "format": "google-datetime", - "description": "Data transfer modification time. Ignored by server on input.\n@OutputOnly", - "type": "string" - }, - "schedule": { - "description": "Data transfer schedule.\nIf the data source does not support a custom schedule, this should be\nempty. If it is empty, the default value for the data source will be\nused.\nThe specified times are in UTC.\nExamples of valid format:\n`1st,3rd monday of month 15:30`,\n`every wed,fri of jan,jun 13:15`, and\n`first sunday of quarter 00:00`.\nSee more explanation about the format here:\nhttps://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format\nNOTE: the granularity should be at least 8 hours, or less frequent.", - "type": "string" - }, - "dataRefreshWindowDays": { - "format": "int32", - "description": "The number of days to look back to automatically refresh the data.\nFor example, if `data_refresh_window_days = 10`, then every day\nBigQuery reingests data for [today-10, today-1], rather than ingesting data\nfor just [today-1].\nOnly valid if the data source supports the feature. Set the value to 0\nto use the default value.", - "type": "integer" } }, - "id": "TransferConfig", - "description": "Represents a data transfer configuration. A transfer configuration\ncontains all metadata needed to perform a data transfer. For example,\n`destination_dataset_id` specifies where data should be stored.\nWhen a new transfer configuration is created, the specified\n`destination_dataset_id` is created when needed and shared with the\nappropriate data source service account.", - "type": "object" + "id": "TransferConfig" }, "TransferRun": { - "description": "Represents a data transfer run.", "type": "object", "properties": { - "datasetRegion": { - "description": "Region in which BigQuery dataset is located. Currently possible values are:\n\"US\" and \"EU\".\n@OutputOnly", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Time when transfer run was started. Parameter ignored by server for input\nrequests.\n@OutputOnly", - "type": "string" - }, "scheduleTime": { "format": "google-datetime", "description": "Minimum time after which a transfer run can be started.", "type": "string" }, + "schedule": { + "description": "Describes the schedule of this transfer run if it was created as part of\na regular schedule. For batch transfer runs that are directly created,\nthis is empty.\nNOTE: the system might choose to delay the schedule depending on the\ncurrent load, so `schedule_time` doesn't always matches this.\n@OutputOnly", + "type": "string" + }, "updateTime": { "format": "google-datetime", "description": "Last time the data transfer run status was updated.\n@OutputOnly", "type": "string" }, - "schedule": { - "description": "Describes the schedule of this transfer run if it was created as part of\na regular schedule. For batch transfer runs that are directly created,\nthis is empty.\nNOTE: the system might choose to delay the schedule depending on the\ncurrent load, so `schedule_time` doesn't always matches this.\n@OutputOnly", - "type": "string" - }, "runTime": { "format": "google-datetime", "description": "For batch transfer runs, specifies the date and time that\ndata should be ingested.", @@ -575,51 +1560,318 @@ "Data transfer is cancelled." ] }, - "userId": { - "format": "int64", - "description": "The user id for this transfer run.\n@OutputOnly", + "destinationDatasetId": { + "description": "The BigQuery target dataset id.", "type": "string" }, "name": { "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/locations/{location}/transferConfigs/{config_id}/runs/{run_id}`.\nThe name is ignored when creating a transfer run.", "type": "string" }, - "destinationDatasetId": { - "description": "The BigQuery target dataset id.", + "userId": { + "format": "int64", + "description": "The user id for this transfer run.\n@OutputOnly", "type": "string" }, "params": { + "description": "Data transfer specific parameters.", + "type": "object", "additionalProperties": { "description": "Properties of the object.", "type": "any" - }, - "description": "Data transfer specific parameters.", - "type": "object" + } }, "endTime": { "format": "google-datetime", "description": "Time when transfer run ended. Parameter ignored by server for input\nrequests.\n@OutputOnly", "type": "string" + }, + "datasetRegion": { + "description": "Region in which BigQuery dataset is located. Currently possible values are:\n\"US\" and \"EU\".\n@OutputOnly", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Time when transfer run was started. Parameter ignored by server for input\nrequests.\n@OutputOnly", + "type": "string" } }, - "id": "TransferRun" + "id": "TransferRun", + "description": "Represents a data transfer run." }, "CheckValidCredsRequest": { - "properties": {}, - "id": "CheckValidCredsRequest", "description": "A request to determine whether the user has valid credentials. This method\nis used to limit the number of OAuth popups in the user interface. The\nuser id is inferred from the API call context.\nIf the data source has the Google+ authorization type, this method\nreturns false, as it cannot be determined whether the credentials are\nalready valid merely based on the user id.", - "type": "object" + "type": "object", + "properties": {}, + "id": "CheckValidCredsRequest" }, "CheckValidCredsResponse": { + "description": "A response indicating whether the credentials exist and are valid.", + "type": "object", "properties": { "hasValidCreds": { "description": "If set to `true`, the credentials exist and are valid.", "type": "boolean" } }, - "id": "CheckValidCredsResponse", - "description": "A response indicating whether the credentials exist and are valid.", - "type": "object" + "id": "CheckValidCredsResponse" + }, + "ScheduleTransferRunsResponse": { + "description": "A response to schedule transfer runs for a time range.", + "type": "object", + "properties": { + "createdRuns": { + "description": "The transfer runs that were created.", + "items": { + "$ref": "TransferRun" + }, + "type": "array" + } + }, + "id": "ScheduleTransferRunsResponse" + }, + "ListTransferLogsResponse": { + "description": "The returned list transfer run messages.", + "type": "object", + "properties": { + "transferMessages": { + "description": "The stored pipeline transfer messages.\n@OutputOnly", + "items": { + "$ref": "TransferMessage" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`GetTransferRunLogRequest.page_token`\nto request the next page of list results.\n@OutputOnly", + "type": "string" + } + }, + "id": "ListTransferLogsResponse" + }, + "TransferMessage": { + "description": "Represents a user facing message for a particular data transfer run.", + "type": "object", + "properties": { + "messageText": { + "description": "Message text.", + "type": "string" + }, + "severity": { + "enumDescriptions": [ + "No severity specified.", + "Informational message.", + "Warning message.", + "Error message." + ], + "enum": [ + "MESSAGE_SEVERITY_UNSPECIFIED", + "INFO", + "WARNING", + "ERROR" + ], + "description": "Message severity.", + "type": "string" + }, + "messageTime": { + "format": "google-datetime", + "description": "Time when message was logged.", + "type": "string" + } + }, + "id": "TransferMessage" + }, + "ListDataSourcesResponse": { + "description": "Returns list of supported data sources and their metadata.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListDataSourcesRequest.page_token`\nto request the next page of list results.\n@OutputOnly", + "type": "string" + }, + "dataSources": { + "description": "List of supported data sources and their transfer settings.", + "items": { + "$ref": "DataSource" + }, + "type": "array" + } + }, + "id": "ListDataSourcesResponse" + }, + "DataSourceParameter": { + "description": "Represents a data source parameter with validation rules, so that\nparameters can be rendered in the UI. These parameters are given to us by\nsupported data sources, and include all needed information for rendering\nand validation.\nThus, whoever uses this api can decide to generate either generic ui,\nor custom data source specific forms.", + "type": "object", + "properties": { + "type": { + "enumDescriptions": [ + "Type unspecified.", + "String parameter.", + "Integer parameter (64-bits).\nWill be serialized to json as string.", + "Double precision floating point parameter.", + "Boolean parameter.", + "Record parameter.", + "Page ID for a Google+ Page." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "STRING", + "INTEGER", + "DOUBLE", + "BOOLEAN", + "RECORD", + "PLUS_PAGE" + ], + "description": "Parameter type.", + "type": "string" + }, + "recurse": { + "description": "If set to true, schema should be taken from the parent with the same\nparameter_id. Only applicable when parameter type is RECORD.", + "type": "boolean" + }, + "description": { + "type": "string", + "description": "Parameter description." + }, + "allowedValues": { + "description": "All possible values for the parameter.", + "items": { + "type": "string" + }, + "type": "array" + }, + "minValue": { + "format": "double", + "description": "For integer and double values specifies minimum allowed value.", + "type": "number" + }, + "validationHelpUrl": { + "description": "URL to a help document to further explain the naming requirements.", + "type": "string" + }, + "validationRegex": { + "description": "Regular expression which can be used for parameter validation.", + "type": "string" + }, + "paramId": { + "description": "Parameter identifier.", + "type": "string" + }, + "required": { + "type": "boolean", + "description": "Is parameter required." + }, + "repeated": { + "description": "Can parameter have multiple values.", + "type": "boolean" + }, + "displayName": { + "type": "string", + "description": "Parameter display name in the user interface." + }, + "immutable": { + "description": "Cannot be changed after initial creation.", + "type": "boolean" + }, + "validationDescription": { + "description": "Description of the requirements for this field, in case the user input does\nnot fulfill the regex pattern or min/max values.", + "type": "string" + }, + "fields": { + "description": "When parameter is a record, describes child fields.", + "items": { + "$ref": "DataSourceParameter" + }, + "type": "array" + }, + "maxValue": { + "format": "double", + "description": "For integer and double values specifies maxminum allowed value.", + "type": "number" + } + }, + "id": "DataSourceParameter" + }, + "ListTransferRunsResponse": { + "description": "The returned list of pipelines in the project.", + "type": "object", + "properties": { + "transferRuns": { + "description": "The stored pipeline transfer runs.\n@OutputOnly", + "items": { + "$ref": "TransferRun" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferRunsRequest.page_token`\nto request the next page of list results.\n@OutputOnly", + "type": "string" + } + }, + "id": "ListTransferRunsResponse" + }, + "ListLocationsResponse": { + "id": "ListLocationsResponse", + "description": "The response message for Locations.ListLocations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + } + } + }, + "IsEnabledRequest": { + "description": "A request to determine whether data transfer is enabled for the project.", + "type": "object", + "properties": {}, + "id": "IsEnabledRequest" + }, + "SetEnabledRequest": { + "description": "A request to set whether data transfer is enabled or disabled for a project.", + "type": "object", + "properties": { + "enabled": { + "description": "Whether data transfer should be enabled or disabled for the project.", + "type": "boolean" + } + }, + "id": "SetEnabledRequest" + }, + "ListTransferConfigsResponse": { + "type": "object", + "properties": { + "transferConfigs": { + "description": "The stored pipeline transfer configurations.\n@OutputOnly", + "items": { + "$ref": "TransferConfig" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The next-pagination token. For multiple-page list results,\nthis token can be used as the\n`ListTransferConfigsRequest.page_token`\nto request the next page of list results.\n@OutputOnly", + "type": "string" + } + }, + "id": "ListTransferConfigsResponse", + "description": "The returned list of pipelines in the project." + }, + "IsEnabledResponse": { + "description": "A response to indicate whether data transfer is enabled for the project.", + "type": "object", + "properties": { + "enabled": { + "description": "Indicates whether the project is enabled.", + "type": "boolean" + } + }, + "id": "IsEnabledResponse" } }, "protocol": "rest", @@ -646,1257 +1898,5 @@ "rootUrl": "https://bigquerydatatransfer.googleapis.com/", "ownerDomain": "google.com", "name": "bigquerydatatransfer", - "batchPath": "batch", - "title": "BigQuery Data Transfer Service API", - "ownerName": "Google", - "resources": { - "projects": { - "resources": { - "locations": { - "resources": { - "transferConfigs": { - "resources": { - "runs": { - "resources": { - "transferLogs": { - "methods": { - "list": { - "path": "v1/{+parent}/transferLogs", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.transferLogs.list", - "description": "Returns user facing log messages for the data transfer run.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListTransferLogsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer" - }, - "messageTypes": { - "repeated": true, - "location": "query", - "enum": [ - "MESSAGE_SEVERITY_UNSPECIFIED", - "INFO", - "WARNING", - "ERROR" - ], - "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.", - "type": "string" - }, - "parent": { - "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}/transferLogs" - } - } - } - }, - "methods": { - "delete": { - "description": "Deletes the specified transfer run.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.delete", - "path": "v1/{+name}" - }, - "list": { - "path": "v1/{+parent}/runs", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.list", - "description": "Returns information about running and completed jobs.", - "httpMethod": "GET", - "response": { - "$ref": "ListTransferRunsResponse" - }, - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "pageToken": { - "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer" - }, - "statuses": { - "enum": [ - "TRANSFER_STATUS_UNSPECIFIED", - "INACTIVE", - "PENDING", - "RUNNING", - "SUCCEEDED", - "FAILED", - "CANCELLED" - ], - "description": "When specified, only transfer runs with requested statuses are returned.", - "type": "string", - "repeated": true, - "location": "query" - }, - "runAttempt": { - "location": "query", - "enum": [ - "RUN_ATTEMPT_UNSPECIFIED", - "LATEST" - ], - "description": "Indicates how run attempts are to be pulled.", - "type": "string" - }, - "parent": { - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", - "location": "path", - "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs" - }, - "get": { - "httpMethod": "GET", - "response": { - "$ref": "TransferRun" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.runs.get", - "description": "Returns information about the particular transfer run." - } - } - } - }, - "methods": { - "create": { - "response": { - "$ref": "TransferConfig" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path" - }, - "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.create", - "path": "v1/{+parent}/transferConfigs", - "request": { - "$ref": "TransferConfig" - }, - "description": "Creates a new data transfer configuration." - }, - "scheduleRuns": { - "response": { - "$ref": "ScheduleTransferRunsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}:scheduleRuns", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.scheduleRuns", - "path": "v1/{+parent}:scheduleRuns", - "request": { - "$ref": "ScheduleTransferRunsRequest" - }, - "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range." - }, - "patch": { - "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.", - "request": { - "$ref": "TransferConfig" - }, - "response": { - "$ref": "TransferConfig" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PATCH", - "parameters": { - "name": { - "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", - "location": "path" - }, - "authorizationCode": { - "location": "query", - "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", - "type": "string" - }, - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Required list of fields to be updated in this request.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.patch", - "path": "v1/{+name}" - }, - "get": { - "description": "Returns information about a data transfer config.", - "httpMethod": "GET", - "response": { - "$ref": "TransferConfig" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.get" - }, - "delete": { - "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/transferConfigs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs/{transferConfigsId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.delete" - }, - "list": { - "response": { - "$ref": "ListTransferConfigsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "dataSourceIds": { - "description": "When specified, only configurations of requested data sources are returned.", - "type": "string", - "repeated": true, - "location": "query" - }, - "parent": { - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path", - "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/transferConfigs", - "id": "bigquerydatatransfer.projects.locations.transferConfigs.list", - "path": "v1/{+parent}/transferConfigs", - "description": "Returns information about all data transfers in the project." - } - } - }, - "dataSources": { - "methods": { - "list": { - "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.", - "response": { - "$ref": "ListDataSourcesResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "parent": { - "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources", - "id": "bigquerydatatransfer.projects.locations.dataSources.list", - "path": "v1/{+parent}/dataSources" - }, - "get": { - "response": { - "$ref": "DataSource" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources/{dataSourcesId}", - "id": "bigquerydatatransfer.projects.locations.dataSources.get", - "path": "v1/{+name}", - "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering." - }, - "checkValidCreds": { - "response": { - "$ref": "CheckValidCredsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/dataSources/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/dataSources/{dataSourcesId}:checkValidCreds", - "id": "bigquerydatatransfer.projects.locations.dataSources.checkValidCreds", - "path": "v1/{+name}:checkValidCreds", - "request": { - "$ref": "CheckValidCredsRequest" - }, - "description": "Returns true if valid credentials exist for the given data source and\nrequesting user." - } - } - } - }, - "methods": { - "setEnabled": { - "request": { - "$ref": "SetEnabledRequest" - }, - "description": "Enables or disables data transfer for a project. This\nmethod requires the additional scope of\n'https://www.googleapis.com/auth/cloudplatformprojects'\nto manage the cloud project permissions.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path", - "description": "The name of the project resource in the form:\n`projects/{project_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:setEnabled", - "id": "bigquerydatatransfer.projects.locations.setEnabled", - "path": "v1/{+name}:setEnabled" - }, - "get": { - "response": { - "$ref": "Location" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "description": "Resource name for the location.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}", - "id": "bigquerydatatransfer.projects.locations.get", - "path": "v1/{+name}", - "description": "Get information about a location." - }, - "list": { - "response": { - "$ref": "ListLocationsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The resource that owns the locations collection, if applicable.", - "type": "string", - "required": true - }, - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/locations", - "id": "bigquerydatatransfer.projects.locations.list", - "path": "v1/{+name}/locations", - "description": "Lists information about the supported locations for this service." - }, - "isEnabled": { - "response": { - "$ref": "IsEnabledResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "description": "The name of the project resource in the form:\n`projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:isEnabled", - "id": "bigquerydatatransfer.projects.locations.isEnabled", - "path": "v1/{+name}:isEnabled", - "request": { - "$ref": "IsEnabledRequest" - }, - "description": "Returns true if data transfer is enabled for a project." - } - } - }, - "transferConfigs": { - "resources": { - "runs": { - "resources": { - "transferLogs": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListTransferLogsResponse" - }, - "parameterOrder": [ - "parent" - ], - "parameters": { - "parent": { - "description": "Transfer run name in the form:\n`projects/{project_id}/transferConfigs/{config_Id}/runs/{run_id}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "Pagination token, which can be used to request a specific page\nof `ListTransferLogsRequest` list results. For multiple-page\nresults, `ListTransferLogsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer" - }, - "messageTypes": { - "enum": [ - "MESSAGE_SEVERITY_UNSPECIFIED", - "INFO", - "WARNING", - "ERROR" - ], - "description": "Message types to return. If not populated - INFO, WARNING and ERROR\nmessages are returned.", - "type": "string", - "repeated": true, - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}/transferLogs", - "path": "v1/{+parent}/transferLogs", - "id": "bigquerydatatransfer.projects.transferConfigs.runs.transferLogs.list", - "description": "Returns user facing log messages for the data transfer run." - } - } - } - }, - "methods": { - "delete": { - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.transferConfigs.runs.delete", - "description": "Deletes the specified transfer run." - }, - "list": { - "response": { - "$ref": "ListTransferRunsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "Pagination token, which can be used to request a specific page\nof `ListTransferRunsRequest` list results. For multiple-page\nresults, `ListTransferRunsResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer", - "location": "query" - }, - "statuses": { - "repeated": true, - "location": "query", - "enum": [ - "TRANSFER_STATUS_UNSPECIFIED", - "INACTIVE", - "PENDING", - "RUNNING", - "SUCCEEDED", - "FAILED", - "CANCELLED" - ], - "description": "When specified, only transfer runs with requested statuses are returned.", - "type": "string" - }, - "runAttempt": { - "enum": [ - "RUN_ATTEMPT_UNSPECIFIED", - "LATEST" - ], - "description": "Indicates how run attempts are to be pulled.", - "type": "string", - "location": "query" - }, - "parent": { - "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", - "location": "path", - "description": "Name of transfer configuration for which transfer runs should be retrieved.\nFormat of transfer configuration resource name is:\n`projects/{project_id}/transferConfigs/{config_id}`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs", - "id": "bigquerydatatransfer.projects.transferConfigs.runs.list", - "path": "v1/{+parent}/runs", - "description": "Returns information about running and completed jobs." - }, - "get": { - "description": "Returns information about the particular transfer run.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "TransferRun" - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}/runs/{run_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/transferConfigs/[^/]+/runs/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}/runs/{runsId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.transferConfigs.runs.get" - } - } - } - }, - "methods": { - "delete": { - "description": "Deletes a data transfer configuration,\nincluding any associated transfer runs and logs.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}", - "id": "bigquerydatatransfer.projects.transferConfigs.delete", - "path": "v1/{+name}" - }, - "list": { - "response": { - "$ref": "ListTransferConfigsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "dataSourceIds": { - "repeated": true, - "location": "query", - "description": "When specified, only configurations of requested data sources are returned.", - "type": "string" - }, - "parent": { - "description": "The BigQuery project id for which data sources\nshould be returned: `projects/{project_id}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "Pagination token, which can be used to request a specific page\nof `ListTransfersRequest` list results. For multiple-page\nresults, `ListTransfersResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/transferConfigs", - "id": "bigquerydatatransfer.projects.transferConfigs.list", - "path": "v1/{+parent}/transferConfigs", - "description": "Returns information about all data transfers in the project." - }, - "create": { - "response": { - "$ref": "TransferConfig" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nThis is required if new credentials are needed, as indicated by\n`CheckValidCreds`.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", - "type": "string", - "location": "query" - }, - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The BigQuery project id where the transfer configuration should be created.\nMust be in the format /projects/{project_id}/locations/{location_id}\nor\n/projects/{project_id}/locations/-\nIn case when '-' is specified as location_id, location is infered from\nthe destination dataset region.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/transferConfigs", - "id": "bigquerydatatransfer.projects.transferConfigs.create", - "path": "v1/{+parent}/transferConfigs", - "request": { - "$ref": "TransferConfig" - }, - "description": "Creates a new data transfer configuration." - }, - "scheduleRuns": { - "response": { - "$ref": "ScheduleTransferRunsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", - "location": "path", - "description": "Transfer configuration name in the form:\n`projects/{project_id}/transferConfigs/{config_id}`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}:scheduleRuns", - "id": "bigquerydatatransfer.projects.transferConfigs.scheduleRuns", - "path": "v1/{+parent}:scheduleRuns", - "request": { - "$ref": "ScheduleTransferRunsRequest" - }, - "description": "Creates transfer runs for a time range [range_start_time, range_end_time].\nFor each date - or whatever granularity the data source supports - in the\nrange, one transfer run is created.\nNote that runs are created per UTC time in the time range." - }, - "patch": { - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.transferConfigs.patch", - "description": "Updates a data transfer configuration.\nAll fields must be set, even if they are not updated.", - "request": { - "$ref": "TransferConfig" - }, - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "TransferConfig" - }, - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Required list of fields to be updated in this request.", - "type": "string" - }, - "name": { - "description": "The resource name of the transfer run.\nTransfer run names have the form\n`projects/{project_id}/transferConfigs/{config_id}`.\nWhere `config_id` is usually a uuid, even though it is not\nguaranteed or required. The name is ignored when creating a transfer run.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", - "location": "path" - }, - "authorizationCode": { - "location": "query", - "description": "Optional OAuth2 authorization code to use with this transfer configuration.\nIf it is provided, the transfer configuration will be associated with the\ngaia id of the authorizing user.\nIn order to obtain authorization_code, please make a\nrequest to\nhttps://www.gstatic.com/bigquerydatatransfer/oauthz/auth?client_id=\u003cdatatransferapiclientid\u003e&scope=\u003cdata_source_scopes\u003e&redirect_uri=\u003credirect_uri\u003e\n\n* client_id should be OAuth client_id of BigQuery DTS API for the given\n data source returned by ListDataSources method.\n* data_source_scopes are the scopes returned by ListDataSources method.\n* redirect_uri is an optional parameter. If not specified, then\n authorization code is posted to the opener of authorization flow window.\n Otherwise it will be sent to the redirect uri. A special value of\n urn:ietf:wg:oauth:2.0:oob means that authorization code should be\n returned in the title bar of the browser, with the page text prompting\n the user to copy the code and paste it in the application.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}" - }, - "get": { - "response": { - "$ref": "TransferConfig" - }, - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/transferConfigs/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/transferConfigs/{config_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/transferConfigs/{transferConfigsId}", - "id": "bigquerydatatransfer.projects.transferConfigs.get", - "path": "v1/{+name}", - "description": "Returns information about a data transfer config." - } - } - }, - "dataSources": { - "methods": { - "list": { - "id": "bigquerydatatransfer.projects.dataSources.list", - "path": "v1/{+parent}/dataSources", - "description": "Lists supported data sources and returns their settings,\nwhich can be used for UI rendering.", - "response": { - "$ref": "ListDataSourcesResponse" - }, - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "parent": { - "description": "The BigQuery project id for which data sources should be returned.\nMust be in the form: `projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "Pagination token, which can be used to request a specific page\nof `ListDataSourcesRequest` list results. For multiple-page\nresults, `ListDataSourcesResponse` outputs\na `next_page` token, which can be used as the\n`page_token` value to request the next page of list results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Page size. The default page size is the maximum value of 1000 results.", - "type": "integer", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/dataSources" - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "DataSource" - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/dataSources/[^/]+$", - "location": "path", - "description": "The field will contain name of the resource requested, for example:\n`projects/{project_id}/dataSources/{data_source_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/dataSources/{dataSourcesId}", - "path": "v1/{+name}", - "id": "bigquerydatatransfer.projects.dataSources.get", - "description": "Retrieves a supported data source and returns its settings,\nwhich can be used for UI rendering." - }, - "checkValidCreds": { - "description": "Returns true if valid credentials exist for the given data source and\nrequesting user.", - "request": { - "$ref": "CheckValidCredsRequest" - }, - "response": { - "$ref": "CheckValidCredsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "description": "The data source in the form:\n`projects/{project_id}/dataSources/{data_source_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/dataSources/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}/dataSources/{dataSourcesId}:checkValidCreds", - "id": "bigquerydatatransfer.projects.dataSources.checkValidCreds", - "path": "v1/{+name}:checkValidCreds" - } - } - } - }, - "methods": { - "setEnabled": { - "request": { - "$ref": "SetEnabledRequest" - }, - "description": "Enables or disables data transfer for a project. This\nmethod requires the additional scope of\n'https://www.googleapis.com/auth/cloudplatformprojects'\nto manage the cloud project permissions.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The name of the project resource in the form:\n`projects/{project_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}:setEnabled", - "id": "bigquerydatatransfer.projects.setEnabled", - "path": "v1/{+name}:setEnabled" - }, - "isEnabled": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "IsEnabledResponse" - }, - "parameters": { - "name": { - "description": "The name of the project resource in the form:\n`projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{projectsId}:isEnabled", - "path": "v1/{+name}:isEnabled", - "id": "bigquerydatatransfer.projects.isEnabled", - "description": "Returns true if data transfer is enabled for a project.", - "request": { - "$ref": "IsEnabledRequest" - } - } - } - } - }, - "parameters": { - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - } - }, - "version": "v1", - "baseUrl": "https://bigquerydatatransfer.googleapis.com/" + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/classroom/v1/classroom-api.json b/vendor/google.golang.org/api/classroom/v1/classroom-api.json index b0ce24e..22144d6 100644 --- a/vendor/google.golang.org/api/classroom/v1/classroom-api.json +++ b/vendor/google.golang.org/api/classroom/v1/classroom-api.json @@ -1,1793 +1,5 @@ { - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/classroom.coursework.me": { - "description": "Manage your course work and view your grades in Google Classroom" - }, - "https://www.googleapis.com/auth/classroom.rosters": { - "description": "Manage your Google Classroom class rosters" - }, - "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly": { - "description": "View course work and grades for students in the Google Classroom classes you teach or administer" - }, - "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly": { - "description": "View guardians for students in your Google Classroom classes" - }, - "https://www.googleapis.com/auth/classroom.courses": { - "description": "Manage your Google Classroom classes" - }, - "https://www.googleapis.com/auth/classroom.courses.readonly": { - "description": "View your Google Classroom classes" - }, - "https://www.googleapis.com/auth/classroom.profile.photos": { - "description": "View the profile photos of people in your classes" - }, - "https://www.googleapis.com/auth/classroom.rosters.readonly": { - "description": "View your Google Classroom class rosters" - }, - "https://www.googleapis.com/auth/classroom.guardianlinks.students": { - "description": "View and manage guardians for students in your Google Classroom classes" - }, - "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly": { - "description": "View your course work and grades in Google Classroom" - }, - "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly": { - "description": "View your Google Classroom guardians" - }, - "https://www.googleapis.com/auth/classroom.coursework.students": { - "description": "Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer" - }, - "https://www.googleapis.com/auth/classroom.coursework.students.readonly": { - "description": "View course work and grades for students in the Google Classroom classes you teach or administer" - }, - "https://www.googleapis.com/auth/classroom.coursework.me.readonly": { - "description": "View your course work and grades in Google Classroom" - }, - "https://www.googleapis.com/auth/classroom.profile.emails": { - "description": "View the email addresses of people in your classes" - } - } - } - }, - "servicePath": "", - "description": "Manages classes, rosters, and invitations in Google Classroom.", - "kind": "discovery#restDescription", - "rootUrl": "https://classroom.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "classroom", - "batchPath": "batch", - "id": "classroom:v1", - "documentationLink": "https://developers.google.com/classroom/", - "revision": "20170825", - "title": "Google Classroom API", - "ownerName": "Google", - "discoveryVersion": "v1", - "resources": { - "invitations": { - "methods": { - "delete": { - "description": "Deletes an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete the\nrequested invitation or for access errors.\n* `NOT_FOUND` if no invitation exists with the requested ID.", - "httpMethod": "DELETE", - "parameterOrder": [ - "id" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "id": { - "location": "path", - "description": "Identifier of the invitation to delete.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters" - ], - "flatPath": "v1/invitations/{id}", - "path": "v1/invitations/{id}", - "id": "classroom.invitations.delete" - }, - "list": { - "httpMethod": "GET", - "parameterOrder": [], - "response": { - "$ref": "ListInvitationsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating\nthat the subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", - "type": "string" - }, - "userId": { - "location": "query", - "description": "Restricts returned invitations to those for a specific user. The identifier\ncan be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer", - "location": "query" - }, - "courseId": { - "location": "query", - "description": "Restricts returned invitations to those for a course with the specified\nidentifier.", - "type": "string" - } - }, - "flatPath": "v1/invitations", - "path": "v1/invitations", - "id": "classroom.invitations.list", - "description": "Returns a list of invitations that the requesting user is permitted to\nview, restricted to those that match the list request.\n\n*Note:* At least one of `user_id` or `course_id` must be supplied. Both\nfields can be supplied.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` for access errors." - }, - "get": { - "description": "Returns an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view the\nrequested invitation or for access errors.\n* `NOT_FOUND` if no invitation exists with the requested ID.", - "response": { - "$ref": "Invitation" - }, - "parameterOrder": [ - "id" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "parameters": { - "id": { - "description": "Identifier of the invitation to return.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/invitations/{id}", - "id": "classroom.invitations.get", - "path": "v1/invitations/{id}" - }, - "create": { - "flatPath": "v1/invitations", - "id": "classroom.invitations.create", - "path": "v1/invitations", - "description": "Creates an invitation. Only one invitation for a user and course may exist\nat a time. Delete and re-create an invitation to make changes.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\ninvitations for this course or for access errors.\n* `NOT_FOUND` if the course or the user does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled or if\nthe user already has this role or a role with greater permissions.\n* `ALREADY_EXISTS` if an invitation for the specified user and course\nalready exists.", - "request": { - "$ref": "Invitation" - }, - "response": { - "$ref": "Invitation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters" - ] - }, - "accept": { - "path": "v1/invitations/{id}:accept", - "id": "classroom.invitations.accept", - "description": "Accepts an invitation, removing it and adding the invited user to the\nteachers or students (as appropriate) of the specified course. Only the\ninvited user may accept an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to accept the\nrequested invitation or for access errors.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * CourseTeacherLimitReached\n * UserGroupsMembershipLimitReached\n* `NOT_FOUND` if no invitation exists with the requested ID.", - "httpMethod": "POST", - "parameterOrder": [ - "id" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters" - ], - "parameters": { - "id": { - "location": "path", - "description": "Identifier of the invitation to accept.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/invitations/{id}:accept" - } - } - }, - "userProfiles": { - "methods": { - "get": { - "flatPath": "v1/userProfiles/{userId}", - "id": "classroom.userProfiles.get", - "path": "v1/userProfiles/{userId}", - "description": "Returns a user profile.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access\nthis user profile, if no profile exists with the requested ID, or for\naccess errors.", - "response": { - "$ref": "UserProfile" - }, - "parameterOrder": [ - "userId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "parameters": { - "userId": { - "description": "Identifier of the profile to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true, - "location": "path" - } - } - } - }, - "resources": { - "guardianInvitations": { - "methods": { - "patch": { - "request": { - "$ref": "GuardianInvitation" - }, - "description": "Modifies a guardian invitation.\n\nCurrently, the only valid modification is to change the `state` from\n`PENDING` to `COMPLETE`. This has the effect of withdrawing the invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n manage guardians, if guardians are not enabled for the domain in question\n or for other access errors.\n* `FAILED_PRECONDITION` if the guardian link is not in the `PENDING` state.\n* `INVALID_ARGUMENT` if the format of the student ID provided\n cannot be recognized (it is not an email address, nor a `user_id` from\n this API), or if the passed `GuardianInvitation` has a `state` other than\n `COMPLETE`, or if it modifies fields other than `state`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n Classroom has no record of that student, or if the `id` field does not\n refer to a guardian invitation known to Classroom.", - "httpMethod": "PATCH", - "parameterOrder": [ - "studentId", - "invitationId" - ], - "response": { - "$ref": "GuardianInvitation" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.students" - ], - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `state`\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=\u003cfield1\u003e,\u003cfield2\u003e,...`", - "type": "string" - }, - "invitationId": { - "type": "string", - "required": true, - "location": "path", - "description": "The `id` field of the `GuardianInvitation` to be modified." - }, - "studentId": { - "location": "path", - "description": "The ID of the student whose guardian invitation is to be modified.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", - "path": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", - "id": "classroom.userProfiles.guardianInvitations.patch" - }, - "get": { - "description": "Returns a specific guardian invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\n guardian invitations for the student identified by the `student_id`, if\n guardians are not enabled for the domain in question, or for other\n access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`).\n* `NOT_FOUND` if Classroom cannot find any record of the given student or\n `invitation_id`. May also be returned if the student exists, but the\n requesting user does not have access to see that student.", - "response": { - "$ref": "GuardianInvitation" - }, - "parameterOrder": [ - "studentId", - "invitationId" - ], - "httpMethod": "GET", - "parameters": { - "invitationId": { - "location": "path", - "description": "The `id` field of the `GuardianInvitation` being requested.", - "type": "string", - "required": true - }, - "studentId": { - "description": "The ID of the student whose guardian invitation is being requested.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.students", - "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" - ], - "flatPath": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", - "id": "classroom.userProfiles.guardianInvitations.get", - "path": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}" - }, - "list": { - "path": "v1/userProfiles/{studentId}/guardianInvitations", - "id": "classroom.userProfiles.guardianInvitations.list", - "description": "Returns a list of guardian invitations that the requesting user is\npermitted to view, filtered by the parameters provided.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if a `student_id` is specified, and the requesting\n user is not permitted to view guardian invitations for that student, if\n `\"-\"` is specified as the `student_id` and the user is not a domain\n administrator, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`). May also be returned if an invalid\n `page_token` or `state` is provided.\n* `NOT_FOUND` if a `student_id` is specified, and its format can be\n recognized, but Classroom has no record of that student.", - "httpMethod": "GET", - "parameterOrder": [ - "studentId" - ], - "response": { - "$ref": "ListGuardianInvitationsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer" - }, - "states": { - "enum": [ - "GUARDIAN_INVITATION_STATE_UNSPECIFIED", - "PENDING", - "COMPLETE" - ], - "description": "If specified, only results with the specified `state` values will be\nreturned. Otherwise, results with a `state` of `PENDING` will be returned.", - "type": "string", - "repeated": true, - "location": "query" - }, - "invitedEmailAddress": { - "description": "If specified, only results with the specified `invited_email_address`\nwill be returned.", - "type": "string", - "location": "query" - }, - "studentId": { - "location": "path", - "description": "The ID of the student whose guardian invitations are to be returned.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n all students that the requesting user is permitted to view guardian\n invitations.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.students", - "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" - ], - "flatPath": "v1/userProfiles/{studentId}/guardianInvitations" - }, - "create": { - "request": { - "$ref": "GuardianInvitation" - }, - "description": "Creates a guardian invitation, and sends an email to the guardian asking\nthem to confirm that they are the student's guardian.\n\nOnce the guardian accepts the invitation, their `state` will change to\n`COMPLETED` and they will start receiving guardian notifications. A\n`Guardian` resource will also be created to represent the active guardian.\n\nThe request object must have the `student_id` and\n`invited_email_address` fields set. Failing to set these fields, or\nsetting any other fields in the request, will result in an error.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n manage guardians, if the guardian in question has already rejected\n too many requests for that student, if guardians are not enabled for the\n domain in question, or for other access errors.\n* `RESOURCE_EXHAUSTED` if the student or guardian has exceeded the guardian\n link limit.\n* `INVALID_ARGUMENT` if the guardian email address is not valid (for\n example, if it is too long), or if the format of the student ID provided\n cannot be recognized (it is not an email address, nor a `user_id` from\n this API). This error will also be returned if read-only fields are set,\n or if the `state` field is set to to a value other than `PENDING`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n Classroom has no record of that student.\n* `ALREADY_EXISTS` if there is already a pending guardian invitation for\n the student and `invited_email_address` provided, or if the provided\n `invited_email_address` matches the Google account of an existing\n `Guardian` for this user.", - "response": { - "$ref": "GuardianInvitation" - }, - "parameterOrder": [ - "studentId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.students" - ], - "parameters": { - "studentId": { - "description": "ID of the student (in standard format)", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/userProfiles/{studentId}/guardianInvitations", - "id": "classroom.userProfiles.guardianInvitations.create", - "path": "v1/userProfiles/{studentId}/guardianInvitations" - } - } - }, - "guardians": { - "methods": { - "delete": { - "description": "Deletes a guardian.\n\nThe guardian will no longer receive guardian notifications and the guardian\nwill no longer be accessible via the API.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if no user that matches the provided `student_id`\n is visible to the requesting user, if the requesting user is not\n permitted to manage guardians for the student identified by the\n `student_id`, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API).\n* `NOT_FOUND` if the requesting user is permitted to modify guardians for\n the requested `student_id`, but no `Guardian` record exists for that\n student with the provided `guardian_id`.", - "httpMethod": "DELETE", - "parameterOrder": [ - "studentId", - "guardianId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "studentId": { - "location": "path", - "description": "The student whose guardian is to be deleted. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true - }, - "guardianId": { - "location": "path", - "description": "The `id` field from a `Guardian`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.students" - ], - "flatPath": "v1/userProfiles/{studentId}/guardians/{guardianId}", - "path": "v1/userProfiles/{studentId}/guardians/{guardianId}", - "id": "classroom.userProfiles.guardians.delete" - }, - "get": { - "description": "Returns a specific guardian.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if no user that matches the provided `student_id`\n is visible to the requesting user, if the requesting user is not\n permitted to view guardian information for the student identified by the\n `student_id`, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`).\n* `NOT_FOUND` if the requesting user is permitted to view guardians for\n the requested `student_id`, but no `Guardian` record exists for that\n student that matches the provided `guardian_id`.", - "response": { - "$ref": "Guardian" - }, - "parameterOrder": [ - "studentId", - "guardianId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly", - "https://www.googleapis.com/auth/classroom.guardianlinks.students", - "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" - ], - "parameters": { - "studentId": { - "description": "The student whose guardian is being requested. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true, - "location": "path" - }, - "guardianId": { - "description": "The `id` field from a `Guardian`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/userProfiles/{studentId}/guardians/{guardianId}", - "id": "classroom.userProfiles.guardians.get", - "path": "v1/userProfiles/{studentId}/guardians/{guardianId}" - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListGuardiansResponse" - }, - "parameterOrder": [ - "studentId" - ], - "parameters": { - "studentId": { - "type": "string", - "required": true, - "location": "path", - "description": "Filter results by the student who the guardian is linked to.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n all students that the requesting user has access to view." - }, - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", - "type": "string" - }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results." - }, - "invitedEmailAddress": { - "type": "string", - "location": "query", - "description": "Filter results by the email address that the original invitation was sent\nto, resulting in this guardian link.\nThis filter can only be used by domain administrators." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly", - "https://www.googleapis.com/auth/classroom.guardianlinks.students", - "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" - ], - "flatPath": "v1/userProfiles/{studentId}/guardians", - "path": "v1/userProfiles/{studentId}/guardians", - "id": "classroom.userProfiles.guardians.list", - "description": "Returns a list of guardians that the requesting user is permitted to\nview, restricted to those that match the request.\n\nTo list guardians for any student that the requesting user may view\nguardians for, use the literal character `-` for the student ID.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if a `student_id` is specified, and the requesting\n user is not permitted to view guardian information for that student, if\n `\"-\"` is specified as the `student_id` and the user is not a domain\n administrator, if guardians are not enabled for the domain in question,\n if the `invited_email_address` filter is set by a user who is not a\n domain administrator, or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`). May also be returned if an invalid\n `page_token` is provided.\n* `NOT_FOUND` if a `student_id` is specified, and its format can be\n recognized, but Classroom has no record of that student." - } - } - } - } - }, - "courses": { - "methods": { - "get": { - "httpMethod": "GET", - "response": { - "$ref": "Course" - }, - "parameterOrder": [ - "id" - ], - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses", - "https://www.googleapis.com/auth/classroom.courses.readonly" - ], - "parameters": { - "id": { - "description": "Identifier of the course to return.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/courses/{id}", - "path": "v1/courses/{id}", - "id": "classroom.courses.get", - "description": "Returns a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID." - }, - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "id" - ], - "response": { - "$ref": "Course" - }, - "parameters": { - "id": { - "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "updateMask": { - "format": "google-fieldmask", - "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `name`\n* `section`\n* `descriptionHeading`\n* `description`\n* `room`\n* `courseState`\n* `ownerId`\n\nNote: patches to ownerId are treated as being effective immediately, but in\npractice it may take some time for the ownership transfer of all affected\nresources to complete.\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=\u003cfield1\u003e,\u003cfield2\u003e,...`", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "flatPath": "v1/courses/{id}", - "path": "v1/courses/{id}", - "id": "classroom.courses.patch", - "description": "Updates one or more fields in a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `INVALID_ARGUMENT` if invalid fields are specified in the update mask or\nif no update mask is supplied.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseNotModifiable", - "request": { - "$ref": "Course" - } - }, - "update": { - "flatPath": "v1/courses/{id}", - "id": "classroom.courses.update", - "path": "v1/courses/{id}", - "request": { - "$ref": "Course" - }, - "description": "Updates a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseNotModifiable", - "response": { - "$ref": "Course" - }, - "parameterOrder": [ - "id" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "parameters": { - "id": { - "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - } - } - }, - "delete": { - "description": "Deletes a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "id" - ], - "httpMethod": "DELETE", - "parameters": { - "id": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the course to delete.\nThis identifier can be either the Classroom-assigned identifier or an\nalias." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "flatPath": "v1/courses/{id}", - "id": "classroom.courses.delete", - "path": "v1/courses/{id}" - }, - "list": { - "description": "Returns a list of courses that the requesting user is permitted to view,\nrestricted to those that match the request. Returned courses are ordered by\ncreation time, with the most recently created coming first.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` for access errors.\n* `INVALID_ARGUMENT` if the query argument is malformed.\n* `NOT_FOUND` if any users specified in the query arguments do not exist.", - "response": { - "$ref": "ListCoursesResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "parameters": { - "studentId": { - "location": "query", - "description": "Restricts returned courses to those having a student with the specified\nidentifier. The identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string" - }, - "pageToken": { - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer" - }, - "courseStates": { - "description": "Restricts returned courses to those in one of the specified states\nThe default value is ACTIVE, ARCHIVED, PROVISIONED, DECLINED.", - "type": "string", - "repeated": true, - "location": "query", - "enum": [ - "COURSE_STATE_UNSPECIFIED", - "ACTIVE", - "ARCHIVED", - "PROVISIONED", - "DECLINED", - "SUSPENDED" - ] - }, - "teacherId": { - "description": "Restricts returned courses to those having a teacher with the specified\nidentifier. The identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses", - "https://www.googleapis.com/auth/classroom.courses.readonly" - ], - "flatPath": "v1/courses", - "id": "classroom.courses.list", - "path": "v1/courses" - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Course" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "parameters": {}, - "flatPath": "v1/courses", - "path": "v1/courses", - "id": "classroom.courses.create", - "request": { - "$ref": "Course" - }, - "description": "Creates a course.\n\nThe user specified in `ownerId` is the owner of the created course\nand added as a teacher.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\ncourses or for access errors.\n* `NOT_FOUND` if the primary teacher is not a valid user.\n* `FAILED_PRECONDITION` if the course owner's account is disabled or for\nthe following request errors:\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if an alias was specified in the `id` and\nalready exists." - } - }, - "resources": { - "aliases": { - "methods": { - "list": { - "flatPath": "v1/courses/{courseId}/aliases", - "id": "classroom.courses.aliases.list", - "path": "v1/courses/{courseId}/aliases", - "description": "Returns a list of aliases for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\ncourse or for access errors.\n* `NOT_FOUND` if the course does not exist.", - "parameterOrder": [ - "courseId" - ], - "response": { - "$ref": "ListCourseAliasesResponse" - }, - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses", - "https://www.googleapis.com/auth/classroom.courses.readonly" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer", - "location": "query" - }, - "courseId": { - "location": "path", - "description": "The identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", - "type": "string", - "location": "query" - } - } - }, - "create": { - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course to alias.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "flatPath": "v1/courses/{courseId}/aliases", - "path": "v1/courses/{courseId}/aliases", - "id": "classroom.courses.aliases.create", - "description": "Creates an alias for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create the\nalias or for access errors.\n* `NOT_FOUND` if the course does not exist.\n* `ALREADY_EXISTS` if the alias already exists.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n requesting user or course (for example, if a user not in a domain\n attempts to access a domain-scoped alias).", - "request": { - "$ref": "CourseAlias" - }, - "httpMethod": "POST", - "parameterOrder": [ - "courseId" - ], - "response": { - "$ref": "CourseAlias" - } - }, - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "courseId", - "alias" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.courses" - ], - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course whose alias should be deleted.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "alias": { - "location": "path", - "description": "Alias to delete.\nThis may not be the Classroom-assigned identifier.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/courses/{courseId}/aliases/{alias}", - "path": "v1/courses/{courseId}/aliases/{alias}", - "id": "classroom.courses.aliases.delete", - "description": "Deletes an alias of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to remove the\nalias or for access errors.\n* `NOT_FOUND` if the alias does not exist.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n requesting user or course (for example, if a user not in a domain\n attempts to delete a domain-scoped alias)." - } - } - }, - "students": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListStudentsResponse" - }, - "parameterOrder": [ - "courseId" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer", - "location": "query" - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "flatPath": "v1/courses/{courseId}/students", - "path": "v1/courses/{courseId}/students", - "id": "classroom.courses.students.list", - "description": "Returns a list of students of this course that the requester\nis permitted to view.\n\nThis method returns the following error codes:\n\n* `NOT_FOUND` if the course does not exist.\n* `PERMISSION_DENIED` for access errors." - }, - "get": { - "response": { - "$ref": "Student" - }, - "parameterOrder": [ - "courseId", - "userId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "userId": { - "location": "path", - "description": "Identifier of the student to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true - } - }, - "flatPath": "v1/courses/{courseId}/students/{userId}", - "id": "classroom.courses.students.get", - "path": "v1/courses/{courseId}/students/{userId}", - "description": "Returns a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist." - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "courseId" - ], - "response": { - "$ref": "Student" - }, - "parameters": { - "courseId": { - "description": "Identifier of the course to create the student in.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "enrollmentCode": { - "description": "Enrollment code of the course to create the student in.\nThis code is required if userId\ncorresponds to the requesting user; it may be omitted if the requesting\nuser has administrative permissions to create students for any user.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters" - ], - "flatPath": "v1/courses/{courseId}/students", - "path": "v1/courses/{courseId}/students", - "id": "classroom.courses.students.create", - "description": "Adds a user as a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nstudents in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a student or teacher in the\ncourse.", - "request": { - "$ref": "Student" - } - }, - "delete": { - "description": "Deletes a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "courseId", - "userId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters" - ], - "parameters": { - "userId": { - "description": "Identifier of the student to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true, - "location": "path" - }, - "courseId": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias." - } - }, - "flatPath": "v1/courses/{courseId}/students/{userId}", - "id": "classroom.courses.students.delete", - "path": "v1/courses/{courseId}/students/{userId}" - } - } - }, - "courseWork": { - "methods": { - "delete": { - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "courseId", - "id" - ], - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "description": "Identifier of the course work to delete.\nThis identifier is a Classroom-assigned identifier.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "flatPath": "v1/courses/{courseId}/courseWork/{id}", - "path": "v1/courses/{courseId}/courseWork/{id}", - "id": "classroom.courses.courseWork.delete", - "description": "Deletes a course work.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the requesting user is not permitted\nto delete the requested course or for access errors.\n* `FAILED_PRECONDITION` if the requested course work has already been\ndeleted.\n* `NOT_FOUND` if no course exists with the requested ID." - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListCourseWorkResponse" - }, - "parameterOrder": [ - "courseId" - ], - "parameters": { - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", - "type": "string" - }, - "orderBy": { - "location": "query", - "description": "Optional sort ordering for results. A comma-separated list of fields with\nan optional sort direction keyword. Supported fields are `updateTime`\nand `dueDate`. Supported direction keywords are `asc` and `desc`.\nIf not specified, `updateTime desc` is the default behavior.\nExamples: `dueDate asc,updateTime desc`, `updateTime,dueDate desc`", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer", - "location": "query" - }, - "courseWorkStates": { - "description": "Restriction on the work status to return. Only courseWork that matches\nis returned. If unspecified, items with a work status of `PUBLISHED`\nis returned.", - "type": "string", - "repeated": true, - "location": "query", - "enum": [ - "COURSE_WORK_STATE_UNSPECIFIED", - "PUBLISHED", - "DRAFT", - "DELETED" - ] - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.me.readonly", - "https://www.googleapis.com/auth/classroom.coursework.students", - "https://www.googleapis.com/auth/classroom.coursework.students.readonly" - ], - "flatPath": "v1/courses/{courseId}/courseWork", - "path": "v1/courses/{courseId}/courseWork", - "id": "classroom.courses.courseWork.list", - "description": "Returns a list of course work that the requester is permitted to view.\n\nCourse students may only view `PUBLISHED` course work. Course teachers\nand domain administrators may view all course work.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access\nthe requested course or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist." - }, - "get": { - "flatPath": "v1/courses/{courseId}/courseWork/{id}", - "id": "classroom.courses.courseWork.get", - "path": "v1/courses/{courseId}/courseWork/{id}", - "description": "Returns course work.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course or course work does not exist.", - "response": { - "$ref": "CourseWork" - }, - "parameterOrder": [ - "courseId", - "id" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.me.readonly", - "https://www.googleapis.com/auth/classroom.coursework.students", - "https://www.googleapis.com/auth/classroom.coursework.students.readonly" - ], - "parameters": { - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "id": { - "location": "path", - "description": "Identifier of the course work.", - "type": "string", - "required": true - } - } - }, - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "courseId", - "id" - ], - "response": { - "$ref": "CourseWork" - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "location": "path", - "description": "Identifier of the course work.", - "type": "string", - "required": true - }, - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Mask that identifies which fields on the course work to update.\nThis field is required to do an update. The update fails if invalid\nfields are specified. If a field supports empty values, it can be cleared\nby specifying it in the update mask and not in the CourseWork object. If a\nfield that does not support empty values is included in the update mask and\nnot set in the CourseWork object, an `INVALID_ARGUMENT` error will be\nreturned.\n\nThe following fields may be specified by teachers:\n* `title`\n* `description`\n* `state`\n* `due_date`\n* `due_time`\n* `max_points`\n* `scheduled_time`\n* `submission_modification_mode`", - "type": "string" - } - }, - "flatPath": "v1/courses/{courseId}/courseWork/{id}", - "path": "v1/courses/{courseId}/courseWork/{id}", - "id": "classroom.courses.courseWork.patch", - "request": { - "$ref": "CourseWork" - }, - "description": "Updates one or more fields of a course work.\n\nSee google.classroom.v1.CourseWork for details\nof which fields may be updated and who may change them.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the user is not permitted to make the\nrequested modification to the student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `FAILED_PRECONDITION` if the requested course work has already been\ndeleted.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist." - }, - "create": { - "description": "Creates course work.\n\nThe resulting course work (and corresponding student submissions) are\nassociated with the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\nmake the request. Classroom API requests to modify course work and student\nsubmissions must be made with an OAuth client ID from the associated\nDeveloper Console project.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course, create course work in the requested course, share a\nDrive attachment, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.\n* `FAILED_PRECONDITION` for the following request error:\n * AttachmentNotVisible", - "request": { - "$ref": "CourseWork" - }, - "httpMethod": "POST", - "parameterOrder": [ - "courseId" - ], - "response": { - "$ref": "CourseWork" - }, - "parameters": { - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "flatPath": "v1/courses/{courseId}/courseWork", - "path": "v1/courses/{courseId}/courseWork", - "id": "classroom.courses.courseWork.create" - } - }, - "resources": { - "studentSubmissions": { - "methods": { - "patch": { - "response": { - "$ref": "StudentSubmission" - }, - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "httpMethod": "PATCH", - "parameters": { - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "id": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the student submission." - }, - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Mask that identifies which fields on the student submission to update.\nThis field is required to do an update. The update fails if invalid\nfields are specified.\n\nThe following fields may be specified by teachers:\n* `draft_grade`\n* `assigned_grade`", - "type": "string" - }, - "courseWorkId": { - "description": "Identifier of the course work.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", - "id": "classroom.courses.courseWork.studentSubmissions.patch", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", - "description": "Updates one or more fields of a student submission.\n\nSee google.classroom.v1.StudentSubmission for details\nof which fields may be updated and who may change them.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the user is not permitted to make the\nrequested modification to the student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", - "request": { - "$ref": "StudentSubmission" - } - }, - "get": { - "response": { - "$ref": "StudentSubmission" - }, - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.me.readonly", - "https://www.googleapis.com/auth/classroom.coursework.students", - "https://www.googleapis.com/auth/classroom.coursework.students.readonly", - "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly", - "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly" - ], - "parameters": { - "courseWorkId": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the course work." - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the student submission." - } - }, - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", - "id": "classroom.courses.courseWork.studentSubmissions.get", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", - "description": "Returns a student submission.\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course, course work, or student submission or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist." - }, - "return": { - "description": "Returns a student submission.\n\nReturning a student submission transfers ownership of attached Drive\nfiles to the student and may also update the submission state.\nUnlike the Classroom application, returning a student submission does not\nset assignedGrade to the draftGrade value.\n\nOnly a teacher of the course that contains the requested student submission\nmay call this method.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, return the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", - "request": { - "$ref": "ReturnStudentSubmissionRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "courseWorkId": { - "location": "path", - "description": "Identifier of the course work.", - "type": "string", - "required": true - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "location": "path", - "description": "Identifier of the student submission.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return", - "id": "classroom.courses.courseWork.studentSubmissions.return" - }, - "reclaim": { - "parameters": { - "courseWorkId": { - "location": "path", - "description": "Identifier of the course work.", - "type": "string", - "required": true - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the student submission." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me" - ], - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim", - "id": "classroom.courses.courseWork.studentSubmissions.reclaim", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim", - "description": "Reclaims a student submission on behalf of the student that owns it.\n\nReclaiming a student submission transfers ownership of attached Drive\nfiles to the student and update the submission state.\n\nOnly the student that owns the requested student submission may call this\nmethod, and only for a student submission that has been turned in.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, unsubmit the requested student submission,\nor for access errors.\n* `FAILED_PRECONDITION` if the student submission has not been turned in.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", - "request": { - "$ref": "ReclaimStudentSubmissionRequest" - }, - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "httpMethod": "POST" - }, - "turnIn": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me" - ], - "parameters": { - "courseWorkId": { - "location": "path", - "description": "Identifier of the course work.", - "type": "string", - "required": true - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "location": "path", - "description": "Identifier of the student submission.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn", - "id": "classroom.courses.courseWork.studentSubmissions.turnIn", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn", - "request": { - "$ref": "TurnInStudentSubmissionRequest" - }, - "description": "Turns in a student submission.\n\nTurning in a student submission transfers ownership of attached Drive\nfiles to the teacher and may also update the submission state.\n\nThis may only be called by the student that owns the specified student\nsubmission.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, turn in the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist." - }, - "list": { - "description": "Returns a list of student submissions that the requester is permitted to\nview, factoring in the OAuth scopes of the request.\n`-` may be specified as the `course_work_id` to include student\nsubmissions for multiple course work items.\n\nCourse students may only view their own work. Course teachers\nand domain administrators may view all student submissions.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.", - "response": { - "$ref": "ListStudentSubmissionsResponse" - }, - "httpMethod": "GET", - "parameterOrder": [ - "courseId", - "courseWorkId" - ], - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.me.readonly", - "https://www.googleapis.com/auth/classroom.coursework.students", - "https://www.googleapis.com/auth/classroom.coursework.students.readonly", - "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly", - "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly" - ], - "parameters": { - "states": { - "enum": [ - "SUBMISSION_STATE_UNSPECIFIED", - "NEW", - "CREATED", - "TURNED_IN", - "RETURNED", - "RECLAIMED_BY_STUDENT" - ], - "description": "Requested submission states. If specified, returned student submissions\nmatch one of the specified submission states.", - "type": "string", - "repeated": true, - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer" - }, - "userId": { - "location": "query", - "description": "Optional argument to restrict returned student work to those owned by the\nstudent with the specified identifier. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string" - }, - "courseWorkId": { - "description": "Identifier of the student work to request.\nThis may be set to the string literal `\"-\"` to request student work for\nall course work in the specified course.", - "type": "string", - "required": true, - "location": "path" - }, - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "late": { - "location": "query", - "enum": [ - "LATE_VALUES_UNSPECIFIED", - "LATE_ONLY", - "NOT_LATE_ONLY" - ], - "description": "Requested lateness value. If specified, returned student submissions are\nrestricted by the requested value.\nIf unspecified, submissions are returned regardless of `late` value.", - "type": "string" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token." - } - }, - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions", - "id": "classroom.courses.courseWork.studentSubmissions.list", - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions" - }, - "modifyAttachments": { - "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments", - "id": "classroom.courses.courseWork.studentSubmissions.modifyAttachments", - "description": "Modifies attachments of student submission.\n\nAttachments may only be added to student submissions belonging to course\nwork objects with a `workType` of `ASSIGNMENT`.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, if the user is not permitted to modify\nattachments on the requested student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", - "request": { - "$ref": "ModifyAttachmentsRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "courseId", - "courseWorkId", - "id" - ], - "response": { - "$ref": "StudentSubmission" - }, - "parameters": { - "courseWorkId": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the course work." - }, - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - }, - "id": { - "description": "Identifier of the student submission.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.coursework.me", - "https://www.googleapis.com/auth/classroom.coursework.students" - ], - "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments" - } - } - } - } - }, - "teachers": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListTeachersResponse" - }, - "parameterOrder": [ - "courseId" - ], - "parameters": { - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "flatPath": "v1/courses/{courseId}/teachers", - "path": "v1/courses/{courseId}/teachers", - "id": "classroom.courses.teachers.list", - "description": "Returns a list of teachers of this course that the requester\nis permitted to view.\n\nThis method returns the following error codes:\n\n* `NOT_FOUND` if the course does not exist.\n* `PERMISSION_DENIED` for access errors." - }, - "get": { - "response": { - "$ref": "Teacher" - }, - "parameterOrder": [ - "courseId", - "userId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters", - "https://www.googleapis.com/auth/classroom.rosters.readonly" - ], - "parameters": { - "userId": { - "location": "path", - "description": "Identifier of the teacher to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string", - "required": true - }, - "courseId": { - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/courses/{courseId}/teachers/{userId}", - "id": "classroom.courses.teachers.get", - "path": "v1/courses/{courseId}/teachers/{userId}", - "description": "Returns a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\nteachers of this course or for access errors.\n* `NOT_FOUND` if no teacher of this course has the requested ID or if the\ncourse does not exist." - }, - "create": { - "description": "Creates a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nteachers in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * CourseTeacherLimitReached\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a teacher or student in the\ncourse.", - "request": { - "$ref": "Teacher" - }, - "httpMethod": "POST", - "parameterOrder": [ - "courseId" - ], - "response": { - "$ref": "Teacher" - }, - "parameters": { - "courseId": { - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.profile.emails", - "https://www.googleapis.com/auth/classroom.profile.photos", - "https://www.googleapis.com/auth/classroom.rosters" - ], - "flatPath": "v1/courses/{courseId}/teachers", - "path": "v1/courses/{courseId}/teachers", - "id": "classroom.courses.teachers.create" - }, - "delete": { - "path": "v1/courses/{courseId}/teachers/{userId}", - "id": "classroom.courses.teachers.delete", - "description": "Deletes a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nteachers of this course or for access errors.\n* `NOT_FOUND` if no teacher of this course has the requested ID or if the\ncourse does not exist.\n* `FAILED_PRECONDITION` if the requested ID belongs to the primary teacher\nof this course.", - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "courseId", - "userId" - ], - "parameters": { - "userId": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the teacher to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user" - }, - "courseId": { - "type": "string", - "required": true, - "location": "path", - "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/classroom.rosters" - ], - "flatPath": "v1/courses/{courseId}/teachers/{userId}" - } - } - } - } - } - }, - "parameters": { - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Pretty-print response." - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Returns response with indentations and line breaks." - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - } - }, "schemas": { - "Date": { - "id": "Date", - "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", - "type": "object", - "properties": { - "day": { - "format": "int32", - "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", - "type": "integer" - }, - "year": { - "format": "int32", - "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", - "type": "integer" - }, - "month": { - "format": "int32", - "description": "Month of year. Must be from 1 to 12.", - "type": "integer" - } - } - }, - "MultipleChoiceSubmission": { - "description": "Student work for a multiple-choice question.", - "type": "object", - "properties": { - "answer": { - "type": "string", - "description": "Student's select choice." - } - }, - "id": "MultipleChoiceSubmission" - }, - "Name": { - "description": "Details of the user's name.", - "type": "object", - "properties": { - "familyName": { - "description": "The user's last name.\n\nRead-only.", - "type": "string" - }, - "givenName": { - "description": "The user's first name.\n\nRead-only.", - "type": "string" - }, - "fullName": { - "description": "The user's full name formed by concatenating the first and last name\nvalues.\n\nRead-only.", - "type": "string" - } - }, - "id": "Name" - }, - "CourseMaterial": { - "description": "A material attached to a course as part of a material set.", - "type": "object", - "properties": { - "form": { - "$ref": "Form", - "description": "Google Forms attachment." - }, - "link": { - "$ref": "Link", - "description": "Link atatchment." - }, - "youTubeVideo": { - "$ref": "YouTubeVideo", - "description": "Youtube video attachment." - }, - "driveFile": { - "$ref": "DriveFile", - "description": "Google Drive file attachment." - } - }, - "id": "CourseMaterial" - }, - "Assignment": { - "description": "Additional details for assignments.", - "type": "object", - "properties": { - "studentWorkFolder": { - "description": "Drive folder where attachments from student submissions are placed.\nThis is only populated for course teachers and administrators.", - "$ref": "DriveFolder" - } - }, - "id": "Assignment" - }, - "SharedDriveFile": { - "description": "Drive file that is used as material for course work.", - "type": "object", - "properties": { - "shareMode": { - "enum": [ - "UNKNOWN_SHARE_MODE", - "VIEW", - "EDIT", - "STUDENT_COPY" - ], - "description": "Mechanism by which students access the Drive item.", - "type": "string", - "enumDescriptions": [ - "No sharing mode specified. This should never be returned.", - "Students can view the shared file.", - "Students can edit the shared file.", - "Students have a personal copy of the shared file." - ] - }, - "driveFile": { - "$ref": "DriveFile", - "description": "Drive file details." - } - }, - "id": "SharedDriveFile" - }, "Empty": { "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", "type": "object", @@ -1809,31 +21,26 @@ "id": "MultipleChoiceQuestion" }, "Course": { - "id": "Course", "description": "A Course in Classroom.", "type": "object", "properties": { - "calendarId": { - "description": "The Calendar ID for a calendar that all course members can see, to which\nClassroom adds events for course work and announcements in the course.\n\nRead-only.", - "type": "string" - }, "updateTime": { "format": "google-datetime", "description": "Time of the most recent update to this course.\nSpecifying this field in a course update mask results in an error.\n\nRead-only.", "type": "string" }, + "calendarId": { + "description": "The Calendar ID for a calendar that all course members can see, to which\nClassroom adds events for course work and announcements in the course.\n\nRead-only.", + "type": "string" + }, "alternateLink": { - "type": "string", - "description": "Absolute link to this course in the Classroom web UI.\n\nRead-only." + "description": "Absolute link to this course in the Classroom web UI.\n\nRead-only.", + "type": "string" }, "guardiansEnabled": { "description": "Whether or not guardian notifications are enabled for this course.\n\nRead-only.", "type": "boolean" }, - "ownerId": { - "description": "The identifier of the owner of a course.\n\nWhen specified as a parameter of a\ncreate course request, this\nfield is required.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n\nThis must be set in a create request. Admins can also specify this field\nin a patch course request to\ntransfer ownership. In other contexts, it is read-only.", - "type": "string" - }, "courseState": { "description": "State of the course.\nIf unspecified, the default state is `PROVISIONED`.", "type": "string", @@ -1854,6 +61,10 @@ "SUSPENDED" ] }, + "ownerId": { + "description": "The identifier of the owner of a course.\n\nWhen specified as a parameter of a\ncreate course request, this\nfield is required.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n\nThis must be set in a create request. Admins can also specify this field\nin a patch course request to\ntransfer ownership. In other contexts, it is read-only.", + "type": "string" + }, "description": { "description": "Optional description.\nFor example, \"We'll be learning about the structure of living\ncreatures from a combination of textbooks, guest lectures, and lab work.\nExpect to be excited!\"\nIf set, this field must be a valid UTF-8 string and no longer than 30,000\ncharacters.", "type": "string" @@ -1888,8 +99,8 @@ "type": "string" }, "courseGroupEmail": { - "type": "string", - "description": "The email address of a Google group containing all members of the course.\nThis group does not accept email and can only be used for permissions.\n\nRead-only." + "description": "The email address of a Google group containing all members of the course.\nThis group does not accept email and can only be used for permissions.\n\nRead-only.", + "type": "string" }, "enrollmentCode": { "description": "Enrollment code to use when joining this course.\nSpecifying this field in a course update mask results in an error.\n\nRead-only.", @@ -1906,12 +117,17 @@ "description": "Optional heading for the description.\nFor example, \"Welcome to 10th Grade Biology.\"\nIf set, this field must be a valid UTF-8 string and no longer than 3600\ncharacters.", "type": "string" } - } + }, + "id": "Course" }, "DriveFile": { "description": "Representation of a Google Drive file.", "type": "object", "properties": { + "title": { + "description": "Title of the Drive item.\n\nRead-only.", + "type": "string" + }, "alternateLink": { "description": "URL that can be used to access the Drive item.\n\nRead-only.", "type": "string" @@ -1921,11 +137,7 @@ "type": "string" }, "id": { - "type": "string", - "description": "Drive API resource ID." - }, - "title": { - "description": "Title of the Drive item.\n\nRead-only.", + "description": "Drive API resource ID.", "type": "string" } }, @@ -1936,15 +148,15 @@ "type": "object", "properties": { "permission": { - "enum": [ - "PERMISSION_UNSPECIFIED", - "CREATE_COURSE" - ], "description": "Permission value.", "type": "string", "enumDescriptions": [ "No permission is specified. This is not returned and is not a\nvalid value.", "User is permitted to create a course." + ], + "enum": [ + "PERMISSION_UNSPECIFIED", + "CREATE_COURSE" ] } }, @@ -1957,23 +169,23 @@ "id": "ReturnStudentSubmissionRequest" }, "Teacher": { - "id": "Teacher", "description": "Teacher of a course.", "type": "object", "properties": { - "userId": { - "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", - "type": "string" - }, "courseId": { "description": "Identifier of the course.\n\nRead-only.", "type": "string" }, "profile": { - "description": "Global user information for the teacher.\n\nRead-only.", - "$ref": "UserProfile" + "$ref": "UserProfile", + "description": "Global user information for the teacher.\n\nRead-only." + }, + "userId": { + "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string" } - } + }, + "id": "Teacher" }, "ReclaimStudentSubmissionRequest": { "description": "Request to reclaim a student submission.", @@ -1982,24 +194,14 @@ "id": "ReclaimStudentSubmissionRequest" }, "GradeHistory": { + "description": "The history of each grade on this submission.", + "type": "object", "properties": { - "maxPoints": { - "format": "double", - "description": "The denominator of the grade at this time in the submission grade\nhistory.", - "type": "number" - }, - "pointsEarned": { - "format": "double", - "description": "The numerator of the grade at this time in the submission grade history.", - "type": "number" - }, "actorUserId": { - "type": "string", - "description": "The teacher who made the grade change." + "description": "The teacher who made the grade change.", + "type": "string" }, "gradeChangeType": { - "description": "The type of grade change at this time in the submission grade history.", - "type": "string", "enumDescriptions": [ "No grade change type specified. This should never be returned.", "A change in the numerator of the draft grade.", @@ -2011,17 +213,27 @@ "DRAFT_GRADE_POINTS_EARNED_CHANGE", "ASSIGNED_GRADE_POINTS_EARNED_CHANGE", "MAX_POINTS_CHANGE" - ] + ], + "description": "The type of grade change at this time in the submission grade history.", + "type": "string" }, "gradeTimestamp": { "format": "google-datetime", "description": "When the grade of the submission was changed.", "type": "string" + }, + "maxPoints": { + "format": "double", + "description": "The denominator of the grade at this time in the submission grade\nhistory.", + "type": "number" + }, + "pointsEarned": { + "format": "double", + "description": "The numerator of the grade at this time in the submission grade history.", + "type": "number" } }, - "id": "GradeHistory", - "description": "The history of each grade on this submission.", - "type": "object" + "id": "GradeHistory" }, "AssignmentSubmission": { "description": "Student work for an assignment.", @@ -2041,111 +253,33 @@ "description": "Material attached to course work.\n\nWhen creating attachments, setting the `form` field is not supported.", "type": "object", "properties": { + "youtubeVideo": { + "$ref": "YouTubeVideo", + "description": "YouTube video material." + }, + "driveFile": { + "$ref": "SharedDriveFile", + "description": "Google Drive file material." + }, "form": { "$ref": "Form", "description": "Google Forms material." }, "link": { - "$ref": "Link", - "description": "Link material. On creation, will be upgraded to a more appropriate type\nif possible, and this will be reflected in the response." - }, - "youtubeVideo": { - "description": "YouTube video material.", - "$ref": "YouTubeVideo" - }, - "driveFile": { - "$ref": "SharedDriveFile", - "description": "Google Drive file material." + "description": "Link material. On creation, will be upgraded to a more appropriate type\nif possible, and this will be reflected in the response.", + "$ref": "Link" } }, "id": "Material" }, "CourseWork": { - "id": "CourseWork", "description": "Course work created by a teacher for students of the course.", "type": "object", "properties": { - "associatedWithDeveloper": { - "description": "Whether this course work item is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.", - "type": "boolean" - }, - "materials": { - "description": "Additional materials.\n\nCourseWork must have no more than 20 material items.", - "items": { - "$ref": "Material" - }, - "type": "array" - }, - "updateTime": { - "format": "google-datetime", - "description": "Timestamp of the most recent change to this course work.\n\nRead-only.", - "type": "string" - }, - "alternateLink": { - "type": "string", - "description": "Absolute link to this course work in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only." - }, - "maxPoints": { - "format": "double", - "description": "Maximum grade for this course work.\nIf zero or unspecified, this assignment is considered ungraded.\nThis must be a non-negative integer value.", - "type": "number" - }, - "multipleChoiceQuestion": { - "$ref": "MultipleChoiceQuestion", - "description": "Multiple choice question details.\nFor read operations, this field is populated only when `work_type` is\n`MULTIPLE_CHOICE_QUESTION`.\nFor write operations, this field must be specified when creating course\nwork with a `work_type` of `MULTIPLE_CHOICE_QUESTION`, and it must not be\nset otherwise." - }, - "assignment": { - "description": "Assignment details.\nThis is populated only when `work_type` is `ASSIGNMENT`.\n\nRead-only.", - "$ref": "Assignment" - }, - "workType": { - "enum": [ - "COURSE_WORK_TYPE_UNSPECIFIED", - "ASSIGNMENT", - "SHORT_ANSWER_QUESTION", - "MULTIPLE_CHOICE_QUESTION" - ], - "description": "Type of this course work.\n\nThe type is set when the course work is created and cannot be changed.", - "type": "string", - "enumDescriptions": [ - "No work type specified. This is never returned.", - "An assignment.", - "A short answer question.", - "A multiple-choice question." - ] - }, - "scheduledTime": { - "format": "google-datetime", - "description": "Optional timestamp when this course work is scheduled to be published.", - "type": "string" - }, - "description": { - "description": "Optional description of this course work.\nIf set, the description must be a valid UTF-8 string containing no more\nthan 30,000 characters.", - "type": "string" - }, - "creationTime": { - "format": "google-datetime", - "description": "Timestamp when this course work was created.\n\nRead-only.", - "type": "string" - }, "dueDate": { "$ref": "Date", "description": "Optional date, in UTC, that submissions for this this course work are due.\nThis must be specified if `due_time` is specified." }, - "submissionModificationMode": { - "enum": [ - "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED", - "MODIFIABLE_UNTIL_TURNED_IN", - "MODIFIABLE" - ], - "description": "Setting to determine when students are allowed to modify submissions.\nIf unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.", - "type": "string", - "enumDescriptions": [ - "No modification mode specified. This is never returned.", - "Submisisons can be modified before being turned in.", - "Submisisons can be modified at any time." - ] - }, "state": { "enumDescriptions": [ "No state specified. This is never returned.", @@ -2162,6 +296,20 @@ "description": "Status of this course work.\nIf unspecified, the default state is `DRAFT`.", "type": "string" }, + "submissionModificationMode": { + "enumDescriptions": [ + "No modification mode specified. This is never returned.", + "Submisisons can be modified before being turned in.", + "Submisisons can be modified at any time." + ], + "enum": [ + "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED", + "MODIFIABLE_UNTIL_TURNED_IN", + "MODIFIABLE" + ], + "description": "Setting to determine when students are allowed to modify submissions.\nIf unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.", + "type": "string" + }, "courseId": { "description": "Identifier of the course.\n\nRead-only.", "type": "string" @@ -2171,23 +319,83 @@ "type": "string" }, "dueTime": { - "$ref": "TimeOfDay", - "description": "Optional time of day, in UTC, that submissions for this this course work\nare due.\nThis must be specified if `due_date` is specified." + "description": "Optional time of day, in UTC, that submissions for this this course work\nare due.\nThis must be specified if `due_date` is specified.", + "$ref": "TimeOfDay" }, "title": { "description": "Title of this course work.\nThe title must be a valid UTF-8 string containing between 1 and 3000\ncharacters.", "type": "string" + }, + "materials": { + "description": "Additional materials.\n\nCourseWork must have no more than 20 material items.", + "items": { + "$ref": "Material" + }, + "type": "array" + }, + "associatedWithDeveloper": { + "description": "Whether this course work item is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.", + "type": "boolean" + }, + "updateTime": { + "format": "google-datetime", + "description": "Timestamp of the most recent change to this course work.\n\nRead-only.", + "type": "string" + }, + "alternateLink": { + "description": "Absolute link to this course work in the Classroom web UI.\nThis is only populated if `state` is `PUBLISHED`.\n\nRead-only.", + "type": "string" + }, + "maxPoints": { + "format": "double", + "description": "Maximum grade for this course work.\nIf zero or unspecified, this assignment is considered ungraded.\nThis must be a non-negative integer value.", + "type": "number" + }, + "assignment": { + "$ref": "Assignment", + "description": "Assignment details.\nThis is populated only when `work_type` is `ASSIGNMENT`.\n\nRead-only." + }, + "multipleChoiceQuestion": { + "description": "Multiple choice question details.\nFor read operations, this field is populated only when `work_type` is\n`MULTIPLE_CHOICE_QUESTION`.\nFor write operations, this field must be specified when creating course\nwork with a `work_type` of `MULTIPLE_CHOICE_QUESTION`, and it must not be\nset otherwise.", + "$ref": "MultipleChoiceQuestion" + }, + "workType": { + "description": "Type of this course work.\n\nThe type is set when the course work is created and cannot be changed.", + "type": "string", + "enumDescriptions": [ + "No work type specified. This is never returned.", + "An assignment.", + "A short answer question.", + "A multiple-choice question." + ], + "enum": [ + "COURSE_WORK_TYPE_UNSPECIFIED", + "ASSIGNMENT", + "SHORT_ANSWER_QUESTION", + "MULTIPLE_CHOICE_QUESTION" + ] + }, + "scheduledTime": { + "format": "google-datetime", + "description": "Optional timestamp when this course work is scheduled to be published.", + "type": "string" + }, + "description": { + "description": "Optional description of this course work.\nIf set, the description must be a valid UTF-8 string containing no more\nthan 30,000 characters.", + "type": "string" + }, + "creationTime": { + "format": "google-datetime", + "description": "Timestamp when this course work was created.\n\nRead-only.", + "type": "string" } - } + }, + "id": "CourseWork" }, "Guardian": { "description": "Association between a student and a guardian of that student. The guardian\nmay receive information about the student's course work.", "type": "object", "properties": { - "studentId": { - "type": "string", - "description": "Identifier for the student to whom the guardian relationship applies." - }, "invitedEmailAddress": { "description": "The email address to which the initial guardian invitation was sent.\nThis field is only visible to domain administrators.", "type": "string" @@ -2199,6 +407,10 @@ "guardianProfile": { "$ref": "UserProfile", "description": "User profile for the guardian." + }, + "studentId": { + "description": "Identifier for the student to whom the guardian relationship applies.", + "type": "string" } }, "id": "Guardian" @@ -2207,6 +419,10 @@ "description": "Global information for a user.", "type": "object", "properties": { + "verifiedTeacher": { + "description": "Represents whether a G Suite for Education user's domain administrator has\nexplicitly verified them as being a teacher. If the user is not a member of\na G Suite for Education domain, than this field will always be false.\n\nRead-only", + "type": "boolean" + }, "emailAddress": { "description": "Email address of the user.\n\nRead-only.", "type": "string" @@ -2223,21 +439,18 @@ "type": "array" }, "name": { - "$ref": "Name", - "description": "Name of the user.\n\nRead-only." + "description": "Name of the user.\n\nRead-only.", + "$ref": "Name" }, "id": { "description": "Identifier of the user.\n\nRead-only.", "type": "string" - }, - "verifiedTeacher": { - "description": "Represents whether a G Suite for Education user's domain administrator has\nexplicitly verified them as being a teacher. If the user is not a member of\na G Suite for Education domain, than this field will always be false.\n\nRead-only", - "type": "boolean" } }, "id": "UserProfile" }, "ListStudentsResponse": { + "description": "Response when listing students.", "type": "object", "properties": { "nextPageToken": { @@ -2252,11 +465,20 @@ "type": "array" } }, - "id": "ListStudentsResponse", - "description": "Response when listing students." + "id": "ListStudentsResponse" }, "Student": { + "description": "Student in a course.", + "type": "object", "properties": { + "studentWorkFolder": { + "$ref": "DriveFolder", + "description": "Information about a Drive Folder for this student's work in this course.\nOnly visible to the student and domain administrators.\n\nRead-only." + }, + "profile": { + "description": "Global user information for the student.\n\nRead-only.", + "$ref": "UserProfile" + }, "userId": { "description": "Identifier of the user.\n\nWhen specified as a parameter of a request, this identifier can be one of\nthe following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", "type": "string" @@ -2264,19 +486,9 @@ "courseId": { "description": "Identifier of the course.\n\nRead-only.", "type": "string" - }, - "studentWorkFolder": { - "$ref": "DriveFolder", - "description": "Information about a Drive Folder for this student's work in this course.\nOnly visible to the student and domain administrators.\n\nRead-only." - }, - "profile": { - "$ref": "UserProfile", - "description": "Global user information for the student.\n\nRead-only." } }, - "id": "Student", - "description": "Student in a course.", - "type": "object" + "id": "Student" }, "Invitation": { "description": "An invitation to join a course.", @@ -2291,8 +503,6 @@ "type": "string" }, "role": { - "description": "Role to invite the user to have.\nMust not be `COURSE_ROLE_UNSPECIFIED`.", - "type": "string", "enumDescriptions": [ "No course role.", "Student in the course.", @@ -2304,11 +514,13 @@ "STUDENT", "TEACHER", "OWNER" - ] + ], + "description": "Role to invite the user to have.\nMust not be `COURSE_ROLE_UNSPECIFIED`.", + "type": "string" }, "userId": { - "type": "string", - "description": "Identifier of the invited user.\n\nWhen specified as a parameter of a request, this identifier can be set to\none of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user" + "description": "Identifier of the invited user.\n\nWhen specified as a parameter of a request, this identifier can be set to\none of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string" } }, "id": "Invitation" @@ -2317,10 +529,6 @@ "description": "Representation of a Google Drive folder.", "type": "object", "properties": { - "id": { - "description": "Drive API resource ID.", - "type": "string" - }, "title": { "description": "Title of the Drive folder.\n\nRead-only.", "type": "string" @@ -2328,6 +536,10 @@ "alternateLink": { "description": "URL that can be used to access the Drive folder.\n\nRead-only.", "type": "string" + }, + "id": { + "description": "Drive API resource ID.", + "type": "string" } }, "id": "DriveFolder" @@ -2364,14 +576,57 @@ "properties": {}, "id": "TurnInStudentSubmissionRequest" }, + "ListStudentSubmissionsResponse": { + "description": "Response when listing student submissions.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", + "type": "string" + }, + "studentSubmissions": { + "description": "Student work that matches the request.", + "items": { + "$ref": "StudentSubmission" + }, + "type": "array" + } + }, + "id": "ListStudentSubmissionsResponse" + }, "StudentSubmission": { "description": "Student submission for course work.\n\nStudentSubmission items are generated when a CourseWork item is created.\n\nStudentSubmissions that have never been accessed (i.e. with `state` = NEW)\nmay not have a creation time or update time.", "type": "object", "properties": { + "late": { + "description": "Whether this submission is late.\n\nRead-only.", + "type": "boolean" + }, + "draftGrade": { + "format": "double", + "description": "Optional pending grade. If unset, no grade was set.\nThis value must be non-negative. Decimal (i.e. non-integer) values are\nallowed, but will be rounded to two decimal places.\n\nThis is only visible to and modifiable by course teachers.", + "type": "number" + }, + "courseWorkType": { + "enumDescriptions": [ + "No work type specified. This is never returned.", + "An assignment.", + "A short answer question.", + "A multiple-choice question." + ], + "enum": [ + "COURSE_WORK_TYPE_UNSPECIFIED", + "ASSIGNMENT", + "SHORT_ANSWER_QUESTION", + "MULTIPLE_CHOICE_QUESTION" + ], + "description": "Type of course work this submission is for.\n\nRead-only.", + "type": "string" + }, "creationTime": { - "type": "string", "format": "google-datetime", - "description": "Creation time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only." + "description": "Creation time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only.", + "type": "string" }, "state": { "enumDescriptions": [ @@ -2406,15 +661,15 @@ "type": "string" }, "id": { - "type": "string", - "description": "Classroom-assigned Identifier for the student submission.\nThis is unique among submissions for the relevant course work.\n\nRead-only." + "description": "Classroom-assigned Identifier for the student submission.\nThis is unique among submissions for the relevant course work.\n\nRead-only.", + "type": "string" }, "submissionHistory": { + "description": "The history of the submission (includes state and grade histories).\n\nRead-only.", "items": { "$ref": "SubmissionHistory" }, - "type": "array", - "description": "The history of the submission (includes state and grade histories).\n\nRead-only." + "type": "array" }, "assignedGrade": { "format": "double", @@ -2429,14 +684,14 @@ "$ref": "AssignmentSubmission", "description": "Submission content when course_work_type is ASSIGNMENT ." }, + "shortAnswerSubmission": { + "$ref": "ShortAnswerSubmission", + "description": "Submission content when course_work_type is SHORT_ANSWER_QUESTION." + }, "associatedWithDeveloper": { "description": "Whether this student submission is associated with the Developer Console\nproject making the request.\n\nSee google.classroom.Work.CreateCourseWork for more\ndetails.\n\nRead-only.", "type": "boolean" }, - "shortAnswerSubmission": { - "description": "Submission content when course_work_type is SHORT_ANSWER_QUESTION.", - "$ref": "ShortAnswerSubmission" - }, "updateTime": { "format": "google-datetime", "description": "Last update time of this submission.\nThis may be unset if the student has not accessed this item.\n\nRead-only.", @@ -2445,54 +700,12 @@ "alternateLink": { "description": "Absolute link to the submission in the Classroom web UI.\n\nRead-only.", "type": "string" - }, - "late": { - "type": "boolean", - "description": "Whether this submission is late.\n\nRead-only." - }, - "draftGrade": { - "format": "double", - "description": "Optional pending grade. If unset, no grade was set.\nThis value must be non-negative. Decimal (i.e. non-integer) values are\nallowed, but will be rounded to two decimal places.\n\nThis is only visible to and modifiable by course teachers.", - "type": "number" - }, - "courseWorkType": { - "type": "string", - "enumDescriptions": [ - "No work type specified. This is never returned.", - "An assignment.", - "A short answer question.", - "A multiple-choice question." - ], - "enum": [ - "COURSE_WORK_TYPE_UNSPECIFIED", - "ASSIGNMENT", - "SHORT_ANSWER_QUESTION", - "MULTIPLE_CHOICE_QUESTION" - ], - "description": "Type of course work this submission is for.\n\nRead-only." } }, "id": "StudentSubmission" }, - "ListStudentSubmissionsResponse": { - "properties": { - "nextPageToken": { - "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", - "type": "string" - }, - "studentSubmissions": { - "description": "Student work that matches the request.", - "items": { - "$ref": "StudentSubmission" - }, - "type": "array" - } - }, - "id": "ListStudentSubmissionsResponse", - "description": "Response when listing student submissions.", - "type": "object" - }, "ModifyAttachmentsRequest": { + "description": "Request to modify the attachments of a student submission.", "type": "object", "properties": { "addAttachments": { @@ -2503,11 +716,9 @@ "type": "array" } }, - "id": "ModifyAttachmentsRequest", - "description": "Request to modify the attachments of a student submission." + "id": "ModifyAttachmentsRequest" }, "ListCourseWorkResponse": { - "id": "ListCourseWorkResponse", "description": "Response when listing course work.", "type": "object", "properties": { @@ -2522,16 +733,16 @@ }, "type": "array" } - } + }, + "id": "ListCourseWorkResponse" }, "YouTubeVideo": { - "id": "YouTubeVideo", "description": "YouTube video item.", "type": "object", "properties": { "title": { - "type": "string", - "description": "Title of the YouTube video.\n\nRead-only." + "description": "Title of the YouTube video.\n\nRead-only.", + "type": "string" }, "alternateLink": { "description": "URL that can be used to view the YouTube video.\n\nRead-only.", @@ -2545,7 +756,8 @@ "description": "YouTube API resource ID.", "type": "string" } - } + }, + "id": "YouTubeVideo" }, "ListInvitationsResponse": { "description": "Response when listing invitations.", @@ -2556,11 +768,11 @@ "type": "string" }, "invitations": { + "description": "Invitations that match the list request.", "items": { "$ref": "Invitation" }, - "type": "array", - "description": "Invitations that match the list request." + "type": "array" } }, "id": "ListInvitationsResponse" @@ -2569,19 +781,23 @@ "description": "An invitation to become the guardian of a specified user, sent to a specified\nemail address.", "type": "object", "properties": { + "invitationId": { + "description": "Unique identifier for this invitation.\n\nRead-only.", + "type": "string" + }, "state": { + "enumDescriptions": [ + "Should never be returned.", + "The invitation is active and awaiting a response.", + "The invitation is no longer active. It may have been accepted, declined,\nwithdrawn or it may have expired." + ], "enum": [ "GUARDIAN_INVITATION_STATE_UNSPECIFIED", "PENDING", "COMPLETE" ], "description": "The state that this invitation is in.", - "type": "string", - "enumDescriptions": [ - "Should never be returned.", - "The invitation is active and awaiting a response.", - "The invitation is no longer active. It may have been accepted, declined,\nwithdrawn or it may have expired." - ] + "type": "string" }, "studentId": { "description": "ID of the student (in standard format)", @@ -2595,44 +811,38 @@ "format": "google-datetime", "description": "The time that this invitation was created.\n\nRead-only.", "type": "string" - }, - "invitationId": { - "type": "string", - "description": "Unique identifier for this invitation.\n\nRead-only." } }, "id": "GuardianInvitation" }, "Attachment": { + "description": "Attachment added to student assignment work.\n\nWhen creating attachments, setting the `form` field is not supported.", "type": "object", "properties": { "youTubeVideo": { - "$ref": "YouTubeVideo", - "description": "Youtube video attachment." + "description": "Youtube video attachment.", + "$ref": "YouTubeVideo" }, "driveFile": { - "$ref": "DriveFile", - "description": "Google Drive file attachment." + "description": "Google Drive file attachment.", + "$ref": "DriveFile" }, "form": { - "$ref": "Form", - "description": "Google Forms attachment." + "description": "Google Forms attachment.", + "$ref": "Form" }, "link": { - "description": "Link attachment.", - "$ref": "Link" + "$ref": "Link", + "description": "Link attachment." } }, - "id": "Attachment", - "description": "Attachment added to student assignment work.\n\nWhen creating attachments, setting the `form` field is not supported." + "id": "Attachment" }, "StateHistory": { "description": "The history of each state this submission has been in.", "type": "object", "properties": { "state": { - "description": "The workflow pipeline stage.", - "type": "string", "enumDescriptions": [ "No state specified. This should never be returned.", "The Submission has been created.", @@ -2648,16 +858,18 @@ "RETURNED", "RECLAIMED_BY_STUDENT", "STUDENT_EDITED_AFTER_TURN_IN" - ] + ], + "description": "The workflow pipeline stage.", + "type": "string" }, "stateTimestamp": { - "type": "string", "format": "google-datetime", - "description": "When the submission entered this state." + "description": "When the submission entered this state.", + "type": "string" }, "actorUserId": { - "type": "string", - "description": "The teacher or student who made the change" + "description": "The teacher or student who made the change", + "type": "string" } }, "id": "StateHistory" @@ -2711,22 +923,28 @@ "description": "Response when listing courses.", "type": "object", "properties": { - "nextPageToken": { - "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", - "type": "string" - }, "courses": { "description": "Courses that match the list request.", "items": { "$ref": "Course" }, "type": "array" + }, + "nextPageToken": { + "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", + "type": "string" } }, "id": "ListCoursesResponse" }, "Form": { + "description": "Google Forms item.", + "type": "object", "properties": { + "thumbnailUrl": { + "description": "URL of a thumbnail image of the Form.\n\nRead-only.", + "type": "string" + }, "responseUrl": { "description": "URL of the form responses document.\nOnly set if respsonses have been recorded and only when the\nrequesting user is an editor of the form.\n\nRead-only.", "type": "string" @@ -2738,17 +956,13 @@ "title": { "description": "Title of the Form.\n\nRead-only.", "type": "string" - }, - "thumbnailUrl": { - "description": "URL of a thumbnail image of the Form.\n\nRead-only.", - "type": "string" } }, - "id": "Form", - "description": "Google Forms item.", - "type": "object" + "id": "Form" }, "ListTeachersResponse": { + "description": "Response when listing teachers.", + "type": "object", "properties": { "nextPageToken": { "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", @@ -2762,14 +976,16 @@ "type": "array" } }, - "id": "ListTeachersResponse", - "description": "Response when listing teachers.", - "type": "object" + "id": "ListTeachersResponse" }, "Link": { "description": "URL item.", "type": "object", "properties": { + "title": { + "description": "Title of the target of the URL.\n\nRead-only.", + "type": "string" + }, "thumbnailUrl": { "description": "URL of a thumbnail image of the target URL.\n\nRead-only.", "type": "string" @@ -2777,10 +993,6 @@ "url": { "description": "URL to link to.\nThis must be a valid UTF-8 string containing between 1 and 2024 characters.", "type": "string" - }, - "title": { - "description": "Title of the target of the URL.\n\nRead-only.", - "type": "string" } }, "id": "Link" @@ -2803,26 +1015,7 @@ }, "id": "ListGuardiansResponse" }, - "ListGuardianInvitationsResponse": { - "description": "Response when listing guardian invitations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", - "type": "string" - }, - "guardianInvitations": { - "description": "Guardian invitations that matched the list request.", - "items": { - "$ref": "GuardianInvitation" - }, - "type": "array" - } - }, - "id": "ListGuardianInvitationsResponse" - }, "ListCourseAliasesResponse": { - "id": "ListCourseAliasesResponse", "description": "Response when listing course aliases.", "type": "object", "properties": { @@ -2837,7 +1030,8 @@ "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", "type": "string" } - } + }, + "id": "ListCourseAliasesResponse" }, "CourseAlias": { "description": "Alternative identifier for a course.\n\nAn alias uniquely identifies a course. It must be unique within one of the\nfollowing scopes:\n\n* domain: A domain-scoped alias is visible to all users within the alias\ncreator's domain and can be created only by a domain admin. A domain-scoped\nalias is often used when a course has an identifier external to Classroom.\n\n* project: A project-scoped alias is visible to any request from an\napplication using the Developer Console project ID that created the alias\nand can be created by any project. A project-scoped alias is often used when\nan application has alternative identifiers. A random value can also be used\nto avoid duplicate courses in the event of transmission failures, as retrying\na request will return `ALREADY_EXISTS` if a previous one has succeeded.", @@ -2849,6 +1043,137 @@ } }, "id": "CourseAlias" + }, + "ListGuardianInvitationsResponse": { + "description": "Response when listing guardian invitations.", + "type": "object", + "properties": { + "guardianInvitations": { + "description": "Guardian invitations that matched the list request.", + "items": { + "$ref": "GuardianInvitation" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Token identifying the next page of results to return. If empty, no further\nresults are available.", + "type": "string" + } + }, + "id": "ListGuardianInvitationsResponse" + }, + "Date": { + "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", + "type": "object", + "properties": { + "day": { + "format": "int32", + "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", + "type": "integer" + }, + "year": { + "format": "int32", + "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", + "type": "integer" + }, + "month": { + "format": "int32", + "description": "Month of year. Must be from 1 to 12.", + "type": "integer" + } + }, + "id": "Date" + }, + "MultipleChoiceSubmission": { + "description": "Student work for a multiple-choice question.", + "type": "object", + "properties": { + "answer": { + "description": "Student's select choice.", + "type": "string" + } + }, + "id": "MultipleChoiceSubmission" + }, + "Name": { + "description": "Details of the user's name.", + "type": "object", + "properties": { + "familyName": { + "description": "The user's last name.\n\nRead-only.", + "type": "string" + }, + "givenName": { + "description": "The user's first name.\n\nRead-only.", + "type": "string" + }, + "fullName": { + "description": "The user's full name formed by concatenating the first and last name\nvalues.\n\nRead-only.", + "type": "string" + } + }, + "id": "Name" + }, + "CourseMaterial": { + "description": "A material attached to a course as part of a material set.", + "type": "object", + "properties": { + "youTubeVideo": { + "$ref": "YouTubeVideo", + "description": "Youtube video attachment." + }, + "driveFile": { + "$ref": "DriveFile", + "description": "Google Drive file attachment." + }, + "form": { + "description": "Google Forms attachment.", + "$ref": "Form" + }, + "link": { + "$ref": "Link", + "description": "Link atatchment." + } + }, + "id": "CourseMaterial" + }, + "Assignment": { + "description": "Additional details for assignments.", + "type": "object", + "properties": { + "studentWorkFolder": { + "description": "Drive folder where attachments from student submissions are placed.\nThis is only populated for course teachers and administrators.", + "$ref": "DriveFolder" + } + }, + "id": "Assignment" + }, + "SharedDriveFile": { + "description": "Drive file that is used as material for course work.", + "type": "object", + "properties": { + "shareMode": { + "enumDescriptions": [ + "No sharing mode specified. This should never be returned.", + "Students can view the shared file.", + "Students can edit the shared file.", + "Students have a personal copy of the shared file." + ], + "enum": [ + "UNKNOWN_SHARE_MODE", + "VIEW", + "EDIT", + "STUDENT_COPY" + ], + "description": "Mechanism by which students access the Drive item.", + "type": "string" + }, + "driveFile": { + "$ref": "DriveFile", + "description": "Drive file details." + } + }, + "id": "SharedDriveFile" } }, "protocol": "rest", @@ -2857,5 +1182,1680 @@ "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "version": "v1", - "baseUrl": "https://classroom.googleapis.com/" + "baseUrl": "https://classroom.googleapis.com/", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/classroom.coursework.me": { + "description": "Manage your course work and view your grades in Google Classroom" + }, + "https://www.googleapis.com/auth/classroom.rosters": { + "description": "Manage your Google Classroom class rosters" + }, + "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly": { + "description": "View course work and grades for students in the Google Classroom classes you teach or administer" + }, + "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly": { + "description": "View guardians for students in your Google Classroom classes" + }, + "https://www.googleapis.com/auth/classroom.courses": { + "description": "Manage your Google Classroom classes" + }, + "https://www.googleapis.com/auth/classroom.courses.readonly": { + "description": "View your Google Classroom classes" + }, + "https://www.googleapis.com/auth/classroom.profile.photos": { + "description": "View the profile photos of people in your classes" + }, + "https://www.googleapis.com/auth/classroom.rosters.readonly": { + "description": "View your Google Classroom class rosters" + }, + "https://www.googleapis.com/auth/classroom.guardianlinks.students": { + "description": "View and manage guardians for students in your Google Classroom classes" + }, + "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly": { + "description": "View your course work and grades in Google Classroom" + }, + "https://www.googleapis.com/auth/classroom.coursework.students": { + "description": "Manage course work and grades for students in the Google Classroom classes you teach and view the course work and grades for classes you administer" + }, + "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly": { + "description": "View your Google Classroom guardians" + }, + "https://www.googleapis.com/auth/classroom.coursework.students.readonly": { + "description": "View course work and grades for students in the Google Classroom classes you teach or administer" + }, + "https://www.googleapis.com/auth/classroom.coursework.me.readonly": { + "description": "View your course work and grades in Google Classroom" + }, + "https://www.googleapis.com/auth/classroom.profile.emails": { + "description": "View the email addresses of people in your classes" + } + } + } + }, + "servicePath": "", + "description": "Manages classes, rosters, and invitations in Google Classroom.", + "kind": "discovery#restDescription", + "rootUrl": "https://classroom.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "classroom", + "batchPath": "batch", + "id": "classroom:v1", + "documentationLink": "https://developers.google.com/classroom/", + "revision": "20170825", + "title": "Google Classroom API", + "discoveryVersion": "v1", + "ownerName": "Google", + "resources": { + "invitations": { + "methods": { + "accept": { + "description": "Accepts an invitation, removing it and adding the invited user to the\nteachers or students (as appropriate) of the specified course. Only the\ninvited user may accept an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to accept the\nrequested invitation or for access errors.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * CourseTeacherLimitReached\n * UserGroupsMembershipLimitReached\n* `NOT_FOUND` if no invitation exists with the requested ID.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters" + ], + "parameters": { + "id": { + "location": "path", + "description": "Identifier of the invitation to accept.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/invitations/{id}:accept", + "id": "classroom.invitations.accept", + "path": "v1/invitations/{id}:accept" + }, + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "id" + ], + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters" + ], + "parameters": { + "id": { + "location": "path", + "description": "Identifier of the invitation to delete.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/invitations/{id}", + "path": "v1/invitations/{id}", + "id": "classroom.invitations.delete", + "description": "Deletes an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete the\nrequested invitation or for access errors.\n* `NOT_FOUND` if no invitation exists with the requested ID." + }, + "list": { + "description": "Returns a list of invitations that the requesting user is permitted to\nview, restricted to those that match the list request.\n\n*Note:* At least one of `user_id` or `course_id` must be supplied. Both\nfields can be supplied.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` for access errors.", + "response": { + "$ref": "ListInvitationsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating\nthat the subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", + "type": "string" + }, + "userId": { + "description": "Restricts returned invitations to those for a specific user. The identifier\ncan be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer" + }, + "courseId": { + "location": "query", + "description": "Restricts returned invitations to those for a course with the specified\nidentifier.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ], + "flatPath": "v1/invitations", + "id": "classroom.invitations.list", + "path": "v1/invitations" + }, + "get": { + "flatPath": "v1/invitations/{id}", + "id": "classroom.invitations.get", + "path": "v1/invitations/{id}", + "description": "Returns an invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view the\nrequested invitation or for access errors.\n* `NOT_FOUND` if no invitation exists with the requested ID.", + "response": { + "$ref": "Invitation" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "GET", + "parameters": { + "id": { + "description": "Identifier of the invitation to return.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ] + }, + "create": { + "request": { + "$ref": "Invitation" + }, + "description": "Creates an invitation. Only one invitation for a user and course may exist\nat a time. Delete and re-create an invitation to make changes.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\ninvitations for this course or for access errors.\n* `NOT_FOUND` if the course or the user does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled or if\nthe user already has this role or a role with greater permissions.\n* `ALREADY_EXISTS` if an invitation for the specified user and course\nalready exists.", + "response": { + "$ref": "Invitation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters" + ], + "parameters": {}, + "flatPath": "v1/invitations", + "id": "classroom.invitations.create", + "path": "v1/invitations" + } + } + }, + "userProfiles": { + "methods": { + "get": { + "description": "Returns a user profile.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access\nthis user profile, if no profile exists with the requested ID, or for\naccess errors.", + "response": { + "$ref": "UserProfile" + }, + "parameterOrder": [ + "userId" + ], + "httpMethod": "GET", + "parameters": { + "userId": { + "location": "path", + "description": "Identifier of the profile to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ], + "flatPath": "v1/userProfiles/{userId}", + "id": "classroom.userProfiles.get", + "path": "v1/userProfiles/{userId}" + } + }, + "resources": { + "guardianInvitations": { + "methods": { + "patch": { + "flatPath": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", + "id": "classroom.userProfiles.guardianInvitations.patch", + "path": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", + "request": { + "$ref": "GuardianInvitation" + }, + "description": "Modifies a guardian invitation.\n\nCurrently, the only valid modification is to change the `state` from\n`PENDING` to `COMPLETE`. This has the effect of withdrawing the invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n manage guardians, if guardians are not enabled for the domain in question\n or for other access errors.\n* `FAILED_PRECONDITION` if the guardian link is not in the `PENDING` state.\n* `INVALID_ARGUMENT` if the format of the student ID provided\n cannot be recognized (it is not an email address, nor a `user_id` from\n this API), or if the passed `GuardianInvitation` has a `state` other than\n `COMPLETE`, or if it modifies fields other than `state`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n Classroom has no record of that student, or if the `id` field does not\n refer to a guardian invitation known to Classroom.", + "response": { + "$ref": "GuardianInvitation" + }, + "parameterOrder": [ + "studentId", + "invitationId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.students" + ], + "parameters": { + "updateMask": { + "format": "google-fieldmask", + "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `state`\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=\u003cfield1\u003e,\u003cfield2\u003e,...`", + "type": "string", + "location": "query" + }, + "invitationId": { + "description": "The `id` field of the `GuardianInvitation` to be modified.", + "type": "string", + "required": true, + "location": "path" + }, + "studentId": { + "description": "The ID of the student whose guardian invitation is to be modified.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "get": { + "description": "Returns a specific guardian invitation.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\n guardian invitations for the student identified by the `student_id`, if\n guardians are not enabled for the domain in question, or for other\n access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`).\n* `NOT_FOUND` if Classroom cannot find any record of the given student or\n `invitation_id`. May also be returned if the student exists, but the\n requesting user does not have access to see that student.", + "httpMethod": "GET", + "parameterOrder": [ + "studentId", + "invitationId" + ], + "response": { + "$ref": "GuardianInvitation" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.students", + "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" + ], + "parameters": { + "invitationId": { + "location": "path", + "description": "The `id` field of the `GuardianInvitation` being requested.", + "type": "string", + "required": true + }, + "studentId": { + "description": "The ID of the student whose guardian invitation is being requested.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", + "path": "v1/userProfiles/{studentId}/guardianInvitations/{invitationId}", + "id": "classroom.userProfiles.guardianInvitations.get" + }, + "list": { + "description": "Returns a list of guardian invitations that the requesting user is\npermitted to view, filtered by the parameters provided.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if a `student_id` is specified, and the requesting\n user is not permitted to view guardian invitations for that student, if\n `\"-\"` is specified as the `student_id` and the user is not a domain\n administrator, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`). May also be returned if an invalid\n `page_token` or `state` is provided.\n* `NOT_FOUND` if a `student_id` is specified, and its format can be\n recognized, but Classroom has no record of that student.", + "response": { + "$ref": "ListGuardianInvitationsResponse" + }, + "parameterOrder": [ + "studentId" + ], + "httpMethod": "GET", + "parameters": { + "pageSize": { + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer", + "location": "query" + }, + "states": { + "description": "If specified, only results with the specified `state` values will be\nreturned. Otherwise, results with a `state` of `PENDING` will be returned.", + "type": "string", + "repeated": true, + "location": "query", + "enum": [ + "GUARDIAN_INVITATION_STATE_UNSPECIFIED", + "PENDING", + "COMPLETE" + ] + }, + "invitedEmailAddress": { + "description": "If specified, only results with the specified `invited_email_address`\nwill be returned.", + "type": "string", + "location": "query" + }, + "studentId": { + "description": "The ID of the student whose guardian invitations are to be returned.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n all students that the requesting user is permitted to view guardian\n invitations.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.students", + "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" + ], + "flatPath": "v1/userProfiles/{studentId}/guardianInvitations", + "id": "classroom.userProfiles.guardianInvitations.list", + "path": "v1/userProfiles/{studentId}/guardianInvitations" + }, + "create": { + "request": { + "$ref": "GuardianInvitation" + }, + "description": "Creates a guardian invitation, and sends an email to the guardian asking\nthem to confirm that they are the student's guardian.\n\nOnce the guardian accepts the invitation, their `state` will change to\n`COMPLETED` and they will start receiving guardian notifications. A\n`Guardian` resource will also be created to represent the active guardian.\n\nThe request object must have the `student_id` and\n`invited_email_address` fields set. Failing to set these fields, or\nsetting any other fields in the request, will result in an error.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the current user does not have permission to\n manage guardians, if the guardian in question has already rejected\n too many requests for that student, if guardians are not enabled for the\n domain in question, or for other access errors.\n* `RESOURCE_EXHAUSTED` if the student or guardian has exceeded the guardian\n link limit.\n* `INVALID_ARGUMENT` if the guardian email address is not valid (for\n example, if it is too long), or if the format of the student ID provided\n cannot be recognized (it is not an email address, nor a `user_id` from\n this API). This error will also be returned if read-only fields are set,\n or if the `state` field is set to to a value other than `PENDING`.\n* `NOT_FOUND` if the student ID provided is a valid student ID, but\n Classroom has no record of that student.\n* `ALREADY_EXISTS` if there is already a pending guardian invitation for\n the student and `invited_email_address` provided, or if the provided\n `invited_email_address` matches the Google account of an existing\n `Guardian` for this user.", + "response": { + "$ref": "GuardianInvitation" + }, + "parameterOrder": [ + "studentId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.students" + ], + "parameters": { + "studentId": { + "description": "ID of the student (in standard format)", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/userProfiles/{studentId}/guardianInvitations", + "id": "classroom.userProfiles.guardianInvitations.create", + "path": "v1/userProfiles/{studentId}/guardianInvitations" + } + } + }, + "guardians": { + "methods": { + "get": { + "flatPath": "v1/userProfiles/{studentId}/guardians/{guardianId}", + "id": "classroom.userProfiles.guardians.get", + "path": "v1/userProfiles/{studentId}/guardians/{guardianId}", + "description": "Returns a specific guardian.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if no user that matches the provided `student_id`\n is visible to the requesting user, if the requesting user is not\n permitted to view guardian information for the student identified by the\n `student_id`, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`).\n* `NOT_FOUND` if the requesting user is permitted to view guardians for\n the requested `student_id`, but no `Guardian` record exists for that\n student that matches the provided `guardian_id`.", + "response": { + "$ref": "Guardian" + }, + "parameterOrder": [ + "studentId", + "guardianId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly", + "https://www.googleapis.com/auth/classroom.guardianlinks.students", + "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" + ], + "parameters": { + "guardianId": { + "description": "The `id` field from a `Guardian`.", + "type": "string", + "required": true, + "location": "path" + }, + "studentId": { + "location": "path", + "description": "The student whose guardian is being requested. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true + } + } + }, + "list": { + "flatPath": "v1/userProfiles/{studentId}/guardians", + "path": "v1/userProfiles/{studentId}/guardians", + "id": "classroom.userProfiles.guardians.list", + "description": "Returns a list of guardians that the requesting user is permitted to\nview, restricted to those that match the request.\n\nTo list guardians for any student that the requesting user may view\nguardians for, use the literal character `-` for the student ID.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if a `student_id` is specified, and the requesting\n user is not permitted to view guardian information for that student, if\n `\"-\"` is specified as the `student_id` and the user is not a domain\n administrator, if guardians are not enabled for the domain in question,\n if the `invited_email_address` filter is set by a user who is not a\n domain administrator, or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API, nor the literal string `me`). May also be returned if an invalid\n `page_token` is provided.\n* `NOT_FOUND` if a `student_id` is specified, and its format can be\n recognized, but Classroom has no record of that student.", + "httpMethod": "GET", + "response": { + "$ref": "ListGuardiansResponse" + }, + "parameterOrder": [ + "studentId" + ], + "parameters": { + "studentId": { + "description": "Filter results by the student who the guardian is linked to.\nThe identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user\n* the string literal `\"-\"`, indicating that results should be returned for\n all students that the requesting user has access to view.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer", + "location": "query" + }, + "invitedEmailAddress": { + "location": "query", + "description": "Filter results by the email address that the original invitation was sent\nto, resulting in this guardian link.\nThis filter can only be used by domain administrators.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.me.readonly", + "https://www.googleapis.com/auth/classroom.guardianlinks.students", + "https://www.googleapis.com/auth/classroom.guardianlinks.students.readonly" + ] + }, + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "studentId", + "guardianId" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.guardianlinks.students" + ], + "parameters": { + "guardianId": { + "description": "The `id` field from a `Guardian`.", + "type": "string", + "required": true, + "location": "path" + }, + "studentId": { + "description": "The student whose guardian is to be deleted. One of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/userProfiles/{studentId}/guardians/{guardianId}", + "path": "v1/userProfiles/{studentId}/guardians/{guardianId}", + "id": "classroom.userProfiles.guardians.delete", + "description": "Deletes a guardian.\n\nThe guardian will no longer receive guardian notifications and the guardian\nwill no longer be accessible via the API.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if no user that matches the provided `student_id`\n is visible to the requesting user, if the requesting user is not\n permitted to manage guardians for the student identified by the\n `student_id`, if guardians are not enabled for the domain in question,\n or for other access errors.\n* `INVALID_ARGUMENT` if a `student_id` is specified, but its format cannot\n be recognized (it is not an email address, nor a `student_id` from the\n API).\n* `NOT_FOUND` if the requesting user is permitted to modify guardians for\n the requested `student_id`, but no `Guardian` record exists for that\n student with the provided `guardian_id`." + } + } + } + } + }, + "courses": { + "methods": { + "get": { + "description": "Returns a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.", + "response": { + "$ref": "Course" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses", + "https://www.googleapis.com/auth/classroom.courses.readonly" + ], + "parameters": { + "id": { + "description": "Identifier of the course to return.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/courses/{id}", + "id": "classroom.courses.get", + "path": "v1/courses/{id}" + }, + "patch": { + "description": "Updates one or more fields in a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `INVALID_ARGUMENT` if invalid fields are specified in the update mask or\nif no update mask is supplied.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseNotModifiable", + "request": { + "$ref": "Course" + }, + "httpMethod": "PATCH", + "parameterOrder": [ + "id" + ], + "response": { + "$ref": "Course" + }, + "parameters": { + "id": { + "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Mask that identifies which fields on the course to update.\nThis field is required to do an update. The update will fail if invalid\nfields are specified. The following fields are valid:\n\n* `name`\n* `section`\n* `descriptionHeading`\n* `description`\n* `room`\n* `courseState`\n* `ownerId`\n\nNote: patches to ownerId are treated as being effective immediately, but in\npractice it may take some time for the ownership transfer of all affected\nresources to complete.\n\nWhen set in a query parameter, this field should be specified as\n\n`updateMask=\u003cfield1\u003e,\u003cfield2\u003e,...`", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "flatPath": "v1/courses/{id}", + "path": "v1/courses/{id}", + "id": "classroom.courses.patch" + }, + "update": { + "description": "Updates a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to modify the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID.\n* `FAILED_PRECONDITION` for the following request errors:\n * CourseNotModifiable", + "request": { + "$ref": "Course" + }, + "response": { + "$ref": "Course" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "PUT", + "parameters": { + "id": { + "description": "Identifier of the course to update.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "flatPath": "v1/courses/{id}", + "id": "classroom.courses.update", + "path": "v1/courses/{id}" + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "parameters": { + "id": { + "description": "Identifier of the course to delete.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/courses/{id}", + "id": "classroom.courses.delete", + "path": "v1/courses/{id}", + "description": "Deletes a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete the\nrequested course or for access errors.\n* `NOT_FOUND` if no course exists with the requested ID." + }, + "list": { + "flatPath": "v1/courses", + "path": "v1/courses", + "id": "classroom.courses.list", + "description": "Returns a list of courses that the requesting user is permitted to view,\nrestricted to those that match the request. Returned courses are ordered by\ncreation time, with the most recently created coming first.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` for access errors.\n* `INVALID_ARGUMENT` if the query argument is malformed.\n* `NOT_FOUND` if any users specified in the query arguments do not exist.", + "httpMethod": "GET", + "parameterOrder": [], + "response": { + "$ref": "ListCoursesResponse" + }, + "parameters": { + "studentId": { + "description": "Restricts returned courses to those having a student with the specified\nidentifier. The identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer", + "location": "query" + }, + "courseStates": { + "description": "Restricts returned courses to those in one of the specified states\nThe default value is ACTIVE, ARCHIVED, PROVISIONED, DECLINED.", + "type": "string", + "repeated": true, + "location": "query", + "enum": [ + "COURSE_STATE_UNSPECIFIED", + "ACTIVE", + "ARCHIVED", + "PROVISIONED", + "DECLINED", + "SUSPENDED" + ] + }, + "teacherId": { + "location": "query", + "description": "Restricts returned courses to those having a teacher with the specified\nidentifier. The identifier can be one of the following:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses", + "https://www.googleapis.com/auth/classroom.courses.readonly" + ] + }, + "create": { + "flatPath": "v1/courses", + "id": "classroom.courses.create", + "path": "v1/courses", + "request": { + "$ref": "Course" + }, + "description": "Creates a course.\n\nThe user specified in `ownerId` is the owner of the created course\nand added as a teacher.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\ncourses or for access errors.\n* `NOT_FOUND` if the primary teacher is not a valid user.\n* `FAILED_PRECONDITION` if the course owner's account is disabled or for\nthe following request errors:\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if an alias was specified in the `id` and\nalready exists.", + "response": { + "$ref": "Course" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "parameters": {} + } + }, + "resources": { + "teachers": { + "methods": { + "list": { + "flatPath": "v1/courses/{courseId}/teachers", + "id": "classroom.courses.teachers.list", + "path": "v1/courses/{courseId}/teachers", + "description": "Returns a list of teachers of this course that the requester\nis permitted to view.\n\nThis method returns the following error codes:\n\n* `NOT_FOUND` if the course does not exist.\n* `PERMISSION_DENIED` for access errors.", + "response": { + "$ref": "ListTeachersResponse" + }, + "parameterOrder": [ + "courseId" + ], + "httpMethod": "GET", + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ] + }, + "get": { + "description": "Returns a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\nteachers of this course or for access errors.\n* `NOT_FOUND` if no teacher of this course has the requested ID or if the\ncourse does not exist.", + "response": { + "$ref": "Teacher" + }, + "parameterOrder": [ + "courseId", + "userId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ], + "parameters": { + "userId": { + "description": "Identifier of the teacher to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/teachers/{userId}", + "id": "classroom.courses.teachers.get", + "path": "v1/courses/{courseId}/teachers/{userId}" + }, + "create": { + "flatPath": "v1/courses/{courseId}/teachers", + "path": "v1/courses/{courseId}/teachers", + "id": "classroom.courses.teachers.create", + "request": { + "$ref": "Teacher" + }, + "description": "Creates a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nteachers in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * CourseTeacherLimitReached\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a teacher or student in the\ncourse.", + "httpMethod": "POST", + "parameterOrder": [ + "courseId" + ], + "response": { + "$ref": "Teacher" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters" + ], + "parameters": { + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "delete": { + "description": "Deletes a teacher of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nteachers of this course or for access errors.\n* `NOT_FOUND` if no teacher of this course has the requested ID or if the\ncourse does not exist.\n* `FAILED_PRECONDITION` if the requested ID belongs to the primary teacher\nof this course.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "courseId", + "userId" + ], + "httpMethod": "DELETE", + "parameters": { + "userId": { + "description": "Identifier of the teacher to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters" + ], + "flatPath": "v1/courses/{courseId}/teachers/{userId}", + "id": "classroom.courses.teachers.delete", + "path": "v1/courses/{courseId}/teachers/{userId}" + } + } + }, + "aliases": { + "methods": { + "delete": { + "description": "Deletes an alias of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to remove the\nalias or for access errors.\n* `NOT_FOUND` if the alias does not exist.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n requesting user or course (for example, if a user not in a domain\n attempts to delete a domain-scoped alias).", + "parameterOrder": [ + "courseId", + "alias" + ], + "response": { + "$ref": "Empty" + }, + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "parameters": { + "courseId": { + "description": "Identifier of the course whose alias should be deleted.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "alias": { + "location": "path", + "description": "Alias to delete.\nThis may not be the Classroom-assigned identifier.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/aliases/{alias}", + "id": "classroom.courses.aliases.delete", + "path": "v1/courses/{courseId}/aliases/{alias}" + }, + "list": { + "description": "Returns a list of aliases for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\ncourse or for access errors.\n* `NOT_FOUND` if the course does not exist.", + "parameterOrder": [ + "courseId" + ], + "response": { + "$ref": "ListCourseAliasesResponse" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses", + "https://www.googleapis.com/auth/classroom.courses.readonly" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer" + }, + "courseId": { + "location": "path", + "description": "The identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", + "type": "string" + } + }, + "flatPath": "v1/courses/{courseId}/aliases", + "id": "classroom.courses.aliases.list", + "path": "v1/courses/{courseId}/aliases" + }, + "create": { + "description": "Creates an alias for a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create the\nalias or for access errors.\n* `NOT_FOUND` if the course does not exist.\n* `ALREADY_EXISTS` if the alias already exists.\n* `FAILED_PRECONDITION` if the alias requested does not make sense for the\n requesting user or course (for example, if a user not in a domain\n attempts to access a domain-scoped alias).", + "request": { + "$ref": "CourseAlias" + }, + "httpMethod": "POST", + "parameterOrder": [ + "courseId" + ], + "response": { + "$ref": "CourseAlias" + }, + "parameters": { + "courseId": { + "location": "path", + "description": "Identifier of the course to alias.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.courses" + ], + "flatPath": "v1/courses/{courseId}/aliases", + "path": "v1/courses/{courseId}/aliases", + "id": "classroom.courses.aliases.create" + } + } + }, + "students": { + "methods": { + "list": { + "flatPath": "v1/courses/{courseId}/students", + "path": "v1/courses/{courseId}/students", + "id": "classroom.courses.students.list", + "description": "Returns a list of students of this course that the requester\nis permitted to view.\n\nThis method returns the following error codes:\n\n* `NOT_FOUND` if the course does not exist.\n* `PERMISSION_DENIED` for access errors.", + "httpMethod": "GET", + "parameterOrder": [ + "courseId" + ], + "response": { + "$ref": "ListStudentsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "nextPageToken\nvalue returned from a previous\nlist call, indicating that\nthe subsequent page of results should be returned.\n\nThe list request must be\notherwise identical to the one that resulted in this token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Maximum number of items to return. Zero means no maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer", + "location": "query" + }, + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "get": { + "description": "Returns a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to view\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist.", + "httpMethod": "GET", + "parameterOrder": [ + "courseId", + "userId" + ], + "response": { + "$ref": "Student" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters", + "https://www.googleapis.com/auth/classroom.rosters.readonly" + ], + "parameters": { + "userId": { + "description": "Identifier of the student to return. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/students/{userId}", + "path": "v1/courses/{courseId}/students/{userId}", + "id": "classroom.courses.students.get" + }, + "create": { + "flatPath": "v1/courses/{courseId}/students", + "id": "classroom.courses.students.create", + "path": "v1/courses/{courseId}/students", + "request": { + "$ref": "Student" + }, + "description": "Adds a user as a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to create\nstudents in this course or for access errors.\n* `NOT_FOUND` if the requested course ID does not exist.\n* `FAILED_PRECONDITION` if the requested user's account is disabled,\nfor the following request errors:\n * CourseMemberLimitReached\n * CourseNotModifiable\n * UserGroupsMembershipLimitReached\n* `ALREADY_EXISTS` if the user is already a student or teacher in the\ncourse.", + "response": { + "$ref": "Student" + }, + "parameterOrder": [ + "courseId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/classroom.profile.emails", + "https://www.googleapis.com/auth/classroom.profile.photos", + "https://www.googleapis.com/auth/classroom.rosters" + ], + "parameters": { + "courseId": { + "description": "Identifier of the course to create the student in.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "enrollmentCode": { + "description": "Enrollment code of the course to create the student in.\nThis code is required if userId\ncorresponds to the requesting user; it may be omitted if the requesting\nuser has administrative permissions to create students for any user.", + "type": "string", + "location": "query" + } + } + }, + "delete": { + "flatPath": "v1/courses/{courseId}/students/{userId}", + "path": "v1/courses/{courseId}/students/{userId}", + "id": "classroom.courses.students.delete", + "description": "Deletes a student of a course.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to delete\nstudents of this course or for access errors.\n* `NOT_FOUND` if no student of this course has the requested ID or if the\ncourse does not exist.", + "httpMethod": "DELETE", + "parameterOrder": [ + "courseId", + "userId" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "userId": { + "description": "Identifier of the student to delete. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.rosters" + ] + } + } + }, + "courseWork": { + "methods": { + "list": { + "description": "Returns a list of course work that the requester is permitted to view.\n\nCourse students may only view `PUBLISHED` course work. Course teachers\nand domain administrators may view all course work.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access\nthe requested course or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.", + "response": { + "$ref": "ListCourseWorkResponse" + }, + "parameterOrder": [ + "courseId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.me.readonly", + "https://www.googleapis.com/auth/classroom.coursework.students", + "https://www.googleapis.com/auth/classroom.coursework.students.readonly" + ], + "parameters": { + "pageToken": { + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", + "type": "string", + "location": "query" + }, + "orderBy": { + "description": "Optional sort ordering for results. A comma-separated list of fields with\nan optional sort direction keyword. Supported fields are `updateTime`\nand `dueDate`. Supported direction keywords are `asc` and `desc`.\nIf not specified, `updateTime desc` is the default behavior.\nExamples: `dueDate asc,updateTime desc`, `updateTime,dueDate desc`", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer" + }, + "courseWorkStates": { + "description": "Restriction on the work status to return. Only courseWork that matches\nis returned. If unspecified, items with a work status of `PUBLISHED`\nis returned.", + "type": "string", + "repeated": true, + "location": "query", + "enum": [ + "COURSE_WORK_STATE_UNSPECIFIED", + "PUBLISHED", + "DRAFT", + "DELETED" + ] + }, + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/courses/{courseId}/courseWork", + "id": "classroom.courses.courseWork.list", + "path": "v1/courses/{courseId}/courseWork" + }, + "get": { + "description": "Returns course work.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course or course work does not exist.", + "httpMethod": "GET", + "parameterOrder": [ + "courseId", + "id" + ], + "response": { + "$ref": "CourseWork" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.me.readonly", + "https://www.googleapis.com/auth/classroom.coursework.students", + "https://www.googleapis.com/auth/classroom.coursework.students.readonly" + ], + "parameters": { + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "id": { + "location": "path", + "description": "Identifier of the course work.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/courseWork/{id}", + "path": "v1/courses/{courseId}/courseWork/{id}", + "id": "classroom.courses.courseWork.get" + }, + "patch": { + "request": { + "$ref": "CourseWork" + }, + "description": "Updates one or more fields of a course work.\n\nSee google.classroom.v1.CourseWork for details\nof which fields may be updated and who may change them.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the user is not permitted to make the\nrequested modification to the student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `FAILED_PRECONDITION` if the requested course work has already been\ndeleted.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "httpMethod": "PATCH", + "parameterOrder": [ + "courseId", + "id" + ], + "response": { + "$ref": "CourseWork" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.students" + ], + "parameters": { + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "id": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "Mask that identifies which fields on the course work to update.\nThis field is required to do an update. The update fails if invalid\nfields are specified. If a field supports empty values, it can be cleared\nby specifying it in the update mask and not in the CourseWork object. If a\nfield that does not support empty values is included in the update mask and\nnot set in the CourseWork object, an `INVALID_ARGUMENT` error will be\nreturned.\n\nThe following fields may be specified by teachers:\n* `title`\n* `description`\n* `state`\n* `due_date`\n* `due_time`\n* `max_points`\n* `scheduled_time`\n* `submission_modification_mode`", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1/courses/{courseId}/courseWork/{id}", + "path": "v1/courses/{courseId}/courseWork/{id}", + "id": "classroom.courses.courseWork.patch" + }, + "create": { + "description": "Creates course work.\n\nThe resulting course work (and corresponding student submissions) are\nassociated with the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\nmake the request. Classroom API requests to modify course work and student\nsubmissions must be made with an OAuth client ID from the associated\nDeveloper Console project.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course, create course work in the requested course, share a\nDrive attachment, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist.\n* `FAILED_PRECONDITION` for the following request error:\n * AttachmentNotVisible", + "request": { + "$ref": "CourseWork" + }, + "httpMethod": "POST", + "parameterOrder": [ + "courseId" + ], + "response": { + "$ref": "CourseWork" + }, + "parameters": { + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.students" + ], + "flatPath": "v1/courses/{courseId}/courseWork", + "path": "v1/courses/{courseId}/courseWork", + "id": "classroom.courses.courseWork.create" + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "courseId", + "id" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.students" + ], + "parameters": { + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "id": { + "location": "path", + "description": "Identifier of the course work to delete.\nThis identifier is a Classroom-assigned identifier.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/courseWork/{id}", + "id": "classroom.courses.courseWork.delete", + "path": "v1/courses/{courseId}/courseWork/{id}", + "description": "Deletes a course work.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the requesting user is not permitted\nto delete the requested course or for access errors.\n* `FAILED_PRECONDITION` if the requested course work has already been\ndeleted.\n* `NOT_FOUND` if no course exists with the requested ID." + } + }, + "resources": { + "studentSubmissions": { + "methods": { + "get": { + "description": "Returns a student submission.\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course, course work, or student submission or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "response": { + "$ref": "StudentSubmission" + }, + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "httpMethod": "GET", + "parameters": { + "courseWorkId": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "id": { + "location": "path", + "description": "Identifier of the student submission.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.me.readonly", + "https://www.googleapis.com/auth/classroom.coursework.students", + "https://www.googleapis.com/auth/classroom.coursework.students.readonly", + "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly", + "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly" + ], + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", + "id": "classroom.courses.courseWork.studentSubmissions.get", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}" + }, + "patch": { + "request": { + "$ref": "StudentSubmission" + }, + "description": "Updates one or more fields of a student submission.\n\nSee google.classroom.v1.StudentSubmission for details\nof which fields may be updated and who may change them.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting developer project did not create\nthe corresponding course work, if the user is not permitted to make the\nrequested modification to the student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "response": { + "$ref": "StudentSubmission" + }, + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.students" + ], + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Mask that identifies which fields on the student submission to update.\nThis field is required to do an update. The update fails if invalid\nfields are specified.\n\nThe following fields may be specified by teachers:\n* `draft_grade`\n* `assigned_grade`", + "type": "string" + }, + "courseWorkId": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "id": { + "location": "path", + "description": "Identifier of the student submission.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}", + "id": "classroom.courses.courseWork.studentSubmissions.patch", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}" + }, + "return": { + "request": { + "$ref": "ReturnStudentSubmissionRequest" + }, + "description": "Returns a student submission.\n\nReturning a student submission transfers ownership of attached Drive\nfiles to the student and may also update the submission state.\nUnlike the Classroom application, returning a student submission does not\nset assignedGrade to the draftGrade value.\n\nOnly a teacher of the course that contains the requested student submission\nmay call this method.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, return the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "httpMethod": "POST", + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.students" + ], + "parameters": { + "courseWorkId": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "id": { + "description": "Identifier of the student submission.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:return", + "id": "classroom.courses.courseWork.studentSubmissions.return" + }, + "reclaim": { + "description": "Reclaims a student submission on behalf of the student that owns it.\n\nReclaiming a student submission transfers ownership of attached Drive\nfiles to the student and update the submission state.\n\nOnly the student that owns the requested student submission may call this\nmethod, and only for a student submission that has been turned in.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, unsubmit the requested student submission,\nor for access errors.\n* `FAILED_PRECONDITION` if the student submission has not been turned in.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "request": { + "$ref": "ReclaimStudentSubmissionRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "courseWorkId": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "id": { + "description": "Identifier of the student submission.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me" + ], + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:reclaim", + "id": "classroom.courses.courseWork.studentSubmissions.reclaim" + }, + "turnIn": { + "description": "Turns in a student submission.\n\nTurning in a student submission transfers ownership of attached Drive\nfiles to the teacher and may also update the submission state.\n\nThis may only be called by the student that owns the specified student\nsubmission.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, turn in the requested student submission,\nor for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "request": { + "$ref": "TurnInStudentSubmissionRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "httpMethod": "POST", + "parameters": { + "courseWorkId": { + "location": "path", + "description": "Identifier of the course work.", + "type": "string", + "required": true + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "id": { + "location": "path", + "description": "Identifier of the student submission.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me" + ], + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn", + "id": "classroom.courses.courseWork.studentSubmissions.turnIn", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:turnIn" + }, + "modifyAttachments": { + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments", + "id": "classroom.courses.courseWork.studentSubmissions.modifyAttachments", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions/{id}:modifyAttachments", + "description": "Modifies attachments of student submission.\n\nAttachments may only be added to student submissions belonging to course\nwork objects with a `workType` of `ASSIGNMENT`.\n\nThis request must be made by the Developer Console project of the\n[OAuth client ID](https://support.google.com/cloud/answer/6158849) used to\ncreate the corresponding course work item.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, if the user is not permitted to modify\nattachments on the requested student submission, or for\naccess errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course, course work, or student submission\ndoes not exist.", + "request": { + "$ref": "ModifyAttachmentsRequest" + }, + "response": { + "$ref": "StudentSubmission" + }, + "parameterOrder": [ + "courseId", + "courseWorkId", + "id" + ], + "httpMethod": "POST", + "parameters": { + "courseWorkId": { + "description": "Identifier of the course work.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true, + "location": "path" + }, + "id": { + "location": "path", + "description": "Identifier of the student submission.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.students" + ] + }, + "list": { + "response": { + "$ref": "ListStudentSubmissionsResponse" + }, + "parameterOrder": [ + "courseId", + "courseWorkId" + ], + "httpMethod": "GET", + "parameters": { + "userId": { + "description": "Optional argument to restrict returned student work to those owned by the\nstudent with the specified identifier. The identifier can be one of the\nfollowing:\n\n* the numeric identifier for the user\n* the email address of the user\n* the string literal `\"me\"`, indicating the requesting user", + "type": "string", + "location": "query" + }, + "courseWorkId": { + "description": "Identifier of the student work to request.\nThis may be set to the string literal `\"-\"` to request student work for\nall course work in the specified course.", + "type": "string", + "required": true, + "location": "path" + }, + "courseId": { + "location": "path", + "description": "Identifier of the course.\nThis identifier can be either the Classroom-assigned identifier or an\nalias.", + "type": "string", + "required": true + }, + "late": { + "location": "query", + "enum": [ + "LATE_VALUES_UNSPECIFIED", + "LATE_ONLY", + "NOT_LATE_ONLY" + ], + "description": "Requested lateness value. If specified, returned student submissions are\nrestricted by the requested value.\nIf unspecified, submissions are returned regardless of `late` value.", + "type": "string" + }, + "pageToken": { + "description": "nextPageToken\nvalue returned from a previous\nlist call,\nindicating that the subsequent page of results should be returned.\n\nThe list request\nmust be otherwise identical to the one that resulted in this token.", + "type": "string", + "location": "query" + }, + "states": { + "location": "query", + "enum": [ + "SUBMISSION_STATE_UNSPECIFIED", + "NEW", + "CREATED", + "TURNED_IN", + "RETURNED", + "RECLAIMED_BY_STUDENT" + ], + "description": "Requested submission states. If specified, returned student submissions\nmatch one of the specified submission states.", + "type": "string", + "repeated": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of items to return. Zero or unspecified indicates that the\nserver may assign a maximum.\n\nThe server may return fewer than the specified number of results.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/classroom.coursework.me", + "https://www.googleapis.com/auth/classroom.coursework.me.readonly", + "https://www.googleapis.com/auth/classroom.coursework.students", + "https://www.googleapis.com/auth/classroom.coursework.students.readonly", + "https://www.googleapis.com/auth/classroom.student-submissions.me.readonly", + "https://www.googleapis.com/auth/classroom.student-submissions.students.readonly" + ], + "flatPath": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions", + "id": "classroom.courses.courseWork.studentSubmissions.list", + "path": "v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions", + "description": "Returns a list of student submissions that the requester is permitted to\nview, factoring in the OAuth scopes of the request.\n`-` may be specified as the `course_work_id` to include student\nsubmissions for multiple course work items.\n\nCourse students may only view their own work. Course teachers\nand domain administrators may view all student submissions.\n\nThis method returns the following error codes:\n\n* `PERMISSION_DENIED` if the requesting user is not permitted to access the\nrequested course or course work, or for access errors.\n* `INVALID_ARGUMENT` if the request is malformed.\n* `NOT_FOUND` if the requested course does not exist." + } + } + } + } + } + } + } + }, + "parameters": { + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + } + } } diff --git a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json index a6c8a5b..0ebddcc 100644 --- a/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json +++ b/vendor/google.golang.org/api/cloudbuild/v1/cloudbuild-api.json @@ -1,10 +1,121 @@ { + "rootUrl": "https://cloudbuild.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudbuild", + "batchPath": "batch", + "title": "Google Cloud Container Builder API", + "ownerName": "Google", "resources": { + "operations": { + "methods": { + "cancel": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^operations/.+$", + "location": "path", + "description": "The name of the operation resource to be cancelled." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/operations/{operationsId}:cancel", + "id": "cloudbuild.operations.cancel", + "path": "v1/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", + "request": { + "$ref": "CancelOperationRequest" + } + }, + "get": { + "flatPath": "v1/operations/{operationsId}", + "id": "cloudbuild.operations.get", + "path": "v1/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^operations/.+$", + "location": "path", + "description": "The name of the operation resource." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ListOperationsResponse" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "name": { + "pattern": "^operations$", + "location": "path", + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "The standard list page size." + } + }, + "flatPath": "v1/operations", + "id": "cloudbuild.operations.list", + "path": "v1/{+name}" + } + } + }, "projects": { "resources": { "builds": { "methods": { "cancel": { + "flatPath": "v1/projects/{projectId}/builds/{id}:cancel", + "path": "v1/projects/{projectId}/builds/{id}:cancel", + "id": "cloudbuild.projects.builds.cancel", + "request": { + "$ref": "CancelBuildRequest" + }, + "description": "Cancels a requested build in progress.", "httpMethod": "POST", "parameterOrder": [ "projectId", @@ -17,66 +128,59 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "projectId": { - "description": "ID of the project.", - "type": "string", - "required": true, - "location": "path" - }, "id": { "location": "path", "description": "ID of the build.", "type": "string", "required": true + }, + "projectId": { + "description": "ID of the project.", + "type": "string", + "required": true, + "location": "path" } - }, - "flatPath": "v1/projects/{projectId}/builds/{id}:cancel", - "path": "v1/projects/{projectId}/builds/{id}:cancel", - "id": "cloudbuild.projects.builds.cancel", - "request": { - "$ref": "CancelBuildRequest" - }, - "description": "Cancels a requested build in progress." + } }, "list": { - "description": "Lists previously requested builds.\n\nPreviously requested builds may still be in-progress, or may have finished\nsuccessfully or unsuccessfully.", - "response": { - "$ref": "ListBuildsResponse" - }, + "httpMethod": "GET", "parameterOrder": [ "projectId" ], - "httpMethod": "GET", + "response": { + "$ref": "ListBuildsResponse" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { + "filter": { + "location": "query", + "description": "The raw filter text to constrain the results.", + "type": "string" + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "Token to provide to skip to a particular spot in the list." + }, "pageSize": { + "location": "query", "format": "int32", "description": "Number of results to return in the list.", - "type": "integer", - "location": "query" + "type": "integer" }, "projectId": { "location": "path", "description": "ID of the project.", "type": "string", "required": true - }, - "filter": { - "description": "The raw filter text to constrain the results.", - "type": "string", - "location": "query" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "Token to provide to skip to a particular spot in the list." } }, "flatPath": "v1/projects/{projectId}/builds", + "path": "v1/projects/{projectId}/builds", "id": "cloudbuild.projects.builds.list", - "path": "v1/projects/{projectId}/builds" + "description": "Lists previously requested builds.\n\nPreviously requested builds may still be in-progress, or may have finished\nsuccessfully or unsuccessfully." }, "get": { "description": "Returns information about a previously requested build.\n\nThe Build that is returned includes its status (e.g., success or failure,\nor in-progress), and timing information.", @@ -110,6 +214,9 @@ "id": "cloudbuild.projects.builds.get" }, "create": { + "flatPath": "v1/projects/{projectId}/builds", + "path": "v1/projects/{projectId}/builds", + "id": "cloudbuild.projects.builds.create", "description": "Starts a build with the specified configuration.\n\nThe long-running Operation returned by this method will include the ID of\nthe build, which can be passed to GetBuild to determine its status (e.g.,\nsuccess or failure).", "request": { "$ref": "Build" @@ -123,43 +230,36 @@ }, "parameters": { "projectId": { - "description": "ID of the project.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "ID of the project." } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/builds", - "path": "v1/projects/{projectId}/builds", - "id": "cloudbuild.projects.builds.create" + ] } } }, "triggers": { "methods": { - "patch": { - "request": { - "$ref": "BuildTrigger" - }, - "description": "Updates an BuildTrigger by its project ID and trigger ID.\n\nThis API is experimental.", + "delete": { "response": { - "$ref": "BuildTrigger" + "$ref": "Empty" }, "parameterOrder": [ "projectId", "triggerId" ], - "httpMethod": "PATCH", + "httpMethod": "DELETE", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "triggerId": { "location": "path", - "description": "ID of the BuildTrigger to update.", + "description": "ID of the BuildTrigger to delete.", "type": "string", "required": true }, @@ -171,11 +271,45 @@ } }, "flatPath": "v1/projects/{projectId}/triggers/{triggerId}", + "id": "cloudbuild.projects.triggers.delete", + "path": "v1/projects/{projectId}/triggers/{triggerId}", + "description": "Deletes an BuildTrigger by its project ID and trigger ID.\n\nThis API is experimental." + }, + "patch": { + "path": "v1/projects/{projectId}/triggers/{triggerId}", "id": "cloudbuild.projects.triggers.patch", - "path": "v1/projects/{projectId}/triggers/{triggerId}" + "request": { + "$ref": "BuildTrigger" + }, + "description": "Updates an BuildTrigger by its project ID and trigger ID.\n\nThis API is experimental.", + "httpMethod": "PATCH", + "parameterOrder": [ + "projectId", + "triggerId" + ], + "response": { + "$ref": "BuildTrigger" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "triggerId": { + "location": "path", + "description": "ID of the BuildTrigger to update.", + "type": "string", + "required": true + }, + "projectId": { + "description": "ID of the project that owns the trigger.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/projects/{projectId}/triggers/{triggerId}" }, "list": { - "description": "Lists existing BuildTrigger.\n\nThis API is experimental.", "parameterOrder": [ "projectId" ], @@ -196,9 +330,11 @@ }, "flatPath": "v1/projects/{projectId}/triggers", "id": "cloudbuild.projects.triggers.list", - "path": "v1/projects/{projectId}/triggers" + "path": "v1/projects/{projectId}/triggers", + "description": "Lists existing BuildTrigger.\n\nThis API is experimental." }, "get": { + "httpMethod": "GET", "response": { "$ref": "BuildTrigger" }, @@ -206,7 +342,6 @@ "projectId", "triggerId" ], - "httpMethod": "GET", "parameters": { "triggerId": { "description": "ID of the BuildTrigger to get.", @@ -225,25 +360,18 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectId}/triggers/{triggerId}", - "id": "cloudbuild.projects.triggers.get", "path": "v1/projects/{projectId}/triggers/{triggerId}", + "id": "cloudbuild.projects.triggers.get", "description": "Gets information about a BuildTrigger.\n\nThis API is experimental." }, "create": { - "flatPath": "v1/projects/{projectId}/triggers", - "id": "cloudbuild.projects.triggers.create", - "path": "v1/projects/{projectId}/triggers", - "request": { - "$ref": "BuildTrigger" - }, - "description": "Creates a new BuildTrigger.\n\nThis API is experimental.", - "response": { - "$ref": "BuildTrigger" - }, + "httpMethod": "POST", "parameterOrder": [ "projectId" ], - "httpMethod": "POST", + "response": { + "$ref": "BuildTrigger" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -254,168 +382,41 @@ "type": "string", "required": true } - } - }, - "delete": { - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" }, - "parameterOrder": [ - "projectId", - "triggerId" - ], - "parameters": { - "triggerId": { - "description": "ID of the BuildTrigger to delete.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "ID of the project that owns the trigger." - } + "flatPath": "v1/projects/{projectId}/triggers", + "path": "v1/projects/{projectId}/triggers", + "id": "cloudbuild.projects.triggers.create", + "request": { + "$ref": "BuildTrigger" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/triggers/{triggerId}", - "path": "v1/projects/{projectId}/triggers/{triggerId}", - "id": "cloudbuild.projects.triggers.delete", - "description": "Deletes an BuildTrigger by its project ID and trigger ID.\n\nThis API is experimental." + "description": "Creates a new BuildTrigger.\n\nThis API is experimental." } } } } - }, - "operations": { - "methods": { - "cancel": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^operations/.+$", - "location": "path", - "description": "The name of the operation resource to be cancelled." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/operations/{operationsId}:cancel", - "id": "cloudbuild.operations.cancel", - "path": "v1/{+name}:cancel", - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", - "request": { - "$ref": "CancelOperationRequest" - } - }, - "get": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^operations/.+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/operations/{operationsId}", - "id": "cloudbuild.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "pattern": "^operations$", - "location": "path", - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - }, - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - } - }, - "flatPath": "v1/operations", - "path": "v1/{+name}", - "id": "cloudbuild.operations.list", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListOperationsResponse" - } - } - } } }, "parameters": { - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, "pp": { "location": "query", "description": "Pretty-print response.", "default": "true", "type": "boolean" }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, "oauth_token": { "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" }, - "bearer_token": { - "type": "string", - "location": "query", - "description": "OAuth bearer token." - }, "upload_protocol": { - "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "type": "string", + "location": "query" }, "prettyPrint": { "location": "query", @@ -429,16 +430,13 @@ "type": "string" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -447,9 +445,12 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" + ] + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" }, "alt": { "enumDescriptions": [ @@ -467,13 +468,18 @@ ], "type": "string" }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, "key": { "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, - "access_token": { - "description": "OAuth access token.", + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" } @@ -484,15 +490,62 @@ "description": "Builds container images in the cloud.", "kind": "discovery#restDescription", "basePath": "", - "revision": "20170829", + "revision": "20170830", "documentationLink": "https://cloud.google.com/container-builder/docs/", "id": "cloudbuild:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "BuiltImage": { - "description": "BuiltImage describes an image built by the pipeline.", + "ListBuildTriggersResponse": { "type": "object", + "properties": { + "triggers": { + "items": { + "$ref": "BuildTrigger" + }, + "type": "array", + "description": "BuildTriggers for the project, sorted by create_time descending." + } + }, + "id": "ListBuildTriggersResponse", + "description": "Response containing existing BuildTriggers." + }, + "Operation": { + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`." + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + } + } + }, + "BuiltImage": { "properties": { "name": { "description": "Name used to push the container image to Google Container Registry, as\npresented to `docker push`.", @@ -503,35 +556,35 @@ "type": "string" } }, - "id": "BuiltImage" + "id": "BuiltImage", + "description": "BuiltImage describes an image built by the pipeline.", + "type": "object" }, "Hash": { + "id": "Hash", + "description": "Container message for hash values.", "type": "object", "properties": { "type": { - "enumDescriptions": [ - "No hash requested.", - "Use a sha256 hash." - ], "enum": [ "NONE", "SHA256" ], "description": "The type of hash that was performed.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "No hash requested.", + "Use a sha256 hash." + ] }, "value": { "format": "byte", "description": "The hash value.", "type": "string" } - }, - "id": "Hash", - "description": "Container message for hash values." + } }, "RepoSource": { - "description": "RepoSource describes the location of the source in a Google Cloud Source\nRepository.", - "type": "object", "properties": { "branchName": { "description": "Name of the branch to build.", @@ -554,32 +607,34 @@ "type": "string" } }, - "id": "RepoSource" + "id": "RepoSource", + "description": "RepoSource describes the location of the source in a Google Cloud Source\nRepository.", + "type": "object" }, "BuildStep": { "description": "BuildStep describes a step to perform in the build pipeline.", "type": "object", "properties": { "volumes": { - "description": "List of volumes to mount into the build step.\n\nEach volume will be created as an empty volume prior to execution of the\nbuild step. Upon completion of the build, volumes and their contents will\nbe discarded.\n\nUsing a named volume in only one step is not valid as it is indicative\nof a mis-configured build request.", "items": { "$ref": "Volume" }, - "type": "array" + "type": "array", + "description": "List of volumes to mount into the build step.\n\nEach volume will be created as an empty volume prior to execution of the\nbuild step. Upon completion of the build, volumes and their contents will\nbe discarded.\n\nUsing a named volume in only one step is not valid as it is indicative\nof a mis-configured build request." }, "dir": { "description": "Working directory (relative to project source root) to use when running\nthis operation's container.", "type": "string" }, - "waitFor": { - "description": "The ID(s) of the step(s) that this build step depends on.\nThis build step will not start until all the build steps in wait_for\nhave completed successfully. If wait_for is empty, this build step will\nstart when all previous build steps in the Build.Steps list have completed\nsuccessfully.", + "env": { + "description": "A list of environment variable definitions to be used when running a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\"\nbeing given the value \"VALUE\".", "items": { "type": "string" }, "type": "array" }, - "env": { - "description": "A list of environment variable definitions to be used when running a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\"\nbeing given the value \"VALUE\".", + "waitFor": { + "description": "The ID(s) of the step(s) that this build step depends on.\nThis build step will not start until all the build steps in wait_for\nhave completed successfully. If wait_for is empty, this build step will\nstart when all previous build steps in the Build.Steps list have completed\nsuccessfully.", "items": { "type": "string" }, @@ -600,22 +655,21 @@ "description": "Optional entrypoint to be used instead of the build step image's default\nIf unset, the image's default will be used.", "type": "string" }, + "id": { + "description": "Optional unique identifier for this build step, used in wait_for to\nreference this build step as a dependency.", + "type": "string" + }, "secretEnv": { "description": "A list of environment variables which are encrypted using a Cloud KMS\ncrypto key. These values must be specified in the build's secrets.", "items": { "type": "string" }, "type": "array" - }, - "id": { - "type": "string", - "description": "Optional unique identifier for this build step, used in wait_for to\nreference this build step as a dependency." } }, "id": "BuildStep" }, "FileHashes": { - "description": "Container message for hashes of byte content of files, used in\nSourceProvenance messages to verify integrity of source input to the build.", "type": "object", "properties": { "fileHash": { @@ -626,23 +680,24 @@ "type": "array" } }, - "id": "FileHashes" + "id": "FileHashes", + "description": "Container message for hashes of byte content of files, used in\nSourceProvenance messages to verify integrity of source input to the build." }, "Secret": { "description": "Secret pairs a set of secret environment variables containing encrypted\nvalues with the Cloud KMS key to use to decrypt the value.", "type": "object", "properties": { "secretEnv": { + "type": "object", "additionalProperties": { "format": "byte", "type": "string" }, - "description": "Map of environment variable name to its encrypted value.\n\nSecret environment variables must be unique across all of a build's\nsecrets, and must be used by at least one build step. Values can be at most\n1 KB in size. There can be at most ten secret values across all of a\nbuild's secrets.", - "type": "object" + "description": "Map of environment variable name to its encrypted value.\n\nSecret environment variables must be unique across all of a build's\nsecrets, and must be used by at least one build step. Values can be at most\n1 KB in size. There can be at most ten secret values across all of a\nbuild's secrets." }, "kmsKeyName": { - "description": "Cloud KMS key name to use to decrypt these envs.", - "type": "string" + "type": "string", + "description": "Cloud KMS key name to use to decrypt these envs." } }, "id": "Secret" @@ -654,11 +709,11 @@ "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "type": "object" }, "type": "array" }, @@ -668,50 +723,30 @@ "type": "integer" }, "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" + "type": "string", + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client." } }, "id": "Status" }, "Empty": { - "properties": {}, "id": "Empty", "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object" + "type": "object", + "properties": {} }, "BuildTrigger": { + "id": "BuildTrigger", "description": "Configuration for an automated build in response to source repository\nchanges.", "type": "object", "properties": { - "description": { - "description": "Human-readable description of this trigger.", - "type": "string" - }, - "disabled": { - "description": "If true, the trigger will never result in a build.", - "type": "boolean" - }, - "createTime": { - "type": "string", - "format": "google-datetime", - "description": "Time when the trigger was created.\n\n@OutputOnly" - }, - "filename": { - "description": "Path, from the source root, to a file whose contents is used for the\ntemplate.", - "type": "string" - }, - "triggerTemplate": { - "$ref": "RepoSource", - "description": "Template describing the types of source changes to trigger a build.\n\nBranch and tag names in trigger templates are interpreted as regular\nexpressions. Any branch or tag change that matches that regular expression\nwill trigger a build." - }, "id": { - "description": "Unique identifier of the trigger.\n\n@OutputOnly", - "type": "string" + "type": "string", + "description": "Unique identifier of the trigger.\n\n@OutputOnly" }, "build": { - "$ref": "Build", - "description": "Contents of the build template." + "description": "Contents of the build template.", + "$ref": "Build" }, "substitutions": { "additionalProperties": { @@ -719,14 +754,109 @@ }, "description": "Substitutions data for Build resource.", "type": "object" + }, + "description": { + "type": "string", + "description": "Human-readable description of this trigger." + }, + "createTime": { + "format": "google-datetime", + "description": "Time when the trigger was created.\n\n@OutputOnly", + "type": "string" + }, + "disabled": { + "description": "If true, the trigger will never result in a build.", + "type": "boolean" + }, + "triggerTemplate": { + "$ref": "RepoSource", + "description": "Template describing the types of source changes to trigger a build.\n\nBranch and tag names in trigger templates are interpreted as regular\nexpressions. Any branch or tag change that matches that regular expression\nwill trigger a build." + }, + "filename": { + "description": "Path, from the source root, to a file whose contents is used for the\ntemplate.", + "type": "string" } - }, - "id": "BuildTrigger" + } }, "Build": { - "description": "A build resource in the Container Builder API.\n\nAt a high level, a Build describes where to find source code, how to build\nit (for example, the builder image to run on the source), and what tag to\napply to the built image when it is pushed to Google Container Registry.\n\nFields can include the following variables which will be expanded when the\nbuild is created:\n\n- $PROJECT_ID: the project ID of the build.\n- $BUILD_ID: the autogenerated ID of the build.\n- $REPO_NAME: the source repository name specified by RepoSource.\n- $BRANCH_NAME: the branch name specified by RepoSource.\n- $TAG_NAME: the tag name specified by RepoSource.\n- $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or\n resolved from the specified branch or tag.", - "type": "object", "properties": { + "createTime": { + "format": "google-datetime", + "description": "Time at which the request to create the build was received.\n@OutputOnly", + "type": "string" + }, + "sourceProvenance": { + "$ref": "SourceProvenance", + "description": "A permanent fixed identifier for source.\n@OutputOnly" + }, + "images": { + "description": "A list of images to be pushed upon the successful completion of all build\nsteps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's\nresults field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.", + "items": { + "type": "string" + }, + "type": "array" + }, + "projectId": { + "description": "ID of the project.\n@OutputOnly.", + "type": "string" + }, + "finishTime": { + "format": "google-datetime", + "description": "Time at which execution of the build was finished.\n\nThe difference between finish_time and start_time is the duration of the\nbuild's execution.\n@OutputOnly", + "type": "string" + }, + "logUrl": { + "description": "URL to logs for this build in Google Cloud Logging.\n@OutputOnly", + "type": "string" + }, + "source": { + "description": "Describes where to find the source files to build.", + "$ref": "Source" + }, + "options": { + "$ref": "BuildOptions", + "description": "Special options for this build." + }, + "statusDetail": { + "description": "Customer-readable message about the current status.\n@OutputOnly", + "type": "string" + }, + "status": { + "type": "string", + "enumDescriptions": [ + "Status of the build is unknown.", + "Build is queued; work has not yet begun.", + "Build is being executed.", + "Build finished successfully.", + "Build failed to complete successfully.", + "Build failed due to an internal cause.", + "Build took longer than was allowed.", + "Build was canceled by a user." + ], + "enum": [ + "STATUS_UNKNOWN", + "QUEUED", + "WORKING", + "SUCCESS", + "FAILURE", + "INTERNAL_ERROR", + "TIMEOUT", + "CANCELLED" + ], + "description": "Status of the build.\n@OutputOnly" + }, + "timeout": { + "format": "google-duration", + "description": "Amount of time that this build should be allowed to run, to second\ngranularity. If this amount of time elapses, work on the build will cease\nand the build status will be TIMEOUT.\n\nDefault time is ten minutes.", + "type": "string" + }, + "secrets": { + "description": "Secrets to decrypt using Cloud KMS.", + "items": { + "$ref": "Secret" + }, + "type": "array" + }, "logsBucket": { "description": "Google Cloud Storage bucket where logs should be written (see\n[Bucket Name\nRequirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).\nLogs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.", "type": "string" @@ -747,107 +877,32 @@ "type": "string" }, "tags": { + "description": "Tags for annotation of a Build. These are not docker tags.", "items": { "type": "string" }, - "type": "array", - "description": "Tags for annotation of a Build. These are not docker tags." + "type": "array" }, "id": { "description": "Unique identifier of the build.\n@OutputOnly", "type": "string" }, - "substitutions": { - "additionalProperties": { - "type": "string" - }, - "description": "Substitutions data for Build resource.", - "type": "object" - }, "startTime": { "format": "google-datetime", "description": "Time at which execution of the build was started.\n@OutputOnly", "type": "string" }, - "sourceProvenance": { - "description": "A permanent fixed identifier for source.\n@OutputOnly", - "$ref": "SourceProvenance" - }, - "createTime": { - "format": "google-datetime", - "description": "Time at which the request to create the build was received.\n@OutputOnly", - "type": "string" - }, - "images": { - "description": "A list of images to be pushed upon the successful completion of all build\nsteps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's\nresults field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.", - "items": { + "substitutions": { + "type": "object", + "additionalProperties": { "type": "string" }, - "type": "array" - }, - "projectId": { - "description": "ID of the project.\n@OutputOnly.", - "type": "string" - }, - "logUrl": { - "description": "URL to logs for this build in Google Cloud Logging.\n@OutputOnly", - "type": "string" - }, - "finishTime": { - "format": "google-datetime", - "description": "Time at which execution of the build was finished.\n\nThe difference between finish_time and start_time is the duration of the\nbuild's execution.\n@OutputOnly", - "type": "string" - }, - "options": { - "$ref": "BuildOptions", - "description": "Special options for this build." - }, - "source": { - "$ref": "Source", - "description": "Describes where to find the source files to build." - }, - "timeout": { - "format": "google-duration", - "description": "Amount of time that this build should be allowed to run, to second\ngranularity. If this amount of time elapses, work on the build will cease\nand the build status will be TIMEOUT.\n\nDefault time is ten minutes.", - "type": "string" - }, - "status": { - "enum": [ - "STATUS_UNKNOWN", - "QUEUED", - "WORKING", - "SUCCESS", - "FAILURE", - "INTERNAL_ERROR", - "TIMEOUT", - "CANCELLED" - ], - "description": "Status of the build.\n@OutputOnly", - "type": "string", - "enumDescriptions": [ - "Status of the build is unknown.", - "Build is queued; work has not yet begun.", - "Build is being executed.", - "Build finished successfully.", - "Build failed to complete successfully.", - "Build failed due to an internal cause.", - "Build took longer than was allowed.", - "Build was canceled by a user." - ] - }, - "statusDetail": { - "description": "Customer-readable message about the current status.\n@OutputOnly", - "type": "string" - }, - "secrets": { - "description": "Secrets to decrypt using Cloud KMS.", - "items": { - "$ref": "Secret" - }, - "type": "array" + "description": "Substitutions data for Build resource." } }, - "id": "Build" + "id": "Build", + "description": "A build resource in the Container Builder API.\n\nAt a high level, a Build describes where to find source code, how to build\nit (for example, the builder image to run on the source), and what tag to\napply to the built image when it is pushed to Google Container Registry.\n\nFields can include the following variables which will be expanded when the\nbuild is created:\n\n- $PROJECT_ID: the project ID of the build.\n- $BUILD_ID: the autogenerated ID of the build.\n- $REPO_NAME: the source repository name specified by RepoSource.\n- $BRANCH_NAME: the branch name specified by RepoSource.\n- $TAG_NAME: the tag name specified by RepoSource.\n- $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or\n resolved from the specified branch or tag.", + "type": "object" }, "CancelBuildRequest": { "properties": {}, @@ -856,6 +911,8 @@ "type": "object" }, "ListBuildsResponse": { + "description": "Response including listed builds.", + "type": "object", "properties": { "nextPageToken": { "description": "Token to receive the next page of results.", @@ -869,26 +926,26 @@ "type": "array" } }, - "id": "ListBuildsResponse", - "description": "Response including listed builds.", - "type": "object" + "id": "ListBuildsResponse" }, "Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps\nin order to persist files across build step execution.", "type": "object", "properties": { - "name": { - "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.", - "type": "string" - }, "path": { "description": "Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on the\nsame build step or with certain reserved volume paths.", "type": "string" + }, + "name": { + "description": "Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.", + "type": "string" } }, "id": "Volume" }, "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", "properties": { "operations": { "description": "A list of operations that matches the specified filter in the request.", @@ -902,26 +959,25 @@ "type": "string" } }, - "id": "ListOperationsResponse", - "description": "The response message for Operations.ListOperations.", - "type": "object" + "id": "ListOperationsResponse" }, "Source": { + "description": "Source describes the location of the source in a supported storage\nservice.", + "type": "object", "properties": { + "repoSource": { + "description": "If provided, get source from this location in a Cloud Repo.", + "$ref": "RepoSource" + }, "storageSource": { "description": "If provided, get the source from this location in in Google Cloud\nStorage.", "$ref": "StorageSource" - }, - "repoSource": { - "$ref": "RepoSource", - "description": "If provided, get source from this location in a Cloud Repo." } }, - "id": "Source", - "description": "Source describes the location of the source in a supported storage\nservice.", - "type": "object" + "id": "Source" }, "BuildOptions": { + "description": "Optional arguments to enable specific features of builds.", "type": "object", "properties": { "substitutionOption": { @@ -937,22 +993,18 @@ ] }, "requestedVerifyOption": { - "enumDescriptions": [ - "Not a verifiable build. (default)", - "Verified build." - ], "enum": [ "NOT_VERIFIED", "VERIFIED" ], "description": "Requested verifiability options.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Not a verifiable build. (default)", + "Verified build." + ] }, "sourceProvenanceHash": { - "enumDescriptions": [ - "No hash requested.", - "Use a sha256 hash." - ], "description": "Requested hash for SourceProvenance.", "items": { "enum": [ @@ -961,14 +1013,16 @@ ], "type": "string" }, - "type": "array" + "type": "array", + "enumDescriptions": [ + "No hash requested.", + "Use a sha256 hash." + ] } }, - "id": "BuildOptions", - "description": "Optional arguments to enable specific features of builds." + "id": "BuildOptions" }, "StorageSource": { - "id": "StorageSource", "description": "StorageSource describes the location of the source in an archive file in\nGoogle Cloud Storage.", "type": "object", "properties": { @@ -977,56 +1031,53 @@ "type": "string" }, "object": { - "type": "string", - "description": "Google Cloud Storage object containing source.\n\nThis object must be a gzipped archive file (.tar.gz) containing source to\nbuild." + "description": "Google Cloud Storage object containing source.\n\nThis object must be a gzipped archive file (.tar.gz) containing source to\nbuild.", + "type": "string" }, "generation": { "format": "int64", "description": "Google Cloud Storage generation for the object. If the generation is\nomitted, the latest generation will be used.", "type": "string" } - } + }, + "id": "StorageSource" }, "Results": { + "description": "Results describes the artifacts created by the build pipeline.", + "type": "object", "properties": { - "images": { - "description": "Images that were built as a part of the build.", - "items": { - "$ref": "BuiltImage" - }, - "type": "array" - }, "buildStepImages": { "description": "List of build step digests, in order corresponding to build step indices.", "items": { "type": "string" }, "type": "array" + }, + "images": { + "description": "Images that were built as a part of the build.", + "items": { + "$ref": "BuiltImage" + }, + "type": "array" } }, - "id": "Results", - "description": "Results describes the artifacts created by the build pipeline.", - "type": "object" + "id": "Results" }, "BuildOperationMetadata": { - "description": "Metadata for build operations.", - "type": "object", "properties": { "build": { - "description": "The build that the operation is tracking.", - "$ref": "Build" + "$ref": "Build", + "description": "The build that the operation is tracking." } }, - "id": "BuildOperationMetadata" + "id": "BuildOperationMetadata", + "description": "Metadata for build operations.", + "type": "object" }, "SourceProvenance": { "description": "Provenance of the source. Ways to find the original source, or verify that\nsome source was used for this build.", "type": "object", "properties": { - "resolvedStorageSource": { - "$ref": "StorageSource", - "description": "A copy of the build's source.storage_source, if exists, with any\ngenerations resolved." - }, "fileHashes": { "additionalProperties": { "$ref": "FileHashes" @@ -1037,6 +1088,10 @@ "resolvedRepoSource": { "description": "A copy of the build's source.repo_source, if exists, with any\nrevisions resolved.", "$ref": "RepoSource" + }, + "resolvedStorageSource": { + "description": "A copy of the build's source.storage_source, if exists, with any\ngenerations resolved.", + "$ref": "StorageSource" } }, "id": "SourceProvenance" @@ -1046,55 +1101,6 @@ "type": "object", "properties": {}, "id": "CancelOperationRequest" - }, - "ListBuildTriggersResponse": { - "description": "Response containing existing BuildTriggers.", - "type": "object", - "properties": { - "triggers": { - "description": "BuildTriggers for the project, sorted by create_time descending.", - "items": { - "$ref": "BuildTrigger" - }, - "type": "array" - } - }, - "id": "ListBuildTriggersResponse" - }, - "Operation": { - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object", - "properties": { - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, - "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object" - } - }, - "id": "Operation" } }, "icons": { @@ -1111,11 +1117,5 @@ } } } - }, - "rootUrl": "https://cloudbuild.googleapis.com/", - "ownerDomain": "google.com", - "name": "cloudbuild", - "batchPath": "batch", - "title": "Google Cloud Container Builder API", - "ownerName": "Google" + } } diff --git a/vendor/google.golang.org/api/clouddebugger/v2/clouddebugger-api.json b/vendor/google.golang.org/api/clouddebugger/v2/clouddebugger-api.json index c914700..c3c768a 100644 --- a/vendor/google.golang.org/api/clouddebugger/v2/clouddebugger-api.json +++ b/vendor/google.golang.org/api/clouddebugger/v2/clouddebugger-api.json @@ -1,450 +1,273 @@ { - "title": "Stackdriver Debugger API", - "ownerName": "Google", - "resources": { - "controller": { - "resources": { - "debuggees": { - "methods": { - "register": { - "path": "v2/controller/debuggees/register", - "id": "clouddebugger.controller.debuggees.register", - "description": "Registers the debuggee with the controller service.\n\nAll agents attached to the same application must call this method with\nexactly the same request content to get back the same stable `debuggee_id`.\nAgents should call this method again whenever `google.rpc.Code.NOT_FOUND`\nis returned from any controller method.\n\nThis protocol allows the controller service to disable debuggees, recover\nfrom data loss, or change the `debuggee_id` format. Agents must handle\n`debuggee_id` value changing upon re-registration.", - "request": { - "$ref": "RegisterDebuggeeRequest" - }, - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "RegisterDebuggeeResponse" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "flatPath": "v2/controller/debuggees/register" - } - }, - "resources": { - "breakpoints": { - "methods": { - "list": { - "response": { - "$ref": "ListActiveBreakpointsResponse" - }, - "parameterOrder": [ - "debuggeeId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "parameters": { - "successOnTimeout": { - "location": "query", - "description": "If set to `true` (recommended), returns `google.rpc.Code.OK` status and\nsets the `wait_expired` response field to `true` when the server-selected\ntimeout has expired.\n\nIf set to `false` (deprecated), returns `google.rpc.Code.ABORTED` status\nwhen the server-selected timeout has expired.", - "type": "boolean" - }, - "debuggeeId": { - "description": "Identifies the debuggee.", - "type": "string", - "required": true, - "location": "path" - }, - "waitToken": { - "description": "A token that, if specified, blocks the method call until the list\nof active breakpoints has changed, or a server-selected timeout has\nexpired. The value should be set from the `next_wait_token` field in\nthe last response. The initial value should be set to `\"init\"`.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v2/controller/debuggees/{debuggeeId}/breakpoints", - "id": "clouddebugger.controller.debuggees.breakpoints.list", - "path": "v2/controller/debuggees/{debuggeeId}/breakpoints", - "description": "Returns the list of all active breakpoints for the debuggee.\n\nThe breakpoint specification (`location`, `condition`, and `expressions`\nfields) is semantically immutable, although the field values may\nchange. For example, an agent may update the location line number\nto reflect the actual line where the breakpoint was set, but this\ndoesn't change the breakpoint semantics.\n\nThis means that an agent does not need to check if a breakpoint has changed\nwhen it encounters the same breakpoint on a successive call.\nMoreover, an agent should remember the breakpoints that are completed\nuntil the controller removes them from the active list to avoid\nsetting those breakpoints again." - }, - "update": { - "response": { - "$ref": "UpdateActiveBreakpointResponse" - }, - "parameterOrder": [ - "debuggeeId", - "id" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "parameters": { - "id": { - "location": "path", - "description": "Breakpoint identifier, unique in the scope of the debuggee.", - "type": "string", - "required": true - }, - "debuggeeId": { - "location": "path", - "description": "Identifies the debuggee being debugged.", - "type": "string", - "required": true - } - }, - "flatPath": "v2/controller/debuggees/{debuggeeId}/breakpoints/{id}", - "id": "clouddebugger.controller.debuggees.breakpoints.update", - "path": "v2/controller/debuggees/{debuggeeId}/breakpoints/{id}", - "request": { - "$ref": "UpdateActiveBreakpointRequest" - }, - "description": "Updates the breakpoint state or mutable fields.\nThe entire Breakpoint message must be sent back to the controller service.\n\nUpdates to active breakpoint fields are only allowed if the new value\ndoes not change the breakpoint specification. Updates to the `location`,\n`condition` and `expressions` fields should not alter the breakpoint\nsemantics. These may only make changes such as canonicalizing a value\nor snapping the location to the correct line of code." - } - } - } - } - } - } - }, - "debugger": { - "resources": { - "debuggees": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListDebuggeesResponse" - }, - "parameterOrder": [], - "parameters": { - "clientVersion": { - "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", - "type": "string", - "location": "query" - }, - "includeInactive": { - "description": "When set to `true`, the result includes all debuggees. Otherwise, the\nresult includes only debuggees that are active.", - "type": "boolean", - "location": "query" - }, - "project": { - "location": "query", - "description": "Project number of a Google Cloud project whose debuggees to list.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "flatPath": "v2/debugger/debuggees", - "path": "v2/debugger/debuggees", - "id": "clouddebugger.debugger.debuggees.list", - "description": "Lists all the debuggees that the user has access to." - } - }, - "resources": { - "breakpoints": { - "methods": { - "delete": { - "id": "clouddebugger.debugger.debuggees.breakpoints.delete", - "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", - "description": "Deletes the breakpoint from the debuggee.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "debuggeeId", - "breakpointId" - ], - "httpMethod": "DELETE", - "parameters": { - "breakpointId": { - "location": "path", - "description": "ID of the breakpoint to delete.", - "type": "string", - "required": true - }, - "debuggeeId": { - "description": "ID of the debuggee whose breakpoint to delete.", - "type": "string", - "required": true, - "location": "path" - }, - "clientVersion": { - "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}" - }, - "set": { - "id": "clouddebugger.debugger.debuggees.breakpoints.set", - "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set", - "description": "Sets the breakpoint to the debuggee.", - "request": { - "$ref": "Breakpoint" - }, - "response": { - "$ref": "SetBreakpointResponse" - }, - "parameterOrder": [ - "debuggeeId" - ], - "httpMethod": "POST", - "parameters": { - "debuggeeId": { - "description": "ID of the debuggee where the breakpoint is to be set.", - "type": "string", - "required": true, - "location": "path" - }, - "clientVersion": { - "location": "query", - "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set" - }, - "list": { - "description": "Lists all breakpoints for the debuggee.", - "httpMethod": "GET", - "response": { - "$ref": "ListBreakpointsResponse" - }, - "parameterOrder": [ - "debuggeeId" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "parameters": { - "stripResults": { - "description": "This field is deprecated. The following fields are always stripped out of\nthe result: `stack_frames`, `evaluated_expressions` and `variable_table`.", - "type": "boolean", - "location": "query" - }, - "debuggeeId": { - "description": "ID of the debuggee whose breakpoints to list.", - "type": "string", - "required": true, - "location": "path" - }, - "waitToken": { - "location": "query", - "description": "A wait token that, if specified, blocks the call until the breakpoints\nlist has changed, or a server selected timeout has expired. The value\nshould be set from the last response. The error code\n`google.rpc.Code.ABORTED` (RPC) is returned on wait timeout, which\nshould be called again with the same `wait_token`.", - "type": "string" - }, - "clientVersion": { - "location": "query", - "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", - "type": "string" - }, - "action.value": { - "description": "Only breakpoints with the specified action will pass the filter.", - "type": "string", - "location": "query", - "enum": [ - "CAPTURE", - "LOG" - ] - }, - "includeAllUsers": { - "description": "When set to `true`, the response includes the list of breakpoints set by\nany user. Otherwise, it includes only breakpoints set by the caller.", - "type": "boolean", - "location": "query" - }, - "includeInactive": { - "description": "When set to `true`, the response includes active and inactive\nbreakpoints. Otherwise, it includes only active breakpoints.", - "type": "boolean", - "location": "query" - } - }, - "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints", - "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints", - "id": "clouddebugger.debugger.debuggees.breakpoints.list" - }, - "get": { - "id": "clouddebugger.debugger.debuggees.breakpoints.get", - "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", - "description": "Gets breakpoint information.", - "parameterOrder": [ - "debuggeeId", - "breakpointId" - ], - "response": { - "$ref": "GetBreakpointResponse" - }, - "httpMethod": "GET", - "parameters": { - "breakpointId": { - "location": "path", - "description": "ID of the breakpoint to get.", - "type": "string", - "required": true - }, - "debuggeeId": { - "description": "ID of the debuggee whose breakpoint to get.", - "type": "string", - "required": true, - "location": "path" - }, - "clientVersion": { - "location": "query", - "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud_debugger" - ], - "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}" - } - } - } - } - } - } - } - }, - "parameters": { - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - } - }, - "version": "v2", - "baseUrl": "https://clouddebugger.googleapis.com/", - "servicePath": "", - "description": "Examines the call stack and variables of a running application without stopping or slowing it down.\n", - "kind": "discovery#restDescription", - "basePath": "", - "revision": "20170817", - "documentationLink": "http://cloud.google.com/debugger", - "id": "clouddebugger:v2", - "discoveryVersion": "v1", - "version_module": true, "schemas": { - "CloudWorkspaceSourceContext": { - "id": "CloudWorkspaceSourceContext", - "description": "A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot.", + "StackFrame": { + "description": "Represents a stack frame context.", "type": "object", "properties": { - "snapshotId": { - "description": "The ID of the snapshot.\nAn empty snapshot_id refers to the most recent snapshot.", + "arguments": { + "description": "Set of arguments passed to this function.\nNote that this might not be populated for all stack frames.", + "items": { + "$ref": "Variable" + }, + "type": "array" + }, + "locals": { + "description": "Set of local variables at the stack frame location.\nNote that this might not be populated for all stack frames.", + "items": { + "$ref": "Variable" + }, + "type": "array" + }, + "location": { + "$ref": "SourceLocation", + "description": "Source location of the call site." + }, + "function": { + "type": "string", + "description": "Demangled function name at the call site." + } + }, + "id": "StackFrame" + }, + "RepoId": { + "type": "object", + "properties": { + "uid": { + "description": "A server-assigned, globally unique identifier.", "type": "string" }, - "workspaceId": { - "$ref": "CloudWorkspaceId", - "description": "The ID of the workspace." + "projectRepoId": { + "$ref": "ProjectRepoId", + "description": "A combination of a project ID and a repo name." } - } + }, + "id": "RepoId", + "description": "A unique identifier for a cloud repo." + }, + "FormatMessage": { + "description": "Represents a message with parameters.", + "type": "object", + "properties": { + "parameters": { + "description": "Optional parameters to be embedded into the message.", + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "description": "Format template for the message. The `format` uses placeholders `$0`,\n`$1`, etc. to reference parameters. `$$` can be used to denote the `$`\ncharacter.\n\nExamples:\n\n* `Failed to load '$0' which helps debug $1 the first time it\n is loaded. Again, $0 is very important.`\n* `Please pay $$10 to use $0 instead of $1.`", + "type": "string" + } + }, + "id": "FormatMessage" + }, + "ExtendedSourceContext": { + "description": "An ExtendedSourceContext is a SourceContext combined with additional\ndetails describing the context.", + "type": "object", + "properties": { + "context": { + "description": "Any source context.", + "$ref": "SourceContext" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels with user defined metadata.", + "type": "object" + } + }, + "id": "ExtendedSourceContext" + }, + "ListDebuggeesResponse": { + "description": "Response for listing debuggees.", + "type": "object", + "properties": { + "debuggees": { + "description": "List of debuggees accessible to the calling user.\nThe fields `debuggee.id` and `description` are guaranteed to be set.\nThe `description` field is a human readable field provided by agents and\ncan be displayed to users.", + "items": { + "$ref": "Debuggee" + }, + "type": "array" + } + }, + "id": "ListDebuggeesResponse" + }, + "AliasContext": { + "type": "object", + "properties": { + "name": { + "description": "The alias name.", + "type": "string" + }, + "kind": { + "description": "The alias kind.", + "type": "string", + "enumDescriptions": [ + "Do not use.", + "Git tag", + "Git branch", + "OTHER is used to specify non-standard aliases, those not of the kinds\nabove. For example, if a Git repo has a ref named \"refs/foo/bar\", it\nis considered to be of kind OTHER." + ], + "enum": [ + "ANY", + "FIXED", + "MOVABLE", + "OTHER" + ] + } + }, + "id": "AliasContext", + "description": "An alias to a repo revision." + }, + "Empty": { + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" + }, + "SourceLocation": { + "description": "Represents a location in the source code.", + "type": "object", + "properties": { + "path": { + "description": "Path to the source file within the source context of the target binary.", + "type": "string" + }, + "line": { + "format": "int32", + "description": "Line inside the file. The first line in the file has the value `1`.", + "type": "integer" + } + }, + "id": "SourceLocation" + }, + "Debuggee": { + "type": "object", + "properties": { + "sourceContexts": { + "description": "References to the locations and revisions of the source code used in the\ndeployed application.", + "items": { + "$ref": "SourceContext" + }, + "type": "array" + }, + "extSourceContexts": { + "description": "References to the locations and revisions of the source code used in the\ndeployed application.\n\nNOTE: this field is experimental and can be ignored.", + "items": { + "$ref": "ExtendedSourceContext" + }, + "type": "array" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "A set of custom debuggee properties, populated by the agent, to be\ndisplayed to the user.", + "type": "object" + }, + "isInactive": { + "description": "If set to `true`, indicates that Controller service does not detect any\nactivity from the debuggee agents and the application is possibly stopped.", + "type": "boolean" + }, + "status": { + "description": "Human readable message to be displayed to the user about this debuggee.\nAbsence of this field indicates no status. The message can be either\ninformational or an error status.", + "$ref": "StatusMessage" + }, + "project": { + "description": "Project the debuggee is associated with.\nUse project number or id when registering a Google Cloud Platform project.", + "type": "string" + }, + "id": { + "description": "Unique identifier for the debuggee generated by the controller service.", + "type": "string" + }, + "agentVersion": { + "type": "string", + "description": "Version ID of the agent.\nSchema: `domain/language-platform/vmajor.minor` (for example\n`google.com/java-gcp/v1.1`)." + }, + "isDisabled": { + "description": "If set to `true`, indicates that the agent should disable itself and\ndetach from the debuggee.", + "type": "boolean" + }, + "description": { + "description": "Human readable description of the debuggee.\nIncluding a human-readable project name, environment name and version\ninformation is recommended.", + "type": "string" + }, + "uniquifier": { + "description": "Uniquifier to further distiguish the application.\nIt is possible that different applications might have identical values in\nthe debuggee message, thus, incorrectly identified as a single application\nby the Controller service. This field adds salt to further distiguish the\napplication. Agents should consider seeding this field with value that\nidentifies the code, binary, configuration and environment.", + "type": "string" + } + }, + "id": "Debuggee", + "description": "Represents the debugged application. The application may include one or more\nreplicated processes executing the same code. Each of these processes is\nattached with a debugger agent, carrying out the debugging commands.\nAgents attached to the same debuggee identify themselves as such by using\nexactly the same Debuggee message value when registering." + }, + "ProjectRepoId": { + "description": "Selects a repo using a Google Cloud Platform project ID\n(e.g. winged-cargo-31) and a repo name within that project.", + "type": "object", + "properties": { + "repoName": { + "description": "The name of the repo. Leave empty for the default repo.", + "type": "string" + }, + "projectId": { + "type": "string", + "description": "The ID of the project." + } + }, + "id": "ProjectRepoId" + }, + "ListActiveBreakpointsResponse": { + "description": "Response for listing active breakpoints.", + "type": "object", + "properties": { + "waitExpired": { + "description": "If set to `true`, indicates that there is no change to the\nlist of active breakpoints and the server-selected timeout has expired.\nThe `breakpoints` field would be empty and should be ignored.", + "type": "boolean" + }, + "nextWaitToken": { + "description": "A token that can be used in the next method call to block until\nthe list of breakpoints changes.", + "type": "string" + }, + "breakpoints": { + "items": { + "$ref": "Breakpoint" + }, + "type": "array", + "description": "List of all active breakpoints.\nThe fields `id` and `location` are guaranteed to be set on each breakpoint." + } + }, + "id": "ListActiveBreakpointsResponse" + }, + "CloudWorkspaceSourceContext": { + "type": "object", + "properties": { + "workspaceId": { + "description": "The ID of the workspace.", + "$ref": "CloudWorkspaceId" + }, + "snapshotId": { + "type": "string", + "description": "The ID of the snapshot.\nAn empty snapshot_id refers to the most recent snapshot." + } + }, + "id": "CloudWorkspaceSourceContext", + "description": "A CloudWorkspaceSourceContext denotes a workspace at a particular snapshot." + }, + "UpdateActiveBreakpointResponse": { + "description": "Response for updating an active breakpoint.\nThe message is defined to allow future extensions.", + "type": "object", + "properties": {}, + "id": "UpdateActiveBreakpointResponse" }, "GerritSourceContext": { - "id": "GerritSourceContext", "description": "A SourceContext referring to a Gerrit project.", "type": "object", "properties": { - "aliasName": { - "description": "The name of an alias (branch, tag, etc.).", - "type": "string" - }, "aliasContext": { - "description": "An alias, which may be a branch or tag.", - "$ref": "AliasContext" + "$ref": "AliasContext", + "description": "An alias, which may be a branch or tag." }, "gerritProject": { "description": "The full project name within the host. Projects may be nested, so\n\"project/subproject\" is a valid project name.\nThe \"repo name\" is hostURI/project.", @@ -455,18 +278,18 @@ "type": "string" }, "hostUri": { - "description": "The URI of a running Gerrit instance.", - "type": "string" + "type": "string", + "description": "The URI of a running Gerrit instance." + }, + "aliasName": { + "type": "string", + "description": "The name of an alias (branch, tag, etc.)." } - } - }, - "UpdateActiveBreakpointResponse": { - "id": "UpdateActiveBreakpointResponse", - "description": "Response for updating an active breakpoint.\nThe message is defined to allow future extensions.", - "type": "object", - "properties": {} + }, + "id": "GerritSourceContext" }, "CloudWorkspaceId": { + "id": "CloudWorkspaceId", "description": "A CloudWorkspaceId is a unique identifier for a cloud workspace.\nA cloud workspace is a place associated with a repo where modified files\ncan be stored before they are committed.", "type": "object", "properties": { @@ -475,13 +298,13 @@ "type": "string" }, "repoId": { - "description": "The ID of the repo containing the workspace.", - "$ref": "RepoId" + "$ref": "RepoId", + "description": "The ID of the repo containing the workspace." } - }, - "id": "CloudWorkspaceId" + } }, "ListBreakpointsResponse": { + "id": "ListBreakpointsResponse", "description": "Response for listing breakpoints.", "type": "object", "properties": { @@ -496,25 +319,22 @@ }, "type": "array" } - }, - "id": "ListBreakpointsResponse" + } }, "Breakpoint": { - "id": "Breakpoint", - "description": "Represents the breakpoint specification, status and results.", "type": "object", "properties": { "action": { - "enumDescriptions": [ - "Capture stack frame and variables and update the breakpoint.\nThe data is only captured once. After that the breakpoint is set\nin a final state.", - "Log each breakpoint hit. The breakpoint remains active until\ndeleted or expired." - ], "enum": [ "CAPTURE", "LOG" ], "description": "Action that the agent should perform when the code at the\nbreakpoint location is hit.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Capture stack frame and variables and update the breakpoint.\nThe data is only captured once. After that the breakpoint is set\nin a final state.", + "Log each breakpoint hit. The breakpoint remains active until\ndeleted or expired." + ] }, "logLevel": { "enumDescriptions": [ @@ -550,6 +370,15 @@ }, "type": "array" }, + "createTime": { + "format": "google-datetime", + "description": "Time this breakpoint was created by the server in seconds resolution.", + "type": "string" + }, + "logMessageFormat": { + "description": "Only relevant when action is `LOG`. Defines the message to log when\nthe breakpoint hits. The message may include parameter placeholders `$0`,\n`$1`, etc. These placeholders are replaced with the evaluated value\nof the appropriate expression. Expressions not referenced in\n`log_message_format` are not logged.\n\nExample: `Message received, id = $0, count = $1` with\n`expressions` = `[ message.id, message.count ]`.", + "type": "string" + }, "labels": { "additionalProperties": { "type": "string" @@ -557,15 +386,6 @@ "description": "A set of custom breakpoint properties, populated by the agent, to be\ndisplayed to the user.", "type": "object" }, - "logMessageFormat": { - "description": "Only relevant when action is `LOG`. Defines the message to log when\nthe breakpoint hits. The message may include parameter placeholders `$0`,\n`$1`, etc. These placeholders are replaced with the evaluated value\nof the appropriate expression. Expressions not referenced in\n`log_message_format` are not logged.\n\nExample: `Message received, id = $0, count = $1` with\n`expressions` = `[ message.id, message.count ]`.", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "Time this breakpoint was created by the server in seconds resolution.", - "type": "string" - }, "expressions": { "description": "List of read-only expressions to evaluate at the breakpoint location.\nThe expressions are composed using expressions in the programming language\nat the source location. If the breakpoint action is `LOG`, the evaluated\nexpressions are included in log statements.", "items": { @@ -581,15 +401,15 @@ "type": "array" }, "isFinalState": { - "description": "When true, indicates that this is a final result and the\nbreakpoint state will not change from here on.", - "type": "boolean" + "type": "boolean", + "description": "When true, indicates that this is a final result and the\nbreakpoint state will not change from here on." }, "stackFrames": { - "description": "The stack at breakpoint time.", "items": { "$ref": "StackFrame" }, - "type": "array" + "type": "array", + "description": "The stack at breakpoint time." }, "condition": { "description": "Condition that triggers the breakpoint.\nThe condition is a compound boolean expression composed using expressions\nin a programming language at the source location.", @@ -603,38 +423,36 @@ "description": "E-mail address of the user that created this breakpoint", "type": "string" } - } - }, - "UpdateActiveBreakpointRequest": { - "description": "Request to update an active breakpoint.", - "type": "object", - "properties": { - "breakpoint": { - "description": "Updated breakpoint information.\nThe field `id` must be set.\nThe agent must echo all Breakpoint specification fields in the update.", - "$ref": "Breakpoint" - } }, - "id": "UpdateActiveBreakpointRequest" + "id": "Breakpoint", + "description": "Represents the breakpoint specification, status and results." }, "SetBreakpointResponse": { - "id": "SetBreakpointResponse", - "description": "Response for setting a breakpoint.", "type": "object", "properties": { "breakpoint": { "$ref": "Breakpoint", "description": "Breakpoint resource.\nThe field `id` is guaranteed to be set (in addition to the echoed fileds)." } - } + }, + "id": "SetBreakpointResponse", + "description": "Response for setting a breakpoint." + }, + "UpdateActiveBreakpointRequest": { + "description": "Request to update an active breakpoint.", + "type": "object", + "properties": { + "breakpoint": { + "$ref": "Breakpoint", + "description": "Updated breakpoint information.\nThe field `id` must be set.\nThe agent must echo all Breakpoint specification fields in the update." + } + }, + "id": "UpdateActiveBreakpointRequest" }, "SourceContext": { "description": "A SourceContext is a reference to a tree of files. A SourceContext together\nwith a path point to a unique revision of a single file or directory.", "type": "object", "properties": { - "gerrit": { - "$ref": "GerritSourceContext", - "description": "A SourceContext referring to a Gerrit project." - }, "cloudWorkspace": { "$ref": "CloudWorkspaceSourceContext", "description": "A SourceContext referring to a snapshot in a cloud workspace." @@ -644,14 +462,17 @@ "description": "A SourceContext referring to a revision in a cloud repo." }, "git": { - "$ref": "GitSourceContext", - "description": "A SourceContext referring to any third party Git repo (e.g. GitHub)." + "description": "A SourceContext referring to any third party Git repo (e.g. GitHub).", + "$ref": "GitSourceContext" + }, + "gerrit": { + "description": "A SourceContext referring to a Gerrit project.", + "$ref": "GerritSourceContext" } }, "id": "SourceContext" }, "CloudRepoSourceContext": { - "id": "CloudRepoSourceContext", "description": "A CloudRepoSourceContext denotes a particular revision in a cloud\nrepo (a repo hosted by the Google Cloud Platform).", "type": "object", "properties": { @@ -664,25 +485,15 @@ "type": "string" }, "repoId": { - "$ref": "RepoId", - "description": "The ID of the repo." + "description": "The ID of the repo.", + "$ref": "RepoId" }, "aliasContext": { - "description": "An alias, which may be a branch or tag.", - "$ref": "AliasContext" + "$ref": "AliasContext", + "description": "An alias, which may be a branch or tag." } - } - }, - "RegisterDebuggeeRequest": { - "id": "RegisterDebuggeeRequest", - "description": "Request to register a debuggee.", - "type": "object", - "properties": { - "debuggee": { - "$ref": "Debuggee", - "description": "Debuggee information to register.\nThe fields `project`, `uniquifier`, `description` and `agent_version`\nof the debuggee must be set." - } - } + }, + "id": "CloudRepoSourceContext" }, "RegisterDebuggeeResponse": { "id": "RegisterDebuggeeResponse", @@ -695,31 +506,34 @@ } } }, - "GetBreakpointResponse": { - "description": "Response for getting breakpoint information.", + "RegisterDebuggeeRequest": { + "description": "Request to register a debuggee.", "type": "object", + "properties": { + "debuggee": { + "description": "Debuggee information to register.\nThe fields `project`, `uniquifier`, `description` and `agent_version`\nof the debuggee must be set.", + "$ref": "Debuggee" + } + }, + "id": "RegisterDebuggeeRequest" + }, + "GetBreakpointResponse": { "properties": { "breakpoint": { "$ref": "Breakpoint", "description": "Complete breakpoint state.\nThe fields `id` and `location` are guaranteed to be set." } }, - "id": "GetBreakpointResponse" + "id": "GetBreakpointResponse", + "description": "Response for getting breakpoint information.", + "type": "object" }, "StatusMessage": { - "id": "StatusMessage", "description": "Represents a contextual status message.\nThe message can indicate an error or informational status, and refer to\nspecific parts of the containing object.\nFor example, the `Breakpoint.status` field can indicate an error referring\nto the `BREAKPOINT_SOURCE_LOCATION` with the message `Location not found`.", "type": "object", "properties": { - "description": { - "description": "Status message text.", - "$ref": "FormatMessage" - }, - "isError": { - "description": "Distinguishes errors from informational messages.", - "type": "boolean" - }, "refersTo": { + "type": "string", "enumDescriptions": [ "Status doesn't refer to any particular input.", "Status applies to the breakpoint and is related to its location.", @@ -738,34 +552,39 @@ "VARIABLE_NAME", "VARIABLE_VALUE" ], - "description": "Reference to which the message applies.", - "type": "string" + "description": "Reference to which the message applies." + }, + "description": { + "$ref": "FormatMessage", + "description": "Status message text." + }, + "isError": { + "type": "boolean", + "description": "Distinguishes errors from informational messages." } - } + }, + "id": "StatusMessage" }, "GitSourceContext": { - "id": "GitSourceContext", - "description": "A GitSourceContext denotes a particular revision in a third party Git\nrepository (e.g. GitHub).", "type": "object", "properties": { - "revisionId": { - "description": "Git commit hash.\nrequired.", - "type": "string" - }, "url": { "description": "Git repository URL.", "type": "string" + }, + "revisionId": { + "description": "Git commit hash.\nrequired.", + "type": "string" } - } + }, + "id": "GitSourceContext", + "description": "A GitSourceContext denotes a particular revision in a third party Git\nrepository (e.g. GitHub)." }, "Variable": { - "id": "Variable", - "description": "Represents a variable or an argument possibly of a compound object type.\nNote how the following variables are represented:\n\n1) A simple variable:\n\n int x = 5\n\n { name: \"x\", value: \"5\", type: \"int\" } // Captured variable\n\n2) A compound object:\n\n struct T {\n int m1;\n int m2;\n };\n T x = { 3, 7 };\n\n { // Captured variable\n name: \"x\",\n type: \"T\",\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\n3) A pointer where the pointee was captured:\n\n T x = { 3, 7 };\n T* p = &x;\n\n { // Captured variable\n name: \"p\",\n type: \"T*\",\n value: \"0x00500500\",\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\n4) A pointer where the pointee was not captured:\n\n T* p = new T;\n\n { // Captured variable\n name: \"p\",\n type: \"T*\",\n value: \"0x00400400\"\n status { is_error: true, description { format: \"unavailable\" } }\n }\n\nThe status should describe the reason for the missing value,\nsuch as `\u003coptimized out\u003e`, `\u003cinaccessible\u003e`, `\u003cpointers limit reached\u003e`.\n\nNote that a null pointer should not have members.\n\n5) An unnamed value:\n\n int* p = new int(7);\n\n { // Captured variable\n name: \"p\",\n value: \"0x00500500\",\n type: \"int*\",\n members { value: \"7\", type: \"int\" } }\n\n6) An unnamed pointer where the pointee was not captured:\n\n int* p = new int(7);\n int** pp = &p;\n\n { // Captured variable\n name: \"pp\",\n value: \"0x00500500\",\n type: \"int**\",\n members {\n value: \"0x00400400\",\n type: \"int*\"\n status {\n is_error: true,\n description: { format: \"unavailable\" } }\n }\n }\n }\n\nTo optimize computation, memory and network traffic, variables that\nrepeat in the output multiple times can be stored once in a shared\nvariable table and be referenced using the `var_table_index` field. The\nvariables stored in the shared table are nameless and are essentially\na partition of the complete variable. To reconstruct the complete\nvariable, merge the referencing variable with the referenced variable.\n\nWhen using the shared variable table, the following variables:\n\n T x = { 3, 7 };\n T* p = &x;\n T& r = x;\n\n { name: \"x\", var_table_index: 3, type: \"T\" } // Captured variables\n { name: \"p\", value \"0x00500500\", type=\"T*\", var_table_index: 3 }\n { name: \"r\", type=\"T&\", var_table_index: 3 }\n\n { // Shared variable table entry #3:\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\nNote that the pointer address is stored with the referencing variable\nand not with the referenced variable. This allows the referenced variable\nto be shared between pointers and references.\n\nThe type field is optional. The debugger agent may or may not support it.", - "type": "object", "properties": { "value": { - "description": "Simple value of the variable.", - "type": "string" + "type": "string", + "description": "Simple value of the variable." }, "varTableIndex": { "format": "int32", @@ -773,15 +592,15 @@ "type": "integer" }, "members": { - "description": "Members contained or pointed to by the variable.", "items": { "$ref": "Variable" }, - "type": "array" + "type": "array", + "description": "Members contained or pointed to by the variable." }, "status": { - "description": "Status associated with the variable. This field will usually stay\nunset. A status of a single variable only applies to that variable or\nexpression. The rest of breakpoint data still remains valid. Variables\nmight be reported in error state even when breakpoint is not in final\nstate.\n\nThe message may refer to variable name with `refers_to` set to\n`VARIABLE_NAME`. Alternatively `refers_to` will be set to `VARIABLE_VALUE`.\nIn either case variable value and members will be unset.\n\nExample of error message applied to name: `Invalid expression syntax`.\n\nExample of information message applied to value: `Not captured`.\n\nExamples of error message applied to value:\n\n* `Malformed string`,\n* `Field f not found in class C`\n* `Null pointer dereference`", - "$ref": "StatusMessage" + "$ref": "StatusMessage", + "description": "Status associated with the variable. This field will usually stay\nunset. A status of a single variable only applies to that variable or\nexpression. The rest of breakpoint data still remains valid. Variables\nmight be reported in error state even when breakpoint is not in final\nstate.\n\nThe message may refer to variable name with `refers_to` set to\n`VARIABLE_NAME`. Alternatively `refers_to` will be set to `VARIABLE_VALUE`.\nIn either case variable value and members will be unset.\n\nExample of error message applied to name: `Invalid expression syntax`.\n\nExample of information message applied to value: `Not captured`.\n\nExamples of error message applied to value:\n\n* `Malformed string`,\n* `Field f not found in class C`\n* `Null pointer dereference`" }, "name": { "description": "Name of the variable, if any.", @@ -791,247 +610,10 @@ "description": "Variable type (e.g. `MyClass`). If the variable is split with\n`var_table_index`, `type` goes next to `value`. The interpretation of\na type is agent specific. It is recommended to include the dynamic type\nrather than a static type of an object.", "type": "string" } - } - }, - "StackFrame": { - "id": "StackFrame", - "description": "Represents a stack frame context.", - "type": "object", - "properties": { - "locals": { - "description": "Set of local variables at the stack frame location.\nNote that this might not be populated for all stack frames.", - "items": { - "$ref": "Variable" - }, - "type": "array" - }, - "location": { - "description": "Source location of the call site.", - "$ref": "SourceLocation" - }, - "function": { - "description": "Demangled function name at the call site.", - "type": "string" - }, - "arguments": { - "description": "Set of arguments passed to this function.\nNote that this might not be populated for all stack frames.", - "items": { - "$ref": "Variable" - }, - "type": "array" - } - } - }, - "RepoId": { - "description": "A unique identifier for a cloud repo.", - "type": "object", - "properties": { - "uid": { - "description": "A server-assigned, globally unique identifier.", - "type": "string" - }, - "projectRepoId": { - "$ref": "ProjectRepoId", - "description": "A combination of a project ID and a repo name." - } }, - "id": "RepoId" - }, - "FormatMessage": { - "description": "Represents a message with parameters.", - "type": "object", - "properties": { - "parameters": { - "description": "Optional parameters to be embedded into the message.", - "items": { - "type": "string" - }, - "type": "array" - }, - "format": { - "description": "Format template for the message. The `format` uses placeholders `$0`,\n`$1`, etc. to reference parameters. `$$` can be used to denote the `$`\ncharacter.\n\nExamples:\n\n* `Failed to load '$0' which helps debug $1 the first time it\n is loaded. Again, $0 is very important.`\n* `Please pay $$10 to use $0 instead of $1.`", - "type": "string" - } - }, - "id": "FormatMessage" - }, - "ExtendedSourceContext": { - "id": "ExtendedSourceContext", - "description": "An ExtendedSourceContext is a SourceContext combined with additional\ndetails describing the context.", - "type": "object", - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels with user defined metadata.", - "type": "object" - }, - "context": { - "description": "Any source context.", - "$ref": "SourceContext" - } - } - }, - "ListDebuggeesResponse": { - "description": "Response for listing debuggees.", - "type": "object", - "properties": { - "debuggees": { - "description": "List of debuggees accessible to the calling user.\nThe fields `debuggee.id` and `description` are guaranteed to be set.\nThe `description` field is a human readable field provided by agents and\ncan be displayed to users.", - "items": { - "$ref": "Debuggee" - }, - "type": "array" - } - }, - "id": "ListDebuggeesResponse" - }, - "AliasContext": { - "id": "AliasContext", - "description": "An alias to a repo revision.", - "type": "object", - "properties": { - "name": { - "description": "The alias name.", - "type": "string" - }, - "kind": { - "enumDescriptions": [ - "Do not use.", - "Git tag", - "Git branch", - "OTHER is used to specify non-standard aliases, those not of the kinds\nabove. For example, if a Git repo has a ref named \"refs/foo/bar\", it\nis considered to be of kind OTHER." - ], - "enum": [ - "ANY", - "FIXED", - "MOVABLE", - "OTHER" - ], - "description": "The alias kind.", - "type": "string" - } - } - }, - "Empty": { - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {} - }, - "SourceLocation": { - "description": "Represents a location in the source code.", - "type": "object", - "properties": { - "path": { - "description": "Path to the source file within the source context of the target binary.", - "type": "string" - }, - "line": { - "format": "int32", - "description": "Line inside the file. The first line in the file has the value `1`.", - "type": "integer" - } - }, - "id": "SourceLocation" - }, - "Debuggee": { - "id": "Debuggee", - "description": "Represents the debugged application. The application may include one or more\nreplicated processes executing the same code. Each of these processes is\nattached with a debugger agent, carrying out the debugging commands.\nAgents attached to the same debuggee identify themselves as such by using\nexactly the same Debuggee message value when registering.", - "type": "object", - "properties": { - "id": { - "description": "Unique identifier for the debuggee generated by the controller service.", - "type": "string" - }, - "agentVersion": { - "description": "Version ID of the agent.\nSchema: `domain/language-platform/vmajor.minor` (for example\n`google.com/java-gcp/v1.1`).", - "type": "string" - }, - "isDisabled": { - "description": "If set to `true`, indicates that the agent should disable itself and\ndetach from the debuggee.", - "type": "boolean" - }, - "description": { - "description": "Human readable description of the debuggee.\nIncluding a human-readable project name, environment name and version\ninformation is recommended.", - "type": "string" - }, - "uniquifier": { - "description": "Uniquifier to further distiguish the application.\nIt is possible that different applications might have identical values in\nthe debuggee message, thus, incorrectly identified as a single application\nby the Controller service. This field adds salt to further distiguish the\napplication. Agents should consider seeding this field with value that\nidentifies the code, binary, configuration and environment.", - "type": "string" - }, - "sourceContexts": { - "description": "References to the locations and revisions of the source code used in the\ndeployed application.", - "items": { - "$ref": "SourceContext" - }, - "type": "array" - }, - "extSourceContexts": { - "description": "References to the locations and revisions of the source code used in the\ndeployed application.\n\nNOTE: this field is experimental and can be ignored.", - "items": { - "$ref": "ExtendedSourceContext" - }, - "type": "array" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "A set of custom debuggee properties, populated by the agent, to be\ndisplayed to the user.", - "type": "object" - }, - "status": { - "$ref": "StatusMessage", - "description": "Human readable message to be displayed to the user about this debuggee.\nAbsence of this field indicates no status. The message can be either\ninformational or an error status." - }, - "isInactive": { - "description": "If set to `true`, indicates that Controller service does not detect any\nactivity from the debuggee agents and the application is possibly stopped.", - "type": "boolean" - }, - "project": { - "description": "Project the debuggee is associated with.\nUse project number or id when registering a Google Cloud Platform project.", - "type": "string" - } - } - }, - "ListActiveBreakpointsResponse": { - "description": "Response for listing active breakpoints.", - "type": "object", - "properties": { - "breakpoints": { - "description": "List of all active breakpoints.\nThe fields `id` and `location` are guaranteed to be set on each breakpoint.", - "items": { - "$ref": "Breakpoint" - }, - "type": "array" - }, - "waitExpired": { - "description": "If set to `true`, indicates that there is no change to the\nlist of active breakpoints and the server-selected timeout has expired.\nThe `breakpoints` field would be empty and should be ignored.", - "type": "boolean" - }, - "nextWaitToken": { - "description": "A token that can be used in the next method call to block until\nthe list of breakpoints changes.", - "type": "string" - } - }, - "id": "ListActiveBreakpointsResponse" - }, - "ProjectRepoId": { - "description": "Selects a repo using a Google Cloud Platform project ID\n(e.g. winged-cargo-31) and a repo name within that project.", - "type": "object", - "properties": { - "repoName": { - "description": "The name of the repo. Leave empty for the default repo.", - "type": "string" - }, - "projectId": { - "description": "The ID of the project.", - "type": "string" - } - }, - "id": "ProjectRepoId" + "id": "Variable", + "description": "Represents a variable or an argument possibly of a compound object type.\nNote how the following variables are represented:\n\n1) A simple variable:\n\n int x = 5\n\n { name: \"x\", value: \"5\", type: \"int\" } // Captured variable\n\n2) A compound object:\n\n struct T {\n int m1;\n int m2;\n };\n T x = { 3, 7 };\n\n { // Captured variable\n name: \"x\",\n type: \"T\",\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\n3) A pointer where the pointee was captured:\n\n T x = { 3, 7 };\n T* p = &x;\n\n { // Captured variable\n name: \"p\",\n type: \"T*\",\n value: \"0x00500500\",\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\n4) A pointer where the pointee was not captured:\n\n T* p = new T;\n\n { // Captured variable\n name: \"p\",\n type: \"T*\",\n value: \"0x00400400\"\n status { is_error: true, description { format: \"unavailable\" } }\n }\n\nThe status should describe the reason for the missing value,\nsuch as `\u003coptimized out\u003e`, `\u003cinaccessible\u003e`, `\u003cpointers limit reached\u003e`.\n\nNote that a null pointer should not have members.\n\n5) An unnamed value:\n\n int* p = new int(7);\n\n { // Captured variable\n name: \"p\",\n value: \"0x00500500\",\n type: \"int*\",\n members { value: \"7\", type: \"int\" } }\n\n6) An unnamed pointer where the pointee was not captured:\n\n int* p = new int(7);\n int** pp = &p;\n\n { // Captured variable\n name: \"pp\",\n value: \"0x00500500\",\n type: \"int**\",\n members {\n value: \"0x00400400\",\n type: \"int*\"\n status {\n is_error: true,\n description: { format: \"unavailable\" } }\n }\n }\n }\n\nTo optimize computation, memory and network traffic, variables that\nrepeat in the output multiple times can be stored once in a shared\nvariable table and be referenced using the `var_table_index` field. The\nvariables stored in the shared table are nameless and are essentially\na partition of the complete variable. To reconstruct the complete\nvariable, merge the referencing variable with the referenced variable.\n\nWhen using the shared variable table, the following variables:\n\n T x = { 3, 7 };\n T* p = &x;\n T& r = x;\n\n { name: \"x\", var_table_index: 3, type: \"T\" } // Captured variables\n { name: \"p\", value \"0x00500500\", type=\"T*\", var_table_index: 3 }\n { name: \"r\", type=\"T&\", var_table_index: 3 }\n\n { // Shared variable table entry #3:\n members { name: \"m1\", value: \"3\", type: \"int\" },\n members { name: \"m2\", value: \"7\", type: \"int\" }\n }\n\nNote that the pointer address is stored with the referencing variable\nand not with the referenced variable. This allows the referenced variable\nto be shared between pointers and references.\n\nThe type field is optional. The debugger agent may or may not support it.", + "type": "object" } }, "protocol": "rest", @@ -1055,5 +637,423 @@ "rootUrl": "https://clouddebugger.googleapis.com/", "ownerDomain": "google.com", "name": "clouddebugger", - "batchPath": "batch" + "batchPath": "batch", + "title": "Stackdriver Debugger API", + "ownerName": "Google", + "resources": { + "debugger": { + "resources": { + "debuggees": { + "methods": { + "list": { + "httpMethod": "GET", + "parameterOrder": [], + "response": { + "$ref": "ListDebuggeesResponse" + }, + "parameters": { + "clientVersion": { + "location": "query", + "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", + "type": "string" + }, + "includeInactive": { + "location": "query", + "description": "When set to `true`, the result includes all debuggees. Otherwise, the\nresult includes only debuggees that are active.", + "type": "boolean" + }, + "project": { + "location": "query", + "description": "Project number of a Google Cloud project whose debuggees to list.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "flatPath": "v2/debugger/debuggees", + "path": "v2/debugger/debuggees", + "id": "clouddebugger.debugger.debuggees.list", + "description": "Lists all the debuggees that the user has access to." + } + }, + "resources": { + "breakpoints": { + "methods": { + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "debuggeeId", + "breakpointId" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "parameters": { + "breakpointId": { + "description": "ID of the breakpoint to delete.", + "type": "string", + "required": true, + "location": "path" + }, + "debuggeeId": { + "location": "path", + "description": "ID of the debuggee whose breakpoint to delete.", + "type": "string", + "required": true + }, + "clientVersion": { + "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", + "type": "string", + "location": "query" + } + }, + "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", + "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", + "id": "clouddebugger.debugger.debuggees.breakpoints.delete", + "description": "Deletes the breakpoint from the debuggee." + }, + "set": { + "description": "Sets the breakpoint to the debuggee.", + "request": { + "$ref": "Breakpoint" + }, + "httpMethod": "POST", + "parameterOrder": [ + "debuggeeId" + ], + "response": { + "$ref": "SetBreakpointResponse" + }, + "parameters": { + "debuggeeId": { + "location": "path", + "description": "ID of the debuggee where the breakpoint is to be set.", + "type": "string", + "required": true + }, + "clientVersion": { + "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set", + "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/set", + "id": "clouddebugger.debugger.debuggees.breakpoints.set" + }, + "list": { + "description": "Lists all breakpoints for the debuggee.", + "httpMethod": "GET", + "response": { + "$ref": "ListBreakpointsResponse" + }, + "parameterOrder": [ + "debuggeeId" + ], + "parameters": { + "stripResults": { + "description": "This field is deprecated. The following fields are always stripped out of\nthe result: `stack_frames`, `evaluated_expressions` and `variable_table`.", + "type": "boolean", + "location": "query" + }, + "debuggeeId": { + "description": "ID of the debuggee whose breakpoints to list.", + "type": "string", + "required": true, + "location": "path" + }, + "waitToken": { + "location": "query", + "description": "A wait token that, if specified, blocks the call until the breakpoints\nlist has changed, or a server selected timeout has expired. The value\nshould be set from the last response. The error code\n`google.rpc.Code.ABORTED` (RPC) is returned on wait timeout, which\nshould be called again with the same `wait_token`.", + "type": "string" + }, + "clientVersion": { + "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", + "type": "string", + "location": "query" + }, + "action.value": { + "description": "Only breakpoints with the specified action will pass the filter.", + "type": "string", + "location": "query", + "enum": [ + "CAPTURE", + "LOG" + ] + }, + "includeAllUsers": { + "location": "query", + "description": "When set to `true`, the response includes the list of breakpoints set by\nany user. Otherwise, it includes only breakpoints set by the caller.", + "type": "boolean" + }, + "includeInactive": { + "location": "query", + "description": "When set to `true`, the response includes active and inactive\nbreakpoints. Otherwise, it includes only active breakpoints.", + "type": "boolean" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints", + "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints", + "id": "clouddebugger.debugger.debuggees.breakpoints.list" + }, + "get": { + "flatPath": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", + "id": "clouddebugger.debugger.debuggees.breakpoints.get", + "path": "v2/debugger/debuggees/{debuggeeId}/breakpoints/{breakpointId}", + "description": "Gets breakpoint information.", + "response": { + "$ref": "GetBreakpointResponse" + }, + "parameterOrder": [ + "debuggeeId", + "breakpointId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "parameters": { + "breakpointId": { + "description": "ID of the breakpoint to get.", + "type": "string", + "required": true, + "location": "path" + }, + "debuggeeId": { + "location": "path", + "description": "ID of the debuggee whose breakpoint to get.", + "type": "string", + "required": true + }, + "clientVersion": { + "location": "query", + "description": "The client version making the call.\nSchema: `domain/type/version` (e.g., `google.com/intellij/v1`).", + "type": "string" + } + } + } + } + } + } + } + } + }, + "controller": { + "resources": { + "debuggees": { + "methods": { + "register": { + "request": { + "$ref": "RegisterDebuggeeRequest" + }, + "description": "Registers the debuggee with the controller service.\n\nAll agents attached to the same application must call this method with\nexactly the same request content to get back the same stable `debuggee_id`.\nAgents should call this method again whenever `google.rpc.Code.NOT_FOUND`\nis returned from any controller method.\n\nThis protocol allows the controller service to disable debuggees, recover\nfrom data loss, or change the `debuggee_id` format. Agents must handle\n`debuggee_id` value changing upon re-registration.", + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "RegisterDebuggeeResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "parameters": {}, + "flatPath": "v2/controller/debuggees/register", + "path": "v2/controller/debuggees/register", + "id": "clouddebugger.controller.debuggees.register" + } + }, + "resources": { + "breakpoints": { + "methods": { + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListActiveBreakpointsResponse" + }, + "parameterOrder": [ + "debuggeeId" + ], + "parameters": { + "successOnTimeout": { + "description": "If set to `true` (recommended), returns `google.rpc.Code.OK` status and\nsets the `wait_expired` response field to `true` when the server-selected\ntimeout has expired.\n\nIf set to `false` (deprecated), returns `google.rpc.Code.ABORTED` status\nwhen the server-selected timeout has expired.", + "type": "boolean", + "location": "query" + }, + "debuggeeId": { + "description": "Identifies the debuggee.", + "type": "string", + "required": true, + "location": "path" + }, + "waitToken": { + "location": "query", + "description": "A token that, if specified, blocks the method call until the list\nof active breakpoints has changed, or a server-selected timeout has\nexpired. The value should be set from the `next_wait_token` field in\nthe last response. The initial value should be set to `\"init\"`.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "flatPath": "v2/controller/debuggees/{debuggeeId}/breakpoints", + "path": "v2/controller/debuggees/{debuggeeId}/breakpoints", + "id": "clouddebugger.controller.debuggees.breakpoints.list", + "description": "Returns the list of all active breakpoints for the debuggee.\n\nThe breakpoint specification (`location`, `condition`, and `expressions`\nfields) is semantically immutable, although the field values may\nchange. For example, an agent may update the location line number\nto reflect the actual line where the breakpoint was set, but this\ndoesn't change the breakpoint semantics.\n\nThis means that an agent does not need to check if a breakpoint has changed\nwhen it encounters the same breakpoint on a successive call.\nMoreover, an agent should remember the breakpoints that are completed\nuntil the controller removes them from the active list to avoid\nsetting those breakpoints again." + }, + "update": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud_debugger" + ], + "parameters": { + "id": { + "location": "path", + "description": "Breakpoint identifier, unique in the scope of the debuggee.", + "type": "string", + "required": true + }, + "debuggeeId": { + "description": "Identifies the debuggee being debugged.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v2/controller/debuggees/{debuggeeId}/breakpoints/{id}", + "path": "v2/controller/debuggees/{debuggeeId}/breakpoints/{id}", + "id": "clouddebugger.controller.debuggees.breakpoints.update", + "request": { + "$ref": "UpdateActiveBreakpointRequest" + }, + "description": "Updates the breakpoint state or mutable fields.\nThe entire Breakpoint message must be sent back to the controller service.\n\nUpdates to active breakpoint fields are only allowed if the new value\ndoes not change the breakpoint specification. Updates to the `location`,\n`condition` and `expressions` fields should not alter the breakpoint\nsemantics. These may only make changes such as canonicalizing a value\nor snapping the location to the correct line of code.", + "httpMethod": "PUT", + "parameterOrder": [ + "debuggeeId", + "id" + ], + "response": { + "$ref": "UpdateActiveBreakpointResponse" + } + } + } + } + } + } + } + } + }, + "parameters": { + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "type": "string", + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format." + }, + "callback": { + "type": "string", + "location": "query", + "description": "JSONP" + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + } + }, + "version": "v2", + "baseUrl": "https://clouddebugger.googleapis.com/", + "servicePath": "", + "kind": "discovery#restDescription", + "description": "Examines the call stack and variables of a running application without stopping or slowing it down.\n", + "basePath": "", + "id": "clouddebugger:v2", + "documentationLink": "http://cloud.google.com/debugger", + "revision": "20170817", + "discoveryVersion": "v1", + "version_module": true } diff --git a/vendor/google.golang.org/api/clouderrorreporting/v1beta1/clouderrorreporting-api.json b/vendor/google.golang.org/api/clouderrorreporting/v1beta1/clouderrorreporting-api.json index 46d5152..e1b18eb 100644 --- a/vendor/google.golang.org/api/clouderrorreporting/v1beta1/clouderrorreporting-api.json +++ b/vendor/google.golang.org/api/clouderrorreporting/v1beta1/clouderrorreporting-api.json @@ -1,348 +1,4 @@ { - "kind": "discovery#restDescription", - "description": "Groups and counts similar errors from cloud services and applications, reports new errors, and provides access to error groups and their associated errors.\n", - "servicePath": "", - "basePath": "", - "revision": "20170816", - "documentationLink": "https://cloud.google.com/error-reporting/", - "id": "clouderrorreporting:v1beta1", - "discoveryVersion": "v1", - "version_module": true, - "schemas": { - "ErrorEvent": { - "description": "An error event which is returned by the Error Reporting system.", - "type": "object", - "properties": { - "eventTime": { - "format": "google-datetime", - "description": "Time when the event occurred as provided in the error report.\nIf the report did not contain a timestamp, the time the error was received\nby the Error Reporting system is used.", - "type": "string" - }, - "context": { - "$ref": "ErrorContext", - "description": "Data about the context in which the error occurred." - }, - "message": { - "description": "The stack trace that was reported or logged by the service.", - "type": "string" - }, - "serviceContext": { - "$ref": "ServiceContext", - "description": "The `ServiceContext` for which this error was reported." - } - }, - "id": "ErrorEvent" - }, - "ReportedErrorEvent": { - "properties": { - "eventTime": { - "format": "google-datetime", - "description": "[Optional] Time when the event occurred.\nIf not provided, the time when the event was received by the\nError Reporting system will be used.", - "type": "string" - }, - "context": { - "$ref": "ErrorContext", - "description": "[Optional] A description of the context in which the error occurred." - }, - "message": { - "type": "string", - "description": "[Required] The error message.\nIf no `context.reportLocation` is provided, the message must contain a\nheader (typically consisting of the exception type name and an error\nmessage) and an exception stack trace in one of the supported programming\nlanguages and formats.\nSupported languages are Java, Python, JavaScript, Ruby, C#, PHP, and Go.\nSupported stack trace formats are:\n\n* **Java**: Must be the return value of [`Throwable.printStackTrace()`](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29).\n* **Python**: Must be the return value of [`traceback.format_exc()`](https://docs.python.org/2/library/traceback.html#traceback.format_exc).\n* **JavaScript**: Must be the value of [`error.stack`](https://github.com/v8/v8/wiki/Stack-Trace-API)\nas returned by V8.\n* **Ruby**: Must contain frames returned by [`Exception.backtrace`](https://ruby-doc.org/core-2.2.0/Exception.html#method-i-backtrace).\n* **C#**: Must be the return value of [`Exception.ToString()`](https://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx).\n* **PHP**: Must start with `PHP (Notice|Parse error|Fatal error|Warning)`\nand contain the result of [`(string)$exception`](http://php.net/manual/en/exception.tostring.php).\n* **Go**: Must be the return value of [`runtime.Stack()`](https://golang.org/pkg/runtime/debug/#Stack)." - }, - "serviceContext": { - "$ref": "ServiceContext", - "description": "[Required] The service context in which this error has occurred." - } - }, - "id": "ReportedErrorEvent", - "description": "An error event which is reported to the Error Reporting system.", - "type": "object" - }, - "ErrorContext": { - "id": "ErrorContext", - "description": "A description of the context in which an error occurred.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.", - "type": "object", - "properties": { - "httpRequest": { - "description": "The HTTP request which was processed when the error was\ntriggered.", - "$ref": "HttpRequestContext" - }, - "user": { - "description": "The user who caused or was affected by the crash.\nThis can be a user ID, an email address, or an arbitrary token that\nuniquely identifies the user.\nWhen sending an error report, leave this field empty if the user was not\nlogged in. In this case the\nError Reporting system will use other data, such as remote IP address, to\ndistinguish affected users. See `affected_users_count` in\n`ErrorGroupStats`.", - "type": "string" - }, - "sourceReferences": { - "description": "Source code that was used to build the executable which has\ncaused the given error message.", - "items": { - "$ref": "SourceReference" - }, - "type": "array" - }, - "reportLocation": { - "$ref": "SourceLocation", - "description": "The location in the source code where the decision was made to\nreport the error, usually the place where it was logged.\nFor a logged exception this would be the source line where the\nexception is logged, usually close to the place where it was\ncaught." - } - } - }, - "TrackingIssue": { - "description": "Information related to tracking the progress on resolving the error.", - "type": "object", - "properties": { - "url": { - "description": "A URL pointing to a related entry in an issue tracking system.\nExample: https://github.com/user/project/issues/4", - "type": "string" - } - }, - "id": "TrackingIssue" - }, - "ErrorGroupStats": { - "description": "Data extracted for a specific group based on certain filter criteria,\nsuch as a given time period and/or service filter.", - "type": "object", - "properties": { - "group": { - "$ref": "ErrorGroup", - "description": "Group data that is independent of the filter criteria." - }, - "firstSeenTime": { - "format": "google-datetime", - "description": "Approximate first occurrence that was ever seen for this group\nand which matches the given filter criteria, ignoring the\ntime_range that was specified in the request.", - "type": "string" - }, - "count": { - "format": "int64", - "description": "Approximate total number of events in the given group that match\nthe filter criteria.", - "type": "string" - }, - "lastSeenTime": { - "format": "google-datetime", - "description": "Approximate last occurrence that was ever seen for this group and\nwhich matches the given filter criteria, ignoring the time_range\nthat was specified in the request.", - "type": "string" - }, - "affectedUsersCount": { - "format": "int64", - "description": "Approximate number of affected users in the given group that\nmatch the filter criteria.\nUsers are distinguished by data in the `ErrorContext` of the\nindividual error events, such as their login name or their remote\nIP address in case of HTTP requests.\nThe number of affected users can be zero even if the number of\nerrors is non-zero if no data was provided from which the\naffected user could be deduced.\nUsers are counted based on data in the request\ncontext that was provided in the error report. If more users are\nimplicitly affected, such as due to a crash of the whole service,\nthis is not reflected here.", - "type": "string" - }, - "numAffectedServices": { - "type": "integer", - "format": "int32", - "description": "The total number of services with a non-zero error count for the given\nfilter criteria." - }, - "affectedServices": { - "description": "Service contexts with a non-zero error count for the given filter\ncriteria. This list can be truncated if multiple services are affected.\nRefer to `num_affected_services` for the total count.", - "items": { - "$ref": "ServiceContext" - }, - "type": "array" - }, - "representative": { - "$ref": "ErrorEvent", - "description": "An arbitrary event that is chosen as representative for the whole group.\nThe representative event is intended to be used as a quick preview for\nthe whole group. Events in the group are usually sufficiently similar\nto each other such that showing an arbitrary representative provides\ninsight into the characteristics of the group as a whole." - }, - "timedCounts": { - "items": { - "$ref": "TimedCount" - }, - "type": "array", - "description": "Approximate number of occurrences over time.\nTimed counts returned by ListGroups are guaranteed to be:\n\n- Inside the requested time interval\n- Non-overlapping, and\n- Ordered by ascending time." - } - }, - "id": "ErrorGroupStats" - }, - "ListEventsResponse": { - "description": "Contains a set of requested error events.", - "type": "object", - "properties": { - "timeRangeBegin": { - "format": "google-datetime", - "description": "The timestamp specifies the start time to which the request was restricted.", - "type": "string" - }, - "errorEvents": { - "description": "The error events which match the given request.", - "items": { - "$ref": "ErrorEvent" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If non-empty, more results are available.\nPass this token, along with the same query parameters as the first\nrequest, to view the next page of results.", - "type": "string" - } - }, - "id": "ListEventsResponse" - }, - "TimedCount": { - "id": "TimedCount", - "description": "The number of errors in a given time period.\nAll numbers are approximate since the error events are sampled\nbefore counting them.", - "type": "object", - "properties": { - "endTime": { - "format": "google-datetime", - "description": "End of the time period to which `count` refers (excluded).", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Start of the time period to which `count` refers (included).", - "type": "string" - }, - "count": { - "format": "int64", - "description": "Approximate number of occurrences in the given time period.", - "type": "string" - } - } - }, - "ErrorGroup": { - "description": "Description of a group of similar error events.", - "type": "object", - "properties": { - "name": { - "description": "The group resource name.\nExample: \u003ccode\u003eprojects/my-project-123/groups/my-groupid\u003c/code\u003e", - "type": "string" - }, - "trackingIssues": { - "description": "Associated tracking issues.", - "items": { - "$ref": "TrackingIssue" - }, - "type": "array" - }, - "groupId": { - "description": "Group IDs are unique for a given project. If the same kind of error\noccurs in different service contexts, it will receive the same group ID.", - "type": "string" - } - }, - "id": "ErrorGroup" - }, - "ServiceContext": { - "description": "Describes a running service that sends errors.\nIts version changes over time and multiple versions can run in parallel.", - "type": "object", - "properties": { - "version": { - "description": "Represents the source code version that the developer provided,\nwhich could represent a version label or a Git SHA-1 hash, for example.\nFor App Engine standard environment, the version is set to the version of\nthe app.", - "type": "string" - }, - "service": { - "description": "An identifier of the service, such as the name of the\nexecutable, job, or Google App Engine service name. This field is expected\nto have a low number of values that are relatively stable over time, as\nopposed to `version`, which can be changed whenever new code is deployed.\n\nContains the service name for error reports extracted from Google\nApp Engine logs or `default` if the App Engine default service is used.", - "type": "string" - }, - "resourceType": { - "description": "Type of the MonitoredResource. List of possible values:\nhttps://cloud.google.com/monitoring/api/resources\n\nValue is set automatically for incoming errors and must not be set when\nreporting errors.", - "type": "string" - } - }, - "id": "ServiceContext" - }, - "SourceLocation": { - "description": "Indicates a location in the source code of the service for which errors are\nreported. `functionName` must be provided by the application when reporting\nan error, unless the error report contains a `message` with a supported\nexception stack trace. All fields are optional for the later case.", - "type": "object", - "properties": { - "functionName": { - "description": "Human-readable name of a function or method.\nThe value can include optional context like the class or package name.\nFor example, `my.package.MyClass.method` in case of Java.", - "type": "string" - }, - "filePath": { - "description": "The source code filename, which can include a truncated relative\npath, or a full path from a production machine.", - "type": "string" - }, - "lineNumber": { - "format": "int32", - "description": "1-based. 0 indicates that the line number is unknown.", - "type": "integer" - } - }, - "id": "SourceLocation" - }, - "ReportErrorEventResponse": { - "description": "Response for reporting an individual error event.\nData may be added to this message in the future.", - "type": "object", - "properties": {}, - "id": "ReportErrorEventResponse" - }, - "HttpRequestContext": { - "properties": { - "url": { - "type": "string", - "description": "The URL of the request." - }, - "responseStatusCode": { - "format": "int32", - "description": "The HTTP response status code for the request.", - "type": "integer" - }, - "method": { - "description": "The type of HTTP request, such as `GET`, `POST`, etc.", - "type": "string" - }, - "remoteIp": { - "description": "The IP address from which the request originated.\nThis can be IPv4, IPv6, or a token which is derived from the\nIP address, depending on the data that has been provided\nin the error report.", - "type": "string" - }, - "referrer": { - "description": "The referrer information that is provided with the request.", - "type": "string" - }, - "userAgent": { - "type": "string", - "description": "The user agent information that is provided with the request." - } - }, - "id": "HttpRequestContext", - "description": "HTTP request data that is related to a reported error.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.", - "type": "object" - }, - "ListGroupStatsResponse": { - "description": "Contains a set of requested error group stats.", - "type": "object", - "properties": { - "timeRangeBegin": { - "format": "google-datetime", - "description": "The timestamp specifies the start time to which the request was restricted.\nThe start time is set based on the requested time range. It may be adjusted\nto a later time if a project has exceeded the storage quota and older data\nhas been deleted.", - "type": "string" - }, - "errorGroupStats": { - "description": "The error group stats which match the given request.", - "items": { - "$ref": "ErrorGroupStats" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If non-empty, more results are available.\nPass this token, along with the same query parameters as the first\nrequest, to view the next page of results.", - "type": "string" - } - }, - "id": "ListGroupStatsResponse" - }, - "DeleteEventsResponse": { - "properties": {}, - "id": "DeleteEventsResponse", - "description": "Response message for deleting error events.", - "type": "object" - }, - "SourceReference": { - "description": "A reference to a particular snapshot of the source tree used to build and\ndeploy an application.", - "type": "object", - "properties": { - "repository": { - "description": "Optional. A URI string identifying the repository.\nExample: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", - "type": "string" - }, - "revisionId": { - "description": "The canonical and persistent identifier of the deployed revision.\nExample (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", - "type": "string" - } - }, - "id": "SourceReference" - } - }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, - "protocol": "rest", - "canonicalName": "Clouderrorreporting", "auth": { "oauth2": { "scopes": { @@ -365,17 +21,17 @@ "response": { "$ref": "DeleteEventsResponse" }, + "httpMethod": "DELETE", "parameterOrder": [ "projectName" ], - "httpMethod": "DELETE", "parameters": { "projectName": { + "pattern": "^projects/[^/]+$", + "location": "path", "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas `projects/` plus the\n[Google Cloud Platform project\nID](https://support.google.com/cloud/answer/6158840).\nExample: `projects/my-project-123`.", "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" + "required": true } }, "scopes": [ @@ -391,34 +47,20 @@ "groupStats": { "methods": { "list": { - "description": "Lists the specified groups.", "httpMethod": "GET", - "response": { - "$ref": "ListGroupStatsResponse" - }, "parameterOrder": [ "projectName" ], + "response": { + "$ref": "ListGroupStatsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { - "projectName": { - "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas \u003ccode\u003eprojects/\u003c/code\u003e plus the\n\u003ca href=\"https://support.google.com/cloud/answer/6158840\"\u003eGoogle Cloud\nPlatform project ID\u003c/a\u003e.\n\nExample: \u003ccode\u003eprojects/my-project-123\u003c/code\u003e.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "timedCountDuration": { - "location": "query", - "format": "google-duration", - "description": "[Optional] The preferred duration for a single returned `TimedCount`.\nIf not set, no timed counts are returned.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "[Optional] A `next_page_token` provided by a previous response. To view\nadditional results, pass this token along with the identical query\nparameters as the first request.", - "type": "string" - }, "timeRange.period": { + "description": "Restricts the query to the specified time range.", + "type": "string", "location": "query", "enum": [ "PERIOD_UNSPECIFIED", @@ -427,9 +69,7 @@ "PERIOD_1_DAY", "PERIOD_1_WEEK", "PERIOD_30_DAYS" - ], - "description": "Restricts the query to the specified time range.", - "type": "string" + ] }, "alignment": { "location": "query", @@ -442,28 +82,29 @@ "type": "string" }, "groupId": { - "location": "query", "description": "[Optional] List all \u003ccode\u003eErrorGroupStats\u003c/code\u003e with these IDs.", "type": "string", - "repeated": true + "repeated": true, + "location": "query" }, "serviceFilter.service": { - "type": "string", "location": "query", - "description": "[Optional] The exact value to match against\n[`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service)." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "[Optional] The maximum number of results to return per response.\nDefault is 20.", - "type": "integer" - }, - "serviceFilter.version": { - "location": "query", - "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).", + "description": "[Optional] The exact value to match against\n[`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).", "type": "string" }, + "pageSize": { + "format": "int32", + "description": "[Optional] The maximum number of results to return per response.\nDefault is 20.", + "type": "integer", + "location": "query" + }, + "serviceFilter.version": { + "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).", + "type": "string", + "location": "query" + }, "order": { + "location": "query", "enum": [ "GROUP_ORDER_UNSPECIFIED", "COUNT_DESC", @@ -472,71 +113,58 @@ "AFFECTED_USERS_DESC" ], "description": "[Optional] The sort order in which the results are returned.\nDefault is `COUNT_DESC`.", - "type": "string", - "location": "query" + "type": "string" + }, + "alignmentTime": { + "location": "query", + "format": "google-datetime", + "description": "[Optional] Time where the timed counts shall be aligned if rounded\nalignment is chosen. Default is 00:00 UTC.", + "type": "string" }, "serviceFilter.resourceType": { "location": "query", "description": "[Optional] The exact value to match against\n[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).", "type": "string" }, - "alignmentTime": { + "projectName": { + "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas \u003ccode\u003eprojects/\u003c/code\u003e plus the\n\u003ca href=\"https://support.google.com/cloud/answer/6158840\"\u003eGoogle Cloud\nPlatform project ID\u003c/a\u003e.\n\nExample: \u003ccode\u003eprojects/my-project-123\u003c/code\u003e.", "type": "string", - "location": "query", - "format": "google-datetime", - "description": "[Optional] Time where the timed counts shall be aligned if rounded\nalignment is chosen. Default is 00:00 UTC." + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "timedCountDuration": { + "format": "google-duration", + "description": "[Optional] The preferred duration for a single returned `TimedCount`.\nIf not set, no timed counts are returned.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "[Optional] A `next_page_token` provided by a previous response. To view\nadditional results, pass this token along with the identical query\nparameters as the first request.", + "type": "string", + "location": "query" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "flatPath": "v1beta1/projects/{projectsId}/groupStats", "path": "v1beta1/{+projectName}/groupStats", - "id": "clouderrorreporting.projects.groupStats.list" + "id": "clouderrorreporting.projects.groupStats.list", + "description": "Lists the specified groups." } } }, "groups": { "methods": { - "update": { - "flatPath": "v1beta1/projects/{projectsId}/groups/{groupsId}", - "path": "v1beta1/{+name}", - "id": "clouderrorreporting.projects.groups.update", - "request": { - "$ref": "ErrorGroup" - }, - "description": "Replace the data for the specified group.\nFails if the group does not exist.", - "httpMethod": "PUT", - "parameterOrder": [ - "name" - ], + "get": { + "id": "clouderrorreporting.projects.groups.get", + "path": "v1beta1/{+groupName}", + "description": "Get the specified group.", "response": { "$ref": "ErrorGroup" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The group resource name.\nExample: \u003ccode\u003eprojects/my-project-123/groups/my-groupid\u003c/code\u003e", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/groups/[^/]+$", - "location": "path" - } - } - }, - "get": { - "httpMethod": "GET", "parameterOrder": [ "groupName" ], - "response": { - "$ref": "ErrorGroup" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], + "httpMethod": "GET", "parameters": { "groupName": { "description": "[Required] The group resource name. Written as\n\u003ccode\u003eprojects/\u003cvar\u003eprojectID\u003c/var\u003e/groups/\u003cvar\u003egroup_name\u003c/var\u003e\u003c/code\u003e.\nCall\n\u003ca href=\"/error-reporting/reference/rest/v1beta1/projects.groupStats/list\"\u003e\n\u003ccode\u003egroupStats.list\u003c/code\u003e\u003c/a\u003e to return a list of groups belonging to\nthis project.\n\nExample: \u003ccode\u003eprojects/my-project-123/groups/my-group\u003c/code\u003e", @@ -546,43 +174,43 @@ "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/groups/{groupsId}" + }, + "update": { + "request": { + "$ref": "ErrorGroup" + }, + "description": "Replace the data for the specified group.\nFails if the group does not exist.", + "response": { + "$ref": "ErrorGroup" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/groups/[^/]+$", + "location": "path", + "description": "The group resource name.\nExample: \u003ccode\u003eprojects/my-project-123/groups/my-groupid\u003c/code\u003e", + "type": "string", + "required": true + } + }, "flatPath": "v1beta1/projects/{projectsId}/groups/{groupsId}", - "path": "v1beta1/{+groupName}", - "id": "clouderrorreporting.projects.groups.get", - "description": "Get the specified group." + "id": "clouderrorreporting.projects.groups.update", + "path": "v1beta1/{+name}" } } }, "events": { "methods": { - "report": { - "description": "Report an individual error event.\n\nThis endpoint accepts \u003cstrong\u003eeither\u003c/strong\u003e an OAuth token,\n\u003cstrong\u003eor\u003c/strong\u003e an\n\u003ca href=\"https://support.google.com/cloud/answer/6158862\"\u003eAPI key\u003c/a\u003e\nfor authentication. To use an API key, append it to the URL as the value of\na `key` parameter. For example:\n\u003cpre\u003ePOST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456\u003c/pre\u003e", - "request": { - "$ref": "ReportedErrorEvent" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectName" - ], - "response": { - "$ref": "ReportErrorEventResponse" - }, - "parameters": { - "projectName": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas `projects/` plus the\n[Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840).\nExample: `projects/my-project-123`." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta1/projects/{projectsId}/events:report", - "path": "v1beta1/{+projectName}/events:report", - "id": "clouderrorreporting.projects.events.report" - }, "list": { "id": "clouderrorreporting.projects.events.list", "path": "v1beta1/{+projectName}/events", @@ -594,34 +222,18 @@ "projectName" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { - "serviceFilter.service": { - "location": "query", - "description": "[Optional] The exact value to match against\n[`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).", - "type": "string" - }, - "pageToken": { - "description": "[Optional] A `next_page_token` provided by a previous response.", + "serviceFilter.resourceType": { + "description": "[Optional] The exact value to match against\n[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).", "type": "string", "location": "query" }, - "pageSize": { - "format": "int32", - "description": "[Optional] The maximum number of results to return per response.", - "type": "integer", - "location": "query" - }, - "serviceFilter.version": { - "location": "query", - "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).", - "type": "string" - }, - "serviceFilter.resourceType": { - "location": "query", - "description": "[Optional] The exact value to match against\n[`ServiceContext.resource_type`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.resource_type).", - "type": "string" - }, "timeRange.period": { + "description": "Restricts the query to the specified time range.", + "type": "string", "location": "query", "enum": [ "PERIOD_UNSPECIFIED", @@ -630,9 +242,7 @@ "PERIOD_1_DAY", "PERIOD_1_WEEK", "PERIOD_30_DAYS" - ], - "description": "Restricts the query to the specified time range.", - "type": "string" + ] }, "projectName": { "pattern": "^projects/[^/]+$", @@ -645,12 +255,58 @@ "description": "[Required] The group for which events shall be returned.", "type": "string", "location": "query" + }, + "pageToken": { + "location": "query", + "description": "[Optional] A `next_page_token` provided by a previous response.", + "type": "string" + }, + "serviceFilter.service": { + "description": "[Optional] The exact value to match against\n[`ServiceContext.service`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.service).", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "[Optional] The maximum number of results to return per response.", + "type": "integer" + }, + "serviceFilter.version": { + "description": "[Optional] The exact value to match against\n[`ServiceContext.version`](/error-reporting/reference/rest/v1beta1/ServiceContext#FIELDS.version).", + "type": "string", + "location": "query" } }, + "flatPath": "v1beta1/projects/{projectsId}/events" + }, + "report": { + "id": "clouderrorreporting.projects.events.report", + "path": "v1beta1/{+projectName}/events:report", + "request": { + "$ref": "ReportedErrorEvent" + }, + "description": "Report an individual error event.\n\nThis endpoint accepts \u003cstrong\u003eeither\u003c/strong\u003e an OAuth token,\n\u003cstrong\u003eor\u003c/strong\u003e an\n\u003ca href=\"https://support.google.com/cloud/answer/6158862\"\u003eAPI key\u003c/a\u003e\nfor authentication. To use an API key, append it to the URL as the value of\na `key` parameter. For example:\n\u003cpre\u003ePOST https://clouderrorreporting.googleapis.com/v1beta1/projects/example-project/events:report?key=123ABC456\u003c/pre\u003e", + "response": { + "$ref": "ReportErrorEventResponse" + }, + "parameterOrder": [ + "projectName" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1beta1/projects/{projectsId}/events" + "parameters": { + "projectName": { + "description": "[Required] The resource name of the Google Cloud Platform project. Written\nas `projects/` plus the\n[Google Cloud Platform project ID](https://support.google.com/cloud/answer/6158840).\nExample: `projects/my-project-123`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/events:report" } } } @@ -658,60 +314,55 @@ } }, "parameters": { - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, - "callback": { - "location": "query", - "description": "JSONP", "type": "string" }, - "alt": { + "callback": { + "description": "JSONP", "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", + "location": "query" + }, + "alt": { "description": "Data format for response.", "default": "json", "enum": [ "json", "media", "proto" - ] + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" }, "access_token": { "description": "OAuth access token.", @@ -719,9 +370,9 @@ "location": "query" }, "key": { + "location": "query", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "type": "string" }, "quotaUser": { "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", @@ -729,10 +380,10 @@ "location": "query" }, "pp": { - "location": "query", "description": "Pretty-print response.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" }, "bearer_token": { "location": "query", @@ -743,8 +394,357 @@ "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" } }, "version": "v1beta1", - "baseUrl": "https://clouderrorreporting.googleapis.com/" + "baseUrl": "https://clouderrorreporting.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Groups and counts similar errors from cloud services and applications, reports new errors, and provides access to error groups and their associated errors.\n", + "servicePath": "", + "basePath": "", + "id": "clouderrorreporting:v1beta1", + "documentationLink": "https://cloud.google.com/error-reporting/", + "revision": "20170816", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "TimedCount": { + "id": "TimedCount", + "description": "The number of errors in a given time period.\nAll numbers are approximate since the error events are sampled\nbefore counting them.", + "type": "object", + "properties": { + "startTime": { + "format": "google-datetime", + "description": "Start of the time period to which `count` refers (included).", + "type": "string" + }, + "count": { + "format": "int64", + "description": "Approximate number of occurrences in the given time period.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "End of the time period to which `count` refers (excluded).", + "type": "string" + } + } + }, + "ErrorGroup": { + "id": "ErrorGroup", + "description": "Description of a group of similar error events.", + "type": "object", + "properties": { + "trackingIssues": { + "description": "Associated tracking issues.", + "items": { + "$ref": "TrackingIssue" + }, + "type": "array" + }, + "groupId": { + "description": "Group IDs are unique for a given project. If the same kind of error\noccurs in different service contexts, it will receive the same group ID.", + "type": "string" + }, + "name": { + "description": "The group resource name.\nExample: \u003ccode\u003eprojects/my-project-123/groups/my-groupid\u003c/code\u003e", + "type": "string" + } + } + }, + "SourceLocation": { + "description": "Indicates a location in the source code of the service for which errors are\nreported. `functionName` must be provided by the application when reporting\nan error, unless the error report contains a `message` with a supported\nexception stack trace. All fields are optional for the later case.", + "type": "object", + "properties": { + "filePath": { + "description": "The source code filename, which can include a truncated relative\npath, or a full path from a production machine.", + "type": "string" + }, + "lineNumber": { + "format": "int32", + "description": "1-based. 0 indicates that the line number is unknown.", + "type": "integer" + }, + "functionName": { + "description": "Human-readable name of a function or method.\nThe value can include optional context like the class or package name.\nFor example, `my.package.MyClass.method` in case of Java.", + "type": "string" + } + }, + "id": "SourceLocation" + }, + "ServiceContext": { + "id": "ServiceContext", + "description": "Describes a running service that sends errors.\nIts version changes over time and multiple versions can run in parallel.", + "type": "object", + "properties": { + "resourceType": { + "description": "Type of the MonitoredResource. List of possible values:\nhttps://cloud.google.com/monitoring/api/resources\n\nValue is set automatically for incoming errors and must not be set when\nreporting errors.", + "type": "string" + }, + "version": { + "description": "Represents the source code version that the developer provided,\nwhich could represent a version label or a Git SHA-1 hash, for example.\nFor App Engine standard environment, the version is set to the version of\nthe app.", + "type": "string" + }, + "service": { + "description": "An identifier of the service, such as the name of the\nexecutable, job, or Google App Engine service name. This field is expected\nto have a low number of values that are relatively stable over time, as\nopposed to `version`, which can be changed whenever new code is deployed.\n\nContains the service name for error reports extracted from Google\nApp Engine logs or `default` if the App Engine default service is used.", + "type": "string" + } + } + }, + "ReportErrorEventResponse": { + "description": "Response for reporting an individual error event.\nData may be added to this message in the future.", + "type": "object", + "properties": {}, + "id": "ReportErrorEventResponse" + }, + "HttpRequestContext": { + "description": "HTTP request data that is related to a reported error.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.", + "type": "object", + "properties": { + "method": { + "description": "The type of HTTP request, such as `GET`, `POST`, etc.", + "type": "string" + }, + "remoteIp": { + "description": "The IP address from which the request originated.\nThis can be IPv4, IPv6, or a token which is derived from the\nIP address, depending on the data that has been provided\nin the error report.", + "type": "string" + }, + "referrer": { + "description": "The referrer information that is provided with the request.", + "type": "string" + }, + "userAgent": { + "description": "The user agent information that is provided with the request.", + "type": "string" + }, + "url": { + "description": "The URL of the request.", + "type": "string" + }, + "responseStatusCode": { + "format": "int32", + "description": "The HTTP response status code for the request.", + "type": "integer" + } + }, + "id": "HttpRequestContext" + }, + "ListGroupStatsResponse": { + "id": "ListGroupStatsResponse", + "description": "Contains a set of requested error group stats.", + "type": "object", + "properties": { + "timeRangeBegin": { + "format": "google-datetime", + "description": "The timestamp specifies the start time to which the request was restricted.\nThe start time is set based on the requested time range. It may be adjusted\nto a later time if a project has exceeded the storage quota and older data\nhas been deleted.", + "type": "string" + }, + "errorGroupStats": { + "description": "The error group stats which match the given request.", + "items": { + "$ref": "ErrorGroupStats" + }, + "type": "array" + }, + "nextPageToken": { + "description": "If non-empty, more results are available.\nPass this token, along with the same query parameters as the first\nrequest, to view the next page of results.", + "type": "string" + } + } + }, + "DeleteEventsResponse": { + "description": "Response message for deleting error events.", + "type": "object", + "properties": {}, + "id": "DeleteEventsResponse" + }, + "SourceReference": { + "description": "A reference to a particular snapshot of the source tree used to build and\ndeploy an application.", + "type": "object", + "properties": { + "repository": { + "description": "Optional. A URI string identifying the repository.\nExample: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", + "type": "string" + }, + "revisionId": { + "description": "The canonical and persistent identifier of the deployed revision.\nExample (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", + "type": "string" + } + }, + "id": "SourceReference" + }, + "ErrorEvent": { + "description": "An error event which is returned by the Error Reporting system.", + "type": "object", + "properties": { + "message": { + "description": "The stack trace that was reported or logged by the service.", + "type": "string" + }, + "serviceContext": { + "$ref": "ServiceContext", + "description": "The `ServiceContext` for which this error was reported." + }, + "eventTime": { + "format": "google-datetime", + "description": "Time when the event occurred as provided in the error report.\nIf the report did not contain a timestamp, the time the error was received\nby the Error Reporting system is used.", + "type": "string" + }, + "context": { + "description": "Data about the context in which the error occurred.", + "$ref": "ErrorContext" + } + }, + "id": "ErrorEvent" + }, + "ReportedErrorEvent": { + "id": "ReportedErrorEvent", + "description": "An error event which is reported to the Error Reporting system.", + "type": "object", + "properties": { + "eventTime": { + "format": "google-datetime", + "description": "[Optional] Time when the event occurred.\nIf not provided, the time when the event was received by the\nError Reporting system will be used.", + "type": "string" + }, + "context": { + "$ref": "ErrorContext", + "description": "[Optional] A description of the context in which the error occurred." + }, + "message": { + "description": "[Required] The error message.\nIf no `context.reportLocation` is provided, the message must contain a\nheader (typically consisting of the exception type name and an error\nmessage) and an exception stack trace in one of the supported programming\nlanguages and formats.\nSupported languages are Java, Python, JavaScript, Ruby, C#, PHP, and Go.\nSupported stack trace formats are:\n\n* **Java**: Must be the return value of [`Throwable.printStackTrace()`](https://docs.oracle.com/javase/7/docs/api/java/lang/Throwable.html#printStackTrace%28%29).\n* **Python**: Must be the return value of [`traceback.format_exc()`](https://docs.python.org/2/library/traceback.html#traceback.format_exc).\n* **JavaScript**: Must be the value of [`error.stack`](https://github.com/v8/v8/wiki/Stack-Trace-API)\nas returned by V8.\n* **Ruby**: Must contain frames returned by [`Exception.backtrace`](https://ruby-doc.org/core-2.2.0/Exception.html#method-i-backtrace).\n* **C#**: Must be the return value of [`Exception.ToString()`](https://msdn.microsoft.com/en-us/library/system.exception.tostring.aspx).\n* **PHP**: Must start with `PHP (Notice|Parse error|Fatal error|Warning)`\nand contain the result of [`(string)$exception`](http://php.net/manual/en/exception.tostring.php).\n* **Go**: Must be the return value of [`runtime.Stack()`](https://golang.org/pkg/runtime/debug/#Stack).", + "type": "string" + }, + "serviceContext": { + "description": "[Required] The service context in which this error has occurred.", + "$ref": "ServiceContext" + } + } + }, + "ErrorContext": { + "id": "ErrorContext", + "description": "A description of the context in which an error occurred.\nThis data should be provided by the application when reporting an error,\nunless the\nerror report has been generated automatically from Google App Engine logs.", + "type": "object", + "properties": { + "user": { + "description": "The user who caused or was affected by the crash.\nThis can be a user ID, an email address, or an arbitrary token that\nuniquely identifies the user.\nWhen sending an error report, leave this field empty if the user was not\nlogged in. In this case the\nError Reporting system will use other data, such as remote IP address, to\ndistinguish affected users. See `affected_users_count` in\n`ErrorGroupStats`.", + "type": "string" + }, + "sourceReferences": { + "description": "Source code that was used to build the executable which has\ncaused the given error message.", + "items": { + "$ref": "SourceReference" + }, + "type": "array" + }, + "reportLocation": { + "description": "The location in the source code where the decision was made to\nreport the error, usually the place where it was logged.\nFor a logged exception this would be the source line where the\nexception is logged, usually close to the place where it was\ncaught.", + "$ref": "SourceLocation" + }, + "httpRequest": { + "$ref": "HttpRequestContext", + "description": "The HTTP request which was processed when the error was\ntriggered." + } + } + }, + "TrackingIssue": { + "id": "TrackingIssue", + "description": "Information related to tracking the progress on resolving the error.", + "type": "object", + "properties": { + "url": { + "description": "A URL pointing to a related entry in an issue tracking system.\nExample: https://github.com/user/project/issues/4", + "type": "string" + } + } + }, + "ErrorGroupStats": { + "description": "Data extracted for a specific group based on certain filter criteria,\nsuch as a given time period and/or service filter.", + "type": "object", + "properties": { + "count": { + "format": "int64", + "description": "Approximate total number of events in the given group that match\nthe filter criteria.", + "type": "string" + }, + "affectedUsersCount": { + "format": "int64", + "description": "Approximate number of affected users in the given group that\nmatch the filter criteria.\nUsers are distinguished by data in the `ErrorContext` of the\nindividual error events, such as their login name or their remote\nIP address in case of HTTP requests.\nThe number of affected users can be zero even if the number of\nerrors is non-zero if no data was provided from which the\naffected user could be deduced.\nUsers are counted based on data in the request\ncontext that was provided in the error report. If more users are\nimplicitly affected, such as due to a crash of the whole service,\nthis is not reflected here.", + "type": "string" + }, + "lastSeenTime": { + "format": "google-datetime", + "description": "Approximate last occurrence that was ever seen for this group and\nwhich matches the given filter criteria, ignoring the time_range\nthat was specified in the request.", + "type": "string" + }, + "affectedServices": { + "description": "Service contexts with a non-zero error count for the given filter\ncriteria. This list can be truncated if multiple services are affected.\nRefer to `num_affected_services` for the total count.", + "items": { + "$ref": "ServiceContext" + }, + "type": "array" + }, + "numAffectedServices": { + "format": "int32", + "description": "The total number of services with a non-zero error count for the given\nfilter criteria.", + "type": "integer" + }, + "representative": { + "$ref": "ErrorEvent", + "description": "An arbitrary event that is chosen as representative for the whole group.\nThe representative event is intended to be used as a quick preview for\nthe whole group. Events in the group are usually sufficiently similar\nto each other such that showing an arbitrary representative provides\ninsight into the characteristics of the group as a whole." + }, + "timedCounts": { + "description": "Approximate number of occurrences over time.\nTimed counts returned by ListGroups are guaranteed to be:\n\n- Inside the requested time interval\n- Non-overlapping, and\n- Ordered by ascending time.", + "items": { + "$ref": "TimedCount" + }, + "type": "array" + }, + "group": { + "$ref": "ErrorGroup", + "description": "Group data that is independent of the filter criteria." + }, + "firstSeenTime": { + "format": "google-datetime", + "description": "Approximate first occurrence that was ever seen for this group\nand which matches the given filter criteria, ignoring the\ntime_range that was specified in the request.", + "type": "string" + } + }, + "id": "ErrorGroupStats" + }, + "ListEventsResponse": { + "id": "ListEventsResponse", + "description": "Contains a set of requested error events.", + "type": "object", + "properties": { + "errorEvents": { + "description": "The error events which match the given request.", + "items": { + "$ref": "ErrorEvent" + }, + "type": "array" + }, + "nextPageToken": { + "description": "If non-empty, more results are available.\nPass this token, along with the same query parameters as the first\nrequest, to view the next page of results.", + "type": "string" + }, + "timeRangeBegin": { + "format": "google-datetime", + "description": "The timestamp specifies the start time to which the request was restricted.", + "type": "string" + } + } + } + }, + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "protocol": "rest", + "canonicalName": "Clouderrorreporting" } diff --git a/vendor/google.golang.org/api/cloudfunctions/v1/cloudfunctions-api.json b/vendor/google.golang.org/api/cloudfunctions/v1/cloudfunctions-api.json index 5403cc7..4543200 100644 --- a/vendor/google.golang.org/api/cloudfunctions/v1/cloudfunctions-api.json +++ b/vendor/google.golang.org/api/cloudfunctions/v1/cloudfunctions-api.json @@ -1,143 +1,14 @@ { + "id": "cloudfunctions:v1", + "revision": "20170822", + "documentationLink": "https://cloud.google.com/functions", "discoveryVersion": "v1", "version_module": true, "schemas": { - "Status": { - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object" - }, - "ListLocationsResponse": { - "description": "The response message for Locations.ListLocations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse" - }, - "Location": { - "description": "A resource that represents Google Cloud Platform location.", - "type": "object", - "properties": { - "labels": { - "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "name": { - "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`", - "type": "string" - }, - "locationId": { - "description": "The canonical id for this location. For example: `\"us-east1\"`.", - "type": "string" - }, - "metadata": { - "description": "Service-specific metadata. For example the available capacity at the given\nlocation.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - } - }, - "id": "Location" - }, - "Operation": { - "properties": { - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - } - }, - "id": "Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object" - }, - "ListOperationsResponse": { - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - } - }, - "id": "ListOperationsResponse", - "description": "The response message for Operations.ListOperations.", - "type": "object" - }, "OperationMetadataV1Beta2": { "description": "Metadata describing an Operation", "type": "object", "properties": { - "target": { - "description": "Target of the operation - for example\nprojects/project-1/locations/region-1/functions/function-1", - "type": "string" - }, "request": { "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", @@ -161,16 +32,148 @@ ], "description": "Type of operation.", "type": "string" + }, + "target": { + "description": "Target of the operation - for example\nprojects/project-1/locations/region-1/functions/function-1", + "type": "string" } }, "id": "OperationMetadataV1Beta2" + }, + "Status": { + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "type": "object" + }, + "type": "array" + } + } + }, + "ListLocationsResponse": { + "id": "ListLocationsResponse", + "description": "The response message for Locations.ListLocations.", + "type": "object", + "properties": { + "nextPageToken": { + "type": "string", + "description": "The standard List next-page token." + }, + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + } + } + }, + "Location": { + "type": "object", + "properties": { + "metadata": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "Service-specific metadata. For example the available capacity at the given\nlocation.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", + "type": "object" + }, + "name": { + "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`", + "type": "string" + }, + "locationId": { + "type": "string", + "description": "The canonical id for this location. For example: `\"us-east1\"`." + } + }, + "id": "Location", + "description": "A resource that represents Google Cloud Platform location." + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + } + }, + "id": "ListOperationsResponse" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "response": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`." + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + } + }, + "id": "Operation" } }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, "canonicalName": "Cloud Functions", "auth": { "oauth2": { @@ -192,17 +195,16 @@ "operations": { "methods": { "get": { + "id": "cloudfunctions.operations.get", + "path": "v1/{+name}", "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "response": { - "$ref": "Operation" - }, "parameterOrder": [ "name" ], + "response": { + "$ref": "Operation" + }, "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "name": { "description": "The name of the operation resource.", @@ -212,38 +214,38 @@ "location": "path" } }, - "flatPath": "v1/operations/{operationsId}", - "id": "cloudfunctions.operations.get", - "path": "v1/{+name}" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/operations/{operationsId}" }, "list": { - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", "response": { "$ref": "ListOperationsResponse" }, "parameterOrder": [], "httpMethod": "GET", "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, "pageToken": { + "location": "query", "description": "The standard list page token.", - "type": "string", - "location": "query" + "type": "string" }, "name": { - "location": "query", "description": "The name of the operation's parent resource.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { "format": "int32", "description": "The standard list page size.", "type": "integer", "location": "query" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" } }, "scopes": [ @@ -251,7 +253,8 @@ ], "flatPath": "v1/operations", "id": "cloudfunctions.operations.list", - "path": "v1/operations" + "path": "v1/operations", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." } } }, @@ -260,6 +263,10 @@ "locations": { "methods": { "list": { + "flatPath": "v1/projects/{projectsId}/locations", + "path": "v1/{+name}/locations", + "id": "cloudfunctions.projects.locations.list", + "description": "Lists information about the supported locations for this service.", "httpMethod": "GET", "parameterOrder": [ "name" @@ -268,15 +275,10 @@ "$ref": "ListLocationsResponse" }, "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, "pageToken": { + "location": "query", "description": "The standard list page token.", - "type": "string", - "location": "query" + "type": "string" }, "name": { "location": "path", @@ -290,15 +292,16 @@ "format": "int32", "description": "The standard list page size.", "type": "integer" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations", - "path": "v1/{+name}/locations", - "id": "cloudfunctions.projects.locations.list", - "description": "Lists information about the supported locations for this service." + ] } } } @@ -306,47 +309,26 @@ } }, "parameters": { - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, "prettyPrint": { "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean" }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, "fields": { "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" }, "$.xgafv": { "enumDescriptions": [ @@ -361,13 +343,7 @@ "description": "V1 error format.", "type": "string" }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, "alt": { - "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -380,7 +356,8 @@ "json", "media", "proto" - ] + ], + "type": "string" }, "key": { "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", @@ -388,9 +365,35 @@ "location": "query" }, "access_token": { + "location": "query", "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" } }, "version": "v1", @@ -398,8 +401,5 @@ "kind": "discovery#restDescription", "description": "API for managing lightweight user-provided functions executed in response to events.", "servicePath": "", - "basePath": "", - "revision": "20170822", - "documentationLink": "https://cloud.google.com/functions", - "id": "cloudfunctions:v1" + "basePath": "" } diff --git a/vendor/google.golang.org/api/cloudfunctions/v1beta2/cloudfunctions-api.json b/vendor/google.golang.org/api/cloudfunctions/v1beta2/cloudfunctions-api.json index 9a728ea..c939f08 100644 --- a/vendor/google.golang.org/api/cloudfunctions/v1beta2/cloudfunctions-api.json +++ b/vendor/google.golang.org/api/cloudfunctions/v1beta2/cloudfunctions-api.json @@ -1,17 +1,4 @@ { - "canonicalName": "Cloud Functions", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "rootUrl": "https://cloudfunctions.googleapis.com/", - "ownerDomain": "google.com", - "name": "cloudfunctions", "batchPath": "batch", "fullyEncodeReservedExpansion": true, "title": "Google Cloud Functions API", @@ -20,6 +7,7 @@ "operations": { "methods": { "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", "response": { "$ref": "Operation" }, @@ -29,11 +17,11 @@ "httpMethod": "GET", "parameters": { "name": { + "location": "path", "description": "The name of the operation resource.", "type": "string", "required": true, - "pattern": "^operations/[^/]+$", - "location": "path" + "pattern": "^operations/[^/]+$" } }, "scopes": [ @@ -41,45 +29,44 @@ ], "flatPath": "v1beta2/operations/{operationsId}", "id": "cloudfunctions.operations.get", - "path": "v1beta2/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." + "path": "v1beta2/{+name}" }, "list": { - "path": "v1beta2/operations", - "id": "cloudfunctions.operations.list", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", "response": { "$ref": "ListOperationsResponse" }, "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, "filter": { "description": "The standard list filter.", "type": "string", "location": "query" }, "pageToken": { - "location": "query", "description": "The standard list page token.", - "type": "string" + "type": "string", + "location": "query" }, "name": { "location": "query", "description": "The name of the operation's parent resource.", "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta2/operations" + "flatPath": "v1beta2/operations", + "id": "cloudfunctions.operations.list", + "path": "v1beta2/operations", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." } } }, @@ -88,13 +75,13 @@ "locations": { "methods": { "list": { - "parameterOrder": [ - "name" - ], "httpMethod": "GET", "response": { "$ref": "ListLocationsResponse" }, + "parameterOrder": [ + "name" + ], "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -105,16 +92,16 @@ "location": "query" }, "pageToken": { - "location": "query", "description": "The standard list page token.", - "type": "string" + "type": "string", + "location": "query" }, "name": { - "pattern": "^projects/[^/]+$", - "location": "path", "description": "The resource that owns the locations collection, if applicable.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" }, "pageSize": { "format": "int32", @@ -124,22 +111,79 @@ } }, "flatPath": "v1beta2/projects/{projectsId}/locations", - "id": "cloudfunctions.projects.locations.list", "path": "v1beta2/{+name}/locations", + "id": "cloudfunctions.projects.locations.list", "description": "Lists information about the supported locations for this service." } }, "resources": { "functions": { "methods": { + "get": { + "description": "Returns a function with the given name from the requested project.", + "response": { + "$ref": "CloudFunction" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "The name of the function which details should be obtained.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}", + "id": "cloudfunctions.projects.locations.functions.get", + "path": "v1beta2/{+name}" + }, + "update": { + "httpMethod": "PUT", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", + "location": "path", + "description": "The name of the function to be updated." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}", + "path": "v1beta2/{+name}", + "id": "cloudfunctions.projects.locations.functions.update", + "description": "Updates existing function.", + "request": { + "$ref": "CloudFunction" + } + }, "delete": { + "description": "Deletes a function with the given name from the specified project. If the\ngiven function is used by some trigger, the trigger will be updated to\nremove this function.", + "httpMethod": "DELETE", "response": { "$ref": "Operation" }, "parameterOrder": [ "name" ], - "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "name": { "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", @@ -149,13 +193,9 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}", - "id": "cloudfunctions.projects.locations.functions.delete", "path": "v1beta2/{+name}", - "description": "Deletes a function with the given name from the specified project. If the\ngiven function is used by some trigger, the trigger will be updated to\nremove this function." + "id": "cloudfunctions.projects.locations.functions.delete" }, "list": { "description": "Returns a list of functions that belong to the requested project.", @@ -170,11 +210,6 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "pageToken": { - "description": "The value returned by the last\n`ListFunctionsResponse`; indicates that\nthis is a continuation of a prior `ListFunctions` call, and that the\nsystem should return the next page of data.", - "type": "string", - "location": "query" - }, "pageSize": { "format": "int32", "description": "Maximum number of functions to return per call.", @@ -182,57 +217,34 @@ "location": "query" }, "location": { - "pattern": "^projects/[^/]+/locations/[^/]+$", "location": "path", "description": "The project and location from which the function should be listed,\nspecified in the format `projects/*/locations/*`\nIf you want to list functions in all locations, use \"-\" in place of a\nlocation.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$" + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "The value returned by the last\n`ListFunctionsResponse`; indicates that\nthis is a continuation of a prior `ListFunctions` call, and that the\nsystem should return the next page of data." } }, "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions", "id": "cloudfunctions.projects.locations.functions.list", "path": "v1beta2/{+location}/functions" }, - "call": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "CallFunctionResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the function to be called.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:call", - "path": "v1beta2/{+name}:call", - "id": "cloudfunctions.projects.locations.functions.call", - "request": { - "$ref": "CallFunctionRequest" - }, - "description": "Invokes synchronously deployed function. To be used for testing, very\nlimited traffic allowed." - }, "create": { "description": "Creates a new function. If a function with the given name already exists in\nthe specified project, the long running operation will return\n`ALREADY_EXISTS` error.", "request": { "$ref": "CloudFunction" }, - "httpMethod": "POST", - "parameterOrder": [ - "location" - ], "response": { "$ref": "Operation" }, + "parameterOrder": [ + "location" + ], + "httpMethod": "POST", "parameters": { "location": { "description": "The project and location in which the function should be created, specified\nin the format `projects/*/locations/*`", @@ -246,61 +258,36 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions", - "path": "v1beta2/{+location}/functions", - "id": "cloudfunctions.projects.locations.functions.create" + "id": "cloudfunctions.projects.locations.functions.create", + "path": "v1beta2/{+location}/functions" }, - "get": { - "response": { - "$ref": "CloudFunction" - }, + "call": { + "httpMethod": "POST", "parameterOrder": [ "name" ], - "httpMethod": "GET", + "response": { + "$ref": "CallFunctionResponse" + }, + "parameters": { + "name": { + "description": "The name of the function to be called.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", - "location": "path", - "description": "The name of the function which details should be obtained.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}", - "id": "cloudfunctions.projects.locations.functions.get", - "path": "v1beta2/{+name}", - "description": "Returns a function with the given name from the requested project." - }, - "update": { - "description": "Updates existing function.", + "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}:call", + "path": "v1beta2/{+name}:call", + "id": "cloudfunctions.projects.locations.functions.call", + "description": "Invokes synchronously deployed function. To be used for testing, very\nlimited traffic allowed.", "request": { - "$ref": "CloudFunction" - }, - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/functions/[^/]+$", - "location": "path", - "description": "The name of the function to be updated.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta2/projects/{projectsId}/locations/{locationsId}/functions/{functionsId}", - "id": "cloudfunctions.projects.locations.functions.update", - "path": "v1beta2/{+name}" + "$ref": "CallFunctionRequest" + } } } } @@ -310,6 +297,53 @@ } }, "parameters": { + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", @@ -321,80 +355,33 @@ "type": "boolean", "location": "query" }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" + "type": "string" }, "callback": { + "type": "string", "location": "query", - "description": "JSONP", - "type": "string" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" + "description": "JSONP" } }, "version": "v1beta2", @@ -409,6 +396,190 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "ListOperationsResponse" + }, + "ListFunctionsResponse": { + "description": "Response for the `ListFunctions` method.", + "type": "object", + "properties": { + "functions": { + "items": { + "$ref": "CloudFunction" + }, + "type": "array", + "description": "The functions that match the request." + }, + "nextPageToken": { + "description": "If not empty, indicates that there may be more functions that match\nthe request; this value should be passed in a new\ngoogle.cloud.functions.v1beta2.ListFunctionsRequest\nto get more functions.", + "type": "string" + } + }, + "id": "ListFunctionsResponse" + }, + "ListLocationsResponse": { + "description": "The response message for Locations.ListLocations.", + "type": "object", + "properties": { + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "ListLocationsResponse" + }, + "CallFunctionResponse": { + "description": "Response of `CallFunction` method.", + "type": "object", + "properties": { + "executionId": { + "description": "Execution id of function invocation.", + "type": "string" + }, + "error": { + "description": "Either system or user-function generated error. Set if execution\nwas not successful.", + "type": "string" + }, + "result": { + "description": "Result populated for successful execution of synchronous function. Will\nnot be populated if function does not return a result through context.", + "type": "string" + } + }, + "id": "CallFunctionResponse" + }, + "EventTrigger": { + "description": "Describes EventTrigger, used to request events be sent from another\nservice.", + "type": "object", + "properties": { + "resource": { + "description": "Which instance of the source's service should send events. E.g. for Pub/Sub\nthis would be a Pub/Sub topic at `projects/*/topics/*`. For Google Cloud\nStorage this would be a bucket at `projects/*/buckets/*`. For any source\nthat only supports one instance per-project, this should be the name of the\nproject (`projects/*`)", + "type": "string" + }, + "failurePolicy": { + "description": "Specifies policy for failed executions.", + "$ref": "FailurePolicy" + }, + "eventType": { + "description": "`event_type` names contain the service that is sending an event and the\nkind of event that was fired. Must be of the form\n`providers/*/eventTypes/*` e.g. Directly handle a Message published to\nGoogle Cloud Pub/Sub `providers/cloud.pubsub/eventTypes/topic.publish`\n\n Handle an object changing in Google Cloud Storage\n `providers/cloud.storage/eventTypes/object.change`\n\n Handle a write to the Firebase Realtime Database\n `providers/firebase.database/eventTypes/data.write`", + "type": "string" + } + }, + "id": "EventTrigger" + }, + "HTTPSTrigger": { + "properties": { + "url": { + "type": "string", + "description": "Output only. The deployed url for the function." + } + }, + "id": "HTTPSTrigger", + "description": "Describes HTTPSTrigger, could be used to connect web hooks to function.", + "type": "object" + }, + "FailurePolicy": { + "properties": { + "retry": { + "description": "If specified, then the function will be retried in case of a failure.", + "$ref": "Retry" + } + }, + "id": "FailurePolicy", + "description": "Describes the policy in case of function's execution failure.\nIf empty, then defaults to ignoring failures (i.e. not retrying them).", + "type": "object" + }, + "Operation": { + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" + } + } + }, + "OperationMetadataV1Beta2": { + "description": "Metadata describing an Operation", + "type": "object", + "properties": { + "target": { + "type": "string", + "description": "Target of the operation - for example\nprojects/project-1/locations/region-1/functions/function-1" + }, + "request": { + "description": "The original request that started the operation.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": { + "description": "Type of operation.", + "type": "string", + "enumDescriptions": [ + "Unknown operation type.", + "Triggered by CreateFunction call", + "Triggered by UpdateFunction call", + "Triggered by DeleteFunction call." + ], + "enum": [ + "OPERATION_UNSPECIFIED", + "CREATE_FUNCTION", + "UPDATE_FUNCTION", + "DELETE_FUNCTION" + ] + } + }, + "id": "OperationMetadataV1Beta2" + }, "Status": { "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", @@ -430,16 +601,31 @@ "type": "integer" }, "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" + "type": "string", + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client." } }, "id": "Status" }, + "CallFunctionRequest": { + "description": "Request for the `CallFunction` method.", + "type": "object", + "properties": { + "data": { + "description": "Input to be passed to the function.", + "type": "string" + } + }, + "id": "CallFunctionRequest" + }, "SourceRepository": { "description": "Describes the location of the function source in a remote repository.", "type": "object", "properties": { + "repositoryUrl": { + "description": "URL to the hosted repository where the function is defined. Only paths in\nhttps://source.developers.google.com domain are supported. The path should\ncontain the name of the repository.", + "type": "string" + }, "tag": { "description": "The name of the tag that captures the state of the repository from\nwhich the function should be fetched.", "type": "string" @@ -448,43 +634,28 @@ "description": "The name of the branch from which the function should be fetched.", "type": "string" }, - "sourcePath": { - "description": "The path within the repository where the function is defined. The path\nshould point to the directory where Cloud Functions files are located. Use\n\"/\" if the function is defined directly in the root directory of a\nrepository.", - "type": "string" - }, "deployedRevision": { "description": "Output only. The id of the revision that was resolved at the moment of\nfunction creation or update. For example when a user deployed from a\nbranch, it will be the revision id of the latest change on this branch at\nthat time. If user deployed from revision then this value will be always\nequal to the revision specified by the user.", "type": "string" }, + "sourcePath": { + "description": "The path within the repository where the function is defined. The path\nshould point to the directory where Cloud Functions files are located. Use\n\"/\" if the function is defined directly in the root directory of a\nrepository.", + "type": "string" + }, "revision": { "description": "The id of the revision that captures the state of the repository from\nwhich the function should be fetched.", "type": "string" - }, - "repositoryUrl": { - "description": "URL to the hosted repository where the function is defined. Only paths in\nhttps://source.developers.google.com domain are supported. The path should\ncontain the name of the repository.", - "type": "string" } }, "id": "SourceRepository" }, - "CallFunctionRequest": { - "properties": { - "data": { - "description": "Input to be passed to the function.", - "type": "string" - } - }, - "id": "CallFunctionRequest", - "description": "Request for the `CallFunction` method.", - "type": "object" - }, "CloudFunction": { "description": "Describes a Cloud Function that contains user computation executed in\nresponse to an event. It encapsulate function and triggers configurations.", "type": "object", "properties": { "serviceAccount": { - "description": "Output only. The service account of the function.", - "type": "string" + "type": "string", + "description": "Output only. The service account of the function." }, "sourceArchiveUrl": { "description": "The Google Cloud Storage URL, starting with gs://, pointing to the zip\narchive which contains the function.", @@ -495,8 +666,8 @@ "$ref": "SourceRepository" }, "entryPoint": { - "description": "The name of the function (as defined in source code) that will be\nexecuted. Defaults to the resource name suffix, if not specified. For\nbackward compatibility, if function with given name is not found, then the\nsystem will try to use function named \"function\".\nFor Node.js this is name of a function exported by the module specified\nin `source_location`.", - "type": "string" + "type": "string", + "description": "The name of the function (as defined in source code) that will be\nexecuted. Defaults to the resource name suffix, if not specified. For\nbackward compatibility, if function with given name is not found, then the\nsystem will try to use function named \"function\".\nFor Node.js this is name of a function exported by the module specified\nin `source_location`." }, "updateTime": { "format": "google-datetime", @@ -515,18 +686,12 @@ "description": "An HTTPS endpoint type of source that can be triggered via URL.", "$ref": "HTTPSTrigger" }, - "eventTrigger": { - "description": "A source that fires events in response to a condition in another service.", - "$ref": "EventTrigger" + "timeout": { + "format": "google-duration", + "description": "The function execution timeout. Execution is considered failed and\ncan be terminated if the function is not completed at the end of the\ntimeout period. Defaults to 60 seconds.", + "type": "string" }, "status": { - "enum": [ - "STATUS_UNSPECIFIED", - "READY", - "FAILED", - "DEPLOYING", - "DELETING" - ], "description": "Output only. Status of the function deployment.", "type": "string", "enumDescriptions": [ @@ -535,17 +700,23 @@ "Not deployed correctly - behavior is undefined. The item should be updated\nor deleted to move it out of this state.", "Creation or update in progress.", "Deletion in progress." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "READY", + "FAILED", + "DEPLOYING", + "DELETING" ] }, - "timeout": { - "format": "google-duration", - "description": "The function execution timeout. Execution is considered failed and\ncan be terminated if the function is not completed at the end of the\ntimeout period. Defaults to 60 seconds.", - "type": "string" + "eventTrigger": { + "$ref": "EventTrigger", + "description": "A source that fires events in response to a condition in another service." }, "availableMemoryMb": { + "type": "integer", "format": "int32", - "description": "The amount of memory in MB available for a function.\nDefaults to 256MB.", - "type": "integer" + "description": "The amount of memory in MB available for a function.\nDefaults to 256MB." }, "name": { "description": "A user-defined name of the function. Function names must be unique\nglobally and match pattern `projects/*/locations/*/functions/*`", @@ -559,11 +730,11 @@ "type": "object", "properties": { "labels": { + "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", + "type": "object", "additionalProperties": { "type": "string" - }, - "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", - "type": "object" + } }, "name": { "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`", @@ -574,210 +745,39 @@ "type": "string" }, "metadata": { + "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" }, - "description": "Service-specific metadata. For example the available capacity at the given\nlocation.", - "type": "object" + "description": "Service-specific metadata. For example the available capacity at the given\nlocation." } }, "id": "Location" }, "Retry": { - "properties": {}, - "id": "Retry", "description": "Describes the retry policy in case of function's execution failure.\nA function execution will be retried on any failure.\nA failed execution will be retried up to 7 days with an exponential backoff\n(capped at 10 seconds).\nRetried execution is charged as any other execution.", - "type": "object" - }, - "ListOperationsResponse": { - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - } - }, - "id": "ListOperationsResponse", - "description": "The response message for Operations.ListOperations.", - "type": "object" - }, - "ListFunctionsResponse": { - "description": "Response for the `ListFunctions` method.", "type": "object", - "properties": { - "functions": { - "description": "The functions that match the request.", - "items": { - "$ref": "CloudFunction" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If not empty, indicates that there may be more functions that match\nthe request; this value should be passed in a new\ngoogle.cloud.functions.v1beta2.ListFunctionsRequest\nto get more functions.", - "type": "string" - } - }, - "id": "ListFunctionsResponse" - }, - "ListLocationsResponse": { - "description": "The response message for Locations.ListLocations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse" - }, - "CallFunctionResponse": { - "properties": { - "executionId": { - "description": "Execution id of function invocation.", - "type": "string" - }, - "error": { - "description": "Either system or user-function generated error. Set if execution\nwas not successful.", - "type": "string" - }, - "result": { - "description": "Result populated for successful execution of synchronous function. Will\nnot be populated if function does not return a result through context.", - "type": "string" - } - }, - "id": "CallFunctionResponse", - "description": "Response of `CallFunction` method.", - "type": "object" - }, - "EventTrigger": { - "properties": { - "failurePolicy": { - "description": "Specifies policy for failed executions.", - "$ref": "FailurePolicy" - }, - "eventType": { - "description": "`event_type` names contain the service that is sending an event and the\nkind of event that was fired. Must be of the form\n`providers/*/eventTypes/*` e.g. Directly handle a Message published to\nGoogle Cloud Pub/Sub `providers/cloud.pubsub/eventTypes/topic.publish`\n\n Handle an object changing in Google Cloud Storage\n `providers/cloud.storage/eventTypes/object.change`\n\n Handle a write to the Firebase Realtime Database\n `providers/firebase.database/eventTypes/data.write`", - "type": "string" - }, - "resource": { - "description": "Which instance of the source's service should send events. E.g. for Pub/Sub\nthis would be a Pub/Sub topic at `projects/*/topics/*`. For Google Cloud\nStorage this would be a bucket at `projects/*/buckets/*`. For any source\nthat only supports one instance per-project, this should be the name of the\nproject (`projects/*`)", - "type": "string" - } - }, - "id": "EventTrigger", - "description": "Describes EventTrigger, used to request events be sent from another\nservice.", - "type": "object" - }, - "HTTPSTrigger": { - "description": "Describes HTTPSTrigger, could be used to connect web hooks to function.", - "type": "object", - "properties": { - "url": { - "description": "Output only. The deployed url for the function.", - "type": "string" - } - }, - "id": "HTTPSTrigger" - }, - "FailurePolicy": { - "description": "Describes the policy in case of function's execution failure.\nIf empty, then defaults to ignoring failures (i.e. not retrying them).", - "type": "object", - "properties": { - "retry": { - "description": "If specified, then the function will be retried in case of a failure.", - "$ref": "Retry" - } - }, - "id": "FailurePolicy" - }, - "Operation": { - "properties": { - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - } - }, - "id": "Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object" - }, - "OperationMetadataV1Beta2": { - "description": "Metadata describing an Operation", - "type": "object", - "properties": { - "target": { - "description": "Target of the operation - for example\nprojects/project-1/locations/region-1/functions/function-1", - "type": "string" - }, - "request": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The original request that started the operation.", - "type": "object" - }, - "type": { - "enumDescriptions": [ - "Unknown operation type.", - "Triggered by CreateFunction call", - "Triggered by UpdateFunction call", - "Triggered by DeleteFunction call." - ], - "enum": [ - "OPERATION_UNSPECIFIED", - "CREATE_FUNCTION", - "UPDATE_FUNCTION", - "DELETE_FUNCTION" - ], - "description": "Type of operation.", - "type": "string" - } - }, - "id": "OperationMetadataV1Beta2" + "properties": {}, + "id": "Retry" } }, "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - } + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "canonicalName": "Cloud Functions", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "rootUrl": "https://cloudfunctions.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudfunctions" } diff --git a/vendor/google.golang.org/api/cloudkms/v1/cloudkms-api.json b/vendor/google.golang.org/api/cloudkms/v1/cloudkms-api.json index c095f36..c1b7904 100644 --- a/vendor/google.golang.org/api/cloudkms/v1/cloudkms-api.json +++ b/vendor/google.golang.org/api/cloudkms/v1/cloudkms-api.json @@ -1,155 +1,265 @@ { - "canonicalName": "Cloud KMS", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "rootUrl": "https://cloudkms.googleapis.com/", - "ownerDomain": "google.com", - "name": "cloudkms", - "batchPath": "batch", "title": "Google Cloud Key Management Service (KMS) API", "ownerName": "Google", "resources": { "projects": { "resources": { "locations": { + "methods": { + "get": { + "description": "Get information about a location.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Location" + }, + "parameters": { + "name": { + "description": "Resource name for the location.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}", + "path": "v1/{+name}", + "id": "cloudkms.projects.locations.get" + }, + "list": { + "description": "Lists information about the supported locations for this service.", + "response": { + "$ref": "ListLocationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "The standard list page size.", + "type": "integer", + "location": "query" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The resource that owns the locations collection, if applicable.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/locations", + "id": "cloudkms.projects.locations.list", + "path": "v1/{+name}/locations" + } + }, "resources": { "keyRings": { + "methods": { + "list": { + "response": { + "$ref": "ListKeyRingsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional pagination token, returned earlier via\nListKeyRingsResponse.next_page_token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional limit on the number of KeyRings to include in the\nresponse. Further KeyRings can subsequently be obtained by\nincluding the ListKeyRingsResponse.next_page_token in a subsequent\nrequest. If unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "parent": { + "location": "path", + "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings", + "id": "cloudkms.projects.locations.keyRings.list", + "path": "v1/{+parent}/keyRings", + "description": "Lists KeyRings." + }, + "create": { + "response": { + "$ref": "KeyRing" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "keyRingId": { + "location": "query", + "description": "Required. It must be unique within a location and match the regular\nexpression `[a-zA-Z0-9_-]{1,63}`", + "type": "string" + }, + "parent": { + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path", + "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings", + "id": "cloudkms.projects.locations.keyRings.create", + "path": "v1/{+parent}/keyRings", + "request": { + "$ref": "KeyRing" + }, + "description": "Create a new KeyRing in a given Project and Location." + }, + "setIamPolicy": { + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:setIamPolicy", + "id": "cloudkms.projects.locations.keyRings.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "SetIamPolicyRequest" + } + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "httpMethod": "GET", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", + "id": "cloudkms.projects.locations.keyRings.getIamPolicy" + }, + "get": { + "response": { + "$ref": "KeyRing" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", + "location": "path", + "description": "The name of the KeyRing to get.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}", + "id": "cloudkms.projects.locations.keyRings.get", + "path": "v1/{+name}", + "description": "Returns metadata for a given KeyRing." + }, + "testIamPermissions": { + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:testIamPermissions", + "id": "cloudkms.projects.locations.keyRings.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions" + } + }, "resources": { "cryptoKeys": { "methods": { - "list": { - "description": "Lists CryptoKeys.", - "httpMethod": "GET", - "response": { - "$ref": "ListCryptoKeysResponse" - }, - "parameterOrder": [ - "parent" - ], - "parameters": { - "parent": { - "description": "Required. The resource name of the KeyRing to list, in the format\n`projects/*/locations/*/keyRings/*`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "Optional pagination token, returned earlier via\nListCryptoKeysResponse.next_page_token.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional limit on the number of CryptoKeys to include in the\nresponse. Further CryptoKeys can subsequently be obtained by\nincluding the ListCryptoKeysResponse.next_page_token in a subsequent\nrequest. If unspecified, the server will pick an appropriate default.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys", - "path": "v1/{+parent}/cryptoKeys", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.list" - }, - "encrypt": { - "response": { - "$ref": "EncryptResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/.+$", - "location": "path", - "description": "Required. The resource name of the CryptoKey or CryptoKeyVersion\nto use for encryption.\n\nIf a CryptoKey is specified, the server will use its\nprimary version.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:encrypt", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.encrypt", - "path": "v1/{+name}:encrypt", - "request": { - "$ref": "EncryptRequest" - }, - "description": "Encrypts data, so that it can only be recovered by a call to Decrypt." - }, - "setIamPolicy": { - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:setIamPolicy" - }, - "create": { - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.create", - "path": "v1/{+parent}/cryptoKeys", - "description": "Create a new CryptoKey within a KeyRing.\n\nCryptoKey.purpose is required.", - "request": { - "$ref": "CryptoKey" - }, - "response": { - "$ref": "CryptoKey" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "cryptoKeyId": { - "location": "query", - "description": "Required. It must be unique within a KeyRing and match the regular\nexpression `[a-zA-Z0-9_-]{1,63}`", - "type": "string" - }, - "parent": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path", - "description": "Required. The name of the KeyRing associated with the\nCryptoKeys.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys" - }, "updatePrimaryVersion": { + "description": "Update the version of a CryptoKey that will be used in Encrypt", + "request": { + "$ref": "UpdateCryptoKeyPrimaryVersionRequest" + }, "response": { "$ref": "CryptoKey" }, @@ -159,11 +269,11 @@ "httpMethod": "POST", "parameters": { "name": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", + "location": "path", "description": "The resource name of the CryptoKey to update.", "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path" + "required": true } }, "scopes": [ @@ -171,61 +281,32 @@ ], "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:updatePrimaryVersion", "id": "cloudkms.projects.locations.keyRings.cryptoKeys.updatePrimaryVersion", - "path": "v1/{+name}:updatePrimaryVersion", - "description": "Update the version of a CryptoKey that will be used in Encrypt", - "request": { - "$ref": "UpdateCryptoKeyPrimaryVersionRequest" - } + "path": "v1/{+name}:updatePrimaryVersion" }, "getIamPolicy": { - "path": "v1/{+resource}:getIamPolicy", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:getIamPolicy", "id": "cloudkms.projects.locations.keyRings.cryptoKeys.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "httpMethod": "GET", "response": { "$ref": "Policy" }, "parameterOrder": [ "resource" ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "resource": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path", "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:getIamPolicy" - }, - "get": { - "description": "Returns metadata for a given CryptoKey, as well as its\nprimary CryptoKeyVersion.", - "httpMethod": "GET", - "response": { - "$ref": "CryptoKey" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "description": "The name of the CryptoKey to get.", - "type": "string", "required": true, "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", "location": "path" } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}", - "path": "v1/{+name}", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.get" + } }, "patch": { "request": { @@ -261,6 +342,31 @@ "id": "cloudkms.projects.locations.keyRings.cryptoKeys.patch", "path": "v1/{+name}" }, + "get": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.get", + "path": "v1/{+name}", + "description": "Returns metadata for a given CryptoKey, as well as its\nprimary CryptoKeyVersion.", + "response": { + "$ref": "CryptoKey" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the CryptoKey to get.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, "testIamPermissions": { "path": "v1/{+resource}:testIamPermissions", "id": "cloudkms.projects.locations.keyRings.cryptoKeys.testIamPermissions", @@ -280,16 +386,23 @@ ], "parameters": { "resource": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path", "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", + "location": "path" } }, "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:testIamPermissions" }, "decrypt": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:decrypt", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.decrypt", + "path": "v1/{+name}:decrypt", + "request": { + "$ref": "DecryptRequest" + }, + "description": "Decrypts data that was protected by Encrypt.", "response": { "$ref": "DecryptResponse" }, @@ -308,119 +421,149 @@ "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", "location": "path" } + } + }, + "list": { + "description": "Lists CryptoKeys.", + "response": { + "$ref": "ListCryptoKeysResponse" }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:decrypt", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.decrypt", - "path": "v1/{+name}:decrypt", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional pagination token, returned earlier via\nListCryptoKeysResponse.next_page_token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional limit on the number of CryptoKeys to include in the\nresponse. Further CryptoKeys can subsequently be obtained by\nincluding the ListCryptoKeysResponse.next_page_token in a subsequent\nrequest. If unspecified, the server will pick an appropriate default.", + "type": "integer", + "location": "query" + }, + "parent": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", + "location": "path", + "description": "Required. The resource name of the KeyRing to list, in the format\n`projects/*/locations/*/keyRings/*`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.list", + "path": "v1/{+parent}/cryptoKeys" + }, + "encrypt": { + "description": "Encrypts data, so that it can only be recovered by a call to Decrypt.", "request": { - "$ref": "DecryptRequest" + "$ref": "EncryptRequest" }, - "description": "Decrypts data that was protected by Encrypt." + "response": { + "$ref": "EncryptResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "description": "Required. The resource name of the CryptoKey or CryptoKeyVersion\nto use for encryption.\n\nIf a CryptoKey is specified, the server will use its\nprimary version.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/.+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:encrypt", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.encrypt", + "path": "v1/{+name}:encrypt" + }, + "setIamPolicy": { + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}:setIamPolicy", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy" + }, + "create": { + "request": { + "$ref": "CryptoKey" + }, + "description": "Create a new CryptoKey within a KeyRing.\n\nCryptoKey.purpose is required.", + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "CryptoKey" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Required. The name of the KeyRing associated with the\nCryptoKeys.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$" + }, + "cryptoKeyId": { + "location": "query", + "description": "Required. It must be unique within a KeyRing and match the regular\nexpression `[a-zA-Z0-9_-]{1,63}`", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys", + "path": "v1/{+parent}/cryptoKeys", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.create" } }, "resources": { "cryptoKeyVersions": { "methods": { - "list": { - "description": "Lists CryptoKeyVersions.", - "response": { - "$ref": "ListCryptoKeyVersionsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional pagination token, returned earlier via\nListCryptoKeyVersionsResponse.next_page_token.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional limit on the number of CryptoKeyVersions to\ninclude in the response. Further CryptoKeyVersions can\nsubsequently be obtained by including the\nListCryptoKeyVersionsResponse.next_page_token in a subsequent request.\nIf unspecified, the server will pick an appropriate default.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The resource name of the CryptoKey to list, in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.list", - "path": "v1/{+parent}/cryptoKeyVersions" - }, - "create": { - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create", - "path": "v1/{+parent}/cryptoKeyVersions", - "request": { - "$ref": "CryptoKeyVersion" - }, - "description": "Create a new CryptoKeyVersion in a CryptoKey.\n\nThe server will assign the next sequential id. If unset,\nstate will be set to\nENABLED.", - "response": { - "$ref": "CryptoKeyVersion" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "description": "Required. The name of the CryptoKey associated with\nthe CryptoKeyVersions.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions" - }, - "destroy": { - "response": { - "$ref": "CryptoKeyVersion" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "description": "The resource name of the CryptoKeyVersion to destroy.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:destroy", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy", - "path": "v1/{+name}:destroy", - "description": "Schedule a CryptoKeyVersion for destruction.\n\nUpon calling this method, CryptoKeyVersion.state will be set to\nDESTROY_SCHEDULED\nand destroy_time will be set to a time 24\nhours in the future, at which point the state\nwill be changed to\nDESTROYED, and the key\nmaterial will be irrevocably destroyed.\n\nBefore the destroy_time is reached,\nRestoreCryptoKeyVersion may be called to reverse the process.", - "request": { - "$ref": "DestroyCryptoKeyVersionRequest" - } - }, "restore": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], + "description": "Restore a CryptoKeyVersion in the\nDESTROY_SCHEDULED,\nstate.\n\nUpon restoration of the CryptoKeyVersion, state\nwill be set to DISABLED,\nand destroy_time will be cleared.", + "request": { + "$ref": "RestoreCryptoKeyVersionRequest" + }, "response": { "$ref": "CryptoKeyVersion" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", "parameters": { "name": { "description": "The resource name of the CryptoKeyVersion to restore.", @@ -434,14 +577,47 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:restore", - "path": "v1/{+name}:restore", "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.restore", - "description": "Restore a CryptoKeyVersion in the\nDESTROY_SCHEDULED,\nstate.\n\nUpon restoration of the CryptoKeyVersion, state\nwill be set to DISABLED,\nand destroy_time will be cleared.", + "path": "v1/{+name}:restore" + }, + "patch": { + "path": "v1/{+name}", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.patch", + "description": "Update a CryptoKeyVersion's metadata.\n\nstate may be changed between\nENABLED and\nDISABLED using this\nmethod. See DestroyCryptoKeyVersion and RestoreCryptoKeyVersion to\nmove between other states.", "request": { - "$ref": "RestoreCryptoKeyVersionRequest" - } + "$ref": "CryptoKeyVersion" + }, + "httpMethod": "PATCH", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "CryptoKeyVersion" + }, + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Required list of fields to be updated in this request.", + "type": "string" + }, + "name": { + "description": "Output only. The resource name for this CryptoKeyVersion in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}" }, "get": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.get", + "path": "v1/{+name}", "description": "Returns metadata for a given CryptoKeyVersion.", "response": { "$ref": "CryptoKeyVersion" @@ -452,8 +628,65 @@ "httpMethod": "GET", "parameters": { "name": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$", + "location": "path", "description": "The name of the CryptoKeyVersion to get.", "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists CryptoKeyVersions.", + "httpMethod": "GET", + "response": { + "$ref": "ListCryptoKeyVersionsResponse" + }, + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional limit on the number of CryptoKeyVersions to\ninclude in the response. Further CryptoKeyVersions can\nsubsequently be obtained by including the\nListCryptoKeyVersionsResponse.next_page_token in a subsequent request.\nIf unspecified, the server will pick an appropriate default.", + "type": "integer" + }, + "parent": { + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$", + "location": "path", + "description": "Required. The resource name of the CryptoKey to list, in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.", + "type": "string", + "required": true + }, + "pageToken": { + "location": "query", + "description": "Optional pagination token, returned earlier via\nListCryptoKeyVersionsResponse.next_page_token.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions", + "path": "v1/{+parent}/cryptoKeyVersions", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.list" + }, + "destroy": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "CryptoKeyVersion" + }, + "parameters": { + "name": { + "description": "The resource name of the CryptoKeyVersion to destroy.", + "type": "string", "required": true, "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$", "location": "path" @@ -462,295 +695,48 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.get", - "path": "v1/{+name}" + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}:destroy", + "path": "v1/{+name}:destroy", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.destroy", + "description": "Schedule a CryptoKeyVersion for destruction.\n\nUpon calling this method, CryptoKeyVersion.state will be set to\nDESTROY_SCHEDULED\nand destroy_time will be set to a time 24\nhours in the future, at which point the state\nwill be changed to\nDESTROYED, and the key\nmaterial will be irrevocably destroyed.\n\nBefore the destroy_time is reached,\nRestoreCryptoKeyVersion may be called to reverse the process.", + "request": { + "$ref": "DestroyCryptoKeyVersionRequest" + } }, - "patch": { + "create": { + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions", + "path": "v1/{+parent}/cryptoKeyVersions", + "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.create", "request": { "$ref": "CryptoKeyVersion" }, - "description": "Update a CryptoKeyVersion's metadata.\n\nstate may be changed between\nENABLED and\nDISABLED using this\nmethod. See DestroyCryptoKeyVersion and RestoreCryptoKeyVersion to\nmove between other states.", + "description": "Create a new CryptoKeyVersion in a CryptoKey.\n\nThe server will assign the next sequential id. If unset,\nstate will be set to\nENABLED.", + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], "response": { "$ref": "CryptoKeyVersion" }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PATCH", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+/cryptoKeyVersions/[^/]+$", + "parent": { "location": "path", - "description": "Output only. The resource name for this CryptoKeyVersion in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*/cryptoKeyVersions/*`.", + "description": "Required. The name of the CryptoKey associated with\nthe CryptoKeyVersions.", "type": "string", - "required": true - }, - "updateMask": { - "format": "google-fieldmask", - "description": "Required list of fields to be updated in this request.", - "type": "string", - "location": "query" + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+/cryptoKeys/[^/]+$" } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}/cryptoKeys/{cryptoKeysId}/cryptoKeyVersions/{cryptoKeyVersionsId}", - "id": "cloudkms.projects.locations.keyRings.cryptoKeys.cryptoKeyVersions.patch", - "path": "v1/{+name}" + } } } } } } - }, - "methods": { - "getIamPolicy": { - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:getIamPolicy", - "id": "cloudkms.projects.locations.keyRings.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy" - }, - "get": { - "id": "cloudkms.projects.locations.keyRings.get", - "path": "v1/{+name}", - "description": "Returns metadata for a given KeyRing.", - "response": { - "$ref": "KeyRing" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the KeyRing to get.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}" - }, - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "cloudkms.projects.locations.keyRings.testIamPermissions" - }, - "list": { - "id": "cloudkms.projects.locations.keyRings.list", - "path": "v1/{+parent}/keyRings", - "description": "Lists KeyRings.", - "response": { - "$ref": "ListKeyRingsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageToken": { - "description": "Optional pagination token, returned earlier via\nListKeyRingsResponse.next_page_token.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional limit on the number of KeyRings to include in the\nresponse. Further KeyRings can subsequently be obtained by\nincluding the ListKeyRingsResponse.next_page_token in a subsequent\nrequest. If unspecified, the server will pick an appropriate default.", - "type": "integer", - "location": "query" - }, - "parent": { - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path", - "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings" - }, - "setIamPolicy": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/locations/[^/]+/keyRings/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings/{keyRingsId}:setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "id": "cloudkms.projects.locations.keyRings.setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy." - }, - "create": { - "id": "cloudkms.projects.locations.keyRings.create", - "path": "v1/{+parent}/keyRings", - "description": "Create a new KeyRing in a given Project and Location.", - "request": { - "$ref": "KeyRing" - }, - "response": { - "$ref": "KeyRing" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "description": "Required. The resource name of the location associated with the\nKeyRings, in the format `projects/*/locations/*`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path" - }, - "keyRingId": { - "location": "query", - "description": "Required. It must be unique within a location and match the regular\nexpression `[a-zA-Z0-9_-]{1,63}`", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/keyRings" - } } } - }, - "methods": { - "get": { - "id": "cloudkms.projects.locations.get", - "path": "v1/{+name}", - "description": "Get information about a location.", - "response": { - "$ref": "Location" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/locations/[^/]+$", - "location": "path", - "description": "Resource name for the location.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations/{locationsId}" - }, - "list": { - "description": "Lists information about the supported locations for this service.", - "response": { - "$ref": "ListLocationsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The resource that owns the locations collection, if applicable.", - "type": "string", - "required": true - }, - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/locations", - "id": "cloudkms.projects.locations.list", - "path": "v1/{+name}/locations" - } } } } @@ -758,32 +744,34 @@ }, "parameters": { "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", + "type": "boolean", "location": "query" }, - "fields": { + "uploadType": { "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, "callback": { "description": "JSONP", "type": "string", "location": "query" }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -792,9 +780,7 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" + ] }, "alt": { "enum": [ @@ -812,16 +798,16 @@ "description": "Data format for response.", "default": "json" }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, "key": { "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, "quotaUser": { "location": "query", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", @@ -834,21 +820,21 @@ "location": "query" }, "oauth_token": { + "location": "query", "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" + "type": "string" }, "bearer_token": { - "location": "query", "description": "OAuth bearer token.", - "type": "string" + "type": "string", + "location": "query" } }, "version": "v1", "baseUrl": "https://cloudkms.googleapis.com/", + "servicePath": "", "description": "Manages encryption for your cloud services the same way you do on-premises. You can generate, use, rotate, and destroy AES256 encryption keys.", "kind": "discovery#restDescription", - "servicePath": "", "basePath": "", "revision": "20170821", "documentationLink": "https://cloud.google.com/kms/", @@ -856,6 +842,29 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { + "ListCryptoKeysResponse": { + "properties": { + "nextPageToken": { + "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeysRequest.page_token to retrieve the next page of results.", + "type": "string" + }, + "totalSize": { + "format": "int32", + "description": "The total number of CryptoKeys that matched the query.", + "type": "integer" + }, + "cryptoKeys": { + "description": "The list of CryptoKeys.", + "items": { + "$ref": "CryptoKey" + }, + "type": "array" + } + }, + "id": "ListCryptoKeysResponse", + "description": "Response message for KeyManagementService.ListCryptoKeys.", + "type": "object" + }, "Condition": { "description": "A condition to be met.", "type": "object", @@ -882,14 +891,9 @@ "description": "DEPRECATED. Use 'values' instead.", "type": "string" }, - "values": { - "description": "The objects of the condition. This is mutually exclusive with 'value'.", - "items": { - "type": "string" - }, - "type": "array" - }, "iam": { + "description": "Trusted attributes supplied by the IAM system.", + "type": "string", "enumDescriptions": [ "Default non-attribute.", "Either principal or (if present) authority selector.", @@ -903,9 +907,14 @@ "ATTRIBUTION", "APPROVER", "JUSTIFICATION_TYPE" - ], - "description": "Trusted attributes supplied by the IAM system.", - "type": "string" + ] + }, + "values": { + "description": "The objects of the condition. This is mutually exclusive with 'value'.", + "items": { + "type": "string" + }, + "type": "array" }, "op": { "enumDescriptions": [ @@ -980,6 +989,8 @@ "id": "AuditLogConfig" }, "DecryptResponse": { + "description": "Response message for KeyManagementService.Decrypt.", + "type": "object", "properties": { "plaintext": { "format": "byte", @@ -987,13 +998,9 @@ "type": "string" } }, - "id": "DecryptResponse", - "description": "Response message for KeyManagementService.Decrypt.", - "type": "object" + "id": "DecryptResponse" }, "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", "properties": { "permissions": { "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", @@ -1003,10 +1010,69 @@ "type": "array" } }, - "id": "TestIamPermissionsRequest" + "id": "TestIamPermissionsRequest", + "description": "Request message for `TestIamPermissions` method.", + "type": "object" + }, + "KeyRing": { + "description": "A KeyRing is a toplevel logical grouping of CryptoKeys.", + "type": "object", + "properties": { + "createTime": { + "format": "google-datetime", + "description": "Output only. The time at which this KeyRing was created.", + "type": "string" + }, + "name": { + "description": "Output only. The resource name for the KeyRing in the format\n`projects/*/locations/*/keyRings/*`.", + "type": "string" + } + }, + "id": "KeyRing" + }, + "EncryptResponse": { + "properties": { + "ciphertext": { + "format": "byte", + "description": "The encrypted data.", + "type": "string" + }, + "name": { + "description": "The resource name of the CryptoKeyVersion used in encryption.", + "type": "string" + } + }, + "id": "EncryptResponse", + "description": "Response message for KeyManagementService.Encrypt.", + "type": "object" + }, + "ListLocationsResponse": { + "description": "The response message for Locations.ListLocations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "locations": { + "description": "A list of locations that matches the specified filter in the request.", + "items": { + "$ref": "Location" + }, + "type": "array" + } + }, + "id": "ListLocationsResponse" }, "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", "properties": { + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + }, "iamOwned": { "type": "boolean" }, @@ -1035,66 +1101,9 @@ "$ref": "Binding" }, "type": "array" - }, - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" } }, - "id": "Policy", - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object" - }, - "ListLocationsResponse": { - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "locations": { - "description": "A list of locations that matches the specified filter in the request.", - "items": { - "$ref": "Location" - }, - "type": "array" - } - }, - "id": "ListLocationsResponse", - "description": "The response message for Locations.ListLocations.", - "type": "object" - }, - "EncryptResponse": { - "description": "Response message for KeyManagementService.Encrypt.", - "type": "object", - "properties": { - "ciphertext": { - "format": "byte", - "description": "The encrypted data.", - "type": "string" - }, - "name": { - "description": "The resource name of the CryptoKeyVersion used in encryption.", - "type": "string" - } - }, - "id": "EncryptResponse" - }, - "KeyRing": { - "description": "A KeyRing is a toplevel logical grouping of CryptoKeys.", - "type": "object", - "properties": { - "createTime": { - "format": "google-datetime", - "description": "Output only. The time at which this KeyRing was created.", - "type": "string" - }, - "name": { - "description": "Output only. The resource name for the KeyRing in the format\n`projects/*/locations/*/keyRings/*`.", - "type": "string" - } - }, - "id": "KeyRing" + "id": "Policy" }, "RestoreCryptoKeyVersionRequest": { "properties": {}, @@ -1113,28 +1122,7 @@ }, "id": "UpdateCryptoKeyPrimaryVersionRequest" }, - "DataAccessOptions": { - "description": "Write a Data Access (Gin) log", - "type": "object", - "properties": { - "logMode": { - "enumDescriptions": [ - "Client is not required to write a partial Gin log immediately after\nthe authorization check. If client chooses to write one and it fails,\nclient may either fail open (allow the operation to continue) or\nfail closed (handle as a DENY outcome).", - "The application's operation in the context of which this authorization\ncheck is being made may only be performed if it is successfully logged\nto Gin. For instance, the authorization library may satisfy this\nobligation by emitting a partial log entry at authorization check time\nand only returning ALLOW to the application if it succeeds.\n\nIf a matching Rule has this directive, but the client has not indicated\nthat it will honor such requirements, then the IAM check will result in\nauthorization failure by setting CheckPolicyResponse.success=false." - ], - "enum": [ - "LOG_MODE_UNSPECIFIED", - "LOG_FAIL_CLOSED" - ], - "description": "Whether Gin logging should happen in a fail-closed manner at the caller.\nThis is relevant only in the LocalIAM implementation, for now.", - "type": "string" - } - }, - "id": "DataAccessOptions" - }, "ListKeyRingsResponse": { - "description": "Response message for KeyManagementService.ListKeyRings.", - "type": "object", "properties": { "nextPageToken": { "description": "A token to retrieve next page of results. Pass this value in\nListKeyRingsRequest.page_token to retrieve the next page of results.", @@ -1153,12 +1141,39 @@ "type": "array" } }, - "id": "ListKeyRingsResponse" + "id": "ListKeyRingsResponse", + "description": "Response message for KeyManagementService.ListKeyRings.", + "type": "object" + }, + "DataAccessOptions": { + "description": "Write a Data Access (Gin) log", + "type": "object", + "properties": { + "logMode": { + "description": "Whether Gin logging should happen in a fail-closed manner at the caller.\nThis is relevant only in the LocalIAM implementation, for now.", + "type": "string", + "enumDescriptions": [ + "Client is not required to write a partial Gin log immediately after\nthe authorization check. If client chooses to write one and it fails,\nclient may either fail open (allow the operation to continue) or\nfail closed (handle as a DENY outcome).", + "The application's operation in the context of which this authorization\ncheck is being made may only be performed if it is successfully logged\nto Gin. For instance, the authorization library may satisfy this\nobligation by emitting a partial log entry at authorization check time\nand only returning ALLOW to the application if it succeeds.\n\nIf a matching Rule has this directive, but the client has not indicated\nthat it will honor such requirements, then the IAM check will result in\nauthorization failure by setting CheckPolicyResponse.success=false." + ], + "enum": [ + "LOG_MODE_UNSPECIFIED", + "LOG_FAIL_CLOSED" + ] + } + }, + "id": "DataAccessOptions" }, "AuditConfig": { "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", "type": "object", "properties": { + "exemptedMembers": { + "items": { + "type": "string" + }, + "type": "array" + }, "service": { "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", "type": "string" @@ -1169,18 +1184,24 @@ "$ref": "AuditLogConfig" }, "type": "array" - }, - "exemptedMembers": { - "items": { - "type": "string" - }, - "type": "array" } }, "id": "AuditConfig" }, "CryptoKeyVersion": { + "description": "A CryptoKeyVersion represents an individual cryptographic key, and the\nassociated key material.\n\nIt can be used for cryptographic operations either directly, or via its\nparent CryptoKey, in which case the server will choose the appropriate\nversion for the operation.\n\nFor security reasons, the raw cryptographic key material represented by a\nCryptoKeyVersion can never be viewed or exported. It can only be used to\nencrypt or decrypt data when an authorized user or application invokes Cloud\nKMS.", + "type": "object", "properties": { + "destroyTime": { + "format": "google-datetime", + "description": "Output only. The time this CryptoKeyVersion's key material is scheduled\nfor destruction. Only present if state is\nDESTROY_SCHEDULED.", + "type": "string" + }, + "createTime": { + "format": "google-datetime", + "description": "Output only. The time at which this CryptoKeyVersion was created.", + "type": "string" + }, "state": { "enumDescriptions": [ "Not specified.", @@ -1207,49 +1228,35 @@ "format": "google-datetime", "description": "Output only. The time this CryptoKeyVersion's key material was\ndestroyed. Only present if state is\nDESTROYED.", "type": "string" - }, - "destroyTime": { - "format": "google-datetime", - "description": "Output only. The time this CryptoKeyVersion's key material is scheduled\nfor destruction. Only present if state is\nDESTROY_SCHEDULED.", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "Output only. The time at which this CryptoKeyVersion was created.", - "type": "string" } }, - "id": "CryptoKeyVersion", - "description": "A CryptoKeyVersion represents an individual cryptographic key, and the\nassociated key material.\n\nIt can be used for cryptographic operations either directly, or via its\nparent CryptoKey, in which case the server will choose the appropriate\nversion for the operation.\n\nFor security reasons, the raw cryptographic key material represented by a\nCryptoKeyVersion can never be viewed or exported. It can only be used to\nencrypt or decrypt data when an authorized user or application invokes Cloud\nKMS.", - "type": "object" + "id": "CryptoKeyVersion" }, "CloudAuditOptions": { - "description": "Write a Cloud Audit log", - "type": "object", "properties": { "logName": { + "enumDescriptions": [ + "Default. Should not be used.", + "Corresponds to \"cloudaudit.googleapis.com/activity\"", + "Corresponds to \"cloudaudit.googleapis.com/data_access\"" + ], "enum": [ "UNSPECIFIED_LOG_NAME", "ADMIN_ACTIVITY", "DATA_ACCESS" ], "description": "The log_name to populate in the Cloud Audit Record.", - "type": "string", - "enumDescriptions": [ - "Default. Should not be used.", - "Corresponds to \"cloudaudit.googleapis.com/activity\"", - "Corresponds to \"cloudaudit.googleapis.com/data_access\"" - ] + "type": "string" } }, - "id": "CloudAuditOptions" + "id": "CloudAuditOptions", + "description": "Write a Cloud Audit log", + "type": "object" }, "Binding": { + "description": "Associates `members` with a `role`.", + "type": "object", "properties": { - "condition": { - "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL.", - "$ref": "Expr" - }, "members": { "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", "items": { @@ -1260,24 +1267,18 @@ "role": { "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", "type": "string" + }, + "condition": { + "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL.", + "$ref": "Expr" } }, - "id": "Binding", - "description": "Associates `members` with a `role`.", - "type": "object" + "id": "Binding" }, "Expr": { "description": "Represents an expression text. Example:\n\n title: \"User account presence\"\n description: \"Determines whether the request has a user account\"\n expression: \"size(request.user) \u003e 0\"", "type": "object", "properties": { - "description": { - "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", - "type": "string" - }, - "expression": { - "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", - "type": "string" - }, "location": { "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.", "type": "string" @@ -1285,11 +1286,21 @@ "title": { "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.", "type": "string" + }, + "description": { + "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", + "type": "string" + }, + "expression": { + "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", + "type": "string" } }, "id": "Expr" }, "EncryptRequest": { + "description": "Request message for KeyManagementService.Encrypt.", + "type": "object", "properties": { "additionalAuthenticatedData": { "format": "byte", @@ -1302,11 +1313,11 @@ "type": "string" } }, - "id": "EncryptRequest", - "description": "Request message for KeyManagementService.Encrypt.", - "type": "object" + "id": "EncryptRequest" }, "ListCryptoKeyVersionsResponse": { + "description": "Response message for KeyManagementService.ListCryptoKeyVersions.", + "type": "object", "properties": { "cryptoKeyVersions": { "description": "The list of CryptoKeyVersions.", @@ -1325,13 +1336,9 @@ "type": "integer" } }, - "id": "ListCryptoKeyVersionsResponse", - "description": "Response message for KeyManagementService.ListCryptoKeyVersions.", - "type": "object" + "id": "ListCryptoKeyVersionsResponse" }, "TestIamPermissionsResponse": { - "description": "Response message for `TestIamPermissions` method.", - "type": "object", "properties": { "permissions": { "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", @@ -1341,7 +1348,9 @@ "type": "array" } }, - "id": "TestIamPermissionsResponse" + "id": "TestIamPermissionsResponse", + "description": "Response message for `TestIamPermissions` method.", + "type": "object" }, "DestroyCryptoKeyVersionRequest": { "description": "Request message for KeyManagementService.DestroyCryptoKeyVersion.", @@ -1349,50 +1358,37 @@ "properties": {}, "id": "DestroyCryptoKeyVersionRequest" }, - "CryptoKey": { + "Rule": { + "description": "A rule to be applied in a Policy.", + "type": "object", "properties": { - "purpose": { + "permissions": { + "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "action": { "enum": [ - "CRYPTO_KEY_PURPOSE_UNSPECIFIED", - "ENCRYPT_DECRYPT" + "NO_ACTION", + "ALLOW", + "ALLOW_WITH_LOG", + "DENY", + "DENY_WITH_LOG", + "LOG" ], - "description": "The immutable purpose of this CryptoKey. Currently, the only acceptable\npurpose is ENCRYPT_DECRYPT.", + "description": "Required", "type": "string", "enumDescriptions": [ - "Not specified.", - "CryptoKeys with this purpose may be used with\nEncrypt and\nDecrypt." + "Default no action.", + "Matching 'Entries' grant access.", + "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' deny access.", + "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' tell IAM.Check callers to generate logs." ] }, - "nextRotationTime": { - "format": "google-datetime", - "description": "At next_rotation_time, the Key Management Service will automatically:\n\n1. Create a new version of this CryptoKey.\n2. Mark the new version as primary.\n\nKey rotations performed manually via\nCreateCryptoKeyVersion and\nUpdateCryptoKeyPrimaryVersion\ndo not affect next_rotation_time.", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "Output only. The time at which this CryptoKey was created.", - "type": "string" - }, - "rotationPeriod": { - "format": "google-duration", - "description": "next_rotation_time will be advanced by this period when the service\nautomatically rotates a key. Must be at least one day.\n\nIf rotation_period is set, next_rotation_time must also be set.", - "type": "string" - }, - "primary": { - "$ref": "CryptoKeyVersion", - "description": "Output only. A copy of the \"primary\" CryptoKeyVersion that will be used\nby Encrypt when this CryptoKey is given\nin EncryptRequest.name.\n\nThe CryptoKey's primary version can be updated via\nUpdateCryptoKeyPrimaryVersion." - }, - "name": { - "description": "Output only. The resource name for this CryptoKey in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.", - "type": "string" - } - }, - "id": "CryptoKey", - "description": "A CryptoKey represents a logical key that can be used for cryptographic\noperations.\n\nA CryptoKey is made up of one or more versions, which\nrepresent the actual key material used in cryptographic operations.", - "type": "object" - }, - "Rule": { - "properties": { "notIn": { "description": "If one or more 'not_in' clauses are specified, the rule matches\nif the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.\nThe format for in and not_in entries is the same as for members in a\nBinding (see google/iam/v1/policy.proto).", "items": { @@ -1424,37 +1420,50 @@ "type": "string" }, "type": "array" - }, - "permissions": { - "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", - "items": { - "type": "string" - }, - "type": "array" - }, - "action": { - "enum": [ - "NO_ACTION", - "ALLOW", - "ALLOW_WITH_LOG", - "DENY", - "DENY_WITH_LOG", - "LOG" - ], - "description": "Required", - "type": "string", - "enumDescriptions": [ - "Default no action.", - "Matching 'Entries' grant access.", - "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' deny access.", - "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' tell IAM.Check callers to generate logs." - ] } }, - "id": "Rule", - "description": "A rule to be applied in a Policy.", + "id": "Rule" + }, + "CryptoKey": { + "properties": { + "createTime": { + "format": "google-datetime", + "description": "Output only. The time at which this CryptoKey was created.", + "type": "string" + }, + "rotationPeriod": { + "format": "google-duration", + "description": "next_rotation_time will be advanced by this period when the service\nautomatically rotates a key. Must be at least one day.\n\nIf rotation_period is set, next_rotation_time must also be set.", + "type": "string" + }, + "primary": { + "$ref": "CryptoKeyVersion", + "description": "Output only. A copy of the \"primary\" CryptoKeyVersion that will be used\nby Encrypt when this CryptoKey is given\nin EncryptRequest.name.\n\nThe CryptoKey's primary version can be updated via\nUpdateCryptoKeyPrimaryVersion." + }, + "name": { + "description": "Output only. The resource name for this CryptoKey in the format\n`projects/*/locations/*/keyRings/*/cryptoKeys/*`.", + "type": "string" + }, + "purpose": { + "description": "The immutable purpose of this CryptoKey. Currently, the only acceptable\npurpose is ENCRYPT_DECRYPT.", + "type": "string", + "enumDescriptions": [ + "Not specified.", + "CryptoKeys with this purpose may be used with\nEncrypt and\nDecrypt." + ], + "enum": [ + "CRYPTO_KEY_PURPOSE_UNSPECIFIED", + "ENCRYPT_DECRYPT" + ] + }, + "nextRotationTime": { + "format": "google-datetime", + "description": "At next_rotation_time, the Key Management Service will automatically:\n\n1. Create a new version of this CryptoKey.\n2. Mark the new version as primary.\n\nKey rotations performed manually via\nCreateCryptoKeyVersion and\nUpdateCryptoKeyPrimaryVersion\ndo not affect next_rotation_time.", + "type": "string" + } + }, + "id": "CryptoKey", + "description": "A CryptoKey represents a logical key that can be used for cryptographic\noperations.\n\nA CryptoKey is made up of one or more versions, which\nrepresent the actual key material used in cryptographic operations.", "type": "object" }, "LogConfig": { @@ -1462,23 +1471,21 @@ "type": "object", "properties": { "cloudAudit": { - "description": "Cloud audit options.", - "$ref": "CloudAuditOptions" + "$ref": "CloudAuditOptions", + "description": "Cloud audit options." }, "counter": { - "$ref": "CounterOptions", - "description": "Counter options." + "description": "Counter options.", + "$ref": "CounterOptions" }, "dataAccess": { - "$ref": "DataAccessOptions", - "description": "Data access options." + "description": "Data access options.", + "$ref": "DataAccessOptions" } }, "id": "LogConfig" }, "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", "properties": { "updateMask": { "format": "google-fieldmask", @@ -1490,7 +1497,9 @@ "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." } }, - "id": "SetIamPolicyRequest" + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method.", + "type": "object" }, "DecryptRequest": { "description": "Request message for KeyManagementService.Decrypt.", @@ -1510,18 +1519,9 @@ "id": "DecryptRequest" }, "Location": { + "description": "A resource that represents Google Cloud Platform location.", + "type": "object", "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", - "type": "object" - }, - "name": { - "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`", - "type": "string" - }, "locationId": { "description": "The canonical id for this location. For example: `\"us-east1\"`.", "type": "string" @@ -1533,39 +1533,39 @@ }, "description": "Service-specific metadata. For example the available capacity at the given\nlocation.", "type": "object" - } - }, - "id": "Location", - "description": "A resource that represents Google Cloud Platform location.", - "type": "object" - }, - "ListCryptoKeysResponse": { - "description": "Response message for KeyManagementService.ListCryptoKeys.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "A token to retrieve next page of results. Pass this value in\nListCryptoKeysRequest.page_token to retrieve the next page of results.", - "type": "string" }, - "totalSize": { - "format": "int32", - "description": "The total number of CryptoKeys that matched the query.", - "type": "integer" - }, - "cryptoKeys": { - "description": "The list of CryptoKeys.", - "items": { - "$ref": "CryptoKey" + "labels": { + "additionalProperties": { + "type": "string" }, - "type": "array" + "description": "Cross-service attributes for the location. For example\n\n {\"cloud.googleapis.com/region\": \"us-east1\"}", + "type": "object" + }, + "name": { + "description": "Resource name for the location, which may vary between implementations.\nFor example: `\"projects/example-project/locations/us-east1\"`", + "type": "string" } }, - "id": "ListCryptoKeysResponse" + "id": "Location" } }, - "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - } + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "protocol": "rest", + "canonicalName": "Cloud KMS", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "rootUrl": "https://cloudkms.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudkms", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-api.json b/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-api.json index 6c545a0..366e895 100644 --- a/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-api.json +++ b/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-api.json @@ -1,12 +1,84 @@ { + "kind": "discovery#restDescription", + "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.", + "servicePath": "", "basePath": "", "documentationLink": "https://cloud.google.com/resource-manager", - "revision": "20170828", "id": "cloudresourcemanager:v1", + "revision": "20170828", "discoveryVersion": "v1", "schemas": { - "ListAvailableOrgPolicyConstraintsRequest": { + "AuditLogConfig": { + "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", "type": "object", + "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, + "logType": { + "enum": [ + "LOG_TYPE_UNSPECIFIED", + "ADMIN_READ", + "DATA_WRITE", + "DATA_READ" + ], + "description": "The log type that this config enables.", + "type": "string", + "enumDescriptions": [ + "Default case. Should never be this.", + "Admin reads. Example: CloudIAM getIamPolicy", + "Data writes. Example: CloudSQL Users create", + "Data reads. Example: CloudSQL Users list" + ] + } + }, + "id": "AuditLogConfig" + }, + "SearchOrganizationsRequest": { + "description": "The request sent to the `SearchOrganizations` method.", + "type": "object", + "properties": { + "filter": { + "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with\n`owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.", + "type": "string" + }, + "pageToken": { + "type": "string", + "description": "A pagination token returned from a previous call to `SearchOrganizations`\nthat indicates from where listing should continue.\nThis field is optional." + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of Organizations to return in the response.\nThis field is optional.", + "type": "integer" + } + }, + "id": "SearchOrganizationsRequest" + }, + "GetAncestryRequest": { + "description": "The request sent to the\nGetAncestry\nmethod.", + "type": "object", + "properties": {}, + "id": "GetAncestryRequest" + }, + "TestIamPermissionsRequest": { + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest", + "description": "Request message for `TestIamPermissions` method.", + "type": "object" + }, + "ListAvailableOrgPolicyConstraintsRequest": { "properties": { "pageToken": { "description": "Page token used to retrieve the next page. This is currently unsupported\nand will be ignored. The server may at any point start using this field.", @@ -19,19 +91,17 @@ } }, "id": "ListAvailableOrgPolicyConstraintsRequest", - "description": "The request sent to the [ListAvailableOrgPolicyConstraints]\ngoogle.cloud.OrgPolicy.v1.ListAvailableOrgPolicyConstraints] method." + "description": "The request sent to the [ListAvailableOrgPolicyConstraints]\ngoogle.cloud.OrgPolicy.v1.ListAvailableOrgPolicyConstraints] method.", + "type": "object" }, "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", "properties": { - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - }, "version": { + "type": "integer", "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" + "description": "Version of the `Policy`. The default version is 0." }, "auditConfigs": { "description": "Specifies cloud audit logging configuration for this policy.", @@ -46,52 +116,55 @@ "$ref": "Binding" }, "type": "array" + }, + "etag": { + "type": "string", + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly." } }, - "id": "Policy", - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object" + "id": "Policy" }, "FolderOperation": { - "id": "FolderOperation", "description": "Metadata describing a long running folder operation", "type": "object", "properties": { "operationType": { + "enumDescriptions": [ + "Operation type not specified.", + "A create folder operation.", + "A move folder operation." + ], "enum": [ "OPERATION_TYPE_UNSPECIFIED", "CREATE", "MOVE" ], "description": "The type of this operation.", - "type": "string", - "enumDescriptions": [ - "Operation type not specified.", - "A create folder operation.", - "A move folder operation." - ] + "type": "string" }, "sourceParent": { - "type": "string", - "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE." + "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.", + "type": "string" }, "displayName": { "description": "The display name of the folder.", "type": "string" }, "destinationParent": { - "type": "string", - "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to." + "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.", + "type": "string" } - } + }, + "id": "FolderOperation" }, "ResourceId": { "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.", "type": "object", "properties": { "type": { - "description": "Required field representing the resource type this id is for.\nAt present, the valid types are: \"organization\"", - "type": "string" + "type": "string", + "description": "Required field representing the resource type this id is for.\nAt present, the valid types are: \"organization\"" }, "id": { "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's.", @@ -112,6 +185,7 @@ "id": "GetEffectiveOrgPolicyRequest" }, "ListOrgPoliciesRequest": { + "type": "object", "properties": { "pageSize": { "format": "int32", @@ -124,8 +198,7 @@ } }, "id": "ListOrgPoliciesRequest", - "description": "The request sent to the ListOrgPolicies method.", - "type": "object" + "description": "The request sent to the ListOrgPolicies method." }, "Operation": { "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", @@ -136,12 +209,12 @@ "type": "boolean" }, "response": { - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`." }, "name": { "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", @@ -152,12 +225,12 @@ "$ref": "Status" }, "metadata": { - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" } }, "id": "Operation" @@ -166,37 +239,94 @@ "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", "type": "object", "properties": { - "service": { - "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", - "type": "string" - }, "auditLogConfigs": { "description": "The configuration for logging of each type of permission.\nNext ID: 4", "items": { "$ref": "AuditLogConfig" }, "type": "array" + }, + "service": { + "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", + "type": "string" } }, "id": "AuditConfig" }, - "Constraint": { - "description": "A `Constraint` describes a way in which a resource's configuration can be\nrestricted. For example, it controls which cloud services can be activated\nacross an organization, or whether a Compute Engine instance can have\nserial port connections established. `Constraints` can be configured by the\norganization's policy adminstrator to fit the needs of the organzation by\nsetting Policies for `Constraints` at different locations in the\norganization's resource hierarchy. Policies are inherited down the resource\nhierarchy from higher levels, but can also be overridden. For details about\nthe inheritance rules please read about\nPolicies.\n\n`Constraints` have a default behavior determined by the `constraint_default`\nfield, which is the enforcement behavior that is used in the absence of a\n`Policy` being defined or inherited for the resource in question.", + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { + "code": { + "type": "integer", + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code." + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" + } + }, + "id": "Status" + }, + "ListLiensResponse": { + "description": "The response message for Liens.ListLiens.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.", + "type": "string" + }, + "liens": { + "description": "A list of Liens.", + "items": { + "$ref": "Lien" + }, + "type": "array" + } + }, + "id": "ListLiensResponse" + }, + "Constraint": { + "properties": { + "constraintDefault": { + "description": "The evaluation behavior of this constraint in the absense of 'Policy'.", + "type": "string", + "enumDescriptions": [ + "This is only used for distinguishing unset values and should never be\nused.", + "Indicate that all values are allowed for list constraints.\nIndicate that enforcement is off for boolean constraints.", + "Indicate that all values are denied for list constraints.\nIndicate that enforcement is on for boolean constraints." + ], + "enum": [ + "CONSTRAINT_DEFAULT_UNSPECIFIED", + "ALLOW", + "DENY" + ] + }, "name": { "description": "Immutable value, required to globally be unique. For example,\n`constraints/serviceuser.services`", "type": "string" }, - "listConstraint": { - "description": "Defines this constraint as being a ListConstraint.", - "$ref": "ListConstraint" - }, "version": { "format": "int32", "description": "Version of the `Constraint`. Default version is 0;", "type": "integer" }, + "listConstraint": { + "description": "Defines this constraint as being a ListConstraint.", + "$ref": "ListConstraint" + }, "displayName": { "description": "The human readable name.\n\nMutable.", "type": "string" @@ -208,70 +338,14 @@ "booleanConstraint": { "$ref": "BooleanConstraint", "description": "Defines this constraint as being a BooleanConstraint." - }, - "constraintDefault": { - "enum": [ - "CONSTRAINT_DEFAULT_UNSPECIFIED", - "ALLOW", - "DENY" - ], - "description": "The evaluation behavior of this constraint in the absense of 'Policy'.", - "type": "string", - "enumDescriptions": [ - "This is only used for distinguishing unset values and should never be\nused.", - "Indicate that all values are allowed for list constraints.\nIndicate that enforcement is off for boolean constraints.", - "Indicate that all values are denied for list constraints.\nIndicate that enforcement is on for boolean constraints." - ] } }, - "id": "Constraint" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - }, - "type": "object" - }, - "type": "array" - } - }, - "id": "Status" - }, - "ListLiensResponse": { - "id": "ListLiensResponse", - "description": "The response message for Liens.ListLiens.", - "type": "object", - "properties": { - "liens": { - "description": "A list of Liens.", - "items": { - "$ref": "Lien" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.", - "type": "string" - } - } + "id": "Constraint", + "description": "A `Constraint` describes a way in which a resource's configuration can be\nrestricted. For example, it controls which cloud services can be activated\nacross an organization, or whether a Compute Engine instance can have\nserial port connections established. `Constraints` can be configured by the\norganization's policy adminstrator to fit the needs of the organzation by\nsetting Policies for `Constraints` at different locations in the\norganization's resource hierarchy. Policies are inherited down the resource\nhierarchy from higher levels, but can also be overridden. For details about\nthe inheritance rules please read about\nPolicies.\n\n`Constraints` have a default behavior determined by the `constraint_default`\nfield, which is the enforcement behavior that is used in the absence of a\n`Policy` being defined or inherited for the resource in question.", + "type": "object" }, "Binding": { + "id": "Binding", "description": "Associates `members` with a `role`.", "type": "object", "properties": { @@ -286,10 +360,10 @@ "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", "type": "string" } - }, - "id": "Binding" + } }, "GetOrgPolicyRequest": { + "id": "GetOrgPolicyRequest", "description": "The request sent to the GetOrgPolicy method.", "type": "object", "properties": { @@ -297,30 +371,13 @@ "description": "Name of the `Constraint` to get the `Policy`.", "type": "string" } - }, - "id": "GetOrgPolicyRequest" + } }, "RestoreDefault": { - "id": "RestoreDefault", "description": "Ignores policies set above this resource and restores the\n`constraint_default` enforcement behavior of the specific `Constraint` at\nthis resource.\n\nSuppose that `constraint_default` is set to `ALLOW` for the\n`Constraint` `constraints/serviceuser.services`. Suppose that organization\nfoo.com sets a `Policy` at their Organization resource node that restricts\nthe allowed service activations to deny all service activations. They\ncould then set a `Policy` with the `policy_type` `restore_default` on\nseveral experimental projects, restoring the `constraint_default`\nenforcement of the `Constraint` for only those projects, allowing those\nprojects to have all services activated.", "type": "object", - "properties": {} - }, - "ClearOrgPolicyRequest": { - "description": "The request sent to the ClearOrgPolicy method.", - "type": "object", - "properties": { - "etag": { - "format": "byte", - "description": "The current version, for concurrency control. Not sending an `etag`\nwill cause the `Policy` to be cleared blindly.", - "type": "string" - }, - "constraint": { - "description": "Name of the `Constraint` of the `Policy` to clear.", - "type": "string" - } - }, - "id": "ClearOrgPolicyRequest" + "properties": {}, + "id": "RestoreDefault" }, "UndeleteProjectRequest": { "description": "The request sent to the UndeleteProject\nmethod.", @@ -328,6 +385,22 @@ "properties": {}, "id": "UndeleteProjectRequest" }, + "ClearOrgPolicyRequest": { + "description": "The request sent to the ClearOrgPolicy method.", + "type": "object", + "properties": { + "constraint": { + "description": "Name of the `Constraint` of the `Policy` to clear.", + "type": "string" + }, + "etag": { + "format": "byte", + "description": "The current version, for concurrency control. Not sending an `etag`\nwill cause the `Policy` to be cleared blindly.", + "type": "string" + } + }, + "id": "ClearOrgPolicyRequest" + }, "ProjectCreationStatus": { "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.", "type": "object", @@ -369,10 +442,10 @@ "description": "Response message for `TestIamPermissions` method." }, "GetIamPolicyRequest": { - "id": "GetIamPolicyRequest", "description": "Request message for `GetIamPolicy` method.", "type": "object", - "properties": {} + "properties": {}, + "id": "GetIamPolicyRequest" }, "OrganizationOwner": { "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.", @@ -386,8 +459,6 @@ "id": "OrganizationOwner" }, "ListProjectsResponse": { - "id": "ListProjectsResponse", - "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.", "type": "object", "properties": { "projects": { @@ -401,24 +472,15 @@ "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.", "type": "string" } - } + }, + "id": "ListProjectsResponse", + "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page." }, "Project": { - "id": "Project", "description": "A Project is a high-level Google Cloud Platform entity. It is a\ncontainer for ACLs, APIs, App Engine Apps, VMs, and other\nGoogle Cloud Platform resources.", "type": "object", "properties": { - "projectId": { - "type": "string", - "description": "The unique, user-assigned ID of the Project.\nIt must be 6 to 30 lowercase letters, digits, or hyphens.\nIt must start with a letter.\nTrailing hyphens are prohibited.\n\nExample: \u003ccode\u003etokyo-rain-123\u003c/code\u003e\nRead-only after creation." - }, "lifecycleState": { - "enumDescriptions": [ - "Unspecified state. This is only used/useful for distinguishing\nunset values.", - "The normal and active state.", - "The project has been marked for deletion by the user\n(by invoking\nDeleteProject)\nor by the system (Google Cloud Platform).\nThis can generally be reversed by invoking UndeleteProject.", - "This lifecycle state is no longer used and not returned by the API." - ], "enum": [ "LIFECYCLE_STATE_UNSPECIFIED", "ACTIVE", @@ -426,7 +488,13 @@ "DELETE_IN_PROGRESS" ], "description": "The Project lifecycle state.\n\nRead-only.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unspecified state. This is only used/useful for distinguishing\nunset values.", + "The normal and active state.", + "The project has been marked for deletion by the user\n(by invoking\nDeleteProject)\nor by the system (Google Cloud Platform).\nThis can generally be reversed by invoking UndeleteProject.", + "This lifecycle state is no longer used and not returned by the API." + ] }, "projectNumber": { "format": "int64", @@ -434,13 +502,8 @@ "type": "string" }, "parent": { - "$ref": "ResourceId", - "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write." - }, - "createTime": { - "format": "google-datetime", - "description": "Creation time.\n\nRead-only.", - "type": "string" + "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write.", + "$ref": "ResourceId" }, "labels": { "additionalProperties": { @@ -449,44 +512,54 @@ "description": "The labels associated with this Project.\n\nLabel keys must be between 1 and 63 characters long and must conform\nto the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?.\n\nLabel values must be between 0 and 63 characters long and must conform\nto the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?.\n\nNo more than 256 labels can be associated with a given resource.\n\nClients should store labels in a representation such as JSON that does not\ndepend on specific characters being disallowed.\n\nExample: \u003ccode\u003e\"environment\" : \"dev\"\u003c/code\u003e\nRead-write.", "type": "object" }, + "createTime": { + "format": "google-datetime", + "description": "Creation time.\n\nRead-only.", + "type": "string" + }, "name": { "description": "The user-assigned display name of the Project.\nIt must be 4 to 30 characters.\nAllowed characters are: lowercase and uppercase letters, numbers,\nhyphen, single-quote, double-quote, space, and exclamation point.\n\nExample: \u003ccode\u003eMy Project\u003c/code\u003e\nRead-write.", "type": "string" + }, + "projectId": { + "description": "The unique, user-assigned ID of the Project.\nIt must be 6 to 30 lowercase letters, digits, or hyphens.\nIt must start with a letter.\nTrailing hyphens are prohibited.\n\nExample: \u003ccode\u003etokyo-rain-123\u003c/code\u003e\nRead-only after creation.", + "type": "string" } - } + }, + "id": "Project" }, "SearchOrganizationsResponse": { + "id": "SearchOrganizationsResponse", "description": "The response returned from the `SearchOrganizations` method.", "type": "object", "properties": { + "nextPageToken": { + "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.", + "type": "string" + }, "organizations": { "description": "The list of Organizations that matched the search query, possibly\npaginated.", "items": { "$ref": "Organization" }, "type": "array" - }, - "nextPageToken": { - "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.", - "type": "string" } - }, - "id": "SearchOrganizationsResponse" + } }, "ListOrgPoliciesResponse": { "description": "The response returned from the ListOrgPolicies method. It will be empty\nif no `Policies` are set on the resource.", "type": "object", "properties": { + "nextPageToken": { + "description": "Page token used to retrieve the next page. This is currently not used, but\nthe server may at any point start supplying a valid token.", + "type": "string" + }, "policies": { "description": "The `Policies` that are set on the resource. It will be empty if no\n`Policies` are set.", "items": { "$ref": "OrgPolicy" }, "type": "array" - }, - "nextPageToken": { - "description": "Page token used to retrieve the next page. This is currently not used, but\nthe server may at any point start supplying a valid token.", - "type": "string" } }, "id": "ListOrgPoliciesResponse" @@ -526,37 +599,31 @@ }, "id": "FolderOperationError" }, - "BooleanPolicy": { - "description": "Used in `policy_type` to specify how `boolean_policy` will behave at this\nresource.", - "type": "object", - "properties": { - "enforced": { - "description": "If `true`, then the `Policy` is enforced. If `false`, then any\nconfiguration is acceptable.\n\nSuppose you have a `Constraint` `constraints/compute.disableSerialPortAccess`\nwith `constraint_default` set to `ALLOW`. A `Policy` for that\n`Constraint` exhibits the following behavior:\n - If the `Policy` at this resource has enforced set to `false`, serial\n port connection attempts will be allowed.\n - If the `Policy` at this resource has enforced set to `true`, serial\n port connection attempts will be refused.\n - If the `Policy` at this resource is `RestoreDefault`, serial port\n connection attempts will be allowed.\n - If no `Policy` is set at this resource or anywhere higher in the\n resource hierarchy, serial port connection attempts will be allowed.\n - If no `Policy` is set at this resource, but one exists higher in the\n resource hierarchy, the behavior is as if the`Policy` were set at\n this resource.\n\nThe following examples demonstrate the different possible layerings:\n\nExample 1 (nearest `Constraint` wins):\n `organizations/foo` has a `Policy` with:\n {enforced: false}\n `projects/bar` has no `Policy` set.\nThe constraint at `projects/bar` and `organizations/foo` will not be\nenforced.\n\nExample 2 (enforcement gets replaced):\n `organizations/foo` has a `Policy` with:\n {enforced: false}\n `projects/bar` has a `Policy` with:\n {enforced: true}\nThe constraint at `organizations/foo` is not enforced.\nThe constraint at `projects/bar` is enforced.\n\nExample 3 (RestoreDefault):\n `organizations/foo` has a `Policy` with:\n {enforced: true}\n `projects/bar` has a `Policy` with:\n {RestoreDefault: {}}\nThe constraint at `organizations/foo` is enforced.\nThe constraint at `projects/bar` is not enforced, because\n`constraint_default` for the `Constraint` is `ALLOW`.", - "type": "boolean" - } - }, - "id": "BooleanPolicy" - }, "OrgPolicy": { + "id": "OrgPolicy", "description": "Defines a Cloud Organization `Policy` which is used to specify `Constraints`\nfor configurations of Cloud Platform resources.", "type": "object", "properties": { + "restoreDefault": { + "description": "Restores the default behavior of the constraint; independent of\n`Constraint` type.", + "$ref": "RestoreDefault" + }, "listPolicy": { "$ref": "ListPolicy", "description": "List of values either allowed or disallowed." }, "etag": { + "type": "string", "format": "byte", - "description": "An opaque tag indicating the current version of the `Policy`, used for\nconcurrency control.\n\nWhen the `Policy` is returned from either a `GetPolicy` or a\n`ListOrgPolicy` request, this `etag` indicates the version of the current\n`Policy` to use when executing a read-modify-write loop.\n\nWhen the `Policy` is returned from a `GetEffectivePolicy` request, the\n`etag` will be unset.\n\nWhen the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value\nthat was returned from a `GetOrgPolicy` request as part of a\nread-modify-write loop for concurrency control. Not setting the `etag`in a\n`SetOrgPolicy` request will result in an unconditional write of the\n`Policy`.", - "type": "string" + "description": "An opaque tag indicating the current version of the `Policy`, used for\nconcurrency control.\n\nWhen the `Policy` is returned from either a `GetPolicy` or a\n`ListOrgPolicy` request, this `etag` indicates the version of the current\n`Policy` to use when executing a read-modify-write loop.\n\nWhen the `Policy` is returned from a `GetEffectivePolicy` request, the\n`etag` will be unset.\n\nWhen the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value\nthat was returned from a `GetOrgPolicy` request as part of a\nread-modify-write loop for concurrency control. Not setting the `etag`in a\n`SetOrgPolicy` request will result in an unconditional write of the\n`Policy`." }, "constraint": { "description": "The name of the `Constraint` the `Policy` is configuring, for example,\n`constraints/serviceuser.services`.\n\nImmutable after creation.", "type": "string" }, "booleanPolicy": { - "$ref": "BooleanPolicy", - "description": "For boolean `Constraints`, whether to enforce the `Constraint` or not." + "description": "For boolean `Constraints`, whether to enforce the `Constraint` or not.", + "$ref": "BooleanPolicy" }, "updateTime": { "format": "google-datetime", @@ -567,26 +634,40 @@ "format": "int32", "description": "Version of the `Policy`. Default version is 0;", "type": "integer" - }, - "restoreDefault": { - "$ref": "RestoreDefault", - "description": "Restores the default behavior of the constraint; independent of\n`Constraint` type." + } + } + }, + "BooleanPolicy": { + "description": "Used in `policy_type` to specify how `boolean_policy` will behave at this\nresource.", + "type": "object", + "properties": { + "enforced": { + "type": "boolean", + "description": "If `true`, then the `Policy` is enforced. If `false`, then any\nconfiguration is acceptable.\n\nSuppose you have a `Constraint` `constraints/compute.disableSerialPortAccess`\nwith `constraint_default` set to `ALLOW`. A `Policy` for that\n`Constraint` exhibits the following behavior:\n - If the `Policy` at this resource has enforced set to `false`, serial\n port connection attempts will be allowed.\n - If the `Policy` at this resource has enforced set to `true`, serial\n port connection attempts will be refused.\n - If the `Policy` at this resource is `RestoreDefault`, serial port\n connection attempts will be allowed.\n - If no `Policy` is set at this resource or anywhere higher in the\n resource hierarchy, serial port connection attempts will be allowed.\n - If no `Policy` is set at this resource, but one exists higher in the\n resource hierarchy, the behavior is as if the`Policy` were set at\n this resource.\n\nThe following examples demonstrate the different possible layerings:\n\nExample 1 (nearest `Constraint` wins):\n `organizations/foo` has a `Policy` with:\n {enforced: false}\n `projects/bar` has no `Policy` set.\nThe constraint at `projects/bar` and `organizations/foo` will not be\nenforced.\n\nExample 2 (enforcement gets replaced):\n `organizations/foo` has a `Policy` with:\n {enforced: false}\n `projects/bar` has a `Policy` with:\n {enforced: true}\nThe constraint at `organizations/foo` is not enforced.\nThe constraint at `projects/bar` is enforced.\n\nExample 3 (RestoreDefault):\n `organizations/foo` has a `Policy` with:\n {enforced: true}\n `projects/bar` has a `Policy` with:\n {RestoreDefault: {}}\nThe constraint at `organizations/foo` is enforced.\nThe constraint at `projects/bar` is not enforced, because\n`constraint_default` for the `Constraint` is `ALLOW`." } }, - "id": "OrgPolicy" + "id": "BooleanPolicy" }, "Lien": { - "id": "Lien", "description": "A Lien represents an encumbrance on the actions that can be performed on a\nresource.", "type": "object", "properties": { + "parent": { + "description": "A reference to the resource this Lien is attached to. The server will\nvalidate the parent against those for which Liens are supported.\n\nExample: `projects/1234`", + "type": "string" + }, + "createTime": { + "format": "google-datetime", + "description": "The creation time of this Lien.", + "type": "string" + }, "name": { "description": "A system-generated unique identifier for this Lien.\n\nExample: `liens/1234abcd`", "type": "string" }, "reason": { - "type": "string", - "description": "Concise user-visible strings indicating why an action cannot be performed\non a resource. Maximum lenth of 200 characters.\n\nExample: 'Holds production API key'" + "description": "Concise user-visible strings indicating why an action cannot be performed\non a resource. Maximum lenth of 200 characters.\n\nExample: 'Holds production API key'", + "type": "string" }, "origin": { "description": "A stable, user-visible/meaningful string identifying the origin of the\nLien, intended to be inspected programmatically. Maximum length of 200\ncharacters.\n\nExample: 'compute.googleapis.com'", @@ -598,23 +679,15 @@ "type": "string" }, "type": "array" - }, - "parent": { - "description": "A reference to the resource this Lien is attached to. The server will\nvalidate the parent against those for which Liens are supported.\n\nExample: `projects/1234`", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "The creation time of this Lien.", - "type": "string" } - } + }, + "id": "Lien" }, "Ancestor": { "properties": { "resourceId": { - "$ref": "ResourceId", - "description": "Resource id of the ancestor." + "description": "Resource id of the ancestor.", + "$ref": "ResourceId" } }, "id": "Ancestor", @@ -622,18 +695,17 @@ "type": "object" }, "ListConstraint": { - "id": "ListConstraint", - "description": "A `Constraint` that allows or disallows a list of string values, which are\nconfigured by an Organization's policy administrator with a `Policy`.", "type": "object", "properties": { "suggestedValue": { "description": "Optional. The Google Cloud Console will try to default to a configuration\nthat matches the value specified in this `Constraint`.", "type": "string" } - } + }, + "id": "ListConstraint", + "description": "A `Constraint` that allows or disallows a list of string values, which are\nconfigured by an Organization's policy administrator with a `Policy`." }, "SetOrgPolicyRequest": { - "type": "object", "properties": { "policy": { "$ref": "OrgPolicy", @@ -641,23 +713,24 @@ } }, "id": "SetOrgPolicyRequest", - "description": "The request sent to the SetOrgPolicyRequest method." + "description": "The request sent to the SetOrgPolicyRequest method.", + "type": "object" }, "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" + }, "updateMask": { "format": "google-fieldmask", "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", "type": "string" - }, - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." } }, - "id": "SetIamPolicyRequest" + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method.", + "type": "object" }, "Empty": { "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", @@ -670,22 +743,22 @@ "type": "object", "properties": { "lifecycleState": { - "enum": [ - "LIFECYCLE_STATE_UNSPECIFIED", - "ACTIVE", - "DELETE_REQUESTED" - ], "description": "The organization's current lifecycle state. Assigned by the server.\n@OutputOnly", "type": "string", "enumDescriptions": [ "Unspecified state. This is only useful for distinguishing unset values.", "The normal and active state.", "The organization has been marked for deletion by the user." + ], + "enum": [ + "LIFECYCLE_STATE_UNSPECIFIED", + "ACTIVE", + "DELETE_REQUESTED" ] }, "owner": { - "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required.", - "$ref": "OrganizationOwner" + "$ref": "OrganizationOwner", + "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required." }, "name": { "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".", @@ -704,6 +777,8 @@ "id": "Organization" }, "ListAvailableOrgPolicyConstraintsResponse": { + "description": "The response returned from the ListAvailableOrgPolicyConstraints method.\nReturns all `Constraints` that could be set at this level of the hierarchy\n(contrast with the response from `ListPolicies`, which returns all policies\nwhich are set).", + "type": "object", "properties": { "constraints": { "description": "The collection of constraints that are settable on the request resource.", @@ -717,11 +792,10 @@ "type": "string" } }, - "id": "ListAvailableOrgPolicyConstraintsResponse", - "description": "The response returned from the ListAvailableOrgPolicyConstraints method.\nReturns all `Constraints` that could be set at this level of the hierarchy\n(contrast with the response from `ListPolicies`, which returns all policies\nwhich are set).", - "type": "object" + "id": "ListAvailableOrgPolicyConstraintsResponse" }, "ListPolicy": { + "id": "ListPolicy", "description": "Used in `policy_type` to specify how `list_policy` behaves at this\nresource.\n\nA `ListPolicy` can define specific values that are allowed or denied by\nsetting either the `allowed_values` or `denied_values` fields. It can also\nbe used to allow or deny all values, by setting the `all_values` field. If\n`all_values` is `ALL_VALUES_UNSPECIFIED`, exactly one of `allowed_values`\nor `denied_values` must be set (attempting to set both or neither will\nresult in a failed request). If `all_values` is set to either `ALLOW` or\n`DENY`, `allowed_values` and `denied_values` must be unset.", "type": "object", "properties": { @@ -761,8 +835,7 @@ }, "type": "array" } - }, - "id": "ListPolicy" + } }, "GetAncestryResponse": { "description": "Response from the GetAncestry method.", @@ -777,76 +850,6 @@ } }, "id": "GetAncestryResponse" - }, - "AuditLogConfig": { - "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", - "type": "object", - "properties": { - "exemptedMembers": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members." - }, - "logType": { - "enum": [ - "LOG_TYPE_UNSPECIFIED", - "ADMIN_READ", - "DATA_WRITE", - "DATA_READ" - ], - "description": "The log type that this config enables.", - "type": "string", - "enumDescriptions": [ - "Default case. Should never be this.", - "Admin reads. Example: CloudIAM getIamPolicy", - "Data writes. Example: CloudSQL Users create", - "Data reads. Example: CloudSQL Users list" - ] - } - }, - "id": "AuditLogConfig" - }, - "SearchOrganizationsRequest": { - "type": "object", - "properties": { - "pageToken": { - "description": "A pagination token returned from a previous call to `SearchOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "The maximum number of Organizations to return in the response.\nThis field is optional.", - "type": "integer" - }, - "filter": { - "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with\n`owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.", - "type": "string" - } - }, - "id": "SearchOrganizationsRequest", - "description": "The request sent to the `SearchOrganizations` method." - }, - "GetAncestryRequest": { - "properties": {}, - "id": "GetAncestryRequest", - "description": "The request sent to the\nGetAncestry\nmethod.", - "type": "object" - }, - "TestIamPermissionsRequest": { - "id": "TestIamPermissionsRequest", - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - } } }, "icons": { @@ -858,11 +861,11 @@ "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform.read-only": { - "description": "View your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-platform.read-only": { + "description": "View your data across Google Cloud Platform services" } } } @@ -877,104 +880,46 @@ "resources": { "organizations": { "methods": { - "clearOrgPolicy": { - "flatPath": "v1/organizations/{organizationsId}:clearOrgPolicy", - "path": "v1/{+resource}:clearOrgPolicy", - "id": "cloudresourcemanager.organizations.clearOrgPolicy", + "setIamPolicy": { + "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".\n\nAuthorization requires the Google IAM permission\n`resourcemanager.organizations.setIamPolicy` on the specified organization", "request": { - "$ref": "ClearOrgPolicyRequest" + "$ref": "SetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" }, - "description": "Clears a `Policy` from a resource.", - "httpMethod": "POST", "parameterOrder": [ "resource" ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], + "httpMethod": "POST", "parameters": { "resource": { "location": "path", - "description": "Name of the resource for the `Policy` to clear.", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", "type": "string", "required": true, "pattern": "^organizations/[^/]+$" } - } - }, - "setOrgPolicy": { - "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.", - "request": { - "$ref": "SetOrgPolicyRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "OrgPolicy" - }, - "parameters": { - "resource": { - "pattern": "^organizations/[^/]+$", - "location": "path", - "description": "Resource name of the resource to attach the `Policy`.", - "type": "string", - "required": true - } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/organizations/{organizationsId}:setOrgPolicy", - "path": "v1/{+resource}:setOrgPolicy", - "id": "cloudresourcemanager.organizations.setOrgPolicy" - }, - "setIamPolicy": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$", - "location": "path" - } - }, "flatPath": "v1/organizations/{organizationsId}:setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", "id": "cloudresourcemanager.organizations.setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".\n\nAuthorization requires the Google IAM permission\n`resourcemanager.organizations.setIamPolicy` on the specified organization" + "path": "v1/{+resource}:setIamPolicy" }, "listAvailableOrgPolicyConstraints": { - "id": "cloudresourcemanager.organizations.listAvailableOrgPolicyConstraints", - "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", "description": "Lists `Constraints` that could be applied on the specified resource.", "request": { "$ref": "ListAvailableOrgPolicyConstraintsRequest" }, - "response": { - "$ref": "ListAvailableOrgPolicyConstraintsResponse" - }, + "httpMethod": "POST", "parameterOrder": [ "resource" ], - "httpMethod": "POST", + "response": { + "$ref": "ListAvailableOrgPolicyConstraintsResponse" + }, "parameters": { "resource": { "description": "Name of the resource to list `Constraints` for.", @@ -988,27 +933,22 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1/organizations/{organizationsId}:listAvailableOrgPolicyConstraints" + "flatPath": "v1/organizations/{organizationsId}:listAvailableOrgPolicyConstraints", + "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", + "id": "cloudresourcemanager.organizations.listAvailableOrgPolicyConstraints" }, "listOrgPolicies": { - "flatPath": "v1/organizations/{organizationsId}:listOrgPolicies", - "path": "v1/{+resource}:listOrgPolicies", - "id": "cloudresourcemanager.organizations.listOrgPolicies", + "description": "Lists all the `Policies` set for a particular resource.", "request": { "$ref": "ListOrgPoliciesRequest" }, - "description": "Lists all the `Policies` set for a particular resource.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], "response": { "$ref": "ListOrgPoliciesResponse" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" + "parameterOrder": [ + "resource" ], + "httpMethod": "POST", "parameters": { "resource": { "description": "Name of the resource to list Policies for.", @@ -1017,7 +957,14 @@ "pattern": "^organizations/[^/]+$", "location": "path" } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/organizations/{organizationsId}:listOrgPolicies", + "id": "cloudresourcemanager.organizations.listOrgPolicies", + "path": "v1/{+resource}:listOrgPolicies" }, "getIamPolicy": { "httpMethod": "POST", @@ -1027,44 +974,11 @@ "response": { "$ref": "Policy" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/organizations/{organizationsId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "cloudresourcemanager.organizations.getIamPolicy", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".\n\nAuthorization requires the Google IAM permission\n`resourcemanager.organizations.getIamPolicy` on the specified organization" - }, - "getOrgPolicy": { - "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.", - "request": { - "$ref": "GetOrgPolicyRequest" - }, - "response": { - "$ref": "OrgPolicy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", "parameters": { "resource": { "pattern": "^organizations/[^/]+$", "location": "path", - "description": "Name of the resource the `Policy` is set on.", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", "required": true } @@ -1073,59 +987,65 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1/organizations/{organizationsId}:getOrgPolicy", - "id": "cloudresourcemanager.organizations.getOrgPolicy", - "path": "v1/{+resource}:getOrgPolicy" + "flatPath": "v1/organizations/{organizationsId}:getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", + "id": "cloudresourcemanager.organizations.getIamPolicy", + "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".\n\nAuthorization requires the Google IAM permission\n`resourcemanager.organizations.getIamPolicy` on the specified organization", + "request": { + "$ref": "GetIamPolicyRequest" + } }, - "search": { + "getOrgPolicy": { + "request": { + "$ref": "GetOrgPolicyRequest" + }, + "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.", "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "SearchOrganizationsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": {}, - "flatPath": "v1/organizations:search", - "path": "v1/organizations:search", - "id": "cloudresourcemanager.organizations.search", - "request": { - "$ref": "SearchOrganizationsRequest" - }, - "description": "Searches Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the\nresults.\n\nSearch will only return organizations on which the user has the permission\n`resourcemanager.organizations.get`" - }, - "getEffectiveOrgPolicy": { - "id": "cloudresourcemanager.organizations.getEffectiveOrgPolicy", - "path": "v1/{+resource}:getEffectiveOrgPolicy", - "request": { - "$ref": "GetEffectiveOrgPolicyRequest" - }, - "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.", - "response": { - "$ref": "OrgPolicy" - }, "parameterOrder": [ "resource" ], - "httpMethod": "POST", + "response": { + "$ref": "OrgPolicy" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { "resource": { - "description": "The name of the resource to start computing the effective `Policy`.", "type": "string", "required": true, "pattern": "^organizations/[^/]+$", - "location": "path" + "location": "path", + "description": "Name of the resource the `Policy` is set on." } }, - "flatPath": "v1/organizations/{organizationsId}:getEffectiveOrgPolicy" + "flatPath": "v1/organizations/{organizationsId}:getOrgPolicy", + "path": "v1/{+resource}:getOrgPolicy", + "id": "cloudresourcemanager.organizations.getOrgPolicy" + }, + "search": { + "description": "Searches Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the\nresults.\n\nSearch will only return organizations on which the user has the permission\n`resourcemanager.organizations.get`", + "request": { + "$ref": "SearchOrganizationsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "SearchOrganizationsResponse" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/organizations:search", + "path": "v1/organizations:search", + "id": "cloudresourcemanager.organizations.search" }, "get": { + "id": "cloudresourcemanager.organizations.get", + "path": "v1/{+name}", "description": "Fetches an Organization resource identified by the specified resource name.", "response": { "$ref": "Organization" @@ -1147,245 +1067,12 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v1/organizations/{organizationsId}", - "id": "cloudresourcemanager.organizations.get", - "path": "v1/{+name}" - }, - "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "pattern": "^organizations/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/organizations/{organizationsId}:testIamPermissions", - "id": "cloudresourcemanager.organizations.testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".\n\nThere are no permissions required for making this API call." - } - } - }, - "operations": { - "methods": { - "get": { - "id": "cloudresourcemanager.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^operations/.+$", - "location": "path" - } - }, - "flatPath": "v1/operations/{operationsId}" - } - } - }, - "liens": { - "methods": { - "create": { - "description": "Create a Lien which applies to the resource denoted by the `parent` field.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, applying to `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.\n\nNOTE: Some resources may limit the number of Liens which may be applied.", - "request": { - "$ref": "Lien" - }, - "response": { - "$ref": "Lien" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/liens", - "id": "cloudresourcemanager.liens.create", - "path": "v1/liens" - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "pattern": "^liens/.+$", - "location": "path", - "description": "The name/identifier of the Lien to delete.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/liens/{liensId}", - "id": "cloudresourcemanager.liens.delete", - "path": "v1/{+name}", - "description": "Delete a Lien by `name`.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`." - }, - "list": { - "description": "List all Liens applied to the `parent` resource.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.get`.", - "response": { - "$ref": "ListLiensResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "parameters": { - "parent": { - "description": "The name of the resource to list all attached Liens.\nFor example, `projects/1234`.", - "type": "string", - "location": "query" - }, - "pageToken": { - "description": "The `next_page_token` value returned from a previous List request, if any.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The maximum number of items to return. This is a suggestion for the server.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/liens", - "id": "cloudresourcemanager.liens.list", - "path": "v1/liens" - } - } - }, - "folders": { - "methods": { - "listOrgPolicies": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "ListOrgPoliciesResponse" - }, - "parameters": { - "resource": { - "description": "Name of the resource to list Policies for.", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/folders/{foldersId}:listOrgPolicies", - "path": "v1/{+resource}:listOrgPolicies", - "id": "cloudresourcemanager.folders.listOrgPolicies", - "description": "Lists all the `Policies` set for a particular resource.", - "request": { - "$ref": "ListOrgPoliciesRequest" - } - }, - "listAvailableOrgPolicyConstraints": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "ListAvailableOrgPolicyConstraintsResponse" - }, - "parameters": { - "resource": { - "description": "Name of the resource to list `Constraints` for.", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/folders/{foldersId}:listAvailableOrgPolicyConstraints", - "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", - "id": "cloudresourcemanager.folders.listAvailableOrgPolicyConstraints", - "description": "Lists `Constraints` that could be applied on the specified resource.", - "request": { - "$ref": "ListAvailableOrgPolicyConstraintsRequest" - } - }, - "getOrgPolicy": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "OrgPolicy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "pattern": "^folders/[^/]+$", - "location": "path", - "description": "Name of the resource the `Policy` is set on.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/folders/{foldersId}:getOrgPolicy", - "path": "v1/{+resource}:getOrgPolicy", - "id": "cloudresourcemanager.folders.getOrgPolicy", - "request": { - "$ref": "GetOrgPolicyRequest" - }, - "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write." + "flatPath": "v1/organizations/{organizationsId}" }, "getEffectiveOrgPolicy": { + "flatPath": "v1/organizations/{organizationsId}:getEffectiveOrgPolicy", "path": "v1/{+resource}:getEffectiveOrgPolicy", - "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy", + "id": "cloudresourcemanager.organizations.getEffectiveOrgPolicy", "request": { "$ref": "GetEffectiveOrgPolicyRequest" }, @@ -1403,16 +1090,349 @@ ], "parameters": { "resource": { + "location": "path", "description": "The name of the resource to start computing the effective `Policy`.", "type": "string", "required": true, + "pattern": "^organizations/[^/]+$" + } + } + }, + "testIamPermissions": { + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/organizations/{organizationsId}:testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "id": "cloudresourcemanager.organizations.testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".\n\nThere are no permissions required for making this API call." + }, + "clearOrgPolicy": { + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "Name of the resource for the `Policy` to clear.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/organizations/{organizationsId}:clearOrgPolicy", + "path": "v1/{+resource}:clearOrgPolicy", + "id": "cloudresourcemanager.organizations.clearOrgPolicy", + "request": { + "$ref": "ClearOrgPolicyRequest" + }, + "description": "Clears a `Policy` from a resource." + }, + "setOrgPolicy": { + "id": "cloudresourcemanager.organizations.setOrgPolicy", + "path": "v1/{+resource}:setOrgPolicy", + "request": { + "$ref": "SetOrgPolicyRequest" + }, + "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.", + "response": { + "$ref": "OrgPolicy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "description": "Resource name of the resource to attach the `Policy`.", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/organizations/{organizationsId}:setOrgPolicy" + } + } + }, + "operations": { + "methods": { + "get": { + "path": "v1/{+name}", + "id": "cloudresourcemanager.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "httpMethod": "GET", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^operations/.+$" + } + }, + "flatPath": "v1/operations/{operationsId}" + } + } + }, + "liens": { + "methods": { + "create": { + "flatPath": "v1/liens", + "id": "cloudresourcemanager.liens.create", + "path": "v1/liens", + "description": "Create a Lien which applies to the resource denoted by the `parent` field.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, applying to `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.\n\nNOTE: Some resources may limit the number of Liens which may be applied.", + "request": { + "$ref": "Lien" + }, + "response": { + "$ref": "Lien" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "delete": { + "parameters": { + "name": { + "pattern": "^liens/.+$", + "location": "path", + "description": "The name/identifier of the Lien to delete.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/liens/{liensId}", + "path": "v1/{+name}", + "id": "cloudresourcemanager.liens.delete", + "description": "Delete a Lien by `name`.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.updateLiens`.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + } + }, + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListLiensResponse" + }, + "parameterOrder": [], + "parameters": { + "parent": { + "type": "string", + "location": "query", + "description": "The name of the resource to list all attached Liens.\nFor example, `projects/1234`." + }, + "pageToken": { + "description": "The `next_page_token` value returned from a previous List request, if any.", + "type": "string", + "location": "query" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "The maximum number of items to return. This is a suggestion for the server." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/liens", + "path": "v1/liens", + "id": "cloudresourcemanager.liens.list", + "description": "List all Liens applied to the `parent` resource.\n\nCallers of this method will require permission on the `parent` resource.\nFor example, a Lien with a `parent` of `projects/1234` requires permission\n`resourcemanager.projects.get`." + } + } + }, + "folders": { + "methods": { + "listAvailableOrgPolicyConstraints": { + "id": "cloudresourcemanager.folders.listAvailableOrgPolicyConstraints", + "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", + "request": { + "$ref": "ListAvailableOrgPolicyConstraintsRequest" + }, + "description": "Lists `Constraints` that could be applied on the specified resource.", + "response": { + "$ref": "ListAvailableOrgPolicyConstraintsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "description": "Name of the resource to list `Constraints` for.", + "type": "string", + "required": true, "pattern": "^folders/[^/]+$", "location": "path" } }, - "flatPath": "v1/folders/{foldersId}:getEffectiveOrgPolicy" + "flatPath": "v1/folders/{foldersId}:listAvailableOrgPolicyConstraints" + }, + "listOrgPolicies": { + "response": { + "$ref": "ListOrgPoliciesResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "description": "Name of the resource to list Policies for.", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/folders/{foldersId}:listOrgPolicies", + "id": "cloudresourcemanager.folders.listOrgPolicies", + "path": "v1/{+resource}:listOrgPolicies", + "request": { + "$ref": "ListOrgPoliciesRequest" + }, + "description": "Lists all the `Policies` set for a particular resource." + }, + "getOrgPolicy": { + "response": { + "$ref": "OrgPolicy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "location": "path", + "description": "Name of the resource the `Policy` is set on.", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/folders/{foldersId}:getOrgPolicy", + "id": "cloudresourcemanager.folders.getOrgPolicy", + "path": "v1/{+resource}:getOrgPolicy", + "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.", + "request": { + "$ref": "GetOrgPolicyRequest" + } + }, + "getEffectiveOrgPolicy": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "location": "path", + "description": "The name of the resource to start computing the effective `Policy`.", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$" + } + }, + "flatPath": "v1/folders/{foldersId}:getEffectiveOrgPolicy", + "id": "cloudresourcemanager.folders.getEffectiveOrgPolicy", + "path": "v1/{+resource}:getEffectiveOrgPolicy", + "request": { + "$ref": "GetEffectiveOrgPolicyRequest" + }, + "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.", + "response": { + "$ref": "OrgPolicy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST" }, "clearOrgPolicy": { + "flatPath": "v1/folders/{foldersId}:clearOrgPolicy", + "id": "cloudresourcemanager.folders.clearOrgPolicy", + "path": "v1/{+resource}:clearOrgPolicy", + "request": { + "$ref": "ClearOrgPolicyRequest" + }, + "description": "Clears a `Policy` from a resource.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "resource": { "location": "path", @@ -1421,39 +1441,16 @@ "required": true, "pattern": "^folders/[^/]+$" } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/folders/{foldersId}:clearOrgPolicy", - "id": "cloudresourcemanager.folders.clearOrgPolicy", - "path": "v1/{+resource}:clearOrgPolicy", - "description": "Clears a `Policy` from a resource.", - "request": { - "$ref": "ClearOrgPolicyRequest" - }, - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST" + } }, "setOrgPolicy": { - "path": "v1/{+resource}:setOrgPolicy", - "id": "cloudresourcemanager.folders.setOrgPolicy", - "request": { - "$ref": "SetOrgPolicyRequest" - }, - "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], "response": { "$ref": "OrgPolicy" }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -1466,39 +1463,182 @@ "location": "path" } }, - "flatPath": "v1/folders/{foldersId}:setOrgPolicy" + "flatPath": "v1/folders/{foldersId}:setOrgPolicy", + "id": "cloudresourcemanager.folders.setOrgPolicy", + "path": "v1/{+resource}:setOrgPolicy", + "request": { + "$ref": "SetOrgPolicyRequest" + }, + "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`." } } }, "projects": { "methods": { - "delete": { + "list": { + "response": { + "$ref": "ListProjectsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.", + "type": "integer", + "location": "query" + }, + "filter": { + "type": "string", + "location": "query", + "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n+ `name`\n+ `id`\n+ \u003ccode\u003elabels.\u003cem\u003ekey\u003c/em\u003e\u003c/code\u003e where *key* is the name of a label\n\nSome examples of using labels as filters:\n\n|Filter|Description|\n|------|-----------|\n|name:how*|The project's name starts with \"how\".|\n|name:Howl|The project's name is `Howl` or `howl`.|\n|name:HOWL|Equivalent to above.|\n|NAME:howl|Equivalent to above.|\n|labels.color:*|The project has the label `color`.|\n|labels.color:red|The project's label `color` has the value `red`.|\n|labels.color:red labels.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.\n\nIf you specify a filter that has both `parent.type` and `parent.id`, then\nthe `resourcemanager.projects.list` permission is checked on the parent.\nIf the user has this permission, all projects under the parent will be\nreturned after remaining filters have been applied. If the user lacks this\npermission, then all projects for which the user has the\n`resourcemanager.projects.get` permission will be returned after remaining\nfilters have been applied. If no filter is specified, the call will return\nprojects for which the user has `resourcemanager.projects.get` permissions.\n\nOptional." + }, + "pageToken": { + "description": "A pagination token returned from a previous call to ListProjects\nthat indicates from where listing should continue.\n\nOptional.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1/projects", + "id": "cloudresourcemanager.projects.list", + "path": "v1/projects", + "description": "Lists Projects that are visible to the user and satisfy the\nspecified filter. This method returns Projects in an unspecified order.\nNew Projects do not necessarily appear at the end of the list." + }, + "setOrgPolicy": { + "request": { + "$ref": "SetOrgPolicyRequest" + }, + "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.", + "response": { + "$ref": "OrgPolicy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "location": "path", + "description": "Resource name of the resource to attach the `Policy`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}:setOrgPolicy", + "id": "cloudresourcemanager.projects.setOrgPolicy", + "path": "v1/{+resource}:setOrgPolicy" + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Operation" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects", + "path": "v1/projects", + "id": "cloudresourcemanager.projects.create", + "description": "Request that a new Project be created. The result is an Operation which\ncan be used to track the creation process. It is automatically deleted\nafter a few hours, so there is no need to call DeleteOperation.\n\nOur SLO permits Project creation to take up to 30 seconds at the 90th\npercentile. As of 2016-08-29, we are observing 6 seconds 50th percentile\nlatency. 95th percentile latency is around 11 seconds. We recommend\npolling at the 5th second with an exponential backoff.\n\nAuthorization requires the Google IAM permission\n`resourcemanager.projects.create` on the specified parent for the new\nproject.", + "request": { + "$ref": "Project" + } + }, + "listOrgPolicies": { + "request": { + "$ref": "ListOrgPoliciesRequest" + }, + "description": "Lists all the `Policies` set for a particular resource.", + "response": { + "$ref": "ListOrgPoliciesResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "location": "path", + "description": "Name of the resource to list Policies for.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}:listOrgPolicies", + "id": "cloudresourcemanager.projects.listOrgPolicies", + "path": "v1/{+resource}:listOrgPolicies" + }, + "get": { + "flatPath": "v1/projects/{projectId}", + "id": "cloudresourcemanager.projects.get", "path": "v1/projects/{projectId}", - "id": "cloudresourcemanager.projects.delete", - "description": "Marks the Project identified by the specified\n`project_id` (for example, `my-project-123`) for deletion.\nThis method will only affect the Project if the following criteria are met:\n\n+ The Project does not have a billing account associated with it.\n+ The Project has a lifecycle state of\nACTIVE.\n\nThis method changes the Project's lifecycle state from\nACTIVE\nto DELETE_REQUESTED.\nThe deletion starts at an unspecified time,\nat which point the Project is no longer accessible.\n\nUntil the deletion completes, you can check the lifecycle state\nchecked by retrieving the Project with GetProject,\nand the Project remains visible to ListProjects.\nHowever, you cannot update the project.\n\nAfter the deletion completes, the Project is not retrievable by\nthe GetProject and\nListProjects methods.\n\nThe caller must have modify permissions for this Project.", - "httpMethod": "DELETE", + "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", + "response": { + "$ref": "Project" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "projectId": { + "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "getAncestry": { + "path": "v1/projects/{projectId}:getAncestry", + "id": "cloudresourcemanager.projects.getAncestry", + "request": { + "$ref": "GetAncestryRequest" + }, + "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", + "httpMethod": "POST", "parameterOrder": [ "projectId" ], "response": { - "$ref": "Empty" + "$ref": "GetAncestryResponse" }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], "parameters": { "projectId": { - "description": "The Project ID (for example, `foo-bar-123`).\n\nRequired.", + "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", "type": "string", "required": true, "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}" + "flatPath": "v1/projects/{projectId}:getAncestry" }, - "clearOrgPolicy": { + "testIamPermissions": { "response": { - "$ref": "Empty" + "$ref": "TestIamPermissionsResponse" }, "parameterOrder": [ "resource" @@ -1506,22 +1646,74 @@ "httpMethod": "POST", "parameters": { "resource": { - "pattern": "^projects/[^/]+$", "location": "path", - "description": "Name of the resource for the `Policy` to clear.", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1/projects/{resource}:testIamPermissions", + "id": "cloudresourcemanager.projects.testIamPermissions", + "path": "v1/projects/{resource}:testIamPermissions", + "description": "Returns permissions that a caller has on the specified Project.\n\nThere are no permissions required for making this API call.", + "request": { + "$ref": "TestIamPermissionsRequest" + } + }, + "delete": { + "id": "cloudresourcemanager.projects.delete", + "path": "v1/projects/{projectId}", + "description": "Marks the Project identified by the specified\n`project_id` (for example, `my-project-123`) for deletion.\nThis method will only affect the Project if the following criteria are met:\n\n+ The Project does not have a billing account associated with it.\n+ The Project has a lifecycle state of\nACTIVE.\n\nThis method changes the Project's lifecycle state from\nACTIVE\nto DELETE_REQUESTED.\nThe deletion starts at an unspecified time,\nat which point the Project is no longer accessible.\n\nUntil the deletion completes, you can check the lifecycle state\nchecked by retrieving the Project with GetProject,\nand the Project remains visible to ListProjects.\nHowever, you cannot update the project.\n\nAfter the deletion completes, the Project is not retrievable by\nthe GetProject and\nListProjects methods.\n\nThe caller must have modify permissions for this Project.", + "response": { + "$ref": "Empty" + }, + "httpMethod": "DELETE", + "parameterOrder": [ + "projectId" + ], "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Project ID (for example, `foo-bar-123`).\n\nRequired.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}" + }, + "clearOrgPolicy": { "flatPath": "v1/projects/{projectsId}:clearOrgPolicy", - "id": "cloudresourcemanager.projects.clearOrgPolicy", "path": "v1/{+resource}:clearOrgPolicy", - "description": "Clears a `Policy` from a resource.", + "id": "cloudresourcemanager.projects.clearOrgPolicy", "request": { "$ref": "ClearOrgPolicyRequest" + }, + "description": "Clears a `Policy` from a resource.", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "location": "path", + "description": "Name of the resource for the `Policy` to clear.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } } }, "setIamPolicy": { @@ -1552,77 +1744,70 @@ } }, "listAvailableOrgPolicyConstraints": { + "flatPath": "v1/projects/{projectsId}:listAvailableOrgPolicyConstraints", + "id": "cloudresourcemanager.projects.listAvailableOrgPolicyConstraints", + "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", + "description": "Lists `Constraints` that could be applied on the specified resource.", "request": { "$ref": "ListAvailableOrgPolicyConstraintsRequest" }, - "description": "Lists `Constraints` that could be applied on the specified resource.", - "httpMethod": "POST", + "response": { + "$ref": "ListAvailableOrgPolicyConstraintsResponse" + }, "parameterOrder": [ "resource" ], - "response": { - "$ref": "ListAvailableOrgPolicyConstraintsResponse" + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "Name of the resource to list `Constraints` for.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Name of the resource to list `Constraints` for.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}:listAvailableOrgPolicyConstraints", - "path": "v1/{+resource}:listAvailableOrgPolicyConstraints", - "id": "cloudresourcemanager.projects.listAvailableOrgPolicyConstraints" + ] }, "getIamPolicy": { + "flatPath": "v1/projects/{resource}:getIamPolicy", + "id": "cloudresourcemanager.projects.getIamPolicy", + "path": "v1/projects/{resource}:getIamPolicy", "request": { "$ref": "GetIamPolicyRequest" }, "description": "Returns the IAM access control policy for the specified Project.\nPermission is denied if the policy or the resource does not exist.\n\nAuthorization requires the Google IAM permission\n`resourcemanager.projects.getIamPolicy` on the project", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], "response": { "$ref": "Policy" }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": { "resource": { + "location": "path", "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", - "required": true, - "location": "path" + "required": true } - }, - "flatPath": "v1/projects/{resource}:getIamPolicy", - "path": "v1/projects/{resource}:getIamPolicy", - "id": "cloudresourcemanager.projects.getIamPolicy" + } }, "getOrgPolicy": { - "response": { - "$ref": "OrgPolicy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", "parameters": { "resource": { + "location": "path", "description": "Name of the resource the `Policy` is set on.", "type": "string", "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" + "pattern": "^projects/[^/]+$" } }, "scopes": [ @@ -1630,21 +1815,61 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "flatPath": "v1/projects/{projectsId}:getOrgPolicy", - "id": "cloudresourcemanager.projects.getOrgPolicy", "path": "v1/{+resource}:getOrgPolicy", + "id": "cloudresourcemanager.projects.getOrgPolicy", "description": "Gets a `Policy` on a resource.\n\nIf no `Policy` is set on the resource, a `Policy` is returned with default\nvalues including `POLICY_TYPE_NOT_SET` for the `policy_type oneof`. The\n`etag` value can be used with `SetOrgPolicy()` to create or update a\n`Policy` during read-modify-write.", "request": { "$ref": "GetOrgPolicyRequest" - } - }, - "undelete": { + }, "httpMethod": "POST", "parameterOrder": [ - "projectId" + "resource" ], + "response": { + "$ref": "OrgPolicy" + } + }, + "getEffectiveOrgPolicy": { + "flatPath": "v1/projects/{projectsId}:getEffectiveOrgPolicy", + "path": "v1/{+resource}:getEffectiveOrgPolicy", + "id": "cloudresourcemanager.projects.getEffectiveOrgPolicy", + "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.", + "request": { + "$ref": "GetEffectiveOrgPolicyRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "OrgPolicy" + }, + "parameters": { + "resource": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The name of the resource to start computing the effective `Policy`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ] + }, + "undelete": { + "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project.", + "request": { + "$ref": "UndeleteProjectRequest" + }, "response": { "$ref": "Empty" }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", "parameters": { "projectId": { "location": "path", @@ -1657,43 +1882,11 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectId}:undelete", - "path": "v1/projects/{projectId}:undelete", "id": "cloudresourcemanager.projects.undelete", - "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project.", - "request": { - "$ref": "UndeleteProjectRequest" - } - }, - "getEffectiveOrgPolicy": { - "request": { - "$ref": "GetEffectiveOrgPolicyRequest" - }, - "description": "Gets the effective `Policy` on a resource. This is the result of merging\n`Policies` in the resource hierarchy. The returned `Policy` will not have\nan `etag`set because it is a computed `Policy` across multiple resources.", - "response": { - "$ref": "OrgPolicy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The name of the resource to start computing the effective `Policy`." - } - }, - "flatPath": "v1/projects/{projectsId}:getEffectiveOrgPolicy", - "id": "cloudresourcemanager.projects.getEffectiveOrgPolicy", - "path": "v1/{+resource}:getEffectiveOrgPolicy" + "path": "v1/projects/{projectId}:undelete" }, "update": { + "flatPath": "v1/projects/{projectId}", "id": "cloudresourcemanager.projects.update", "path": "v1/projects/{projectId}", "request": { @@ -1717,277 +1910,12 @@ "required": true, "location": "path" } - }, - "flatPath": "v1/projects/{projectId}" - }, - "list": { - "httpMethod": "GET", - "parameterOrder": [], - "response": { - "$ref": "ListProjectsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "A pagination token returned from a previous call to ListProjects\nthat indicates from where listing should continue.\n\nOptional.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.", - "type": "integer", - "location": "query" - }, - "filter": { - "location": "query", - "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n+ `name`\n+ `id`\n+ \u003ccode\u003elabels.\u003cem\u003ekey\u003c/em\u003e\u003c/code\u003e where *key* is the name of a label\n\nSome examples of using labels as filters:\n\n|Filter|Description|\n|------|-----------|\n|name:how*|The project's name starts with \"how\".|\n|name:Howl|The project's name is `Howl` or `howl`.|\n|name:HOWL|Equivalent to above.|\n|NAME:howl|Equivalent to above.|\n|labels.color:*|The project has the label `color`.|\n|labels.color:red|The project's label `color` has the value `red`.|\n|labels.color:red labels.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.\n\nIf you specify a filter that has both `parent.type` and `parent.id`, then\nthe `resourcemanager.projects.list` permission is checked on the parent.\nIf the user has this permission, all projects under the parent will be\nreturned after remaining filters have been applied. If the user lacks this\npermission, then all projects for which the user has the\n`resourcemanager.projects.get` permission will be returned after remaining\nfilters have been applied. If no filter is specified, the call will return\nprojects for which the user has `resourcemanager.projects.get` permissions.\n\nOptional.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects", - "path": "v1/projects", - "id": "cloudresourcemanager.projects.list", - "description": "Lists Projects that are visible to the user and satisfy the\nspecified filter. This method returns Projects in an unspecified order.\nNew Projects do not necessarily appear at the end of the list." - }, - "setOrgPolicy": { - "id": "cloudresourcemanager.projects.setOrgPolicy", - "path": "v1/{+resource}:setOrgPolicy", - "request": { - "$ref": "SetOrgPolicyRequest" - }, - "description": "Updates the specified `Policy` on the resource. Creates a new `Policy` for\nthat `Constraint` on the resource if one does not exist.\n\nNot supplying an `etag` on the request `Policy` results in an unconditional\nwrite of the `Policy`.", - "response": { - "$ref": "OrgPolicy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "location": "path", - "description": "Resource name of the resource to attach the `Policy`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}:setOrgPolicy" - }, - "create": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1/projects", - "id": "cloudresourcemanager.projects.create", - "path": "v1/projects", - "request": { - "$ref": "Project" - }, - "description": "Request that a new Project be created. The result is an Operation which\ncan be used to track the creation process. It is automatically deleted\nafter a few hours, so there is no need to call DeleteOperation.\n\nOur SLO permits Project creation to take up to 30 seconds at the 90th\npercentile. As of 2016-08-29, we are observing 6 seconds 50th percentile\nlatency. 95th percentile latency is around 11 seconds. We recommend\npolling at the 5th second with an exponential backoff.\n\nAuthorization requires the Google IAM permission\n`resourcemanager.projects.create` on the specified parent for the new\nproject." - }, - "listOrgPolicies": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "ListOrgPoliciesResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Name of the resource to list Policies for." - } - }, - "flatPath": "v1/projects/{projectsId}:listOrgPolicies", - "path": "v1/{+resource}:listOrgPolicies", - "id": "cloudresourcemanager.projects.listOrgPolicies", - "request": { - "$ref": "ListOrgPoliciesRequest" - }, - "description": "Lists all the `Policies` set for a particular resource." - }, - "get": { - "response": { - "$ref": "Project" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "projectId": { - "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}", - "id": "cloudresourcemanager.projects.get", - "path": "v1/projects/{projectId}", - "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project." - }, - "getAncestry": { - "flatPath": "v1/projects/{projectId}:getAncestry", - "path": "v1/projects/{projectId}:getAncestry", - "id": "cloudresourcemanager.projects.getAncestry", - "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", - "request": { - "$ref": "GetAncestryRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "GetAncestryResponse" - }, - "parameters": { - "projectId": { - "location": "path", - "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ] - }, - "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/projects/{resource}:testIamPermissions", - "id": "cloudresourcemanager.projects.testIamPermissions", - "path": "v1/projects/{resource}:testIamPermissions", - "description": "Returns permissions that a caller has on the specified Project.\n\nThere are no permissions required for making this API call.", - "request": { - "$ref": "TestIamPermissionsRequest" } } } } }, "parameters": { - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "type": "string", - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "key": { - "type": "string", - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, "upload_protocol": { "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", @@ -1998,11 +1926,83 @@ "default": "true", "type": "boolean", "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format." + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" } }, "version": "v1", - "baseUrl": "https://cloudresourcemanager.googleapis.com/", - "servicePath": "", - "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.", - "kind": "discovery#restDescription" + "baseUrl": "https://cloudresourcemanager.googleapis.com/" } diff --git a/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-gen.go b/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-gen.go index 1652bc2..9ba4854 100644 --- a/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-gen.go +++ b/vendor/google.golang.org/api/cloudresourcemanager/v1/cloudresourcemanager-gen.go @@ -1377,8 +1377,8 @@ func (s *ListProjectsResponse) MarshalJSON() ([]byte, error) { type Operation struct { // Done: If the value is `false`, it means the operation is still in // progress. - // If true, the operation is completed, and either `error` or `response` - // is + // If `true`, the operation is completed, and either `error` or + // `response` is // available. Done bool `json:"done,omitempty"` diff --git a/vendor/google.golang.org/api/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json b/vendor/google.golang.org/api/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json index 97a41e9..1e2520d 100644 --- a/vendor/google.golang.org/api/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json +++ b/vendor/google.golang.org/api/cloudresourcemanager/v1beta1/cloudresourcemanager-api.json @@ -1,888 +1,16 @@ { - "ownerName": "Google", - "resources": { - "projects": { - "methods": { - "list": { - "description": "Lists Projects that are visible to the user and satisfy the\nspecified filter. This method returns Projects in an unspecified order.\nNew Projects do not necessarily appear at the end of the list.", - "httpMethod": "GET", - "response": { - "$ref": "ListProjectsResponse" - }, - "parameterOrder": [], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "A pagination token returned from a previous call to ListProjects\nthat indicates from where listing should continue.\n\nOptional.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.", - "type": "integer", - "location": "query" - }, - "filter": { - "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n+ `name`\n+ `id`\n+ \u003ccode\u003elabels.\u003cem\u003ekey\u003c/em\u003e\u003c/code\u003e where *key* is the name of a label\n\nSome examples of using labels as filters:\n\n|Filter|Description|\n|------|-----------|\n|name:how*|The project's name starts with \"how\".|\n|name:Howl|The project's name is `Howl` or `howl`.|\n|name:HOWL|Equivalent to above.|\n|NAME:howl|Equivalent to above.|\n|labels.color:*|The project has the label `color`.|\n|labels.color:red|The project's label `color` has the value `red`.|\n|labels.color:red labels.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.\n\nIf you specify a filter that has both `parent.type` and `parent.id`, then\nthe `resourcemanager.projects.list` permission is checked on the parent.\nIf the user has this permission, all projects under the parent will be\nreturned after remaining filters have been applied. If the user lacks this\npermission, then all projects for which the user has the\n`resourcemanager.projects.get` permission will be returned after remaining\nfilters have been applied. If no filter is specified, the call will return\nprojects for which the user has `resourcemanager.projects.get` permissions.\n\nOptional.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1beta1/projects", - "path": "v1beta1/projects", - "id": "cloudresourcemanager.projects.list" - }, - "setIamPolicy": { - "flatPath": "v1beta1/projects/{resource}:setIamPolicy", - "id": "cloudresourcemanager.projects.setIamPolicy", - "path": "v1beta1/projects/{resource}:setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the IAM access control policy for the specified Project. Replaces\nany existing policy.\n\nThe following constraints apply when using `setIamPolicy()`:\n\n+ Project does not support `allUsers` and `allAuthenticatedUsers` as\n`members` in a `Binding` of a `Policy`.\n\n+ The owner role can be granted only to `user` and `serviceAccount`.\n\n+ Service accounts can be made owners of a project directly\nwithout any restrictions. However, to be added as an owner, a user must be\ninvited via Cloud Platform console and must accept the invitation.\n\n+ A user cannot be granted the owner role using `setIamPolicy()`. The user\nmust be granted the owner role using the Cloud Platform Console and must\nexplicitly accept the invitation.\n\n+ Invitations to grant the owner role cannot be sent using\n`setIamPolicy()`; they must be sent only using the Cloud Platform Console.\n\n+ Membership changes that leave the project without any owners that have\naccepted the Terms of Service (ToS) will be rejected.\n\n+ If the project is not part of an organization, there must be at least\none owner who has accepted the Terms of Service (ToS) agreement in the\npolicy. Calling `setIamPolicy()` to remove the last ToS-accepted owner\nfrom the policy will fail. This restriction also applies to legacy\nprojects that no longer have owners who have accepted the ToS. Edits to\nIAM policies will be rejected until the lack of a ToS-accepting owner is\nrectified.\n\n+ Calling this method requires enabling the App Engine Admin API.\n\nNote: Removing service accounts from policies or changing their roles\ncan render services completely inoperable. It is important to understand\nhow the service account is being used before removing or updating its\nroles.", - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - } - }, - "create": { - "description": "Creates a Project resource.\n\nInitially, the Project resource is owned by its creator exclusively.\nThe creator can later grant permission to others to read or update the\nProject.\n\nSeveral APIs are activated automatically for the Project, including\nGoogle Cloud Storage.", - "request": { - "$ref": "Project" - }, - "response": { - "$ref": "Project" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": { - "useLegacyStack": { - "location": "query", - "description": "A safety hatch to opt out of the new reliable project creation process.", - "type": "boolean" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta1/projects", - "id": "cloudresourcemanager.projects.create", - "path": "v1beta1/projects" - }, - "getIamPolicy": { - "id": "cloudresourcemanager.projects.getIamPolicy", - "path": "v1beta1/projects/{resource}:getIamPolicy", - "description": "Returns the IAM access control policy for the specified Project.\nPermission is denied if the policy or the resource does not exist.", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "type": "string", - "required": true, - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta1/projects/{resource}:getIamPolicy" - }, - "undelete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "location": "path", - "description": "The project ID (for example, `foo-bar-123`).\n\nRequired.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta1/projects/{projectId}:undelete", - "id": "cloudresourcemanager.projects.undelete", - "path": "v1beta1/projects/{projectId}:undelete", - "request": { - "$ref": "UndeleteProjectRequest" - }, - "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project." - }, - "get": { - "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", - "response": { - "$ref": "Project" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "GET", - "parameters": { - "projectId": { - "location": "path", - "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta1/projects/{projectId}", - "id": "cloudresourcemanager.projects.get", - "path": "v1beta1/projects/{projectId}" - }, - "getAncestry": { - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "GetAncestryResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "projectId": { - "location": "path", - "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta1/projects/{projectId}:getAncestry", - "path": "v1beta1/projects/{projectId}:getAncestry", - "id": "cloudresourcemanager.projects.getAncestry", - "request": { - "$ref": "GetAncestryRequest" - }, - "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project." - }, - "update": { - "httpMethod": "PUT", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "Project" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "location": "path", - "description": "The project ID (for example, `my-project-123`).\n\nRequired.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta1/projects/{projectId}", - "path": "v1beta1/projects/{projectId}", - "id": "cloudresourcemanager.projects.update", - "request": { - "$ref": "Project" - }, - "description": "Updates the attributes of the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have modify permissions for this Project." - }, - "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta1/projects/{resource}:testIamPermissions", - "id": "cloudresourcemanager.projects.testIamPermissions", - "path": "v1beta1/projects/{resource}:testIamPermissions", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified Project." - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "description": "The Project ID (for example, `foo-bar-123`).\n\nRequired.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1beta1/projects/{projectId}", - "id": "cloudresourcemanager.projects.delete", - "path": "v1beta1/projects/{projectId}", - "description": "Marks the Project identified by the specified\n`project_id` (for example, `my-project-123`) for deletion.\nThis method will only affect the Project if the following criteria are met:\n\n+ The Project does not have a billing account associated with it.\n+ The Project has a lifecycle state of\nACTIVE.\n\nThis method changes the Project's lifecycle state from\nACTIVE\nto DELETE_REQUESTED.\nThe deletion starts at an unspecified time, at which point the project is\nno longer accessible.\n\nUntil the deletion completes, you can check the lifecycle state\nchecked by retrieving the Project with GetProject,\nand the Project remains visible to ListProjects.\nHowever, you cannot update the project.\n\nAfter the deletion completes, the Project is not retrievable by\nthe GetProject and\nListProjects methods.\n\nThe caller must have modify permissions for this Project." - } - } - }, - "organizations": { - "methods": { - "list": { - "description": "Lists Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the list.", - "response": { - "$ref": "ListOrganizationsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "A pagination token returned from a previous call to `ListOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The maximum number of Organizations to return in the response.\nThis field is optional.", - "type": "integer" - }, - "filter": { - "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta1/organizations", - "id": "cloudresourcemanager.organizations.list", - "path": "v1beta1/organizations" - }, - "setIamPolicy": { - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "pattern": "^organizations/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta1/organizations/{organizationsId}:setIamPolicy", - "path": "v1beta1/{+resource}:setIamPolicy", - "id": "cloudresourcemanager.organizations.setIamPolicy" - }, - "getIamPolicy": { - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1beta1/organizations/{organizationsId}:getIamPolicy", - "id": "cloudresourcemanager.organizations.getIamPolicy", - "path": "v1beta1/{+resource}:getIamPolicy", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\"." - }, - "get": { - "description": "Fetches an Organization resource identified by the specified resource name.", - "response": { - "$ref": "Organization" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "pattern": "^organizations/[^/]+$", - "location": "path", - "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".", - "type": "string", - "required": true - }, - "organizationId": { - "description": "The id of the Organization resource to fetch.\nThis field is deprecated and will be removed in v1. Use name instead.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta1/organizations/{organizationsId}", - "id": "cloudresourcemanager.organizations.get", - "path": "v1beta1/{+name}" - }, - "update": { - "flatPath": "v1beta1/organizations/{organizationsId}", - "id": "cloudresourcemanager.organizations.update", - "path": "v1beta1/{+name}", - "description": "Updates an Organization resource identified by the specified resource name.", - "request": { - "$ref": "Organization" - }, - "response": { - "$ref": "Organization" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "parameters": { - "name": { - "location": "path", - "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "testIamPermissions": { - "id": "cloudresourcemanager.organizations.testIamPermissions", - "path": "v1beta1/{+resource}:testIamPermissions", - "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\".", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1beta1/organizations/{organizationsId}:testIamPermissions" - } - } - } - }, - "parameters": { - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "key": { - "type": "string", - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Returns response with indentations and line breaks." - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - } - }, - "version": "v1beta1", - "baseUrl": "https://cloudresourcemanager.googleapis.com/", - "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.", - "kind": "discovery#restDescription", - "servicePath": "", - "basePath": "", - "revision": "20170823", - "documentationLink": "https://cloud.google.com/resource-manager", "id": "cloudresourcemanager:v1beta1", + "revision": "20170828", + "documentationLink": "https://cloud.google.com/resource-manager", "discoveryVersion": "v1", "schemas": { - "AuditConfig": { - "properties": { - "service": { - "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", - "type": "string" - }, - "auditLogConfigs": { - "description": "The configuration for logging of each type of permission.\nNext ID: 4", - "items": { - "$ref": "AuditLogConfig" - }, - "type": "array" - } - }, - "id": "AuditConfig", - "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", - "type": "object" - }, - "Ancestor": { - "properties": { - "resourceId": { - "$ref": "ResourceId", - "description": "Resource id of the ancestor." - } - }, - "id": "Ancestor", - "description": "Identifying information for a single ancestor of a project.", - "type": "object" - }, - "ListOrganizationsResponse": { - "id": "ListOrganizationsResponse", - "description": "The response returned from the `ListOrganizations` method.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.", - "type": "string" - }, - "organizations": { - "description": "The list of Organizations that matched the list query, possibly paginated.", - "items": { - "$ref": "Organization" - }, - "type": "array" - } - } - }, - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "updateMask": { - "format": "google-fieldmask", - "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", - "type": "string" - }, - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - } - }, - "id": "SetIamPolicyRequest" - }, - "Binding": { - "description": "Associates `members` with a `role`.", - "type": "object", - "properties": { - "members": { - "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", - "items": { - "type": "string" - }, - "type": "array" - }, - "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" - } - }, - "id": "Binding" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "Organization": { - "description": "The root node in the resource hierarchy to which a particular entity's\n(e.g., company) resources belong.", - "type": "object", - "properties": { - "lifecycleState": { - "enum": [ - "LIFECYCLE_STATE_UNSPECIFIED", - "ACTIVE", - "DELETE_REQUESTED" - ], - "description": "The organization's current lifecycle state. Assigned by the server.\n@OutputOnly", - "type": "string", - "enumDescriptions": [ - "Unspecified state. This is only useful for distinguishing unset values.", - "The normal and active state.", - "The organization has been marked for deletion by the user." - ] - }, - "displayName": { - "type": "string", - "description": "A friendly string to be used to refer to the Organization in the UI.\nAssigned by the server, set to the primary domain of the G Suite\ncustomer that owns the organization.\n@OutputOnly" - }, - "creationTime": { - "format": "google-datetime", - "description": "Timestamp when the Organization was created. Assigned by the server.\n@OutputOnly", - "type": "string" - }, - "owner": { - "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required.", - "$ref": "OrganizationOwner" - }, - "name": { - "type": "string", - "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\"." - }, - "organizationId": { - "description": "An immutable id for the Organization that is assigned on creation. This\nshould be omitted when creating a new Organization.\nThis field is read-only.\nThis field is deprecated and will be removed in v1. Use name instead.", - "type": "string" - } - }, - "id": "Organization" - }, - "UndeleteProjectRequest": { - "description": "The request sent to the UndeleteProject\nmethod.", - "type": "object", - "properties": {}, - "id": "UndeleteProjectRequest" - }, - "ProjectCreationStatus": { - "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.", - "type": "object", - "properties": { - "ready": { - "description": "True if the project creation process is complete.", - "type": "boolean" - }, - "gettable": { - "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete.", - "type": "boolean" - }, - "createTime": { - "format": "google-datetime", - "description": "Creation time of the project creation workflow.", - "type": "string" - } - }, - "id": "ProjectCreationStatus" - }, - "TestIamPermissionsResponse": { - "description": "Response message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsResponse" - }, - "GetIamPolicyRequest": { - "description": "Request message for `GetIamPolicy` method.", - "type": "object", - "properties": {}, - "id": "GetIamPolicyRequest" - }, - "OrganizationOwner": { - "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.", - "type": "object", - "properties": { - "directoryCustomerId": { - "description": "The Google for Work customer id used in the Directory API.", - "type": "string" - } - }, - "id": "OrganizationOwner" - }, - "GetAncestryResponse": { - "id": "GetAncestryResponse", - "description": "Response from the GetAncestry method.", - "type": "object", - "properties": { - "ancestor": { - "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.", - "items": { - "$ref": "Ancestor" - }, - "type": "array" - } - } - }, - "AuditLogConfig": { - "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", - "type": "object", - "properties": { - "exemptedMembers": { - "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", - "items": { - "type": "string" - }, - "type": "array" - }, - "logType": { - "enumDescriptions": [ - "Default case. Should never be this.", - "Admin reads. Example: CloudIAM getIamPolicy", - "Data writes. Example: CloudSQL Users create", - "Data reads. Example: CloudSQL Users list" - ], - "enum": [ - "LOG_TYPE_UNSPECIFIED", - "ADMIN_READ", - "DATA_WRITE", - "DATA_READ" - ], - "description": "The log type that this config enables.", - "type": "string" - } - }, - "id": "AuditLogConfig" - }, - "ListProjectsResponse": { - "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.", - "type": "string" - }, - "projects": { - "description": "The list of Projects that matched the list filter. This list can\nbe paginated.", - "items": { - "$ref": "Project" - }, - "type": "array" - } - }, - "id": "ListProjectsResponse" - }, - "GetAncestryRequest": { - "properties": {}, - "id": "GetAncestryRequest", - "description": "The request sent to the\nGetAncestry\nmethod.", - "type": "object" - }, - "Project": { - "description": "A Project is a high-level Google Cloud Platform entity. It is a\ncontainer for ACLs, APIs, App Engine Apps, VMs, and other\nGoogle Cloud Platform resources.", - "type": "object", - "properties": { - "lifecycleState": { - "enum": [ - "LIFECYCLE_STATE_UNSPECIFIED", - "ACTIVE", - "DELETE_REQUESTED", - "DELETE_IN_PROGRESS" - ], - "description": "The Project lifecycle state.\n\nRead-only.", - "type": "string", - "enumDescriptions": [ - "Unspecified state. This is only used/useful for distinguishing\nunset values.", - "The normal and active state.", - "The project has been marked for deletion by the user\n(by invoking DeleteProject)\nor by the system (Google Cloud Platform).\nThis can generally be reversed by invoking UndeleteProject.", - "This lifecycle state is no longer used and is not returned by the API." - ] - }, - "projectNumber": { - "format": "int64", - "description": "The number uniquely identifying the project.\n\nExample: \u003ccode\u003e415104041262\u003c/code\u003e\nRead-only.", - "type": "string" - }, - "parent": { - "$ref": "ResourceId", - "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write." - }, - "labels": { - "description": "The labels associated with this Project.\n\nLabel keys must be between 1 and 63 characters long and must conform\nto the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?.\n\nLabel values must be between 0 and 63 characters long and must conform\nto the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?.\n\nNo more than 256 labels can be associated with a given resource.\n\nClients should store labels in a representation such as JSON that does not\ndepend on specific characters being disallowed.\n\nExample: \u003ccode\u003e\"environment\" : \"dev\"\u003c/code\u003e\nRead-write.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "createTime": { - "format": "google-datetime", - "description": "Creation time.\n\nRead-only.", - "type": "string" - }, - "name": { - "description": "The user-assigned display name of the Project.\nIt must be 4 to 30 characters.\nAllowed characters are: lowercase and uppercase letters, numbers,\nhyphen, single-quote, double-quote, space, and exclamation point.\n\nExample: \u003ccode\u003eMy Project\u003c/code\u003e\nRead-write.", - "type": "string" - }, - "projectId": { - "description": "The unique, user-assigned ID of the Project.\nIt must be 6 to 30 lowercase letters, digits, or hyphens.\nIt must start with a letter.\nTrailing hyphens are prohibited.\n\nExample: \u003ccode\u003etokyo-rain-123\u003c/code\u003e\nRead-only after creation.", - "type": "string" - } - }, - "id": "Project" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, "FolderOperationError": { "description": "A classification of the Folder Operation error.", "type": "object", "properties": { "errorMessageId": { + "description": "The type of operation error experienced.", + "type": "string", "enumDescriptions": [ "The error type was unrecognized or unspecified.", "The attempted action would violate the max folder depth constraint.", @@ -906,9 +34,7 @@ "FOLDER_BEING_MOVED_VIOLATION", "FOLDER_TO_DELETE_NON_EMPTY_VIOLATION", "DELETED_FOLDER_HEIGHT_VIOLATION" - ], - "description": "The type of operation error experienced.", - "type": "string" + ] } }, "id": "FolderOperationError" @@ -918,8 +44,19 @@ "description": "Metadata describing a long running folder operation", "type": "object", "properties": { + "sourceParent": { + "type": "string", + "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE." + }, + "displayName": { + "description": "The display name of the folder.", + "type": "string" + }, + "destinationParent": { + "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.", + "type": "string" + }, "operationType": { - "description": "The type of this operation.", "type": "string", "enumDescriptions": [ "Operation type not specified.", @@ -930,19 +67,8 @@ "OPERATION_TYPE_UNSPECIFIED", "CREATE", "MOVE" - ] - }, - "sourceParent": { - "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.", - "type": "string" - }, - "displayName": { - "description": "The display name of the folder.", - "type": "string" - }, - "destinationParent": { - "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.", - "type": "string" + ], + "description": "The type of this operation." } } }, @@ -978,19 +104,339 @@ "id": "Policy" }, "ResourceId": { - "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.", - "type": "object", "properties": { "type": { "description": "Required field representing the resource type this id is for.\nAt present, the valid types are \"project\", \"folder\", and \"organization\".", "type": "string" }, "id": { - "type": "string", - "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's." + "description": "Required field for the type-specific id. This should correspond to the id\nused in the type-specific API's.", + "type": "string" } }, - "id": "ResourceId" + "id": "ResourceId", + "description": "A container to reference an id for any resource type. A `resource` in Google\nCloud Platform is a generic term for something you (a developer) may want to\ninteract with through one of our API's. Some examples are an App Engine app,\na Compute Engine instance, a Cloud SQL database, and so on.", + "type": "object" + }, + "AuditConfig": { + "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", + "type": "object", + "properties": { + "service": { + "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", + "type": "string" + }, + "auditLogConfigs": { + "items": { + "$ref": "AuditLogConfig" + }, + "type": "array", + "description": "The configuration for logging of each type of permission.\nNext ID: 4" + } + }, + "id": "AuditConfig" + }, + "Ancestor": { + "type": "object", + "properties": { + "resourceId": { + "$ref": "ResourceId", + "description": "Resource id of the ancestor." + } + }, + "id": "Ancestor", + "description": "Identifying information for a single ancestor of a project." + }, + "ListOrganizationsResponse": { + "type": "object", + "properties": { + "organizations": { + "description": "The list of Organizations that matched the list query, possibly paginated.", + "items": { + "$ref": "Organization" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A pagination token to be used to retrieve the next page of results. If the\nresult is too large to fit within the page size specified in the request,\nthis field will be set with a token that can be used to fetch the next page\nof results. If this field is empty, it indicates that this response\ncontains the last page of results.", + "type": "string" + } + }, + "id": "ListOrganizationsResponse", + "description": "The response returned from the `ListOrganizations` method." + }, + "SetIamPolicyRequest": { + "description": "Request message for `SetIamPolicy` method.", + "type": "object", + "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", + "type": "string" + } + }, + "id": "SetIamPolicyRequest" + }, + "Binding": { + "description": "Associates `members` with a `role`.", + "type": "object", + "properties": { + "members": { + "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "role": { + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", + "type": "string" + } + }, + "id": "Binding" + }, + "Empty": { + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {} + }, + "UndeleteProjectRequest": { + "description": "The request sent to the UndeleteProject\nmethod.", + "type": "object", + "properties": {}, + "id": "UndeleteProjectRequest" + }, + "Organization": { + "description": "The root node in the resource hierarchy to which a particular entity's\n(e.g., company) resources belong.", + "type": "object", + "properties": { + "displayName": { + "description": "A friendly string to be used to refer to the Organization in the UI.\nAssigned by the server, set to the primary domain of the G Suite\ncustomer that owns the organization.\n@OutputOnly", + "type": "string" + }, + "creationTime": { + "format": "google-datetime", + "description": "Timestamp when the Organization was created. Assigned by the server.\n@OutputOnly", + "type": "string" + }, + "owner": { + "$ref": "OrganizationOwner", + "description": "The owner of this Organization. The owner should be specified on\ncreation. Once set, it cannot be changed.\nThis field is required." + }, + "name": { + "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".", + "type": "string" + }, + "organizationId": { + "description": "An immutable id for the Organization that is assigned on creation. This\nshould be omitted when creating a new Organization.\nThis field is read-only.\nThis field is deprecated and will be removed in v1. Use name instead.", + "type": "string" + }, + "lifecycleState": { + "enumDescriptions": [ + "Unspecified state. This is only useful for distinguishing unset values.", + "The normal and active state.", + "The organization has been marked for deletion by the user." + ], + "enum": [ + "LIFECYCLE_STATE_UNSPECIFIED", + "ACTIVE", + "DELETE_REQUESTED" + ], + "description": "The organization's current lifecycle state. Assigned by the server.\n@OutputOnly", + "type": "string" + } + }, + "id": "Organization" + }, + "ProjectCreationStatus": { + "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.", + "type": "object", + "properties": { + "ready": { + "description": "True if the project creation process is complete.", + "type": "boolean" + }, + "gettable": { + "type": "boolean", + "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete." + }, + "createTime": { + "type": "string", + "format": "google-datetime", + "description": "Creation time of the project creation workflow." + } + }, + "id": "ProjectCreationStatus" + }, + "GetIamPolicyRequest": { + "description": "Request message for `GetIamPolicy` method.", + "type": "object", + "properties": {}, + "id": "GetIamPolicyRequest" + }, + "TestIamPermissionsResponse": { + "description": "Response message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse" + }, + "OrganizationOwner": { + "description": "The entity that owns an Organization. The lifetime of the Organization and\nall of its descendants are bound to the `OrganizationOwner`. If the\n`OrganizationOwner` is deleted, the Organization and all its descendants will\nbe deleted.", + "type": "object", + "properties": { + "directoryCustomerId": { + "description": "The Google for Work customer id used in the Directory API.", + "type": "string" + } + }, + "id": "OrganizationOwner" + }, + "GetAncestryResponse": { + "type": "object", + "properties": { + "ancestor": { + "description": "Ancestors are ordered from bottom to top of the resource hierarchy. The\nfirst ancestor is the project itself, followed by the project's parent,\netc.", + "items": { + "$ref": "Ancestor" + }, + "type": "array" + } + }, + "id": "GetAncestryResponse", + "description": "Response from the GetAncestry method." + }, + "ListProjectsResponse": { + "description": "A page of the response received from the\nListProjects\nmethod.\n\nA paginated response where more pages are available has\n`next_page_token` set. This token can be used in a subsequent request to\nretrieve the next request page.", + "type": "object", + "properties": { + "projects": { + "description": "The list of Projects that matched the list filter. This list can\nbe paginated.", + "items": { + "$ref": "Project" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Pagination token.\n\nIf the result set is too large to fit in a single response, this token\nis returned. It encodes the position of the current result cursor.\nFeeding this value into a new list request with the `page_token` parameter\ngives the next page of the results.\n\nWhen `next_page_token` is not filled in, there is no next page and\nthe list returned is the last page in the result set.\n\nPagination tokens have a limited lifetime.", + "type": "string" + } + }, + "id": "ListProjectsResponse" + }, + "AuditLogConfig": { + "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", + "type": "object", + "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, + "logType": { + "enumDescriptions": [ + "Default case. Should never be this.", + "Admin reads. Example: CloudIAM getIamPolicy", + "Data writes. Example: CloudSQL Users create", + "Data reads. Example: CloudSQL Users list" + ], + "enum": [ + "LOG_TYPE_UNSPECIFIED", + "ADMIN_READ", + "DATA_WRITE", + "DATA_READ" + ], + "description": "The log type that this config enables.", + "type": "string" + } + }, + "id": "AuditLogConfig" + }, + "GetAncestryRequest": { + "id": "GetAncestryRequest", + "description": "The request sent to the\nGetAncestry\nmethod.", + "type": "object", + "properties": {} + }, + "Project": { + "properties": { + "lifecycleState": { + "enumDescriptions": [ + "Unspecified state. This is only used/useful for distinguishing\nunset values.", + "The normal and active state.", + "The project has been marked for deletion by the user\n(by invoking DeleteProject)\nor by the system (Google Cloud Platform).\nThis can generally be reversed by invoking UndeleteProject.", + "This lifecycle state is no longer used and is not returned by the API." + ], + "enum": [ + "LIFECYCLE_STATE_UNSPECIFIED", + "ACTIVE", + "DELETE_REQUESTED", + "DELETE_IN_PROGRESS" + ], + "description": "The Project lifecycle state.\n\nRead-only.", + "type": "string" + }, + "projectNumber": { + "format": "int64", + "description": "The number uniquely identifying the project.\n\nExample: \u003ccode\u003e415104041262\u003c/code\u003e\nRead-only.", + "type": "string" + }, + "parent": { + "description": "An optional reference to a parent Resource.\n\nThe only supported parent type is \"organization\". Once set, the parent\ncannot be modified. The `parent` can be set on creation or using the\n`UpdateProject` method; the end user must have the\n`resourcemanager.projects.create` permission on the parent.\n\nRead-write.", + "$ref": "ResourceId" + }, + "createTime": { + "format": "google-datetime", + "description": "Creation time.\n\nRead-only.", + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "The labels associated with this Project.\n\nLabel keys must be between 1 and 63 characters long and must conform\nto the following regular expression: \\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?.\n\nLabel values must be between 0 and 63 characters long and must conform\nto the regular expression (\\[a-z\\](\\[-a-z0-9\\]*\\[a-z0-9\\])?)?.\n\nNo more than 256 labels can be associated with a given resource.\n\nClients should store labels in a representation such as JSON that does not\ndepend on specific characters being disallowed.\n\nExample: \u003ccode\u003e\"environment\" : \"dev\"\u003c/code\u003e\nRead-write.", + "type": "object" + }, + "name": { + "description": "The user-assigned display name of the Project.\nIt must be 4 to 30 characters.\nAllowed characters are: lowercase and uppercase letters, numbers,\nhyphen, single-quote, double-quote, space, and exclamation point.\n\nExample: \u003ccode\u003eMy Project\u003c/code\u003e\nRead-write.", + "type": "string" + }, + "projectId": { + "description": "The unique, user-assigned ID of the Project.\nIt must be 6 to 30 lowercase letters, digits, or hyphens.\nIt must start with a letter.\nTrailing hyphens are prohibited.\n\nExample: \u003ccode\u003etokyo-rain-123\u003c/code\u003e\nRead-only after creation.", + "type": "string" + } + }, + "id": "Project", + "description": "A Project is a high-level Google Cloud Platform entity. It is a\ncontainer for ACLs, APIs, App Engine Apps, VMs, and other\nGoogle Cloud Platform resources.", + "type": "object" + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" } }, "protocol": "rest", @@ -1016,5 +462,559 @@ "name": "cloudresourcemanager", "batchPath": "batch", "fullyEncodeReservedExpansion": true, - "title": "Google Cloud Resource Manager API" + "title": "Google Cloud Resource Manager API", + "ownerName": "Google", + "resources": { + "projects": { + "methods": { + "list": { + "description": "Lists Projects that are visible to the user and satisfy the\nspecified filter. This method returns Projects in an unspecified order.\nNew Projects do not necessarily appear at the end of the list.", + "response": { + "$ref": "ListProjectsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageToken": { + "description": "A pagination token returned from a previous call to ListProjects\nthat indicates from where listing should continue.\n\nOptional.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The maximum number of Projects to return in the response.\nThe server can return fewer Projects than requested.\nIf unspecified, server picks an appropriate default.\n\nOptional.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n+ `name`\n+ `id`\n+ \u003ccode\u003elabels.\u003cem\u003ekey\u003c/em\u003e\u003c/code\u003e where *key* is the name of a label\n\nSome examples of using labels as filters:\n\n|Filter|Description|\n|------|-----------|\n|name:how*|The project's name starts with \"how\".|\n|name:Howl|The project's name is `Howl` or `howl`.|\n|name:HOWL|Equivalent to above.|\n|NAME:howl|Equivalent to above.|\n|labels.color:*|The project has the label `color`.|\n|labels.color:red|The project's label `color` has the value `red`.|\n|labels.color:red labels.size:big|The project's label `color` has the value `red` and its label `size` has the value `big`.\n\nIf you specify a filter that has both `parent.type` and `parent.id`, then\nthe `resourcemanager.projects.list` permission is checked on the parent.\nIf the user has this permission, all projects under the parent will be\nreturned after remaining filters have been applied. If the user lacks this\npermission, then all projects for which the user has the\n`resourcemanager.projects.get` permission will be returned after remaining\nfilters have been applied. If no filter is specified, the call will return\nprojects for which the user has `resourcemanager.projects.get` permissions.\n\nOptional.", + "type": "string" + } + }, + "flatPath": "v1beta1/projects", + "id": "cloudresourcemanager.projects.list", + "path": "v1beta1/projects" + }, + "setIamPolicy": { + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the IAM access control policy for the specified Project. Replaces\nany existing policy.\n\nThe following constraints apply when using `setIamPolicy()`:\n\n+ Project does not support `allUsers` and `allAuthenticatedUsers` as\n`members` in a `Binding` of a `Policy`.\n\n+ The owner role can be granted only to `user` and `serviceAccount`.\n\n+ Service accounts can be made owners of a project directly\nwithout any restrictions. However, to be added as an owner, a user must be\ninvited via Cloud Platform console and must accept the invitation.\n\n+ A user cannot be granted the owner role using `setIamPolicy()`. The user\nmust be granted the owner role using the Cloud Platform Console and must\nexplicitly accept the invitation.\n\n+ Invitations to grant the owner role cannot be sent using\n`setIamPolicy()`; they must be sent only using the Cloud Platform Console.\n\n+ Membership changes that leave the project without any owners that have\naccepted the Terms of Service (ToS) will be rejected.\n\n+ If the project is not part of an organization, there must be at least\none owner who has accepted the Terms of Service (ToS) agreement in the\npolicy. Calling `setIamPolicy()` to remove the last ToS-accepted owner\nfrom the policy will fail. This restriction also applies to legacy\nprojects that no longer have owners who have accepted the ToS. Edits to\nIAM policies will be rejected until the lack of a ToS-accepting owner is\nrectified.\n\n+ Calling this method requires enabling the App Engine Admin API.\n\nNote: Removing service accounts from policies or changing their roles\ncan render services completely inoperable. It is important to understand\nhow the service account is being used before removing or updating its\nroles.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{resource}:setIamPolicy", + "id": "cloudresourcemanager.projects.setIamPolicy", + "path": "v1beta1/projects/{resource}:setIamPolicy" + }, + "create": { + "description": "Creates a Project resource.\n\nInitially, the Project resource is owned by its creator exclusively.\nThe creator can later grant permission to others to read or update the\nProject.\n\nSeveral APIs are activated automatically for the Project, including\nGoogle Cloud Storage.", + "request": { + "$ref": "Project" + }, + "response": { + "$ref": "Project" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": { + "useLegacyStack": { + "description": "A safety hatch to opt out of the new reliable project creation process.", + "type": "boolean", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects", + "id": "cloudresourcemanager.projects.create", + "path": "v1beta1/projects" + }, + "getIamPolicy": { + "description": "Returns the IAM access control policy for the specified Project.\nPermission is denied if the policy or the resource does not exist.", + "request": { + "$ref": "GetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta1/projects/{resource}:getIamPolicy", + "id": "cloudresourcemanager.projects.getIamPolicy", + "path": "v1beta1/projects/{resource}:getIamPolicy" + }, + "undelete": { + "flatPath": "v1beta1/projects/{projectId}:undelete", + "path": "v1beta1/projects/{projectId}:undelete", + "id": "cloudresourcemanager.projects.undelete", + "request": { + "$ref": "UndeleteProjectRequest" + }, + "description": "Restores the Project identified by the specified\n`project_id` (for example, `my-project-123`).\nYou can only use this method for a Project that has a lifecycle state of\nDELETE_REQUESTED.\nAfter deletion starts, the Project cannot be restored.\n\nThe caller must have modify permissions for this Project.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The project ID (for example, `foo-bar-123`).\n\nRequired.", + "type": "string", + "required": true + } + } + }, + "get": { + "description": "Retrieves the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", + "response": { + "$ref": "Project" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Project ID (for example, `my-project-123`).\n\nRequired.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}", + "id": "cloudresourcemanager.projects.get", + "path": "v1beta1/projects/{projectId}" + }, + "getAncestry": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId" + ], + "response": { + "$ref": "GetAncestryResponse" + }, + "parameters": { + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Project ID (for example, `my-project-123`).\n\nRequired." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta1/projects/{projectId}:getAncestry", + "path": "v1beta1/projects/{projectId}:getAncestry", + "id": "cloudresourcemanager.projects.getAncestry", + "description": "Gets a list of ancestors in the resource hierarchy for the Project\nidentified by the specified `project_id` (for example, `my-project-123`).\n\nThe caller must have read permissions for this Project.", + "request": { + "$ref": "GetAncestryRequest" + } + }, + "update": { + "flatPath": "v1beta1/projects/{projectId}", + "id": "cloudresourcemanager.projects.update", + "path": "v1beta1/projects/{projectId}", + "description": "Updates the attributes of the Project identified by the specified\n`project_id` (for example, `my-project-123`).\n\nThe caller must have modify permissions for this Project.", + "request": { + "$ref": "Project" + }, + "response": { + "$ref": "Project" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "PUT", + "parameters": { + "projectId": { + "location": "path", + "description": "The project ID (for example, `my-project-123`).\n\nRequired.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "testIamPermissions": { + "flatPath": "v1beta1/projects/{resource}:testIamPermissions", + "id": "cloudresourcemanager.projects.testIamPermissions", + "path": "v1beta1/projects/{resource}:testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified Project.", + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "delete": { + "description": "Marks the Project identified by the specified\n`project_id` (for example, `my-project-123`) for deletion.\nThis method will only affect the Project if the following criteria are met:\n\n+ The Project does not have a billing account associated with it.\n+ The Project has a lifecycle state of\nACTIVE.\n\nThis method changes the Project's lifecycle state from\nACTIVE\nto DELETE_REQUESTED.\nThe deletion starts at an unspecified time, at which point the project is\nno longer accessible.\n\nUntil the deletion completes, you can check the lifecycle state\nchecked by retrieving the Project with GetProject,\nand the Project remains visible to ListProjects.\nHowever, you cannot update the project.\n\nAfter the deletion completes, the Project is not retrievable by\nthe GetProject and\nListProjects methods.\n\nThe caller must have modify permissions for this Project.", + "httpMethod": "DELETE", + "parameterOrder": [ + "projectId" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "description": "The Project ID (for example, `foo-bar-123`).\n\nRequired.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}", + "path": "v1beta1/projects/{projectId}", + "id": "cloudresourcemanager.projects.delete" + } + } + }, + "organizations": { + "methods": { + "get": { + "description": "Fetches an Organization resource identified by the specified resource name.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Organization" + }, + "parameters": { + "name": { + "description": "The resource name of the Organization to fetch, e.g. \"organizations/1234\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + }, + "organizationId": { + "description": "The id of the Organization resource to fetch.\nThis field is deprecated and will be removed in v1. Use name instead.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta1/organizations/{organizationsId}", + "path": "v1beta1/{+name}", + "id": "cloudresourcemanager.organizations.get" + }, + "update": { + "response": { + "$ref": "Organization" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "parameters": { + "name": { + "location": "path", + "description": "Output Only. The resource name of the organization. This is the\norganization's relative path in the API. Its format is\n\"organizations/[organization_id]\". For example, \"organizations/1234\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/organizations/{organizationsId}", + "id": "cloudresourcemanager.organizations.update", + "path": "v1beta1/{+name}", + "description": "Updates an Organization resource identified by the specified resource name.", + "request": { + "$ref": "Organization" + } + }, + "testIamPermissions": { + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "resource": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/organizations/{organizationsId}:testIamPermissions", + "id": "cloudresourcemanager.organizations.testIamPermissions", + "path": "v1beta1/{+resource}:testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified Organization.\nThe `resource` field should be the organization's resource name,\ne.g. \"organizations/123\"." + }, + "list": { + "response": { + "$ref": "ListOrganizationsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "filter": { + "location": "query", + "description": "An optional query string used to filter the Organizations to return in\nthe response. Filter rules are case-insensitive.\n\n\nOrganizations may be filtered by `owner.directoryCustomerId` or by\n`domain`, where the domain is a Google for Work domain, for example:\n\n|Filter|Description|\n|------|-----------|\n|owner.directorycustomerid:123456789|Organizations with `owner.directory_customer_id` equal to `123456789`.|\n|domain:google.com|Organizations corresponding to the domain `google.com`.|\n\nThis field is optional.", + "type": "string" + }, + "pageToken": { + "description": "A pagination token returned from a previous call to `ListOrganizations`\nthat indicates from where listing should continue.\nThis field is optional.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The maximum number of Organizations to return in the response.\nThis field is optional.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta1/organizations", + "id": "cloudresourcemanager.organizations.list", + "path": "v1beta1/organizations", + "description": "Lists Organization resources that are visible to the user and satisfy\nthe specified filter. This method returns Organizations in an unspecified\norder. New Organizations do not necessarily appear at the end of the list." + }, + "setIamPolicy": { + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on an Organization resource. Replaces any\nexisting policy. The `resource` field should be the organization's resource\nname, e.g. \"organizations/123\".", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/organizations/{organizationsId}:setIamPolicy", + "path": "v1beta1/{+resource}:setIamPolicy", + "id": "cloudresourcemanager.organizations.setIamPolicy" + }, + "getIamPolicy": { + "path": "v1beta1/{+resource}:getIamPolicy", + "id": "cloudresourcemanager.organizations.getIamPolicy", + "description": "Gets the access control policy for an Organization resource. May be empty\nif no such policy or resource exists. The `resource` field should be the\norganization's resource name, e.g. \"organizations/123\".", + "request": { + "$ref": "GetIamPolicyRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v1beta1/organizations/{organizationsId}:getIamPolicy" + } + } + } + }, + "parameters": { + "pp": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Pretty-print response." + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "type": "string", + "location": "query", + "description": "Selector specifying which fields to include in a partial response." + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + } + }, + "version": "v1beta1", + "baseUrl": "https://cloudresourcemanager.googleapis.com/", + "servicePath": "", + "kind": "discovery#restDescription", + "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.", + "basePath": "" } diff --git a/vendor/google.golang.org/api/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json b/vendor/google.golang.org/api/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json index 6a8f1c3..137014c 100644 --- a/vendor/google.golang.org/api/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json +++ b/vendor/google.golang.org/api/cloudresourcemanager/v2beta1/cloudresourcemanager-api.json @@ -1,69 +1,7 @@ { - "ownerDomain": "google.com", - "name": "cloudresourcemanager", - "batchPath": "batch", - "fullyEncodeReservedExpansion": true, - "title": "Google Cloud Resource Manager API", - "ownerName": "Google", "resources": { "folders": { "methods": { - "move": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^folders/[^/]+$", - "location": "path", - "description": "The resource name of the Folder to move.\nMust be of the form folders/{folder_id}", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/folders/{foldersId}:move", - "id": "cloudresourcemanager.folders.move", - "path": "v2beta1/{+name}:move", - "request": { - "$ref": "MoveFolderRequest" - }, - "description": "Moves a Folder under a new resource parent.\nReturns an Operation which can be used to track the progress of the\nfolder move workflow.\nUpon success the Operation.response field will be populated with the\nmoved Folder.\nUpon failure, a FolderOperationError categorizing the failure cause will\nbe returned - if the failure occurs synchronously then the\nFolderOperationError will be returned via the Status.details field\nand if it occurs asynchronously then the FolderOperation will be returned\nvia the the Operation.error field.\nIn addition, the Operation.metadata field will be populated with a\nFolderOperation message as an aid to stateless clients.\nFolder moves will be rejected if they violate either the naming, height\nor fanout constraints described in the [CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.move` permission on the\nfolder's current and proposed new parent." - }, - "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2beta1/folders/{foldersId}:testIamPermissions", - "id": "cloudresourcemanager.folders.testIamPermissions", - "path": "v2beta1/{+resource}:testIamPermissions", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified Folder.\nThe `resource` field should be the Folder's resource name,\ne.g. \"folders/1234\".\n\nThere are no permissions required for making this API call." - }, "delete": { "response": { "$ref": "Folder" @@ -90,44 +28,48 @@ "description": "Requests deletion of a Folder. The Folder is moved into the\n[DELETE_REQUESTED] state immediately, and is deleted approximately 30 days\nlater. This method may only be called on an empty Folder in the [ACTIVE]\nstate, where a Folder is empty if it doesn't contain any Folders or\nProjects in the [ACTIVE] state.\nThe caller must have `resourcemanager.folders.delete` permission on the\nidentified folder." }, "list": { - "id": "cloudresourcemanager.folders.list", - "path": "v2beta1/folders", - "description": "Lists the Folders that are direct descendants of supplied parent resource.\nList provides a strongly consistent view of the Folders underneath\nthe specified parent resource.\nList returns Folders sorted based upon the (ascending) lexical ordering\nof their display_name.\nThe caller must have `resourcemanager.folders.list` permission on the\nidentified parent.", - "parameterOrder": [], - "httpMethod": "GET", "response": { "$ref": "ListFoldersResponse" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], + "parameterOrder": [], + "httpMethod": "GET", "parameters": { - "pageToken": { - "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates where this listing should continue from.\nThis field is optional.", + "parent": { + "description": "The resource name of the Organization or Folder whose Folders are\nbeing listed.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.\nAccess to this method is controlled by checking the\n`resourcemanager.folders.list` permission on the `parent`.", "type": "string", "location": "query" }, + "showDeleted": { + "location": "query", + "description": "Controls whether Folders in the [DELETE_REQUESTED} state should\nbe returned.", + "type": "boolean" + }, + "pageToken": { + "location": "query", + "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates where this listing should continue from.\nThis field is optional.", + "type": "string" + }, "pageSize": { "format": "int32", "description": "The maximum number of Folders to return in the response.\nThis field is optional.", "type": "integer", "location": "query" - }, - "parent": { - "location": "query", - "description": "The resource name of the Organization or Folder whose Folders are\nbeing listed.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.\nAccess to this method is controlled by checking the\n`resourcemanager.folders.list` permission on the `parent`.", - "type": "string" - }, - "showDeleted": { - "description": "Controls whether Folders in the [DELETE_REQUESTED} state should\nbe returned.", - "type": "boolean", - "location": "query" } }, - "flatPath": "v2beta1/folders" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "flatPath": "v2beta1/folders", + "id": "cloudresourcemanager.folders.list", + "path": "v2beta1/folders", + "description": "Lists the Folders that are direct descendants of supplied parent resource.\nList provides a strongly consistent view of the Folders underneath\nthe specified parent resource.\nList returns Folders sorted based upon the (ascending) lexical ordering\nof their display_name.\nThe caller must have `resourcemanager.folders.list` permission on the\nidentified parent." }, "setIamPolicy": { + "description": "Sets the access control policy on a Folder, replacing any existing policy.\nThe `resource` field should be the Folder's resource name, e.g.\n\"folders/1234\".\nThe caller must have `resourcemanager.folders.setIamPolicy` permission\non the identified folder.", + "request": { + "$ref": "SetIamPolicyRequest" + }, "response": { "$ref": "Policy" }, @@ -135,9 +77,6 @@ "resource" ], "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "resource": { "pattern": "^folders/[^/]+$", @@ -147,13 +86,12 @@ "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v2beta1/folders/{foldersId}:setIamPolicy", "id": "cloudresourcemanager.folders.setIamPolicy", - "path": "v2beta1/{+resource}:setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on a Folder, replacing any existing policy.\nThe `resource` field should be the Folder's resource name, e.g.\n\"folders/1234\".\nThe caller must have `resourcemanager.folders.setIamPolicy` permission\non the identified folder." + "path": "v2beta1/{+resource}:setIamPolicy" }, "create": { "response": { @@ -163,9 +101,9 @@ "httpMethod": "POST", "parameters": { "parent": { - "description": "The resource name of the new Folder's parent.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`.", "type": "string", - "location": "query" + "location": "query", + "description": "The resource name of the new Folder's parent.\nMust be of the form `folders/{folder_id}` or `organizations/{org_id}`." } }, "scopes": [ @@ -180,10 +118,6 @@ } }, "getIamPolicy": { - "request": { - "$ref": "GetIamPolicyRequest" - }, - "description": "Gets the access control policy for a Folder. The returned policy may be\nempty if no such policy or resource exists. The `resource` field should\nbe the Folder's resource name, e.g. \"folders/1234\".\nThe caller must have `resourcemanager.folders.getIamPolicy` permission\non the identified folder.", "response": { "$ref": "Policy" }, @@ -191,43 +125,51 @@ "resource" ], "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$", + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "parameters": { - "resource": { - "pattern": "^folders/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, "flatPath": "v2beta1/folders/{foldersId}:getIamPolicy", "id": "cloudresourcemanager.folders.getIamPolicy", - "path": "v2beta1/{+resource}:getIamPolicy" + "path": "v2beta1/{+resource}:getIamPolicy", + "description": "Gets the access control policy for a Folder. The returned policy may be\nempty if no such policy or resource exists. The `resource` field should\nbe the Folder's resource name, e.g. \"folders/1234\".\nThe caller must have `resourcemanager.folders.getIamPolicy` permission\non the identified folder.", + "request": { + "$ref": "GetIamPolicyRequest" + } }, "search": { + "request": { + "$ref": "SearchFoldersRequest" + }, + "description": "Search for folders that match specific filter criteria.\nSearch provides an eventually consistent view of the folders a user has\naccess to which meet the specified filter criteria.\n\nThis will only return folders on which the caller has the\npermission `resourcemanager.folders.get`.", + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "SearchFoldersResponse" }, - "parameterOrder": [], - "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], "parameters": {}, "flatPath": "v2beta1/folders:search", - "id": "cloudresourcemanager.folders.search", "path": "v2beta1/folders:search", - "request": { - "$ref": "SearchFoldersRequest" - }, - "description": "Search for folders that match specific filter criteria.\nSearch provides an eventually consistent view of the folders a user has\naccess to which meet the specified filter criteria.\n\nThis will only return folders on which the caller has the\npermission `resourcemanager.folders.get`." + "id": "cloudresourcemanager.folders.search" }, "undelete": { + "description": "Cancels the deletion request for a Folder. This method may only be\ncalled on a Folder in the [DELETE_REQUESTED] state.\nIn order to succeed, the Folder's parent must be in the [ACTIVE] state.\nIn addition, reintroducing the folder into the tree must not violate\nfolder naming, height and fanout constraints described in the\n[CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.undelete` permission on the\nidentified folder.", + "request": { + "$ref": "UndeleteFolderRequest" + }, "httpMethod": "POST", "parameterOrder": [ "name" @@ -235,71 +177,63 @@ "response": { "$ref": "Folder" }, + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$", + "location": "path", + "description": "The resource name of the Folder to undelete.\nMust be of the form `folders/{folder_id}`." + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": { - "name": { - "pattern": "^folders/[^/]+$", - "location": "path", - "description": "The resource name of the Folder to undelete.\nMust be of the form `folders/{folder_id}`.", - "type": "string", - "required": true - } - }, "flatPath": "v2beta1/folders/{foldersId}:undelete", "path": "v2beta1/{+name}:undelete", - "id": "cloudresourcemanager.folders.undelete", - "request": { - "$ref": "UndeleteFolderRequest" - }, - "description": "Cancels the deletion request for a Folder. This method may only be\ncalled on a Folder in the [DELETE_REQUESTED] state.\nIn order to succeed, the Folder's parent must be in the [ACTIVE] state.\nIn addition, reintroducing the folder into the tree must not violate\nfolder naming, height and fanout constraints described in the\n[CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.undelete` permission on the\nidentified folder." + "id": "cloudresourcemanager.folders.undelete" }, "get": { - "path": "v2beta1/{+name}", + "flatPath": "v2beta1/folders/{foldersId}", "id": "cloudresourcemanager.folders.get", + "path": "v2beta1/{+name}", "description": "Retrieves a Folder identified by the supplied resource name.\nValid Folder resource names have the format `folders/{folder_id}`\n(for example, `folders/1234`).\nThe caller must have `resourcemanager.folders.get` permission on the\nidentified folder.", - "httpMethod": "GET", "response": { "$ref": "Folder" }, "parameterOrder": [ "name" ], - "parameters": { - "name": { - "description": "The resource name of the Folder to retrieve.\nMust be of the form `folders/{folder_id}`.", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - }, + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "flatPath": "v2beta1/folders/{foldersId}" + "parameters": { + "name": { + "location": "path", + "description": "The resource name of the Folder to retrieve.\nMust be of the form `folders/{folder_id}`.", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$" + } + } }, "patch": { - "description": "Updates a Folder, changing its display_name.\nChanges to the folder display_name will be rejected if they violate either\nthe display_name formatting rules or naming constraints described in\nthe [CreateFolder] documentation.\n+ The Folder's display name must start and end with a letter or digit,\nmay contain letters, digits, spaces, hyphens and underscores and can be\nno longer than 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.\nThe caller must have `resourcemanager.folders.update` permission on the\nidentified folder.\n\nIf the update fails due to the unique name constraint then a\nPreconditionFailure explaining this violation will be returned\nin the Status.details field.", - "request": { - "$ref": "Folder" - }, - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], "response": { "$ref": "Folder" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PATCH", "parameters": { "name": { - "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\".", "type": "string", "required": true, "pattern": "^folders/[^/]+$", - "location": "path" + "location": "path", + "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\"." }, "updateMask": { "location": "query", @@ -312,27 +246,77 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v2beta1/folders/{foldersId}", + "id": "cloudresourcemanager.folders.patch", "path": "v2beta1/{+name}", - "id": "cloudresourcemanager.folders.patch" + "description": "Updates a Folder, changing its display_name.\nChanges to the folder display_name will be rejected if they violate either\nthe display_name formatting rules or naming constraints described in\nthe [CreateFolder] documentation.\n+ The Folder's display name must start and end with a letter or digit,\nmay contain letters, digits, spaces, hyphens and underscores and can be\nno longer than 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.\nThe caller must have `resourcemanager.folders.update` permission on the\nidentified folder.\n\nIf the update fails due to the unique name constraint then a\nPreconditionFailure explaining this violation will be returned\nin the Status.details field.", + "request": { + "$ref": "Folder" + } + }, + "move": { + "request": { + "$ref": "MoveFolderRequest" + }, + "description": "Moves a Folder under a new resource parent.\nReturns an Operation which can be used to track the progress of the\nfolder move workflow.\nUpon success the Operation.response field will be populated with the\nmoved Folder.\nUpon failure, a FolderOperationError categorizing the failure cause will\nbe returned - if the failure occurs synchronously then the\nFolderOperationError will be returned via the Status.details field\nand if it occurs asynchronously then the FolderOperation will be returned\nvia the the Operation.error field.\nIn addition, the Operation.metadata field will be populated with a\nFolderOperation message as an aid to stateless clients.\nFolder moves will be rejected if they violate either the naming, height\nor fanout constraints described in the [CreateFolder] documentation.\nThe caller must have `resourcemanager.folders.move` permission on the\nfolder's current and proposed new parent.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The resource name of the Folder to move.\nMust be of the form folders/{folder_id}", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2beta1/folders/{foldersId}:move", + "id": "cloudresourcemanager.folders.move", + "path": "v2beta1/{+name}:move" + }, + "testIamPermissions": { + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "pattern": "^folders/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v2beta1/folders/{foldersId}:testIamPermissions", + "id": "cloudresourcemanager.folders.testIamPermissions", + "path": "v2beta1/{+resource}:testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified Folder.\nThe `resource` field should be the Folder's resource name,\ne.g. \"folders/1234\".\n\nThere are no permissions required for making this API call." } } } }, "parameters": { - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { "description": "Returns response with indentations and line breaks.", @@ -351,26 +335,24 @@ "type": "string" }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], - "location": "query" + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format." }, "alt": { - "description": "Data format for response.", - "default": "json", "enum": [ "json", "media", @@ -382,41 +364,280 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" + "location": "query", + "description": "Data format for response.", + "default": "json" }, "access_token": { - "location": "query", "description": "OAuth access token.", - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "type": "string", + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." + }, "pp": { "description": "Pretty-print response.", "default": "true", "type": "boolean", "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" } }, "version": "v2beta1", "baseUrl": "https://cloudresourcemanager.googleapis.com/", + "kind": "discovery#restDescription", "servicePath": "", "description": "The Google Cloud Resource Manager API provides methods for creating, reading, and updating project metadata.", - "kind": "discovery#restDescription", "basePath": "", - "revision": "20170823", + "revision": "20170828", "documentationLink": "https://cloud.google.com/resource-manager", "id": "cloudresourcemanager:v2beta1", "discoveryVersion": "v1", "schemas": { + "Folder": { + "type": "object", + "properties": { + "displayName": { + "description": "The folder’s display name.\nA folder’s display name must be unique amongst its siblings, e.g.\nno two folders with the same parent can share the same display name.\nThe display name must start and end with a letter or digit, may contain\nletters, digits, spaces, hyphens and underscores and can be no longer\nthan 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.", + "type": "string" + }, + "parent": { + "description": "The Folder’s parent's resource name.\nUpdates to the folder's parent must be performed via [MoveFolders].", + "type": "string" + }, + "createTime": { + "format": "google-datetime", + "description": "Output only. Timestamp when the Folder was created. Assigned by the server.", + "type": "string" + }, + "lifecycleState": { + "enum": [ + "LIFECYCLE_STATE_UNSPECIFIED", + "ACTIVE", + "DELETE_REQUESTED" + ], + "description": "Output only. The lifecycle state of the folder.\nUpdates to the lifecycle_state must be performed via\n[DeleteFolder] and [UndeleteFolder].", + "type": "string", + "enumDescriptions": [ + "Unspecified state.", + "The normal and active state.", + "The folder has been marked for deletion by the user." + ] + }, + "name": { + "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\".", + "type": "string" + } + }, + "id": "Folder", + "description": "A Folder in an Organization's resource hierarchy, used to\norganize that Organization's resources." + }, + "ProjectCreationStatus": { + "properties": { + "ready": { + "type": "boolean", + "description": "True if the project creation process is complete." + }, + "gettable": { + "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete.", + "type": "boolean" + }, + "createTime": { + "format": "google-datetime", + "description": "Creation time of the project creation workflow.", + "type": "string" + } + }, + "id": "ProjectCreationStatus", + "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.", + "type": "object" + }, + "GetIamPolicyRequest": { + "properties": {}, + "id": "GetIamPolicyRequest", + "description": "Request message for `GetIamPolicy` method.", + "type": "object" + }, + "TestIamPermissionsResponse": { + "description": "Response message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse" + }, + "UndeleteFolderRequest": { + "description": "The UndeleteFolder request message.", + "type": "object", + "properties": {}, + "id": "UndeleteFolderRequest" + }, + "AuditLogConfig": { + "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", + "type": "object", + "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, + "logType": { + "enumDescriptions": [ + "Default case. Should never be this.", + "Admin reads. Example: CloudIAM getIamPolicy", + "Data writes. Example: CloudSQL Users create", + "Data reads. Example: CloudSQL Users list" + ], + "enum": [ + "LOG_TYPE_UNSPECIFIED", + "ADMIN_READ", + "DATA_WRITE", + "DATA_READ" + ], + "description": "The log type that this config enables.", + "type": "string" + } + }, + "id": "AuditLogConfig" + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" + }, + "FolderOperationError": { + "description": "A classification of the Folder Operation error.", + "type": "object", + "properties": { + "errorMessageId": { + "description": "The type of operation error experienced.", + "type": "string", + "enumDescriptions": [ + "The error type was unrecognized or unspecified.", + "The attempted action would violate the max folder depth constraint.", + "The attempted action would violate the max child folders constraint.", + "The attempted action would violate the locally-unique folder\ndisplay_name constraint.", + "The resource being moved has been deleted.", + "The resource a folder was being added to has been deleted.", + "The attempted action would introduce cycle in resource path.", + "The attempted action would move a folder that is already being moved.", + "The folder the caller is trying to delete contains active resources.", + "The attempted action would violate the max deleted folder depth\nconstraint." + ], + "enum": [ + "ERROR_TYPE_UNSPECIFIED", + "ACTIVE_FOLDER_HEIGHT_VIOLATION", + "MAX_CHILD_FOLDERS_VIOLATION", + "FOLDER_NAME_UNIQUENESS_VIOLATION", + "RESOURCE_DELETED_VIOLATION", + "PARENT_DELETED_VIOLATION", + "CYCLE_INTRODUCED_VIOLATION", + "FOLDER_BEING_MOVED_VIOLATION", + "FOLDER_TO_DELETE_NON_EMPTY_VIOLATION", + "DELETED_FOLDER_HEIGHT_VIOLATION" + ] + } + }, + "id": "FolderOperationError" + }, + "FolderOperation": { + "description": "Metadata describing a long running folder operation", + "type": "object", + "properties": { + "operationType": { + "type": "string", + "enumDescriptions": [ + "Operation type not specified.", + "A create folder operation.", + "A move folder operation." + ], + "enum": [ + "OPERATION_TYPE_UNSPECIFIED", + "CREATE", + "MOVE" + ], + "description": "The type of this operation." + }, + "sourceParent": { + "type": "string", + "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE." + }, + "displayName": { + "description": "The display name of the folder.", + "type": "string" + }, + "destinationParent": { + "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.", + "type": "string" + } + }, + "id": "FolderOperation" + }, + "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", + "properties": { + "bindings": { + "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "Binding" + }, + "type": "array" + }, + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + }, + "auditConfigs": { + "description": "Specifies cloud audit logging configuration for this policy.", + "items": { + "$ref": "AuditConfig" + }, + "type": "array" + } + }, + "id": "Policy" + }, "AuditConfig": { "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", "type": "object", @@ -436,11 +657,22 @@ "id": "AuditConfig" }, "Operation": { - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" + }, "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", "type": "boolean" }, "response": { @@ -454,42 +686,30 @@ "name": { "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", "type": "string" - }, - "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" } }, - "id": "Operation" + "id": "Operation", + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." }, "ListFoldersResponse": { "description": "The ListFolders response message.", "type": "object", "properties": { + "nextPageToken": { + "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates from where listing should continue.\nThis field is optional.", + "type": "string" + }, "folders": { "description": "A possibly paginated list of Folders that are direct descendants of\nthe specified parent resource.", "items": { "$ref": "Folder" }, "type": "array" - }, - "nextPageToken": { - "description": "A pagination token returned from a previous call to `ListFolders`\nthat indicates from where listing should continue.\nThis field is optional.", - "type": "string" } }, "id": "ListFoldersResponse" }, "MoveFolderRequest": { - "description": "The MoveFolder request message.", "type": "object", "properties": { "destinationParent": { @@ -497,7 +717,8 @@ "type": "string" } }, - "id": "MoveFolderRequest" + "id": "MoveFolderRequest", + "description": "The MoveFolder request message." }, "SearchFoldersResponse": { "description": "The response message for searching folders.", @@ -527,25 +748,16 @@ "type": "string" }, "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" } }, "id": "SetIamPolicyRequest" }, "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - }, "code": { "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", @@ -554,13 +766,24 @@ "message": { "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" } }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object" + "id": "Status" }, "Binding": { + "description": "Associates `members` with a `role`.", + "type": "object", "properties": { "members": { "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", @@ -570,13 +793,11 @@ "type": "array" }, "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" + "type": "string", + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired" } }, - "id": "Binding", - "description": "Associates `members` with a `role`.", - "type": "object" + "id": "Binding" }, "SearchFoldersRequest": { "description": "The request message for searching folders.", @@ -597,233 +818,6 @@ } }, "id": "SearchFoldersRequest" - }, - "ProjectCreationStatus": { - "description": "A status object which is used as the `metadata` field for the Operation\nreturned by CreateProject. It provides insight for when significant phases of\nProject creation have completed.", - "type": "object", - "properties": { - "ready": { - "description": "True if the project creation process is complete.", - "type": "boolean" - }, - "gettable": { - "description": "True if the project can be retrieved using GetProject. No other operations\non the project are guaranteed to work until the project creation is\ncomplete.", - "type": "boolean" - }, - "createTime": { - "format": "google-datetime", - "description": "Creation time of the project creation workflow.", - "type": "string" - } - }, - "id": "ProjectCreationStatus" - }, - "Folder": { - "properties": { - "parent": { - "description": "The Folder’s parent's resource name.\nUpdates to the folder's parent must be performed via [MoveFolders].", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "Output only. Timestamp when the Folder was created. Assigned by the server.", - "type": "string" - }, - "lifecycleState": { - "enum": [ - "LIFECYCLE_STATE_UNSPECIFIED", - "ACTIVE", - "DELETE_REQUESTED" - ], - "description": "Output only. The lifecycle state of the folder.\nUpdates to the lifecycle_state must be performed via\n[DeleteFolder] and [UndeleteFolder].", - "type": "string", - "enumDescriptions": [ - "Unspecified state.", - "The normal and active state.", - "The folder has been marked for deletion by the user." - ] - }, - "name": { - "description": "Output only. The resource name of the Folder.\nIts format is `folders/{folder_id}`, for example: \"folders/1234\".", - "type": "string" - }, - "displayName": { - "description": "The folder’s display name.\nA folder’s display name must be unique amongst its siblings, e.g.\nno two folders with the same parent can share the same display name.\nThe display name must start and end with a letter or digit, may contain\nletters, digits, spaces, hyphens and underscores and can be no longer\nthan 30 characters. This is captured by the regular expression:\n[\\p{L}\\p{N}]({\\p{L}\\p{N}_- ]{0,28}[\\p{L}\\p{N}])?.", - "type": "string" - } - }, - "id": "Folder", - "description": "A Folder in an Organization's resource hierarchy, used to\norganize that Organization's resources.", - "type": "object" - }, - "TestIamPermissionsResponse": { - "properties": { - "permissions": { - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsResponse", - "description": "Response message for `TestIamPermissions` method.", - "type": "object" - }, - "GetIamPolicyRequest": { - "description": "Request message for `GetIamPolicy` method.", - "type": "object", - "properties": {}, - "id": "GetIamPolicyRequest" - }, - "UndeleteFolderRequest": { - "description": "The UndeleteFolder request message.", - "type": "object", - "properties": {}, - "id": "UndeleteFolderRequest" - }, - "AuditLogConfig": { - "properties": { - "exemptedMembers": { - "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", - "items": { - "type": "string" - }, - "type": "array" - }, - "logType": { - "enum": [ - "LOG_TYPE_UNSPECIFIED", - "ADMIN_READ", - "DATA_WRITE", - "DATA_READ" - ], - "description": "The log type that this config enables.", - "type": "string", - "enumDescriptions": [ - "Default case. Should never be this.", - "Admin reads. Example: CloudIAM getIamPolicy", - "Data writes. Example: CloudSQL Users create", - "Data reads. Example: CloudSQL Users list" - ] - } - }, - "id": "AuditLogConfig", - "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", - "type": "object" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, - "Policy": { - "properties": { - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - }, - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, - "auditConfigs": { - "description": "Specifies cloud audit logging configuration for this policy.", - "items": { - "$ref": "AuditConfig" - }, - "type": "array" - }, - "bindings": { - "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", - "items": { - "$ref": "Binding" - }, - "type": "array" - } - }, - "id": "Policy", - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object" - }, - "FolderOperation": { - "properties": { - "operationType": { - "enumDescriptions": [ - "Operation type not specified.", - "A create folder operation.", - "A move folder operation." - ], - "enum": [ - "OPERATION_TYPE_UNSPECIFIED", - "CREATE", - "MOVE" - ], - "description": "The type of this operation.", - "type": "string" - }, - "sourceParent": { - "description": "The resource name of the folder's parent.\nOnly applicable when the operation_type is MOVE.", - "type": "string" - }, - "displayName": { - "description": "The display name of the folder.", - "type": "string" - }, - "destinationParent": { - "description": "The resource name of the folder or organization we are either creating\nthe folder under or moving the folder to.", - "type": "string" - } - }, - "id": "FolderOperation", - "description": "Metadata describing a long running folder operation", - "type": "object" - }, - "FolderOperationError": { - "properties": { - "errorMessageId": { - "enum": [ - "ERROR_TYPE_UNSPECIFIED", - "ACTIVE_FOLDER_HEIGHT_VIOLATION", - "MAX_CHILD_FOLDERS_VIOLATION", - "FOLDER_NAME_UNIQUENESS_VIOLATION", - "RESOURCE_DELETED_VIOLATION", - "PARENT_DELETED_VIOLATION", - "CYCLE_INTRODUCED_VIOLATION", - "FOLDER_BEING_MOVED_VIOLATION", - "FOLDER_TO_DELETE_NON_EMPTY_VIOLATION", - "DELETED_FOLDER_HEIGHT_VIOLATION" - ], - "description": "The type of operation error experienced.", - "type": "string", - "enumDescriptions": [ - "The error type was unrecognized or unspecified.", - "The attempted action would violate the max folder depth constraint.", - "The attempted action would violate the max child folders constraint.", - "The attempted action would violate the locally-unique folder\ndisplay_name constraint.", - "The resource being moved has been deleted.", - "The resource a folder was being added to has been deleted.", - "The attempted action would introduce cycle in resource path.", - "The attempted action would move a folder that is already being moved.", - "The folder the caller is trying to delete contains active resources.", - "The attempted action would violate the max deleted folder depth\nconstraint." - ] - } - }, - "id": "FolderOperationError", - "description": "A classification of the Folder Operation error.", - "type": "object" } }, "protocol": "rest", @@ -844,5 +838,11 @@ } } }, - "rootUrl": "https://cloudresourcemanager.googleapis.com/" + "rootUrl": "https://cloudresourcemanager.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudresourcemanager", + "batchPath": "batch", + "fullyEncodeReservedExpansion": true, + "title": "Google Cloud Resource Manager API", + "ownerName": "Google" } diff --git a/vendor/google.golang.org/api/cloudtrace/v1/cloudtrace-api.json b/vendor/google.golang.org/api/cloudtrace/v1/cloudtrace-api.json index 809a476..88d1f05 100644 --- a/vendor/google.golang.org/api/cloudtrace/v1/cloudtrace-api.json +++ b/vendor/google.golang.org/api/cloudtrace/v1/cloudtrace-api.json @@ -1,20 +1,326 @@ { + "canonicalName": "Cloud Trace", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/trace.readonly": { + "description": "Read Trace data for a project or application" + }, + "https://www.googleapis.com/auth/trace.append": { + "description": "Write Trace data for a project or application" + } + } + } + }, + "rootUrl": "https://cloudtrace.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudtrace", + "batchPath": "batch", + "title": "Stackdriver Trace API", + "ownerName": "Google", + "resources": { + "projects": { + "methods": { + "patchTraces": { + "request": { + "$ref": "Traces" + }, + "description": "Sends new traces to Stackdriver Trace or updates existing traces. If the ID\nof a trace that you send matches that of an existing trace, any fields\nin the existing trace and its spans are overwritten by the provided values,\nand any new fields provided are merged with the existing trace data. If the\nID does not match, a new trace is created.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.append" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "ID of the Cloud project where the trace data is stored.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/traces", + "id": "cloudtrace.projects.patchTraces", + "path": "v1/projects/{projectId}/traces" + } + }, + "resources": { + "traces": { + "methods": { + "get": { + "id": "cloudtrace.projects.traces.get", + "path": "v1/projects/{projectId}/traces/{traceId}", + "description": "Gets a single trace by its ID.", + "response": { + "$ref": "Trace" + }, + "parameterOrder": [ + "projectId", + "traceId" + ], + "httpMethod": "GET", + "parameters": { + "projectId": { + "location": "path", + "description": "ID of the Cloud project where the trace data is stored.", + "type": "string", + "required": true + }, + "traceId": { + "description": "ID of the trace to return.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.readonly" + ], + "flatPath": "v1/projects/{projectId}/traces/{traceId}" + }, + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListTracesResponse" + }, + "parameterOrder": [ + "projectId" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Token identifying the page of results to return. If provided, use the\nvalue of the `next_page_token` field from a previous request. Optional.", + "type": "string" + }, + "startTime": { + "location": "query", + "format": "google-datetime", + "description": "Start of the time interval (inclusive) during which the trace data was\ncollected from the application.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Maximum number of traces to return. If not specified or \u003c= 0, the\nimplementation selects a reasonable value. The implementation may\nreturn fewer traces than the requested page size. Optional.", + "type": "integer" + }, + "view": { + "location": "query", + "enum": [ + "VIEW_TYPE_UNSPECIFIED", + "MINIMAL", + "ROOTSPAN", + "COMPLETE" + ], + "description": "Type of data returned for traces in the list. Optional. Default is\n`MINIMAL`.", + "type": "string" + }, + "orderBy": { + "location": "query", + "description": "Field used to sort the returned traces. Optional.\nCan be one of the following:\n\n* `trace_id`\n* `name` (`name` field of root span in the trace)\n* `duration` (difference between `end_time` and `start_time` fields of\n the root span)\n* `start` (`start_time` field of the root span)\n\nDescending order can be specified by appending `desc` to the sort field\n(for example, `name desc`).\n\nOnly one sort field is permitted.", + "type": "string" + }, + "projectId": { + "description": "ID of the Cloud project where the trace data is stored.", + "type": "string", + "required": true, + "location": "path" + }, + "filter": { + "location": "query", + "description": "An optional filter against labels for the request.\n\nBy default, searches use prefix matching. To specify exact match, prepend\na plus symbol (`+`) to the search term.\nMultiple terms are ANDed. Syntax:\n\n* `root:NAME_PREFIX` or `NAME_PREFIX`: Return traces where any root\n span starts with `NAME_PREFIX`.\n* `+root:NAME` or `+NAME`: Return traces where any root span's name is\n exactly `NAME`.\n* `span:NAME_PREFIX`: Return traces where any span starts with\n `NAME_PREFIX`.\n* `+span:NAME`: Return traces where any span's name is exactly\n `NAME`.\n* `latency:DURATION`: Return traces whose overall latency is\n greater or equal to than `DURATION`. Accepted units are nanoseconds\n (`ns`), milliseconds (`ms`), and seconds (`s`). Default is `ms`. For\n example, `latency:24ms` returns traces whose overall latency\n is greater than or equal to 24 milliseconds.\n* `label:LABEL_KEY`: Return all traces containing the specified\n label key (exact match, case-sensitive) regardless of the key:value\n pair's value (including empty values).\n* `LABEL_KEY:VALUE_PREFIX`: Return all traces containing the specified\n label key (exact match, case-sensitive) whose value starts with\n `VALUE_PREFIX`. Both a key and a value must be specified.\n* `+LABEL_KEY:VALUE`: Return all traces containing a key:value pair\n exactly matching the specified text. Both a key and a value must be\n specified.\n* `method:VALUE`: Equivalent to `/http/method:VALUE`.\n* `url:VALUE`: Equivalent to `/http/url:VALUE`.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "End of the time interval (inclusive) during which the trace data was\ncollected from the application.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.readonly" + ], + "flatPath": "v1/projects/{projectId}/traces", + "path": "v1/projects/{projectId}/traces", + "id": "cloudtrace.projects.traces.list", + "description": "Returns of a list of traces that match the specified filter conditions." + } + } + } + } + } + }, + "parameters": { + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + } + }, + "version": "v1", + "baseUrl": "https://cloudtrace.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Send and retrieve trace data from Stackdriver Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Stackdriver Trace for display, reporting, and analysis.\n", + "servicePath": "", "basePath": "", - "id": "cloudtrace:v1", "revision": "20170823", "documentationLink": "https://cloud.google.com/trace", + "id": "cloudtrace:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "TraceSpan": { + "description": "A span represents a single timed event within a trace. Spans can be nested\nand form a trace tree. Often, a trace contains a root span that describes the\nend-to-end latency of an operation and, optionally, one or more subspans for\nits suboperations. Spans do not need to be contiguous. There may be gaps\nbetween spans in a trace.", "type": "object", + "properties": { + "spanId": { + "format": "uint64", + "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace.", + "type": "string" + }, + "parentSpanId": { + "format": "uint64", + "description": "ID of the parent span, if any. Optional.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "End time of the span in nanoseconds from the UNIX epoch.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Start time of the span in nanoseconds from the UNIX epoch.", + "type": "string" + }, + "kind": { + "enumDescriptions": [ + "Unspecified.", + "Indicates that the span covers server-side handling of an RPC or other\nremote network request.", + "Indicates that the span covers the client-side wrapper around an RPC or\nother remote request." + ], + "enum": [ + "SPAN_KIND_UNSPECIFIED", + "RPC_SERVER", + "RPC_CLIENT" + ], + "description": "Distinguishes between spans generated in a particular context. For example,\ntwo spans with the same name may be distinguished using `RPC_CLIENT`\nand `RPC_SERVER` to identify queueing latency associated with the span.", + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Collection of labels associated with the span. Label keys must be less than\n128 bytes. Label values must be less than 16 kilobytes (10MB for\n`/stacktrace` values).\n\nSome predefined label keys exist, or you may create your own. When creating\nyour own, we recommend the following formats:\n\n* `/category/product/key` for agents of well-known products (e.g.\n `/db/mongodb/read_size`).\n* `short_host/path/key` for domain-specific keys (e.g.\n `foo.com/myproduct/bar`)\n\nPredefined labels include:\n\n* `/agent`\n* `/component`\n* `/error/message`\n* `/error/name`\n* `/http/client_city`\n* `/http/client_country`\n* `/http/client_protocol`\n* `/http/client_region`\n* `/http/host`\n* `/http/method`\n* `/http/redirected_url`\n* `/http/request/size`\n* `/http/response/size`\n* `/http/status_code`\n* `/http/url`\n* `/http/user_agent`\n* `/pid`\n* `/stacktrace`\n* `/tid`", + "type": "object" + }, + "name": { + "description": "Name of the span. Must be less than 128 bytes. The span name is sanitized\nand displayed in the Stackdriver Trace tool in the\n{% dynamic print site_values.console_name %}.\nThe name may be a method name or some other per-call site name.\nFor the same executable and the same call point, a best practice is\nto use a consistent name, which makes it easier to correlate\ncross-trace spans.", + "type": "string" + } + }, + "id": "TraceSpan" + }, + "Empty": { "properties": {}, - "id": "Empty" + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" }, "ListTracesResponse": { - "description": "The response message for the `ListTraces` method.", - "type": "object", "properties": { "nextPageToken": { "description": "If defined, indicates that there are more traces that match the request\nand that this value should be passed to the next request to continue\nretrieving additional traces.", @@ -28,7 +334,9 @@ "type": "array" } }, - "id": "ListTracesResponse" + "id": "ListTracesResponse", + "description": "The response message for the `ListTraces` method.", + "type": "object" }, "Trace": { "description": "A trace describes how long it takes for an application to perform an\noperation. It consists of a set of spans, each of which represent a single\ntimed event within the operation.", @@ -53,7 +361,6 @@ "id": "Trace" }, "Traces": { - "type": "object", "properties": { "traces": { "description": "List of traces.", @@ -64,320 +371,13 @@ } }, "id": "Traces", - "description": "List of new or updated traces." - }, - "TraceSpan": { - "id": "TraceSpan", - "description": "A span represents a single timed event within a trace. Spans can be nested\nand form a trace tree. Often, a trace contains a root span that describes the\nend-to-end latency of an operation and, optionally, one or more subspans for\nits suboperations. Spans do not need to be contiguous. There may be gaps\nbetween spans in a trace.", - "type": "object", - "properties": { - "name": { - "description": "Name of the span. Must be less than 128 bytes. The span name is sanitized\nand displayed in the Stackdriver Trace tool in the\n{% dynamic print site_values.console_name %}.\nThe name may be a method name or some other per-call site name.\nFor the same executable and the same call point, a best practice is\nto use a consistent name, which makes it easier to correlate\ncross-trace spans.", - "type": "string" - }, - "spanId": { - "format": "uint64", - "description": "Identifier for the span. Must be a 64-bit integer other than 0 and\nunique within a trace.", - "type": "string" - }, - "parentSpanId": { - "type": "string", - "format": "uint64", - "description": "ID of the parent span, if any. Optional." - }, - "endTime": { - "format": "google-datetime", - "description": "End time of the span in nanoseconds from the UNIX epoch.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Start time of the span in nanoseconds from the UNIX epoch.", - "type": "string" - }, - "kind": { - "enum": [ - "SPAN_KIND_UNSPECIFIED", - "RPC_SERVER", - "RPC_CLIENT" - ], - "description": "Distinguishes between spans generated in a particular context. For example,\ntwo spans with the same name may be distinguished using `RPC_CLIENT`\nand `RPC_SERVER` to identify queueing latency associated with the span.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Indicates that the span covers server-side handling of an RPC or other\nremote network request.", - "Indicates that the span covers the client-side wrapper around an RPC or\nother remote request." - ] - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Collection of labels associated with the span. Label keys must be less than\n128 bytes. Label values must be less than 16 kilobytes (10MB for\n`/stacktrace` values).\n\nSome predefined label keys exist, or you may create your own. When creating\nyour own, we recommend the following formats:\n\n* `/category/product/key` for agents of well-known products (e.g.\n `/db/mongodb/read_size`).\n* `short_host/path/key` for domain-specific keys (e.g.\n `foo.com/myproduct/bar`)\n\nPredefined labels include:\n\n* `/agent`\n* `/component`\n* `/error/message`\n* `/error/name`\n* `/http/client_city`\n* `/http/client_country`\n* `/http/client_protocol`\n* `/http/client_region`\n* `/http/host`\n* `/http/method`\n* `/http/redirected_url`\n* `/http/request/size`\n* `/http/response/size`\n* `/http/status_code`\n* `/http/url`\n* `/http/user_agent`\n* `/pid`\n* `/stacktrace`\n* `/tid`" - } - } + "description": "List of new or updated traces.", + "type": "object" } }, + "protocol": "rest", "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, - "protocol": "rest", - "canonicalName": "Cloud Trace", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/trace.append": { - "description": "Write Trace data for a project or application" - }, - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/trace.readonly": { - "description": "Read Trace data for a project or application" - } - } - } - }, - "rootUrl": "https://cloudtrace.googleapis.com/", - "ownerDomain": "google.com", - "name": "cloudtrace", - "batchPath": "batch", - "title": "Stackdriver Trace API", - "ownerName": "Google", - "resources": { - "projects": { - "methods": { - "patchTraces": { - "httpMethod": "PATCH", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "projectId": { - "description": "ID of the Cloud project where the trace data is stored.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.append" - ], - "flatPath": "v1/projects/{projectId}/traces", - "path": "v1/projects/{projectId}/traces", - "id": "cloudtrace.projects.patchTraces", - "description": "Sends new traces to Stackdriver Trace or updates existing traces. If the ID\nof a trace that you send matches that of an existing trace, any fields\nin the existing trace and its spans are overwritten by the provided values,\nand any new fields provided are merged with the existing trace data. If the\nID does not match, a new trace is created.", - "request": { - "$ref": "Traces" - } - } - }, - "resources": { - "traces": { - "methods": { - "get": { - "flatPath": "v1/projects/{projectId}/traces/{traceId}", - "id": "cloudtrace.projects.traces.get", - "path": "v1/projects/{projectId}/traces/{traceId}", - "description": "Gets a single trace by its ID.", - "parameterOrder": [ - "projectId", - "traceId" - ], - "httpMethod": "GET", - "response": { - "$ref": "Trace" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.readonly" - ], - "parameters": { - "projectId": { - "description": "ID of the Cloud project where the trace data is stored.", - "type": "string", - "required": true, - "location": "path" - }, - "traceId": { - "type": "string", - "required": true, - "location": "path", - "description": "ID of the trace to return." - } - } - }, - "list": { - "description": "Returns of a list of traces that match the specified filter conditions.", - "response": { - "$ref": "ListTracesResponse" - }, - "httpMethod": "GET", - "parameterOrder": [ - "projectId" - ], - "parameters": { - "endTime": { - "type": "string", - "location": "query", - "format": "google-datetime", - "description": "End of the time interval (inclusive) during which the trace data was\ncollected from the application." - }, - "pageToken": { - "description": "Token identifying the page of results to return. If provided, use the\nvalue of the `next_page_token` field from a previous request. Optional.", - "type": "string", - "location": "query" - }, - "startTime": { - "location": "query", - "format": "google-datetime", - "description": "Start of the time interval (inclusive) during which the trace data was\ncollected from the application.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of traces to return. If not specified or \u003c= 0, the\nimplementation selects a reasonable value. The implementation may\nreturn fewer traces than the requested page size. Optional.", - "type": "integer" - }, - "view": { - "enum": [ - "VIEW_TYPE_UNSPECIFIED", - "MINIMAL", - "ROOTSPAN", - "COMPLETE" - ], - "description": "Type of data returned for traces in the list. Optional. Default is\n`MINIMAL`.", - "type": "string", - "location": "query" - }, - "orderBy": { - "location": "query", - "description": "Field used to sort the returned traces. Optional.\nCan be one of the following:\n\n* `trace_id`\n* `name` (`name` field of root span in the trace)\n* `duration` (difference between `end_time` and `start_time` fields of\n the root span)\n* `start` (`start_time` field of the root span)\n\nDescending order can be specified by appending `desc` to the sort field\n(for example, `name desc`).\n\nOnly one sort field is permitted.", - "type": "string" - }, - "projectId": { - "location": "path", - "description": "ID of the Cloud project where the trace data is stored.", - "type": "string", - "required": true - }, - "filter": { - "type": "string", - "location": "query", - "description": "An optional filter against labels for the request.\n\nBy default, searches use prefix matching. To specify exact match, prepend\na plus symbol (`+`) to the search term.\nMultiple terms are ANDed. Syntax:\n\n* `root:NAME_PREFIX` or `NAME_PREFIX`: Return traces where any root\n span starts with `NAME_PREFIX`.\n* `+root:NAME` or `+NAME`: Return traces where any root span's name is\n exactly `NAME`.\n* `span:NAME_PREFIX`: Return traces where any span starts with\n `NAME_PREFIX`.\n* `+span:NAME`: Return traces where any span's name is exactly\n `NAME`.\n* `latency:DURATION`: Return traces whose overall latency is\n greater or equal to than `DURATION`. Accepted units are nanoseconds\n (`ns`), milliseconds (`ms`), and seconds (`s`). Default is `ms`. For\n example, `latency:24ms` returns traces whose overall latency\n is greater than or equal to 24 milliseconds.\n* `label:LABEL_KEY`: Return all traces containing the specified\n label key (exact match, case-sensitive) regardless of the key:value\n pair's value (including empty values).\n* `LABEL_KEY:VALUE_PREFIX`: Return all traces containing the specified\n label key (exact match, case-sensitive) whose value starts with\n `VALUE_PREFIX`. Both a key and a value must be specified.\n* `+LABEL_KEY:VALUE`: Return all traces containing a key:value pair\n exactly matching the specified text. Both a key and a value must be\n specified.\n* `method:VALUE`: Equivalent to `/http/method:VALUE`.\n* `url:VALUE`: Equivalent to `/http/url:VALUE`." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.readonly" - ], - "flatPath": "v1/projects/{projectId}/traces", - "id": "cloudtrace.projects.traces.list", - "path": "v1/projects/{projectId}/traces" - } - } - } - } - } - }, - "parameters": { - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "alt": { - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - } - }, - "version": "v1", - "baseUrl": "https://cloudtrace.googleapis.com/", - "servicePath": "", - "description": "Send and retrieve trace data from Stackdriver Trace. Data is generated and available by default for all App Engine applications. Data from other applications can be written to Stackdriver Trace for display, reporting, and analysis.\n", - "kind": "discovery#restDescription" + } } diff --git a/vendor/google.golang.org/api/cloudtrace/v2/cloudtrace-api.json b/vendor/google.golang.org/api/cloudtrace/v2/cloudtrace-api.json index 588ab9a..594c820 100644 --- a/vendor/google.golang.org/api/cloudtrace/v2/cloudtrace-api.json +++ b/vendor/google.golang.org/api/cloudtrace/v2/cloudtrace-api.json @@ -1,261 +1,4 @@ { - "ownerDomain": "google.com", - "name": "cloudtrace", - "batchPath": "batch", - "title": "Stackdriver Trace API", - "ownerName": "Google", - "resources": { - "projects": { - "resources": { - "traces": { - "methods": { - "list": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.readonly" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the\npreceding call to this method. `page_token` must be the value of\n`next_page_token` from the previous response. The values of other method\nparameters should be identical to those in the previous call.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Optional. Do not return traces whose end time is earlier than this time.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request.\nNon-positive values are ignored. The presence of `next_page_token` in the\nresponse indicates that more results might be available, even if fewer than\nthe maximum number of results is returned by this request.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The project where the trace data is stored. The format\nis `projects/PROJECT_ID`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "orderBy": { - "location": "query", - "description": "Optional. A single field used to sort the returned traces.\nOnly the following field names can be used:\n\n* `trace_id`: the trace's ID field\n* `name`: the root span's resource name\n* `duration`: the difference between the root span's start time and end time\n* `start`: the start time of the root span\n\nSorting is in ascending order unless `desc` is appended to the sort field name.\nExample: `\"name desc\"`).", - "type": "string" - }, - "filter": { - "location": "query", - "description": "Opional. Return only traces that match this\n[trace filter](/trace/docs/trace-filters). Example:\n\n \"label:/http/url root:/_ah/background my_label:17\"", - "type": "string" - }, - "endTime": { - "location": "query", - "format": "google-datetime", - "description": "Optional. Do not return traces whose start time is later than this time.", - "type": "string" - } - }, - "flatPath": "v2/projects/{projectsId}/traces", - "id": "cloudtrace.projects.traces.list", - "path": "v2/{+parent}/traces", - "description": "Returns of a list of traces that match the specified filter conditions.", - "response": { - "$ref": "ListTracesResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET" - }, - "batchWrite": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "description": "Required. Name of the project where the spans belong. The format is\n`projects/PROJECT_ID`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.append" - ], - "flatPath": "v2/projects/{projectsId}/traces:batchWrite", - "path": "v2/{+name}/traces:batchWrite", - "id": "cloudtrace.projects.traces.batchWrite", - "description": "Sends new spans to Stackdriver Trace or updates existing traces. If the\nname of a trace that you send matches that of an existing trace, new spans\nare added to the existing trace. Attempt to update existing spans results\nundefined behavior. If the name does not match, a new trace is created\nwith given set of spans.", - "request": { - "$ref": "BatchWriteSpansRequest" - } - }, - "listSpans": { - "parameters": { - "parent": { - "pattern": "^projects/[^/]+/traces/[^/]+$", - "location": "path", - "description": "Required: The resource name of the trace containing the spans to list.\nThe format is `projects/PROJECT_ID/traces/TRACE_ID`.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the\npreceding call to this method. `page_token` must be the value of\n`next_page_token` from the previous response. The values of other method\nparameters should be identical to those in the previous call.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.readonly" - ], - "flatPath": "v2/projects/{projectsId}/traces/{tracesId}:listSpans", - "path": "v2/{+parent}:listSpans", - "id": "cloudtrace.projects.traces.listSpans", - "description": "Returns a list of spans within a trace.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListSpansResponse" - } - } - }, - "resources": { - "spans": { - "methods": { - "create": { - "response": { - "$ref": "Span" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/trace.append" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/traces/[^/]+/spans/[^/]+$", - "location": "path", - "description": "The resource name of the span in the following format:\n\n projects/[PROJECT_ID]traces/[TRACE_ID]/spans/SPAN_ID is a unique identifier for a trace within a project.\n[SPAN_ID] is a unique identifier for a span within a trace,\nassigned when the span is created.", - "type": "string", - "required": true - } - }, - "flatPath": "v2/projects/{projectsId}/traces/{tracesId}/spans/{spansId}", - "id": "cloudtrace.projects.traces.spans.create", - "path": "v2/{+name}", - "request": { - "$ref": "Span" - }, - "description": "Creates a new Span." - } - } - } - } - } - } - } - }, - "parameters": { - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - } - }, "version": "v2", "baseUrl": "https://cloudtrace.googleapis.com/", "servicePath": "", @@ -268,356 +11,15 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "TimeEvents": { - "id": "TimeEvents", - "description": "A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation\non the span, consisting of either user-supplied key:value pairs, or\ndetails of an RPC message sent/received on the network.", - "type": "object", - "properties": { - "timeEvent": { - "description": "A collection of `TimeEvent`s.", - "items": { - "$ref": "TimeEvent" - }, - "type": "array" - }, - "droppedNetworkEventsCount": { - "format": "int32", - "description": "The number of dropped network events in all the included time events.\nIf the value is 0, then no network events were dropped.", - "type": "integer" - }, - "droppedAnnotationsCount": { - "format": "int32", - "description": "The number of dropped annotations in all the included time events.\nIf the value is 0, then no annotations were dropped.", - "type": "integer" - } - } - }, - "Module": { - "description": "Binary module.", - "type": "object", - "properties": { - "module": { - "description": "For example: main binary, kernel modules, and dynamic libraries\nsuch as libc.so, sharedlib.so (up to 256 bytes).", - "$ref": "TruncatableString" - }, - "buildId": { - "$ref": "TruncatableString", - "description": "A unique identifier for the module, usually a hash of its\ncontents (up to 128 bytes)." - } - }, - "id": "Module" - }, - "Status": { - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - } - } - }, - "BatchWriteSpansRequest": { - "id": "BatchWriteSpansRequest", - "description": "The request message for the `BatchWriteSpans` method.", - "type": "object", - "properties": { - "spans": { - "description": "A collection of spans.", - "items": { - "$ref": "Span" - }, - "type": "array" - } - } - }, - "ListTracesResponse": { - "description": "The response message for the `ListTraces` method.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then\n`next_page_token` is included. To get the next set of results, call this\nmethod again using the value of `next_page_token` as `page_token`.", - "type": "string" - }, - "traces": { - "description": "List of trace records returned.", - "items": { - "$ref": "Trace" - }, - "type": "array" - } - }, - "id": "ListTracesResponse" - }, - "Span": { - "description": "A span represents a single operation within a trace. Spans can be\nnested to form a trace tree. Often, a trace contains a root span\nthat describes the end-to-end latency, and one or more subspans for\nits sub-operations. A trace can also contain multiple root spans,\nor none at all. Spans do not need to be contiguous—there may be\ngaps or overlaps between spans in a trace.", - "type": "object", - "properties": { - "sameProcessAsParentSpan": { - "description": "A highly recommended but not required flag that identifies when a trace\ncrosses a process boundary. True when the parent_span belongs to the\nsame process as the current span.", - "type": "boolean" - }, - "status": { - "$ref": "Status", - "description": "An optional final status for this span." - }, - "name": { - "description": "The resource name of the span in the following format:\n\n projects/[PROJECT_ID]traces/[TRACE_ID]/spans/SPAN_ID is a unique identifier for a trace within a project.\n[SPAN_ID] is a unique identifier for a span within a trace,\nassigned when the span is created.", - "type": "string" - }, - "stackTrace": { - "$ref": "StackTrace", - "description": "Stack trace captured at the start of the span." - }, - "parentSpanId": { - "description": "The [SPAN_ID] of this span's parent span. If this is a root span,\nthen this field must be empty.", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "The end time of the span. On the client side, this is the time kept by\nthe local machine where the span execution ends. On the server side, this\nis the time when the server application handler stops running.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "The start time of the span. On the client side, this is the time kept by\nthe local machine where the span execution starts. On the server side, this\nis the time when the server's application handler starts running.", - "type": "string" - }, - "displayName": { - "$ref": "TruncatableString", - "description": "A description of the span's operation (up to 128 bytes).\nStackdriver Trace displays the description in the\n{% dynamic print site_values.console_name %}.\nFor example, the display name can be a qualified method name or a file name\nand a line number where the operation is called. A best practice is to use\nthe same display name within an application and at the same call point.\nThis makes it easier to correlate spans in different traces." - }, - "timeEvents": { - "$ref": "TimeEvents", - "description": "The included time events. There can be up to 32 annotations and 128 network\nevents per span." - }, - "links": { - "$ref": "Links", - "description": "A maximum of 128 links are allowed per Span." - }, - "attributes": { - "$ref": "Attributes", - "description": "A set of attributes on the span. There is a limit of 32 attributes per\nspan." - }, - "spanId": { - "description": "The [SPAN_ID] portion of the span's resource name.", - "type": "string" - }, - "childSpanCount": { - "format": "uint32", - "description": "An optional number of child spans that were generated while this span\nwas active. If set, allows implementation to detect missing child spans.", - "type": "integer" - } - }, - "id": "Span" - }, - "Empty": { - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {} - }, - "AttributeValue": { - "id": "AttributeValue", - "description": "The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute.", - "type": "object", - "properties": { - "boolValue": { - "description": "A Boolean value represented by `true` or `false`.", - "type": "boolean" - }, - "stringValue": { - "$ref": "TruncatableString", - "description": "A string up to 256 bytes long." - }, - "intValue": { - "format": "int64", - "description": "A 64-bit signed integer.", - "type": "string" - } - } - }, - "Attributes": { - "description": "A set of attributes, each in the format `[KEY]:[VALUE]`.", - "type": "object", - "properties": { - "droppedAttributesCount": { - "format": "int32", - "description": "The number of attributes that were discarded. Attributes can be discarded\nbecause their keys are too long or because there are too many attributes.\nIf this value is 0 then all attributes are valid.", - "type": "integer" - }, - "attributeMap": { - "additionalProperties": { - "$ref": "AttributeValue" - }, - "description": "The set of attributes. Each attribute's key can be up to 128 bytes\nlong. The value can be a string up to 256 bytes, an integer, or the\nBoolean values `true` and `false`. For example:\n\n \"/instance_id\": \"my-instance\"\n \"/http/user_agent\": \"\"\n \"/http/request_bytes\": 300\n \"abc.com/myattribute\": true", - "type": "object" - } - }, - "id": "Attributes" - }, - "Links": { - "id": "Links", - "description": "A collection of links, which are references from this span to a span\nin the same or different trace.", - "type": "object", - "properties": { - "link": { - "description": "A collection of links.", - "items": { - "$ref": "Link" - }, - "type": "array" - }, - "droppedLinksCount": { - "format": "int32", - "description": "The number of dropped links after the maximum size was enforced. If\nthis value is 0, then no links were dropped.", - "type": "integer" - } - } - }, - "TruncatableString": { - "description": "Represents a string that might be shortened to a specified length.", - "type": "object", - "properties": { - "value": { - "description": "The shortened string. For example, if the original string was 500\nbytes long and the limit of the string was 128 bytes, then this\nvalue contains the first 128 bytes of the 500-byte string. Note that\ntruncation always happens on the character boundary, to ensure that\ntruncated string is still valid UTF8. In case of multi-byte characters,\nsize of truncated string can be less than truncation limit.", - "type": "string" - }, - "truncatedByteCount": { - "format": "int32", - "description": "The number of bytes removed from the original string. If this\nvalue is 0, then the string was not shortened.", - "type": "integer" - } - }, - "id": "TruncatableString" - }, - "StackTrace": { - "id": "StackTrace", - "description": "A call stack appearing in a trace.", - "type": "object", - "properties": { - "stackTraceHashId": { - "format": "uint64", - "description": "The hash ID is used to conserve network bandwidth for duplicate\nstack traces within a single trace.\n\nOften multiple spans will have identical stack traces.\nThe first occurrence of a stack trace should contain both the\n`stackFrame` content and a value in `stackTraceHashId`.\n\nSubsequent spans within the same request can refer\nto that stack trace by only setting `stackTraceHashId`.", - "type": "string" - }, - "stackFrames": { - "description": "Stack frames in this stack trace. A maximum of 128 frames are allowed.", - "$ref": "StackFrames" - } - } - }, - "TimeEvent": { - "description": "A time-stamped annotation or network event in the Span.", - "type": "object", - "properties": { - "networkEvent": { - "$ref": "NetworkEvent", - "description": "An event describing an RPC message sent/received on the network." - }, - "annotation": { - "$ref": "Annotation", - "description": "One or more key:value pairs." - }, - "time": { - "format": "google-datetime", - "description": "The timestamp indicating the time the event occurred.", - "type": "string" - } - }, - "id": "TimeEvent" - }, - "ListSpansResponse": { - "description": "The response message for the `ListSpans` method.", - "type": "object", - "properties": { - "spans": { - "description": "The requested spans, if there are any in the specified trace.", - "items": { - "$ref": "Span" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If defined, indicates that there might be more spans that match the\nrequest. Pass this as the value of `pageToken` in a subsequent request to\nretrieve additional spans.", - "type": "string" - } - }, - "id": "ListSpansResponse" - }, - "NetworkEvent": { - "description": "An event describing an RPC message sent or received on the network.", - "type": "object", - "properties": { - "messageSize": { - "format": "uint64", - "description": "The number of bytes sent or received.", - "type": "string" - }, - "time": { - "format": "google-datetime", - "description": "For sent messages, this is the time at which the first bit was sent.\nFor received messages, this is the time at which the last bit was\nreceived.", - "type": "string" - }, - "type": { - "description": "Type of NetworkEvent. Indicates whether the RPC message was sent or\nreceived.", - "type": "string", - "enumDescriptions": [ - "Unknown event type.", - "Indicates a sent RPC message.", - "Indicates a received RPC message." - ], - "enum": [ - "TYPE_UNSPECIFIED", - "SENT", - "RECV" - ] - }, - "messageId": { - "format": "uint64", - "description": "An identifier for the message, which must be unique in this span.", - "type": "string" - } - }, - "id": "NetworkEvent" - }, "StackFrame": { - "id": "StackFrame", - "description": "Represents a single stack frame in a stack trace.", - "type": "object", "properties": { - "fileName": { - "description": "The name of the source file where the function call appears (up to 256\nbytes).", - "$ref": "TruncatableString" - }, - "sourceVersion": { - "$ref": "TruncatableString", - "description": "The version of the deployed source code (up to 128 bytes)." - }, "originalFunctionName": { - "$ref": "TruncatableString", - "description": "An un-mangled function name, if `function_name` is\n[mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can\nbe fully-qualified (up to 1024 bytes)." + "description": "An un-mangled function name, if `function_name` is\n[mangled](http://www.avabodh.com/cxxin/namemangling.html). The name can\nbe fully-qualified (up to 1024 bytes).", + "$ref": "TruncatableString" }, "functionName": { - "description": "The fully-qualified name that uniquely identifies the function or\nmethod that is active in this frame (up to 1024 bytes).", - "$ref": "TruncatableString" + "$ref": "TruncatableString", + "description": "The fully-qualified name that uniquely identifies the function or\nmethod that is active in this frame (up to 1024 bytes)." }, "lineNumber": { "format": "int64", @@ -625,38 +27,46 @@ "type": "string" }, "loadModule": { - "$ref": "Module", - "description": "The binary module from where the code was loaded." + "description": "The binary module from where the code was loaded.", + "$ref": "Module" }, "columnNumber": { "format": "int64", "description": "The column number where the function call appears, if available.\nThis is important in JavaScript because of its anonymous functions.", "type": "string" + }, + "fileName": { + "description": "The name of the source file where the function call appears (up to 256\nbytes).", + "$ref": "TruncatableString" + }, + "sourceVersion": { + "description": "The version of the deployed source code (up to 128 bytes).", + "$ref": "TruncatableString" } - } + }, + "id": "StackFrame", + "description": "Represents a single stack frame in a stack trace.", + "type": "object" }, "Link": { - "id": "Link", - "description": "A pointer from the current span to another span in the same trace or in a\ndifferent trace. For example, this can be used in batching operations,\nwhere a single batch handler processes multiple requests from different\ntraces or when the handler receives a request from a different project.", - "type": "object", "properties": { "type": { + "enum": [ + "TYPE_UNSPECIFIED", + "CHILD_LINKED_SPAN", + "PARENT_LINKED_SPAN" + ], "description": "The relationship of the current span relative to the linked span.", "type": "string", "enumDescriptions": [ "The relationship of the two spans is unknown.", "The linked span is a child of the current span.", "The linked span is a parent of the current span." - ], - "enum": [ - "TYPE_UNSPECIFIED", - "CHILD_LINKED_SPAN", - "PARENT_LINKED_SPAN" ] }, "attributes": { - "description": "A set of attributes on the link. There is a limit of 32 attributes per\nlink.", - "$ref": "Attributes" + "$ref": "Attributes", + "description": "A set of attributes on the link. There is a limit of 32 attributes per\nlink." }, "traceId": { "description": "`TRACE_ID` identifies a trace within a project.", @@ -666,22 +76,25 @@ "description": "`SPAN_ID` identifies a span within a trace.", "type": "string" } - } + }, + "id": "Link", + "description": "A pointer from the current span to another span in the same trace or in a\ndifferent trace. For example, this can be used in batching operations,\nwhere a single batch handler processes multiple requests from different\ntraces or when the handler receives a request from a different project.", + "type": "object" }, "Annotation": { - "description": "Text annotation with a set of attributes.", - "type": "object", "properties": { + "attributes": { + "description": "A set of attributes on the annotation. There is a limit of 4 attributes\nper Annotation.", + "$ref": "Attributes" + }, "description": { "$ref": "TruncatableString", "description": "A user-supplied message describing the event. The maximum length for\nthe description is 256 bytes." - }, - "attributes": { - "$ref": "Attributes", - "description": "A set of attributes on the annotation. There is a limit of 4 attributes\nper Annotation." } }, - "id": "Annotation" + "id": "Annotation", + "description": "Text annotation with a set of attributes.", + "type": "object" }, "StackFrames": { "description": "A collection of stack frames, which can be truncated.", @@ -703,7 +116,6 @@ "id": "StackFrames" }, "Trace": { - "id": "Trace", "description": "A trace describes how long it takes for an application to perform some\noperations. It consists of a set of spans, each representing\nan operation and including time information and operation details.", "type": "object", "properties": { @@ -711,29 +123,617 @@ "description": "The resource name of the trace in the following format:\n\n projects/[PROJECT_ID]/traces/TRACE_ID is a unique identifier for a trace within a project.\nThe ID is assigned when the trace is created.", "type": "string" } - } + }, + "id": "Trace" + }, + "TimeEvents": { + "properties": { + "droppedNetworkEventsCount": { + "format": "int32", + "description": "The number of dropped network events in all the included time events.\nIf the value is 0, then no network events were dropped.", + "type": "integer" + }, + "droppedAnnotationsCount": { + "format": "int32", + "description": "The number of dropped annotations in all the included time events.\nIf the value is 0, then no annotations were dropped.", + "type": "integer" + }, + "timeEvent": { + "description": "A collection of `TimeEvent`s.", + "items": { + "$ref": "TimeEvent" + }, + "type": "array" + } + }, + "id": "TimeEvents", + "description": "A collection of `TimeEvent`s. A `TimeEvent` is a time-stamped annotation\non the span, consisting of either user-supplied key:value pairs, or\ndetails of an RPC message sent/received on the network.", + "type": "object" + }, + "Module": { + "properties": { + "module": { + "$ref": "TruncatableString", + "description": "For example: main binary, kernel modules, and dynamic libraries\nsuch as libc.so, sharedlib.so (up to 256 bytes)." + }, + "buildId": { + "description": "A unique identifier for the module, usually a hash of its\ncontents (up to 128 bytes).", + "$ref": "TruncatableString" + } + }, + "id": "Module", + "description": "Binary module.", + "type": "object" + }, + "Status": { + "properties": { + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + } + }, + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object" + }, + "BatchWriteSpansRequest": { + "description": "The request message for the `BatchWriteSpans` method.", + "type": "object", + "properties": { + "spans": { + "description": "A collection of spans.", + "items": { + "$ref": "Span" + }, + "type": "array" + } + }, + "id": "BatchWriteSpansRequest" + }, + "ListTracesResponse": { + "properties": { + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then\n`next_page_token` is included. To get the next set of results, call this\nmethod again using the value of `next_page_token` as `page_token`.", + "type": "string" + }, + "traces": { + "description": "List of trace records returned.", + "items": { + "$ref": "Trace" + }, + "type": "array" + } + }, + "id": "ListTracesResponse", + "description": "The response message for the `ListTraces` method.", + "type": "object" + }, + "Span": { + "properties": { + "name": { + "description": "The resource name of the span in the following format:\n\n projects/[PROJECT_ID]traces/[TRACE_ID]/spans/SPAN_ID is a unique identifier for a trace within a project.\n[SPAN_ID] is a unique identifier for a span within a trace,\nassigned when the span is created.", + "type": "string" + }, + "stackTrace": { + "description": "Stack trace captured at the start of the span.", + "$ref": "StackTrace" + }, + "parentSpanId": { + "description": "The [SPAN_ID] of this span's parent span. If this is a root span,\nthen this field must be empty.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "The end time of the span. On the client side, this is the time kept by\nthe local machine where the span execution ends. On the server side, this\nis the time when the server application handler stops running.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The start time of the span. On the client side, this is the time kept by\nthe local machine where the span execution starts. On the server side, this\nis the time when the server's application handler starts running.", + "type": "string" + }, + "displayName": { + "description": "A description of the span's operation (up to 128 bytes).\nStackdriver Trace displays the description in the\n{% dynamic print site_values.console_name %}.\nFor example, the display name can be a qualified method name or a file name\nand a line number where the operation is called. A best practice is to use\nthe same display name within an application and at the same call point.\nThis makes it easier to correlate spans in different traces.", + "$ref": "TruncatableString" + }, + "timeEvents": { + "description": "The included time events. There can be up to 32 annotations and 128 network\nevents per span.", + "$ref": "TimeEvents" + }, + "links": { + "$ref": "Links", + "description": "A maximum of 128 links are allowed per Span." + }, + "attributes": { + "description": "A set of attributes on the span. There is a limit of 32 attributes per\nspan.", + "$ref": "Attributes" + }, + "spanId": { + "description": "The [SPAN_ID] portion of the span's resource name.", + "type": "string" + }, + "childSpanCount": { + "format": "uint32", + "description": "An optional number of child spans that were generated while this span\nwas active. If set, allows implementation to detect missing child spans.", + "type": "integer" + }, + "sameProcessAsParentSpan": { + "description": "A highly recommended but not required flag that identifies when a trace\ncrosses a process boundary. True when the parent_span belongs to the\nsame process as the current span.", + "type": "boolean" + }, + "status": { + "$ref": "Status", + "description": "An optional final status for this span." + } + }, + "id": "Span", + "description": "A span represents a single operation within a trace. Spans can be\nnested to form a trace tree. Often, a trace contains a root span\nthat describes the end-to-end latency, and one or more subspans for\nits sub-operations. A trace can also contain multiple root spans,\nor none at all. Spans do not need to be contiguous—there may be\ngaps or overlaps between spans in a trace.", + "type": "object" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "AttributeValue": { + "description": "The allowed types for [VALUE] in a `[KEY]:[VALUE]` attribute.", + "type": "object", + "properties": { + "intValue": { + "format": "int64", + "description": "A 64-bit signed integer.", + "type": "string" + }, + "boolValue": { + "description": "A Boolean value represented by `true` or `false`.", + "type": "boolean" + }, + "stringValue": { + "description": "A string up to 256 bytes long.", + "$ref": "TruncatableString" + } + }, + "id": "AttributeValue" + }, + "Attributes": { + "description": "A set of attributes, each in the format `[KEY]:[VALUE]`.", + "type": "object", + "properties": { + "attributeMap": { + "additionalProperties": { + "$ref": "AttributeValue" + }, + "description": "The set of attributes. Each attribute's key can be up to 128 bytes\nlong. The value can be a string up to 256 bytes, an integer, or the\nBoolean values `true` and `false`. For example:\n\n \"/instance_id\": \"my-instance\"\n \"/http/user_agent\": \"\"\n \"/http/request_bytes\": 300\n \"abc.com/myattribute\": true", + "type": "object" + }, + "droppedAttributesCount": { + "format": "int32", + "description": "The number of attributes that were discarded. Attributes can be discarded\nbecause their keys are too long or because there are too many attributes.\nIf this value is 0 then all attributes are valid.", + "type": "integer" + } + }, + "id": "Attributes" + }, + "Links": { + "properties": { + "link": { + "description": "A collection of links.", + "items": { + "$ref": "Link" + }, + "type": "array" + }, + "droppedLinksCount": { + "format": "int32", + "description": "The number of dropped links after the maximum size was enforced. If\nthis value is 0, then no links were dropped.", + "type": "integer" + } + }, + "id": "Links", + "description": "A collection of links, which are references from this span to a span\nin the same or different trace.", + "type": "object" + }, + "StackTrace": { + "properties": { + "stackTraceHashId": { + "format": "uint64", + "description": "The hash ID is used to conserve network bandwidth for duplicate\nstack traces within a single trace.\n\nOften multiple spans will have identical stack traces.\nThe first occurrence of a stack trace should contain both the\n`stackFrame` content and a value in `stackTraceHashId`.\n\nSubsequent spans within the same request can refer\nto that stack trace by only setting `stackTraceHashId`.", + "type": "string" + }, + "stackFrames": { + "$ref": "StackFrames", + "description": "Stack frames in this stack trace. A maximum of 128 frames are allowed." + } + }, + "id": "StackTrace", + "description": "A call stack appearing in a trace.", + "type": "object" + }, + "TruncatableString": { + "description": "Represents a string that might be shortened to a specified length.", + "type": "object", + "properties": { + "truncatedByteCount": { + "format": "int32", + "description": "The number of bytes removed from the original string. If this\nvalue is 0, then the string was not shortened.", + "type": "integer" + }, + "value": { + "description": "The shortened string. For example, if the original string was 500\nbytes long and the limit of the string was 128 bytes, then this\nvalue contains the first 128 bytes of the 500-byte string. Note that\ntruncation always happens on the character boundary, to ensure that\ntruncated string is still valid UTF8. In case of multi-byte characters,\nsize of truncated string can be less than truncation limit.", + "type": "string" + } + }, + "id": "TruncatableString" + }, + "TimeEvent": { + "description": "A time-stamped annotation or network event in the Span.", + "type": "object", + "properties": { + "networkEvent": { + "description": "An event describing an RPC message sent/received on the network.", + "$ref": "NetworkEvent" + }, + "annotation": { + "description": "One or more key:value pairs.", + "$ref": "Annotation" + }, + "time": { + "format": "google-datetime", + "description": "The timestamp indicating the time the event occurred.", + "type": "string" + } + }, + "id": "TimeEvent" + }, + "NetworkEvent": { + "properties": { + "time": { + "format": "google-datetime", + "description": "For sent messages, this is the time at which the first bit was sent.\nFor received messages, this is the time at which the last bit was\nreceived.", + "type": "string" + }, + "type": { + "enum": [ + "TYPE_UNSPECIFIED", + "SENT", + "RECV" + ], + "description": "Type of NetworkEvent. Indicates whether the RPC message was sent or\nreceived.", + "type": "string", + "enumDescriptions": [ + "Unknown event type.", + "Indicates a sent RPC message.", + "Indicates a received RPC message." + ] + }, + "messageId": { + "format": "uint64", + "description": "An identifier for the message, which must be unique in this span.", + "type": "string" + }, + "messageSize": { + "format": "uint64", + "description": "The number of bytes sent or received.", + "type": "string" + } + }, + "id": "NetworkEvent", + "description": "An event describing an RPC message sent or received on the network.", + "type": "object" + }, + "ListSpansResponse": { + "description": "The response message for the `ListSpans` method.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If defined, indicates that there might be more spans that match the\nrequest. Pass this as the value of `pageToken` in a subsequent request to\nretrieve additional spans.", + "type": "string" + }, + "spans": { + "description": "The requested spans, if there are any in the specified trace.", + "items": { + "$ref": "Span" + }, + "type": "array" + } + }, + "id": "ListSpansResponse" } }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, "canonicalName": "Cloud Trace", "auth": { "oauth2": { "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, "https://www.googleapis.com/auth/trace.readonly": { "description": "Read Trace data for a project or application" }, "https://www.googleapis.com/auth/trace.append": { "description": "Write Trace data for a project or application" - }, - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" } } } }, - "rootUrl": "https://cloudtrace.googleapis.com/" + "rootUrl": "https://cloudtrace.googleapis.com/", + "ownerDomain": "google.com", + "name": "cloudtrace", + "batchPath": "batch", + "title": "Stackdriver Trace API", + "ownerName": "Google", + "resources": { + "projects": { + "resources": { + "traces": { + "resources": { + "spans": { + "methods": { + "create": { + "request": { + "$ref": "Span" + }, + "description": "Creates a new Span.", + "response": { + "$ref": "Span" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.append" + ], + "parameters": { + "name": { + "description": "The resource name of the span in the following format:\n\n projects/[PROJECT_ID]traces/[TRACE_ID]/spans/SPAN_ID is a unique identifier for a trace within a project.\n[SPAN_ID] is a unique identifier for a span within a trace,\nassigned when the span is created.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/traces/[^/]+/spans/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2/projects/{projectsId}/traces/{tracesId}/spans/{spansId}", + "id": "cloudtrace.projects.traces.spans.create", + "path": "v2/{+name}" + } + } + } + }, + "methods": { + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListTracesResponse" + }, + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Required. The project where the trace data is stored. The format\nis `projects/PROJECT_ID`.", + "type": "string", + "required": true + }, + "orderBy": { + "location": "query", + "description": "Optional. A single field used to sort the returned traces.\nOnly the following field names can be used:\n\n* `trace_id`: the trace's ID field\n* `name`: the root span's resource name\n* `duration`: the difference between the root span's start time and end time\n* `start`: the start time of the root span\n\nSorting is in ascending order unless `desc` is appended to the sort field name.\nExample: `\"name desc\"`).", + "type": "string" + }, + "filter": { + "description": "Opional. Return only traces that match this\n[trace filter](/trace/docs/trace-filters). Example:\n\n \"label:/http/url root:/_ah/background my_label:17\"", + "type": "string", + "location": "query" + }, + "endTime": { + "location": "query", + "format": "google-datetime", + "description": "Optional. Do not return traces whose start time is later than this time.", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the\npreceding call to this method. `page_token` must be the value of\n`next_page_token` from the previous response. The values of other method\nparameters should be identical to those in the previous call.", + "type": "string" + }, + "startTime": { + "location": "query", + "format": "google-datetime", + "description": "Optional. Do not return traces whose end time is earlier than this time.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request.\nNon-positive values are ignored. The presence of `next_page_token` in the\nresponse indicates that more results might be available, even if fewer than\nthe maximum number of results is returned by this request.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.readonly" + ], + "flatPath": "v2/projects/{projectsId}/traces", + "path": "v2/{+parent}/traces", + "id": "cloudtrace.projects.traces.list", + "description": "Returns of a list of traces that match the specified filter conditions." + }, + "batchWrite": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Required. Name of the project where the spans belong. The format is\n`projects/PROJECT_ID`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.append" + ], + "flatPath": "v2/projects/{projectsId}/traces:batchWrite", + "path": "v2/{+name}/traces:batchWrite", + "id": "cloudtrace.projects.traces.batchWrite", + "description": "Sends new spans to Stackdriver Trace or updates existing traces. If the\nname of a trace that you send matches that of an existing trace, new spans\nare added to the existing trace. Attempt to update existing spans results\nundefined behavior. If the name does not match, a new trace is created\nwith given set of spans.", + "request": { + "$ref": "BatchWriteSpansRequest" + } + }, + "listSpans": { + "response": { + "$ref": "ListSpansResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the\npreceding call to this method. `page_token` must be the value of\n`next_page_token` from the previous response. The values of other method\nparameters should be identical to those in the previous call.", + "type": "string" + }, + "parent": { + "description": "Required: The resource name of the trace containing the spans to list.\nThe format is `projects/PROJECT_ID/traces/TRACE_ID`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/traces/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/trace.readonly" + ], + "flatPath": "v2/projects/{projectsId}/traces/{tracesId}:listSpans", + "id": "cloudtrace.projects.traces.listSpans", + "path": "v2/{+parent}:listSpans", + "description": "Returns a list of spans within a trace." + } + } + } + } + } + }, + "parameters": { + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + } + } } diff --git a/vendor/google.golang.org/api/container/v1/container-api.json b/vendor/google.golang.org/api/container/v1/container-api.json index da999c3..e716e5c 100644 --- a/vendor/google.golang.org/api/container/v1/container-api.json +++ b/vendor/google.golang.org/api/container/v1/container-api.json @@ -1,7 +1,24 @@ { - "revision": "20170814", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "servicePath": "", + "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.", + "kind": "discovery#restDescription", + "rootUrl": "https://container.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "container", + "batchPath": "batch", "id": "container:v1", "documentationLink": "https://cloud.google.com/container-engine/", + "revision": "20170818", "title": "Google Container Engine API", "ownerName": "Google", "discoveryVersion": "v1", @@ -11,14 +28,17 @@ "zones": { "methods": { "getServerconfig": { + "id": "container.projects.zones.getServerconfig", + "path": "v1/projects/{projectId}/zones/{zone}/serverconfig", + "description": "Returns configuration info about the Container Engine service.", "response": { "$ref": "ServerConfig" }, - "httpMethod": "GET", "parameterOrder": [ "projectId", "zone" ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -36,295 +56,13 @@ "required": true } }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/serverconfig", - "id": "container.projects.zones.getServerconfig", - "path": "v1/projects/{projectId}/zones/{zone}/serverconfig", - "description": "Returns configuration info about the Container Engine service." + "flatPath": "v1/projects/{projectId}/zones/{zone}/serverconfig" } }, "resources": { - "operations": { - "methods": { - "get": { - "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}", - "id": "container.projects.zones.operations.get", - "description": "Gets the specified operation.", - "httpMethod": "GET", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "projectId", - "zone", - "operationId" - ], - "parameters": { - "operationId": { - "location": "path", - "description": "The server-assigned `name` of the operation.", - "type": "string", - "required": true - }, - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}" - }, - "list": { - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "projectId", - "zone" - ], - "httpMethod": "GET", - "parameters": { - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/operations", - "id": "container.projects.zones.operations.list", - "path": "v1/projects/{projectId}/zones/{zone}/operations", - "description": "Lists all operations in a project in a specific zone or all zones." - }, - "cancel": { - "parameters": { - "operationId": { - "description": "The server-assigned `name` of the operation.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", - "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", - "id": "container.projects.zones.operations.cancel", - "description": "Cancels the specified operation.", - "request": { - "$ref": "CancelOperationRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "zone", - "operationId" - ], - "response": { - "$ref": "Empty" - } - } - } - }, "clusters": { "methods": { - "completeIpRotation": { - "parameters": { - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - }, - "clusterId": { - "description": "The name of the cluster.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", - "id": "container.projects.zones.clusters.completeIpRotation", - "description": "Completes master IP rotation.", - "request": { - "$ref": "CompleteIPRotationRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], - "response": { - "$ref": "Operation" - } - }, - "setNetworkPolicy": { - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", - "type": "string", - "required": true - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true - }, - "clusterId": { - "location": "path", - "description": "The name of the cluster.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", - "id": "container.projects.zones.clusters.setNetworkPolicy", - "request": { - "$ref": "SetNetworkPolicyRequest" - }, - "description": "Enables/Disables Network Policy for a cluster." - }, - "legacyAbac": { - "request": { - "$ref": "SetLegacyAbacRequest" - }, - "description": "Enables or disables the ABAC authorization mechanism on a cluster.", - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "clusterId": { - "location": "path", - "description": "The name of the cluster to update.", - "type": "string", - "required": true - }, - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", - "id": "container.projects.zones.clusters.legacyAbac" - }, - "get": { - "response": { - "$ref": "Cluster" - }, - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "clusterId": { - "description": "The name of the cluster to retrieve.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", - "id": "container.projects.zones.clusters.get", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", - "description": "Gets the details of a specific cluster." - }, "startIpRotation": { - "description": "Start master IP rotation.", - "request": { - "$ref": "StartIPRotationRequest" - }, "response": { "$ref": "Operation" }, @@ -342,10 +80,10 @@ "required": true }, "zone": { + "location": "path", "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", - "required": true, - "location": "path" + "required": true }, "clusterId": { "location": "path", @@ -359,59 +97,22 @@ ], "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation", "id": "container.projects.zones.clusters.startIpRotation", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation" + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation", + "description": "Start master IP rotation.", + "request": { + "$ref": "StartIPRotationRequest" + } }, "addons": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "clusterId": { - "location": "path", - "description": "The name of the cluster to upgrade.", - "type": "string", - "required": true - }, - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/addons", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/addons", - "id": "container.projects.zones.clusters.addons", - "request": { - "$ref": "SetAddonsConfigRequest" - }, - "description": "Sets the addons of a specific cluster.", "httpMethod": "POST", "parameterOrder": [ "projectId", "zone", "clusterId" ], - "response": { - "$ref": "Operation" - } - }, - "delete": { - "httpMethod": "DELETE", "response": { "$ref": "Operation" }, - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], "parameters": { "projectId": { "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", @@ -420,14 +121,14 @@ "location": "path" }, "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides." }, "clusterId": { "location": "path", - "description": "The name of the cluster to delete.", + "description": "The name of the cluster to upgrade.", "type": "string", "required": true } @@ -435,57 +136,94 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/addons", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/addons", + "id": "container.projects.zones.clusters.addons", + "description": "Sets the addons of a specific cluster.", + "request": { + "$ref": "SetAddonsConfigRequest" + } + }, + "delete": { + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, + "clusterId": { + "description": "The name of the cluster to delete.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", "id": "container.projects.zones.clusters.delete", - "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time." - }, - "locations": { - "description": "Sets the locations of a specific cluster.", - "request": { - "$ref": "SetLocationsRequest" + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time.", + "response": { + "$ref": "Operation" }, - "httpMethod": "POST", "parameterOrder": [ "projectId", "zone", "clusterId" ], - "response": { - "$ref": "Operation" - }, + "httpMethod": "DELETE" + }, + "locations": { "parameters": { - "clusterId": { - "description": "The name of the cluster to upgrade.", - "type": "string", - "required": true, - "location": "path" - }, "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840)." }, "zone": { "location": "path", "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", "required": true + }, + "clusterId": { + "description": "The name of the cluster to upgrade.", + "type": "string", + "required": true, + "location": "path" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/locations", + "id": "container.projects.zones.clusters.locations", "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/locations", - "id": "container.projects.zones.clusters.locations" + "description": "Sets the locations of a specific cluster.", + "request": { + "$ref": "SetLocationsRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST" }, "update": { - "description": "Updates the settings of a specific cluster.", - "request": { - "$ref": "UpdateClusterRequest" - }, "httpMethod": "PUT", "parameterOrder": [ "projectId", @@ -503,10 +241,10 @@ "required": true }, "zone": { + "location": "path", "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", - "required": true, - "location": "path" + "required": true }, "clusterId": { "location": "path", @@ -520,11 +258,13 @@ ], "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", - "id": "container.projects.zones.clusters.update" + "id": "container.projects.zones.clusters.update", + "description": "Updates the settings of a specific cluster.", + "request": { + "$ref": "UpdateClusterRequest" + } }, "monitoring": { - "id": "container.projects.zones.clusters.monitoring", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/monitoring", "request": { "$ref": "SetMonitoringServiceRequest" }, @@ -561,9 +301,17 @@ "required": true } }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/monitoring" + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/monitoring", + "id": "container.projects.zones.clusters.monitoring", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/monitoring" }, "master": { + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master", + "id": "container.projects.zones.clusters.master", + "request": { + "$ref": "UpdateMasterRequest" + }, + "description": "Updates the master of a specific cluster.", "httpMethod": "POST", "parameterOrder": [ "projectId", @@ -573,36 +321,30 @@ "response": { "$ref": "Operation" }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "projectId": { - "location": "path", "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", "required": true, "location": "path" }, - "clusterId": { + "zone": { "location": "path", - "description": "The name of the cluster to upgrade.", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", "required": true + }, + "clusterId": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the cluster to upgrade." } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master", - "id": "container.projects.zones.clusters.master", - "description": "Updates the master of a specific cluster.", - "request": { - "$ref": "UpdateMasterRequest" - } + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/master" }, "setMasterAuth": { "response": { @@ -615,12 +357,6 @@ ], "httpMethod": "POST", "parameters": { - "clusterId": { - "description": "The name of the cluster to upgrade.", - "type": "string", - "required": true, - "location": "path" - }, "projectId": { "location": "path", "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", @@ -628,10 +364,16 @@ "required": true }, "zone": { + "location": "path", "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", - "required": true, - "location": "path" + "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to upgrade.", + "type": "string", + "required": true } }, "scopes": [ @@ -646,10 +388,6 @@ } }, "logging": { - "request": { - "$ref": "SetLoggingServiceRequest" - }, - "description": "Sets the logging service of a specific cluster.", "response": { "$ref": "Operation" }, @@ -659,15 +397,12 @@ "clusterId" ], "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "clusterId": { - "location": "path", "description": "The name of the cluster to upgrade.", "type": "string", - "required": true + "required": true, + "location": "path" }, "projectId": { "location": "path", @@ -682,31 +417,35 @@ "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/logging", "id": "container.projects.zones.clusters.logging", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/logging" + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/logging", + "description": "Sets the logging service of a specific cluster.", + "request": { + "$ref": "SetLoggingServiceRequest" + } }, "list": { - "id": "container.projects.zones.clusters.list", - "path": "v1/projects/{projectId}/zones/{zone}/clusters", - "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.", - "response": { - "$ref": "ListClustersResponse" - }, "httpMethod": "GET", "parameterOrder": [ "projectId", "zone" ], + "response": { + "$ref": "ListClustersResponse" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "projectId": { - "location": "path", "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", "type": "string", - "required": true + "required": true, + "location": "path" }, "zone": { "location": "path", @@ -715,29 +454,66 @@ "required": true } }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters" + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters", + "path": "v1/projects/{projectId}/zones/{zone}/clusters", + "id": "container.projects.zones.clusters.list", + "description": "Lists all clusters owned by a project in either the specified zone or all\nzones." + }, + "create": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840)." + } + }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters", + "id": "container.projects.zones.clusters.create", + "path": "v1/projects/{projectId}/zones/{zone}/clusters", + "request": { + "$ref": "CreateClusterRequest" + }, + "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster." }, "resourceLabels": { - "description": "Sets labels on a cluster.", + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", + "id": "container.projects.zones.clusters.resourceLabels", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", "request": { "$ref": "SetLabelsRequest" }, - "httpMethod": "POST", + "description": "Sets labels on a cluster.", + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "projectId", "zone", "clusterId" ], - "response": { - "$ref": "Operation" - }, + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { - "clusterId": { - "location": "path", - "description": "The name of the cluster.", - "type": "string", - "required": true - }, "projectId": { "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", "type": "string", @@ -749,33 +525,108 @@ "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", "required": true + }, + "clusterId": { + "description": "The name of the cluster.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "completeIpRotation": { + "id": "container.projects.zones.clusters.completeIpRotation", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", + "description": "Completes master IP rotation.", + "request": { + "$ref": "CompleteIPRotationRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides." + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.", + "type": "string", + "required": true } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", - "id": "container.projects.zones.clusters.resourceLabels" + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation" }, - "create": { - "path": "v1/projects/{projectId}/zones/{zone}/clusters", - "id": "container.projects.zones.clusters.create", - "request": { - "$ref": "CreateClusterRequest" - }, - "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.", - "httpMethod": "POST", + "get": { + "description": "Gets the details of a specific cluster.", + "httpMethod": "GET", "parameterOrder": [ "projectId", - "zone" + "zone", + "clusterId" ], "response": { - "$ref": "Operation" + "$ref": "Cluster" }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], + "parameters": { + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to retrieve.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "id": "container.projects.zones.clusters.get" + }, + "legacyAbac": { + "description": "Enables or disables the ABAC authorization mechanism on a cluster.", + "request": { + "$ref": "SetLegacyAbacRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "Operation" + }, "parameters": { "projectId": { "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", @@ -788,212 +639,100 @@ "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to update.", + "type": "string", + "required": true } }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", + "id": "container.projects.zones.clusters.legacyAbac" + }, + "setNetworkPolicy": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "description": "The name of the cluster.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + "id": "container.projects.zones.clusters.setNetworkPolicy", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + "description": "Enables/Disables Network Policy for a cluster.", + "request": { + "$ref": "SetNetworkPolicyRequest" + } } }, "resources": { "nodePools": { "methods": { - "setSize": { - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "zone", - "clusterId", - "nodePoolId" - ], - "response": { - "$ref": "Operation" - }, - "parameters": { - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true - }, - "clusterId": { - "location": "path", - "description": "The name of the cluster to update.", - "type": "string", - "required": true - }, - "nodePoolId": { - "description": "The name of the node pool to update.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize", - "id": "container.projects.zones.clusters.nodePools.setSize", - "description": "Sets the size of a specific node pool.", - "request": { - "$ref": "SetNodePoolSizeRequest" - } - }, - "setManagement": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "projectId", - "zone", - "clusterId", - "nodePoolId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - }, - "clusterId": { - "location": "path", - "description": "The name of the cluster to update.", - "type": "string", - "required": true - }, - "nodePoolId": { - "location": "path", - "description": "The name of the node pool to update.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", - "id": "container.projects.zones.clusters.nodePools.setManagement", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", - "request": { - "$ref": "SetNodePoolManagementRequest" - }, - "description": "Sets the NodeManagement options for a node pool." - }, - "delete": { - "httpMethod": "DELETE", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "projectId", - "zone", - "clusterId", - "nodePoolId" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "clusterId": { - "location": "path", - "description": "The name of the cluster.", - "type": "string", - "required": true - }, - "nodePoolId": { - "description": "The name of the node pool to delete.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "location": "path", - "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", - "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", - "id": "container.projects.zones.clusters.nodePools.delete", - "description": "Deletes a node pool from a cluster." - }, - "list": { - "response": { - "$ref": "ListNodePoolsResponse" - }, - "parameterOrder": [ - "projectId", - "zone", - "clusterId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true, - "location": "path" - }, - "clusterId": { - "description": "The name of the cluster.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", - "id": "container.projects.zones.clusters.nodePools.list", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", - "description": "Lists the node pools for a cluster." - }, "rollback": { + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + "id": "container.projects.zones.clusters.nodePools.rollback", "request": { "$ref": "RollbackNodePoolUpgradeRequest" }, "description": "Roll back the previously Aborted or Failed NodePool upgrade.\nThis will be an no-op if the last upgrade successfully completed.", - "response": { - "$ref": "Operation" - }, + "httpMethod": "POST", "parameterOrder": [ "projectId", "zone", "clusterId", "nodePoolId" ], - "httpMethod": "POST", + "response": { + "$ref": "Operation" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, "clusterId": { "location": "path", "description": "The name of the cluster to rollback.", @@ -1001,57 +740,39 @@ "required": true }, "nodePoolId": { - "location": "path", "description": "The name of the node pool to rollback.", "type": "string", - "required": true - }, - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", - "type": "string", "required": true, "location": "path" - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true } - }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", - "id": "container.projects.zones.clusters.nodePools.rollback", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback" + } }, "create": { - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", - "id": "container.projects.zones.clusters.nodePools.create", - "description": "Creates a node pool for a cluster.", - "request": { - "$ref": "CreateNodePoolRequest" + "response": { + "$ref": "Operation" }, - "httpMethod": "POST", "parameterOrder": [ "projectId", "zone", "clusterId" ], - "response": { - "$ref": "Operation" - }, + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "projectId": { - "location": "path", "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", "type": "string", - "required": true - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", "required": true, "location": "path" }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, "clusterId": { "location": "path", "description": "The name of the cluster.", @@ -1059,14 +780,15 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools" + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "id": "container.projects.zones.clusters.nodePools.create", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "request": { + "$ref": "CreateNodePoolRequest" + }, + "description": "Creates a node pool for a cluster." }, "autoscaling": { - "id": "container.projects.zones.clusters.nodePools.autoscaling", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/autoscaling", "request": { "$ref": "SetNodePoolAutoscalingRequest" }, @@ -1085,18 +807,6 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "clusterId": { - "location": "path", - "description": "The name of the cluster to upgrade.", - "type": "string", - "required": true - }, - "nodePoolId": { - "description": "The name of the node pool to upgrade.", - "type": "string", - "required": true, - "location": "path" - }, "projectId": { "location": "path", "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", @@ -1108,23 +818,51 @@ "type": "string", "required": true, "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to upgrade.", + "type": "string", + "required": true + }, + "nodePoolId": { + "description": "The name of the node pool to upgrade.", + "type": "string", + "required": true, + "location": "path" } }, - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/autoscaling" + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/autoscaling", + "id": "container.projects.zones.clusters.nodePools.autoscaling", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/autoscaling" }, "get": { - "description": "Retrieves the node pool requested.", "httpMethod": "GET", - "response": { - "$ref": "NodePool" - }, "parameterOrder": [ "projectId", "zone", "clusterId", "nodePoolId" ], + "response": { + "$ref": "NodePool" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides." + }, "clusterId": { "description": "The name of the cluster.", "type": "string", @@ -1136,28 +874,31 @@ "type": "string", "required": true, "location": "path" - }, - "projectId": { - "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", - "type": "string", - "required": true, - "location": "path" - }, - "zone": { - "location": "path", - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string", - "required": true } }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "id": "container.projects.zones.clusters.nodePools.get", + "description": "Retrieves the node pool requested." + }, + "update": { + "request": { + "$ref": "UpdateNodePoolRequest" + }, + "description": "Updates the version and/or image type of a specific node pool.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", - "id": "container.projects.zones.clusters.nodePools.get" - }, - "update": { "parameters": { "clusterId": { "description": "The name of the cluster to upgrade.", @@ -1178,21 +919,65 @@ "location": "path" }, "zone": { + "type": "string", + "required": true, "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides." + } + }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update", + "id": "container.projects.zones.clusters.nodePools.update", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update" + }, + "delete": { + "id": "container.projects.zones.clusters.nodePools.delete", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "description": "Deletes a node pool from a cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "httpMethod": "DELETE", + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", "type": "string", - "required": true + "required": true, + "location": "path" + }, + "clusterId": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the cluster." + }, + "nodePoolId": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the node pool to delete." } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update", - "id": "container.projects.zones.clusters.nodePools.update", - "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/update", - "description": "Updates the version and/or image type of a specific node pool.", + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}" + }, + "setSize": { + "description": "Sets the size of a specific node pool.", "request": { - "$ref": "UpdateNodePoolRequest" + "$ref": "SetNodePoolSizeRequest" }, "response": { "$ref": "Operation" @@ -1203,11 +988,243 @@ "clusterId", "nodePoolId" ], - "httpMethod": "POST" + "httpMethod": "POST", + "parameters": { + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to update.", + "type": "string", + "required": true + }, + "nodePoolId": { + "location": "path", + "description": "The name of the node pool to update.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize", + "id": "container.projects.zones.clusters.nodePools.setSize", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setSize" + }, + "setManagement": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to update.", + "type": "string", + "required": true + }, + "nodePoolId": { + "location": "path", + "description": "The name of the node pool to update.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + "id": "container.projects.zones.clusters.nodePools.setManagement", + "description": "Sets the NodeManagement options for a node pool.", + "request": { + "$ref": "SetNodePoolManagementRequest" + } + }, + "list": { + "response": { + "$ref": "ListNodePoolsResponse" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber)." + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + }, + "clusterId": { + "description": "The name of the cluster.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "id": "container.projects.zones.clusters.nodePools.list", + "path": "v1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "description": "Lists the node pools for a cluster." } } } } + }, + "operations": { + "methods": { + "cancel": { + "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", + "id": "container.projects.zones.operations.cancel", + "description": "Cancels the specified operation.", + "request": { + "$ref": "CancelOperationRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "operationId" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "operationId": { + "location": "path", + "description": "The server-assigned `name` of the operation.", + "type": "string", + "required": true + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840)." + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel" + }, + "get": { + "httpMethod": "GET", + "parameterOrder": [ + "projectId", + "zone", + "operationId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "operationId": { + "description": "The server-assigned `name` of the operation.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}", + "path": "v1/projects/{projectId}/zones/{zone}/operations/{operationId}", + "id": "container.projects.zones.operations.get", + "description": "Gets the specified operation." + }, + "list": { + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "projectId", + "zone" + ], + "httpMethod": "GET", + "parameters": { + "zone": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones." + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/zones/{zone}/operations", + "id": "container.projects.zones.operations.list", + "path": "v1/projects/{projectId}/zones/{zone}/operations", + "description": "Lists all operations in a project in a specific zone or all zones." + } + } } } } @@ -1215,60 +1232,12 @@ } }, "parameters": { - "access_token": { - "description": "OAuth access token.", + "callback": { + "description": "JSONP", "type": "string", "location": "query" }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, "$.xgafv": { - "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", @@ -1278,14 +1247,16 @@ "enum": [ "1", "2" - ] - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" + ], + "description": "V1 error format." }, "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -1293,622 +1264,62 @@ ], "location": "query", "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], + "default": "json" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" } }, "schemas": { - "AutoUpgradeOptions": { - "description": "AutoUpgradeOptions defines the set of options for the user to control how\nthe Auto Upgrades will proceed.", - "type": "object", - "properties": { - "description": { - "description": "[Output only] This field is set when upgrades are about to commence\nwith the description of the upgrade.", - "type": "string" - }, - "autoUpgradeStartTime": { - "description": "[Output only] This field is set when upgrades are about to commence\nwith the approximate start time for the upgrades, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", - "type": "string" - } - }, - "id": "AutoUpgradeOptions" - }, - "ListClustersResponse": { - "id": "ListClustersResponse", - "description": "ListClustersResponse is the result of ListClustersRequest.", - "type": "object", - "properties": { - "missingZones": { - "description": "If any zones are listed here, the list of clusters returned\nmay be missing those zones.", - "items": { - "type": "string" - }, - "type": "array" - }, - "clusters": { - "description": "A list of clusters in the project in the specified zone, or\nacross all ones.", - "items": { - "$ref": "Cluster" - }, - "type": "array" - } - } - }, - "HttpLoadBalancing": { - "id": "HttpLoadBalancing", - "description": "Configuration options for the HTTP (L7) load balancing controller addon,\nwhich makes it easy to set up HTTP load balancers for services in a cluster.", - "type": "object", - "properties": { - "disabled": { - "description": "Whether the HTTP Load Balancing controller is enabled in the cluster.\nWhen enabled, it runs a small pod in the cluster that manages the load\nbalancers.", - "type": "boolean" - } - } - }, - "SetNetworkPolicyRequest": { - "id": "SetNetworkPolicyRequest", - "description": "SetNetworkPolicyRequest enables/disables network policy for a cluster.", - "type": "object", - "properties": { - "networkPolicy": { - "description": "Configuration options for the NetworkPolicy feature.", - "$ref": "NetworkPolicy" - } - } - }, - "SetMasterAuthRequest": { - "description": "SetMasterAuthRequest updates the admin password of a cluster.", - "type": "object", - "properties": { - "update": { - "description": "A description of the update.", - "$ref": "MasterAuth" - }, - "action": { - "description": "The exact form of action to be taken on the master auth", - "type": "string", - "enumDescriptions": [ - "Operation is unknown and will error out", - "Set the password to a user generated value.", - "Generate a new password and set it to that." - ], - "enum": [ - "UNKNOWN", - "SET_PASSWORD", - "GENERATE_PASSWORD" - ] - } - }, - "id": "SetMasterAuthRequest" - }, - "ClientCertificateConfig": { - "description": "Configuration for client certificates on the cluster.", - "type": "object", - "properties": { - "issueClientCertificate": { - "description": "Issue a client certificate.", - "type": "boolean" - } - }, - "id": "ClientCertificateConfig" - }, - "NodePoolAutoscaling": { - "id": "NodePoolAutoscaling", - "description": "NodePoolAutoscaling contains information required by cluster autoscaler to\nadjust the size of the node pool to the current cluster usage.", - "type": "object", - "properties": { - "enabled": { - "description": "Is autoscaling enabled for this node pool.", - "type": "boolean" - }, - "maxNodeCount": { - "format": "int32", - "description": "Maximum number of nodes in the NodePool. Must be \u003e= min_node_count. There\nhas to enough quota to scale up the cluster.", - "type": "integer" - }, - "minNodeCount": { - "format": "int32", - "description": "Minimum number of nodes in the NodePool. Must be \u003e= 1 and \u003c=\nmax_node_count.", - "type": "integer" - } - } - }, - "ClusterUpdate": { - "description": "ClusterUpdate describes an update to the cluster. Exactly one update can\nbe applied to a cluster with each request, so at most one field can be\nprovided.", - "type": "object", - "properties": { - "desiredMasterVersion": { - "description": "The Kubernetes version to change the master to. The only valid value is the\nlatest supported version. Use \"-\" to have the server automatically select\nthe latest version.", - "type": "string" - }, - "desiredMasterAuthorizedNetworksConfig": { - "description": "Master authorized networks is a Beta feature.\nThe desired configuration options for master authorized networks feature.", - "$ref": "MasterAuthorizedNetworksConfig" - }, - "desiredLocations": { - "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.", - "items": { - "type": "string" - }, - "type": "array" - }, - "desiredNodePoolAutoscaling": { - "description": "Autoscaler configuration for the node pool specified in\ndesired_node_pool_id. If there is only one pool in the\ncluster and desired_node_pool_id is not provided then\nthe change applies to that single node pool.", - "$ref": "NodePoolAutoscaling" - }, - "desiredMonitoringService": { - "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster", - "type": "string" - }, - "desiredImageType": { - "description": "The desired image type for the node pool.\nNOTE: Set the \"desired_node_pool\" field as well.", - "type": "string" - }, - "desiredAddonsConfig": { - "description": "Configurations for the various addons available to run in the cluster.", - "$ref": "AddonsConfig" - }, - "desiredNodePoolId": { - "description": "The node pool to be upgraded. This field is mandatory if\n\"desired_node_version\", \"desired_image_family\" or\n\"desired_node_pool_autoscaling\" is specified and there is more than one\nnode pool on the cluster.", - "type": "string" - }, - "desiredNodeVersion": { - "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.", - "type": "string" - } - }, - "id": "ClusterUpdate" - }, - "IPAllocationPolicy": { - "description": "Configuration for controlling how IPs are allocated in the cluster.", - "type": "object", - "properties": { - "useIpAliases": { - "description": "Whether alias IPs will be used for pod IPs in the cluster.", - "type": "boolean" - }, - "createSubnetwork": { - "description": "Whether a new subnetwork will be created automatically for the cluster.\n\nThis field is only applicable when `use_ip_aliases` is true.", - "type": "boolean" - }, - "subnetworkName": { - "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If\nthis field is empty, then an automatic name will be chosen for the new\nsubnetwork.", - "type": "string" - }, - "clusterIpv4Cidr": { - "description": "The IP address range for the cluster pod IPs. If this field is set, then\n`cluster.cluster_ipv4_cidr` must be left blank.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range will be chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range be chosen with a specific\nnetmask.\n\nSet to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", - "type": "string" - }, - "nodeIpv4Cidr": { - "description": "The IP address range of the instance IPs in this cluster.\n\nThis is applicable only if `create_subnetwork` is true.\n\nSet to blank to have a range will be chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range be chosen with a specific\nnetmask.\n\nSet to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", - "type": "string" - }, - "servicesIpv4Cidr": { - "description": "The IP address range of the services IPs in this cluster. If blank, a range\nwill be automatically chosen with the default size.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range will be chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range be chosen with a specific\nnetmask.\n\nSet to a [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", - "type": "string" - } - }, - "id": "IPAllocationPolicy" - }, - "SetLoggingServiceRequest": { - "id": "SetLoggingServiceRequest", - "description": "SetLoggingServiceRequest sets the logging service of a cluster.", - "type": "object", - "properties": { - "loggingService": { - "description": "The logging service the cluster should use to write metrics.\nCurrently available options:\n\n* \"logging.googleapis.com\" - the Google Cloud Logging service\n* \"none\" - no metrics will be exported from the cluster", - "type": "string" - } - } - }, - "HorizontalPodAutoscaling": { - "description": "Configuration options for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods.", - "type": "object", - "properties": { - "disabled": { - "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.\nWhen enabled, it ensures that a Heapster pod is running in the cluster,\nwhich is also used by the Cloud Monitoring service.", - "type": "boolean" - } - }, - "id": "HorizontalPodAutoscaling" - }, - "SetNodePoolManagementRequest": { - "description": "SetNodePoolManagementRequest sets the node management properties of a node\npool.", - "type": "object", - "properties": { - "management": { - "description": "NodeManagement configuration for the node pool.", - "$ref": "NodeManagement" - } - }, - "id": "SetNodePoolManagementRequest" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "MasterAuthorizedNetworksConfig": { - "id": "MasterAuthorizedNetworksConfig", - "description": "Master authorized networks is a Beta feature.\nConfiguration options for the master authorized networks feature. Enabled\nmaster authorized networks will disallow all external traffic to access\nKubernetes master through HTTPS except traffic from the given CIDR blocks,\nGoogle Compute Engine Public IPs and Google Prod IPs.", - "type": "object", - "properties": { - "enabled": { - "description": "Whether or not master authorized networks is enabled.", - "type": "boolean" - }, - "cidrBlocks": { - "description": "cidr_blocks define up to 10 external networks that could access\nKubernetes master through HTTPS.", - "items": { - "$ref": "CidrBlock" - }, - "type": "array" - } - } - }, - "SetNodePoolAutoscalingRequest": { - "description": "SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.", - "type": "object", - "properties": { - "autoscaling": { - "$ref": "NodePoolAutoscaling", - "description": "Autoscaling configuration for the node pool." - } - }, - "id": "SetNodePoolAutoscalingRequest" - }, - "CreateClusterRequest": { - "description": "CreateClusterRequest creates a cluster.", - "type": "object", - "properties": { - "cluster": { - "description": "A [cluster\nresource](/container-engine/reference/rest/v1/projects.zones.clusters)", - "$ref": "Cluster" - } - }, - "id": "CreateClusterRequest" - }, - "ListNodePoolsResponse": { - "description": "ListNodePoolsResponse is the result of ListNodePoolsRequest.", - "type": "object", - "properties": { - "nodePools": { - "description": "A list of node pools for a cluster.", - "items": { - "$ref": "NodePool" - }, - "type": "array" - } - }, - "id": "ListNodePoolsResponse" - }, - "CompleteIPRotationRequest": { - "id": "CompleteIPRotationRequest", - "description": "CompleteIPRotationRequest moves the cluster master back into single-IP mode.", - "type": "object", - "properties": {} - }, - "StartIPRotationRequest": { - "description": "StartIPRotationRequest creates a new IP for the cluster and then performs\na node upgrade on each node pool to point to the new IP.", - "type": "object", - "properties": {}, - "id": "StartIPRotationRequest" - }, - "UpdateNodePoolRequest": { - "description": "UpdateNodePoolRequests update a node pool's image and/or version.", - "type": "object", - "properties": { - "imageType": { - "description": "The desired image type for the node pool.", - "type": "string" - }, - "nodeVersion": { - "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.", - "type": "string" - } - }, - "id": "UpdateNodePoolRequest" - }, - "AcceleratorConfig": { - "id": "AcceleratorConfig", - "description": "AcceleratorConfig represents a Hardware Accelerator request.", - "type": "object", - "properties": { - "acceleratorType": { - "description": "The accelerator type resource name. List of supported accelerators\n[here](/compute/docs/gpus/#Introduction)", - "type": "string" - }, - "acceleratorCount": { - "format": "int64", - "description": "The number of the accelerator cards exposed to an instance.", - "type": "string" - } - } - }, - "LegacyAbac": { - "description": "Configuration for the legacy Attribute Based Access Control authorization\nmode.", - "type": "object", - "properties": { - "enabled": { - "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled,\nidentities in the system, including service accounts, nodes, and\ncontrollers, will have statically granted permissions beyond those\nprovided by the RBAC configuration or IAM.", - "type": "boolean" - } - }, - "id": "LegacyAbac" - }, - "SetAddonsConfigRequest": { - "id": "SetAddonsConfigRequest", - "description": "SetAddonsConfigRequest sets the addons associated with the cluster.", - "type": "object", - "properties": { - "addonsConfig": { - "$ref": "AddonsConfig", - "description": "The desired configurations for the various addons available to run in the\ncluster." - } - } - }, - "NodePool": { - "id": "NodePool", - "description": "NodePool contains the name and configuration for a cluster's node pool.\nNode pools are a set of nodes (i.e. VM's), with a common configuration and\nspecification, under the control of the cluster master. They may have a set\nof Kubernetes labels applied to them, which may be used to reference them\nduring pod scheduling. They may also be resized up or down, to accommodate\nthe workload.", - "type": "object", - "properties": { - "status": { - "description": "[Output only] The status of the nodes in this pool instance.", - "type": "string", - "enumDescriptions": [ - "Not set.", - "The PROVISIONING state indicates the node pool is being created.", - "The RUNNING state indicates the node pool has been created\nand is fully usable.", - "The RUNNING_WITH_ERROR state indicates the node pool has been created\nand is partially usable. Some error state has occurred and some\nfunctionality may be impaired. Customer may need to reissue a request\nor trigger a new update.", - "The RECONCILING state indicates that some work is actively being done on\nthe node pool, such as upgrading node software. Details can\nbe found in the `statusMessage` field.", - "The STOPPING state indicates the node pool is being deleted.", - "The ERROR state indicates the node pool may be unusable. Details\ncan be found in the `statusMessage` field." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "PROVISIONING", - "RUNNING", - "RUNNING_WITH_ERROR", - "RECONCILING", - "STOPPING", - "ERROR" - ] - }, - "config": { - "description": "The node configuration of the pool.", - "$ref": "NodeConfig" - }, - "statusMessage": { - "description": "[Output only] Additional information about the current status of this\nnode pool instance, if available.", - "type": "string" - }, - "name": { - "description": "The name of the node pool.", - "type": "string" - }, - "autoscaling": { - "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled\nonly if a valid configuration is present.", - "$ref": "NodePoolAutoscaling" - }, - "initialNodeCount": { - "format": "int32", - "description": "The initial node count for the pool. You must ensure that your\nCompute Engine \u003ca href=\"/compute/docs/resource-quotas\"\u003eresource quota\u003c/a\u003e\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.", - "type": "integer" - }, - "management": { - "description": "NodeManagement configuration for this NodePool.", - "$ref": "NodeManagement" - }, - "selfLink": { - "description": "[Output only] Server-defined URL for the resource.", - "type": "string" - }, - "instanceGroupUrls": { - "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\nnode pool.", - "items": { - "type": "string" - }, - "type": "array" - }, - "version": { - "description": "[Output only] The version of the Kubernetes of this node.", - "type": "string" - } - } - }, - "SetLabelsRequest": { - "description": "SetLabelsRequest sets the Google Cloud Platform labels on a Google Container\nEngine cluster, which will in turn set them for Google Compute Engine\nresources used by that cluster", - "type": "object", - "properties": { - "resourceLabels": { - "description": "The labels to set for that cluster.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "labelFingerprint": { - "description": "The fingerprint of the previous set of labels for this resource,\nused to detect conflicts. The fingerprint is initially generated by\nContainer Engine and changes after every request to modify or update\nlabels. You must always provide an up-to-date fingerprint hash when\nupdating or changing labels. Make a \u003ccode\u003eget()\u003c/code\u003e request to the\nresource to get the latest fingerprint.", - "type": "string" - } - }, - "id": "SetLabelsRequest" - }, - "NodeManagement": { - "description": "NodeManagement defines the set of node management services turned on for the\nnode pool.", - "type": "object", - "properties": { - "autoRepair": { - "description": "A flag that specifies whether the node auto-repair is enabled for the node\npool. If enabled, the nodes in this node pool will be monitored and, if\nthey fail health checks too many times, an automatic repair action will be\ntriggered.", - "type": "boolean" - }, - "autoUpgrade": { - "description": "A flag that specifies whether node auto-upgrade is enabled for the node\npool. If enabled, node auto-upgrade helps keep the nodes in your node pool\nup to date with the latest release version of Kubernetes.", - "type": "boolean" - }, - "upgradeOptions": { - "description": "Specifies the Auto Upgrade knobs for the node pool.", - "$ref": "AutoUpgradeOptions" - } - }, - "id": "NodeManagement" - }, - "CancelOperationRequest": { - "description": "CancelOperationRequest cancels a single operation.", - "type": "object", - "properties": {}, - "id": "CancelOperationRequest" - }, - "KubernetesDashboard": { - "description": "Configuration for the Kubernetes Dashboard.", - "type": "object", - "properties": { - "disabled": { - "description": "Whether the Kubernetes Dashboard is enabled for this cluster.", - "type": "boolean" - } - }, - "id": "KubernetesDashboard" - }, - "SetLegacyAbacRequest": { - "id": "SetLegacyAbacRequest", - "description": "SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for\na cluster.", - "type": "object", - "properties": { - "enabled": { - "description": "Whether ABAC authorization will be enabled in the cluster.", - "type": "boolean" - } - } - }, - "Operation": { - "id": "Operation", - "description": "This operation resource represents operations that may have happened or are\nhappening on the cluster. All fields are output only.", - "type": "object", - "properties": { - "detail": { - "description": "Detailed operation progress, if available.", - "type": "string" - }, - "targetLink": { - "description": "Server-defined URL for the target of the operation.", - "type": "string" - }, - "operationType": { - "description": "The operation type.", - "type": "string", - "enumDescriptions": [ - "Not set.", - "Cluster create.", - "Cluster delete.", - "A master upgrade.", - "A node upgrade.", - "Cluster repair.", - "Cluster update.", - "Node pool create.", - "Node pool delete.", - "Set node pool management.", - "Automatic node pool repair.", - "Automatic node upgrade.", - "Set labels.", - "Set/generate master auth materials", - "Set node pool size.", - "Updates network policy for a cluster." - ], - "enum": [ - "TYPE_UNSPECIFIED", - "CREATE_CLUSTER", - "DELETE_CLUSTER", - "UPGRADE_MASTER", - "UPGRADE_NODES", - "REPAIR_CLUSTER", - "UPDATE_CLUSTER", - "CREATE_NODE_POOL", - "DELETE_NODE_POOL", - "SET_NODE_POOL_MANAGEMENT", - "AUTO_REPAIR_NODES", - "AUTO_UPGRADE_NODES", - "SET_LABELS", - "SET_MASTER_AUTH", - "SET_NODE_POOL_SIZE", - "SET_NETWORK_POLICY" - ] - }, - "zone": { - "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation\nis taking place.", - "type": "string" - }, - "status": { - "description": "The current status of the operation.", - "type": "string", - "enumDescriptions": [ - "Not set.", - "The operation has been created.", - "The operation is currently running.", - "The operation is done, either cancelled or completed.", - "The operation is aborting." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "PENDING", - "RUNNING", - "DONE", - "ABORTING" - ] - }, - "name": { - "description": "The server-assigned ID for the operation.", - "type": "string" - }, - "statusMessage": { - "description": "If an error has occurred, a textual description of the error.", - "type": "string" - }, - "selfLink": { - "description": "Server-defined URL for the resource.", - "type": "string" - } - } - }, - "AddonsConfig": { - "id": "AddonsConfig", - "description": "Configuration for the addons that can be automatically spun up in the\ncluster, enabling additional functionality.", - "type": "object", - "properties": { - "httpLoadBalancing": { - "$ref": "HttpLoadBalancing", - "description": "Configuration for the HTTP (L7) load balancing controller addon, which\nmakes it easy to set up HTTP load balancers for services in a cluster." - }, - "kubernetesDashboard": { - "$ref": "KubernetesDashboard", - "description": "Configuration for the Kubernetes Dashboard." - }, - "horizontalPodAutoscaling": { - "$ref": "HorizontalPodAutoscaling", - "description": "Configuration for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods." - } - } - }, - "SetLocationsRequest": { - "description": "SetLocationsRequest sets the locations of the cluster.", - "type": "object", - "properties": { - "locations": { - "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "SetLocationsRequest" - }, "RollbackNodePoolUpgradeRequest": { "description": "RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed\nNodePool upgrade. This will be an no-op if the last upgrade successfully\ncompleted.", "type": "object", @@ -1928,15 +1339,15 @@ "id": "SetNodePoolSizeRequest" }, "UpdateClusterRequest": { - "id": "UpdateClusterRequest", - "description": "UpdateClusterRequest updates the settings of a cluster.", "type": "object", "properties": { "update": { - "description": "A description of the update.", - "$ref": "ClusterUpdate" + "$ref": "ClusterUpdate", + "description": "A description of the update." } - } + }, + "id": "UpdateClusterRequest", + "description": "UpdateClusterRequest updates the settings of a cluster." }, "NetworkPolicy": { "description": "Configuration options for the NetworkPolicy feature.\nhttps://kubernetes.io/docs/concepts/services-networking/networkpolicies/", @@ -1947,15 +1358,15 @@ "type": "boolean" }, "provider": { + "enum": [ + "PROVIDER_UNSPECIFIED", + "CALICO" + ], "description": "The selected network policy provider.", "type": "string", "enumDescriptions": [ "Not set", "Tigera (Calico Felix)." - ], - "enum": [ - "PROVIDER_UNSPECIFIED", - "CALICO" ] } }, @@ -1976,12 +1387,98 @@ "description": "A Google Container Engine cluster.", "type": "object", "properties": { + "currentNodeCount": { + "format": "int32", + "description": "[Output only] The number of nodes currently in the cluster.", + "type": "integer" + }, + "monitoringService": { + "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the cluster.\n* if left as an empty string, `monitoring.googleapis.com` will be used.", + "type": "string" + }, + "network": { + "description": "The name of the Google Compute Engine\n[network](/compute/docs/networks-and-firewalls#networks) to which the\ncluster is connected. If left unspecified, the `default` network\nwill be used.", + "type": "string" + }, + "labelFingerprint": { + "description": "The fingerprint of the set of labels for this cluster.", + "type": "string" + }, + "zone": { + "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", + "type": "string" + }, + "loggingService": { + "description": "The logging service the cluster should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the cluster.\n* if left as an empty string,`logging.googleapis.com` will be used.", + "type": "string" + }, + "nodeIpv4CidrSize": { + "format": "int32", + "description": "[Output only] The size of the address space on each node for hosting\ncontainers. This is provisioned from within the `container_ipv4_cidr`\nrange.", + "type": "integer" + }, + "expireTime": { + "description": "[Output only] The time the cluster will be automatically\ndeleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + }, + "masterAuthorizedNetworksConfig": { + "$ref": "MasterAuthorizedNetworksConfig", + "description": "Master authorized networks is a Beta feature.\nThe configuration options for master authorized networks feature." + }, + "statusMessage": { + "description": "[Output only] Additional information about the current status of this\ncluster, if available.", + "type": "string" + }, + "masterAuth": { + "$ref": "MasterAuth", + "description": "The authentication information for accessing the master endpoint." + }, + "currentMasterVersion": { + "description": "[Output only] The current software version of the master endpoint.", + "type": "string" + }, + "nodeConfig": { + "$ref": "NodeConfig", + "description": "Parameters used in creating the cluster's nodes.\nSee `nodeConfig` for the description of its properties.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"initial_node_count\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.\nFor responses, this field will be populated with the node configuration of\nthe first node pool.\n\nIf unspecified, the defaults are used." + }, + "addonsConfig": { + "$ref": "AddonsConfig", + "description": "Configurations for the various addons available to run in the cluster." + }, + "status": { + "enumDescriptions": [ + "Not set.", + "The PROVISIONING state indicates the cluster is being created.", + "The RUNNING state indicates the cluster has been created and is fully\nusable.", + "The RECONCILING state indicates that some work is actively being done on\nthe cluster, such as upgrading the master or node software. Details can\nbe found in the `statusMessage` field.", + "The STOPPING state indicates the cluster is being deleted.", + "The ERROR state indicates the cluster may be unusable. Details\ncan be found in the `statusMessage` field." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "PROVISIONING", + "RUNNING", + "RECONCILING", + "STOPPING", + "ERROR" + ], + "description": "[Output only] The current status of this cluster.", + "type": "string" + }, + "subnetwork": { + "description": "The name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ncluster is connected.", + "type": "string" + }, + "currentNodeVersion": { + "description": "[Output only] The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes.", + "type": "string" + }, "resourceLabels": { - "description": "The resource labels for the cluster to use to annotate any related\nGoogle Compute Engine resources.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "The resource labels for the cluster to use to annotate any related\nGoogle Compute Engine resources.", + "type": "object" }, "name": { "description": "The name of this cluster. The name must be unique within this project\nand zone, and can be up to 40 characters with the following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.", @@ -1992,17 +1489,17 @@ "type": "string" }, "ipAllocationPolicy": { - "description": "Configuration for cluster IP allocation.", - "$ref": "IPAllocationPolicy" + "$ref": "IPAllocationPolicy", + "description": "Configuration for cluster IP allocation." + }, + "endpoint": { + "type": "string", + "description": "[Output only] The IP address of this cluster's master endpoint.\nThe endpoint can be accessed from the internet at\n`https://username:password@endpoint/`.\n\nSee the `masterAuth` property of this resource for username and\npassword information." }, "legacyAbac": { "description": "Configuration for the legacy ABAC authorization mode.", "$ref": "LegacyAbac" }, - "endpoint": { - "description": "[Output only] The IP address of this cluster's master endpoint.\nThe endpoint can be accessed from the internet at\n`https://username:password@endpoint/`.\n\nSee the `masterAuth` property of this resource for username and\npassword information.", - "type": "string" - }, "createTime": { "description": "[Output only] The time the cluster was created, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", "type": "string" @@ -2041,13 +1538,13 @@ }, "type": "array" }, - "networkPolicy": { - "description": "Configuration options for the NetworkPolicy feature.", - "$ref": "NetworkPolicy" - }, "servicesIpv4Cidr": { - "description": "[Output only] The IP address range of the Kubernetes services in\nthis cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `1.2.3.4/29`). Service addresses are\ntypically put in the last `/16` from the container CIDR.", - "type": "string" + "type": "string", + "description": "[Output only] The IP address range of the Kubernetes services in\nthis cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `1.2.3.4/29`). Service addresses are\ntypically put in the last `/16` from the container CIDR." + }, + "networkPolicy": { + "$ref": "NetworkPolicy", + "description": "Configuration options for the NetworkPolicy feature." }, "enableKubernetesAlpha": { "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha\nAPI groups (e.g. v1alpha1) and features that may not be production ready in\nthe kubernetes version of the master and nodes.\nThe cluster has no SLA for uptime and master/node upgrades are disabled.\nAlpha enabled clusters are automatically deleted thirty days after\ncreation.", @@ -2056,98 +1553,11 @@ "description": { "description": "An optional description of this cluster.", "type": "string" - }, - "currentNodeCount": { - "format": "int32", - "description": "[Output only] The number of nodes currently in the cluster.", - "type": "integer" - }, - "monitoringService": { - "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the cluster.\n* if left as an empty string, `monitoring.googleapis.com` will be used.", - "type": "string" - }, - "network": { - "description": "The name of the Google Compute Engine\n[network](/compute/docs/networks-and-firewalls#networks) to which the\ncluster is connected. If left unspecified, the `default` network\nwill be used.", - "type": "string" - }, - "labelFingerprint": { - "description": "The fingerprint of the set of labels for this cluster.", - "type": "string" - }, - "zone": { - "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.", - "type": "string" - }, - "expireTime": { - "description": "[Output only] The time the cluster will be automatically\ndeleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", - "type": "string" - }, - "nodeIpv4CidrSize": { - "format": "int32", - "description": "[Output only] The size of the address space on each node for hosting\ncontainers. This is provisioned from within the `container_ipv4_cidr`\nrange.", - "type": "integer" - }, - "loggingService": { - "description": "The logging service the cluster should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the cluster.\n* if left as an empty string,`logging.googleapis.com` will be used.", - "type": "string" - }, - "masterAuthorizedNetworksConfig": { - "description": "Master authorized networks is a Beta feature.\nThe configuration options for master authorized networks feature.", - "$ref": "MasterAuthorizedNetworksConfig" - }, - "statusMessage": { - "description": "[Output only] Additional information about the current status of this\ncluster, if available.", - "type": "string" - }, - "masterAuth": { - "description": "The authentication information for accessing the master endpoint.", - "$ref": "MasterAuth" - }, - "currentMasterVersion": { - "description": "[Output only] The current software version of the master endpoint.", - "type": "string" - }, - "nodeConfig": { - "$ref": "NodeConfig", - "description": "Parameters used in creating the cluster's nodes.\nSee `nodeConfig` for the description of its properties.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"initial_node_count\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.\nFor responses, this field will be populated with the node configuration of\nthe first node pool.\n\nIf unspecified, the defaults are used." - }, - "addonsConfig": { - "description": "Configurations for the various addons available to run in the cluster.", - "$ref": "AddonsConfig" - }, - "status": { - "enumDescriptions": [ - "Not set.", - "The PROVISIONING state indicates the cluster is being created.", - "The RUNNING state indicates the cluster has been created and is fully\nusable.", - "The RECONCILING state indicates that some work is actively being done on\nthe cluster, such as upgrading the master or node software. Details can\nbe found in the `statusMessage` field.", - "The STOPPING state indicates the cluster is being deleted.", - "The ERROR state indicates the cluster may be unusable. Details\ncan be found in the `statusMessage` field." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "PROVISIONING", - "RUNNING", - "RECONCILING", - "STOPPING", - "ERROR" - ], - "description": "[Output only] The current status of this cluster.", - "type": "string" - }, - "subnetwork": { - "description": "The name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ncluster is connected.", - "type": "string" - }, - "currentNodeVersion": { - "description": "[Output only] The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes.", - "type": "string" } }, "id": "Cluster" }, "ListOperationsResponse": { - "id": "ListOperationsResponse", "description": "ListOperationsResponse is the result of ListOperationsRequest.", "type": "object", "properties": { @@ -2159,16 +1569,16 @@ "type": "array" }, "missingZones": { - "description": "If any zones are listed here, the list of operations returned\nmay be missing the operations from those zones.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "If any zones are listed here, the list of operations returned\nmay be missing the operations from those zones." } - } + }, + "id": "ListOperationsResponse" }, "CreateNodePoolRequest": { - "id": "CreateNodePoolRequest", "description": "CreateNodePoolRequest creates a node pool for a cluster.", "type": "object", "properties": { @@ -2176,7 +1586,19 @@ "description": "The node pool to create.", "$ref": "NodePool" } - } + }, + "id": "CreateNodePoolRequest" + }, + "SetMonitoringServiceRequest": { + "properties": { + "monitoringService": { + "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster", + "type": "string" + } + }, + "id": "SetMonitoringServiceRequest", + "description": "SetMonitoringServiceRequest sets the monitoring service of a cluster.", + "type": "object" }, "CidrBlock": { "description": "CidrBlock contains an optional name and one CIDR block.", @@ -2193,20 +1615,7 @@ }, "id": "CidrBlock" }, - "SetMonitoringServiceRequest": { - "id": "SetMonitoringServiceRequest", - "description": "SetMonitoringServiceRequest sets the monitoring service of a cluster.", - "type": "object", - "properties": { - "monitoringService": { - "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster", - "type": "string" - } - } - }, "ServerConfig": { - "description": "Container Engine service configuration.", - "type": "object", "properties": { "validMasterVersions": { "description": "List of valid master versions.", @@ -2216,8 +1625,8 @@ "type": "array" }, "defaultImageType": { - "description": "Default image type.", - "type": "string" + "type": "string", + "description": "Default image type." }, "defaultClusterVersion": { "description": "Version of Kubernetes the service deploys by default.", @@ -2238,12 +1647,39 @@ "type": "array" } }, - "id": "ServerConfig" + "id": "ServerConfig", + "description": "Container Engine service configuration.", + "type": "object" }, "NodeConfig": { + "id": "NodeConfig", "description": "Parameters that describe the nodes in a cluster.", "type": "object", "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node.\nThese will added in addition to any default label(s) that\nKubernetes may apply to the node.\nIn case of conflict in label keys, the applied set may differ depending on\nthe Kubernetes version -- it's best to assume the behavior is undefined\nand conflicts should be avoided.\nFor more information, including usage and the valid values, see:\nhttp://kubernetes.io/v1.1/docs/user-guide/labels.html" + }, + "localSsdCount": { + "format": "int32", + "description": "The number of local SSD disks to be attached to the node.\n\nThe limit for this value is dependant upon the maximum number of\ndisks available on a machine per zone. See:\nhttps://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits\nfor more information.", + "type": "integer" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the four reserved keys:\n\"instance-template\", \"kube-env\", \"startup-script\", and \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB." + }, + "diskSizeGb": { + "format": "int32", + "description": "Size of the disk attached to each node, specified in GB.\nThe smallest allowed disk size is 10GB.\n\nIf unspecified, the default disk size is 100GB.", + "type": "integer" + }, "tags": { "description": "The list of instance tags applied to all nodes. Tags are used to identify\nvalid sources or targets for network firewalls and are specified by\nthe client during cluster or node pool creation. Each tag within the list\nmust comply with RFC1035.", "items": { @@ -2271,59 +1707,22 @@ "type": "string" }, "oauthScopes": { - "description": "The set of Google API scopes to be made available on all of the\nnode VMs under the \"default\" service account.\n\nThe following scopes are recommended, but not required, and by default are\nnot included:\n\n* `https://www.googleapis.com/auth/compute` is required for mounting\npersistent storage on your nodes.\n* `https://www.googleapis.com/auth/devstorage.read_only` is required for\ncommunicating with **gcr.io**\n(the [Google Container Registry](/container-registry/)).\n\nIf unspecified, no scopes are added, unless Cloud Logging or Cloud\nMonitoring are enabled, in which case their required scopes will be added.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "The set of Google API scopes to be made available on all of the\nnode VMs under the \"default\" service account.\n\nThe following scopes are recommended, but not required, and by default are\nnot included:\n\n* `https://www.googleapis.com/auth/compute` is required for mounting\npersistent storage on your nodes.\n* `https://www.googleapis.com/auth/devstorage.read_only` is required for\ncommunicating with **gcr.io**\n(the [Google Container Registry](/container-registry/)).\n\nIf unspecified, no scopes are added, unless Cloud Logging or Cloud\nMonitoring are enabled, in which case their required scopes will be added." }, "preemptible": { - "description": "Whether the nodes are created as preemptible VM instances. See:\nhttps://cloud.google.com/compute/docs/instances/preemptible for more\ninformation about preemptible VM instances.", - "type": "boolean" - }, - "labels": { - "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node.\nThese will added in addition to any default label(s) that\nKubernetes may apply to the node.\nIn case of conflict in label keys, the applied set may differ depending on\nthe Kubernetes version -- it's best to assume the behavior is undefined\nand conflicts should be avoided.\nFor more information, including usage and the valid values, see:\nhttp://kubernetes.io/v1.1/docs/user-guide/labels.html", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "localSsdCount": { - "format": "int32", - "description": "The number of local SSD disks to be attached to the node.\n\nThe limit for this value is dependant upon the maximum number of\ndisks available on a machine per zone. See:\nhttps://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits\nfor more information.", - "type": "integer" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the four reserved keys:\n\"instance-template\", \"kube-env\", \"startup-script\", and \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.", - "type": "object" - }, - "diskSizeGb": { - "format": "int32", - "description": "Size of the disk attached to each node, specified in GB.\nThe smallest allowed disk size is 10GB.\n\nIf unspecified, the default disk size is 100GB.", - "type": "integer" + "type": "boolean", + "description": "Whether the nodes are created as preemptible VM instances. See:\nhttps://cloud.google.com/compute/docs/instances/preemptible for more\ninformation about preemptible VM instances." } - }, - "id": "NodeConfig" + } }, "MasterAuth": { "description": "The authentication information for accessing the master endpoint.\nAuthentication can be done using HTTP basic auth or using client\ncertificates.", "type": "object", "properties": { - "username": { - "description": "The username to use for HTTP basic authentication to the master endpoint.\nFor clusters v1.6.0 and later, you can disable basic authentication by\nproviding an empty username.", - "type": "string" - }, - "password": { - "description": "The password to use for HTTP basic authentication to the master endpoint.\nBecause the master endpoint is open to the Internet, you should create a\nstrong password. If a password is provided for cluster creation, username\nmust be non-empty.", - "type": "string" - }, - "clientCertificateConfig": { - "$ref": "ClientCertificateConfig", - "description": "Configuration for client certificate authentication on the cluster. If no\nconfiguration is specified, a client certificate is issued." - }, "clientKey": { "description": "[Output only] Base64-encoded private key used by clients to authenticate\nto the cluster endpoint.", "type": "string" @@ -2335,9 +1734,655 @@ "clientCertificate": { "description": "[Output only] Base64-encoded public certificate used by clients to\nauthenticate to the cluster endpoint.", "type": "string" + }, + "username": { + "type": "string", + "description": "The username to use for HTTP basic authentication to the master endpoint.\nFor clusters v1.6.0 and later, you can disable basic authentication by\nproviding an empty username." + }, + "password": { + "description": "The password to use for HTTP basic authentication to the master endpoint.\nBecause the master endpoint is open to the Internet, you should create a\nstrong password. If a password is provided for cluster creation, username\nmust be non-empty.", + "type": "string" + }, + "clientCertificateConfig": { + "$ref": "ClientCertificateConfig", + "description": "Configuration for client certificate authentication on the cluster. If no\nconfiguration is specified, a client certificate is issued." } }, "id": "MasterAuth" + }, + "AutoUpgradeOptions": { + "id": "AutoUpgradeOptions", + "description": "AutoUpgradeOptions defines the set of options for the user to control how\nthe Auto Upgrades will proceed.", + "type": "object", + "properties": { + "description": { + "description": "[Output only] This field is set when upgrades are about to commence\nwith the description of the upgrade.", + "type": "string" + }, + "autoUpgradeStartTime": { + "description": "[Output only] This field is set when upgrades are about to commence\nwith the approximate start time for the upgrades, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + } + } + }, + "ListClustersResponse": { + "type": "object", + "properties": { + "clusters": { + "items": { + "$ref": "Cluster" + }, + "type": "array", + "description": "A list of clusters in the project in the specified zone, or\nacross all ones." + }, + "missingZones": { + "description": "If any zones are listed here, the list of clusters returned\nmay be missing those zones.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ListClustersResponse", + "description": "ListClustersResponse is the result of ListClustersRequest." + }, + "HttpLoadBalancing": { + "description": "Configuration options for the HTTP (L7) load balancing controller addon,\nwhich makes it easy to set up HTTP load balancers for services in a cluster.", + "type": "object", + "properties": { + "disabled": { + "description": "Whether the HTTP Load Balancing controller is enabled in the cluster.\nWhen enabled, it runs a small pod in the cluster that manages the load\nbalancers.", + "type": "boolean" + } + }, + "id": "HttpLoadBalancing" + }, + "SetNetworkPolicyRequest": { + "description": "SetNetworkPolicyRequest enables/disables network policy for a cluster.", + "type": "object", + "properties": { + "networkPolicy": { + "$ref": "NetworkPolicy", + "description": "Configuration options for the NetworkPolicy feature." + } + }, + "id": "SetNetworkPolicyRequest" + }, + "SetMasterAuthRequest": { + "type": "object", + "properties": { + "update": { + "description": "A description of the update.", + "$ref": "MasterAuth" + }, + "action": { + "enumDescriptions": [ + "Operation is unknown and will error out", + "Set the password to a user generated value.", + "Generate a new password and set it to that." + ], + "enum": [ + "UNKNOWN", + "SET_PASSWORD", + "GENERATE_PASSWORD" + ], + "description": "The exact form of action to be taken on the master auth", + "type": "string" + } + }, + "id": "SetMasterAuthRequest", + "description": "SetMasterAuthRequest updates the admin password of a cluster." + }, + "ClientCertificateConfig": { + "description": "Configuration for client certificates on the cluster.", + "type": "object", + "properties": { + "issueClientCertificate": { + "description": "Issue a client certificate.", + "type": "boolean" + } + }, + "id": "ClientCertificateConfig" + }, + "NodePoolAutoscaling": { + "description": "NodePoolAutoscaling contains information required by cluster autoscaler to\nadjust the size of the node pool to the current cluster usage.", + "type": "object", + "properties": { + "maxNodeCount": { + "format": "int32", + "description": "Maximum number of nodes in the NodePool. Must be \u003e= min_node_count. There\nhas to enough quota to scale up the cluster.", + "type": "integer" + }, + "minNodeCount": { + "format": "int32", + "description": "Minimum number of nodes in the NodePool. Must be \u003e= 1 and \u003c=\nmax_node_count.", + "type": "integer" + }, + "enabled": { + "description": "Is autoscaling enabled for this node pool.", + "type": "boolean" + } + }, + "id": "NodePoolAutoscaling" + }, + "ClusterUpdate": { + "description": "ClusterUpdate describes an update to the cluster. Exactly one update can\nbe applied to a cluster with each request, so at most one field can be\nprovided.", + "type": "object", + "properties": { + "desiredImageType": { + "description": "The desired image type for the node pool.\nNOTE: Set the \"desired_node_pool\" field as well.", + "type": "string" + }, + "desiredAddonsConfig": { + "$ref": "AddonsConfig", + "description": "Configurations for the various addons available to run in the cluster." + }, + "desiredNodePoolId": { + "description": "The node pool to be upgraded. This field is mandatory if\n\"desired_node_version\", \"desired_image_family\" or\n\"desired_node_pool_autoscaling\" is specified and there is more than one\nnode pool on the cluster.", + "type": "string" + }, + "desiredNodeVersion": { + "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.", + "type": "string" + }, + "desiredMasterVersion": { + "description": "The Kubernetes version to change the master to. The only valid value is the\nlatest supported version. Use \"-\" to have the server automatically select\nthe latest version.", + "type": "string" + }, + "desiredMasterAuthorizedNetworksConfig": { + "$ref": "MasterAuthorizedNetworksConfig", + "description": "Master authorized networks is a Beta feature.\nThe desired configuration options for master authorized networks feature." + }, + "desiredNodePoolAutoscaling": { + "description": "Autoscaler configuration for the node pool specified in\ndesired_node_pool_id. If there is only one pool in the\ncluster and desired_node_pool_id is not provided then\nthe change applies to that single node pool.", + "$ref": "NodePoolAutoscaling" + }, + "desiredLocations": { + "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.", + "items": { + "type": "string" + }, + "type": "array" + }, + "desiredMonitoringService": { + "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster", + "type": "string" + } + }, + "id": "ClusterUpdate" + }, + "IPAllocationPolicy": { + "description": "Configuration for controlling how IPs are allocated in the cluster.", + "type": "object", + "properties": { + "nodeIpv4Cidr": { + "description": "This field is deprecated, use node_ipv4_cidr_block.", + "type": "string" + }, + "clusterSecondaryRangeName": { + "description": "The name of the secondary range to be used for the cluster CIDR\nblock. The secondary range will be used for pod IP\naddresses. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.", + "type": "string" + }, + "clusterIpv4CidrBlock": { + "description": "The IP address range for the cluster pod IPs. If this field is set, then\n`cluster.cluster_ipv4_cidr` must be left blank.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "nodeIpv4CidrBlock": { + "description": "The IP address range of the instance IPs in this cluster.\n\nThis is applicable only if `create_subnetwork` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "servicesIpv4Cidr": { + "description": "This field is deprecated, use services_ipv4_cidr_block.", + "type": "string" + }, + "servicesSecondaryRangeName": { + "description": "The name of the secondary range to be used as for the services\nCIDR block. The secondary range will be used for service\nClusterIPs. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases is true and\ncreate_subnetwork is false.", + "type": "string" + }, + "useIpAliases": { + "description": "Whether alias IPs will be used for pod IPs in the cluster.", + "type": "boolean" + }, + "createSubnetwork": { + "description": "Whether a new subnetwork will be created automatically for the cluster.\n\nThis field is only applicable when `use_ip_aliases` is true.", + "type": "boolean" + }, + "subnetworkName": { + "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If\nthis field is empty, then an automatic name will be chosen for the new\nsubnetwork.", + "type": "string" + }, + "servicesIpv4CidrBlock": { + "description": "The IP address range of the services IPs in this cluster. If blank, a range\nwill be automatically chosen with the default size.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "clusterIpv4Cidr": { + "description": "This field is deprecated, use cluster_ipv4_cidr_block.", + "type": "string" + } + }, + "id": "IPAllocationPolicy" + }, + "SetLoggingServiceRequest": { + "description": "SetLoggingServiceRequest sets the logging service of a cluster.", + "type": "object", + "properties": { + "loggingService": { + "type": "string", + "description": "The logging service the cluster should use to write metrics.\nCurrently available options:\n\n* \"logging.googleapis.com\" - the Google Cloud Logging service\n* \"none\" - no metrics will be exported from the cluster" + } + }, + "id": "SetLoggingServiceRequest" + }, + "HorizontalPodAutoscaling": { + "description": "Configuration options for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods.", + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.\nWhen enabled, it ensures that a Heapster pod is running in the cluster,\nwhich is also used by the Cloud Monitoring service." + } + }, + "id": "HorizontalPodAutoscaling" + }, + "MasterAuthorizedNetworksConfig": { + "description": "Master authorized networks is a Beta feature.\nConfiguration options for the master authorized networks feature. Enabled\nmaster authorized networks will disallow all external traffic to access\nKubernetes master through HTTPS except traffic from the given CIDR blocks,\nGoogle Compute Engine Public IPs and Google Prod IPs.", + "type": "object", + "properties": { + "cidrBlocks": { + "description": "cidr_blocks define up to 10 external networks that could access\nKubernetes master through HTTPS.", + "items": { + "$ref": "CidrBlock" + }, + "type": "array" + }, + "enabled": { + "description": "Whether or not master authorized networks is enabled.", + "type": "boolean" + } + }, + "id": "MasterAuthorizedNetworksConfig" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "SetNodePoolManagementRequest": { + "description": "SetNodePoolManagementRequest sets the node management properties of a node\npool.", + "type": "object", + "properties": { + "management": { + "$ref": "NodeManagement", + "description": "NodeManagement configuration for the node pool." + } + }, + "id": "SetNodePoolManagementRequest" + }, + "SetNodePoolAutoscalingRequest": { + "id": "SetNodePoolAutoscalingRequest", + "description": "SetNodePoolAutoscalingRequest sets the autoscaler settings of a node pool.", + "type": "object", + "properties": { + "autoscaling": { + "$ref": "NodePoolAutoscaling", + "description": "Autoscaling configuration for the node pool." + } + } + }, + "CreateClusterRequest": { + "type": "object", + "properties": { + "cluster": { + "$ref": "Cluster", + "description": "A [cluster\nresource](/container-engine/reference/rest/v1/projects.zones.clusters)" + } + }, + "id": "CreateClusterRequest", + "description": "CreateClusterRequest creates a cluster." + }, + "ListNodePoolsResponse": { + "description": "ListNodePoolsResponse is the result of ListNodePoolsRequest.", + "type": "object", + "properties": { + "nodePools": { + "description": "A list of node pools for a cluster.", + "items": { + "$ref": "NodePool" + }, + "type": "array" + } + }, + "id": "ListNodePoolsResponse" + }, + "CompleteIPRotationRequest": { + "description": "CompleteIPRotationRequest moves the cluster master back into single-IP mode.", + "type": "object", + "properties": {}, + "id": "CompleteIPRotationRequest" + }, + "StartIPRotationRequest": { + "description": "StartIPRotationRequest creates a new IP for the cluster and then performs\na node upgrade on each node pool to point to the new IP.", + "type": "object", + "properties": {}, + "id": "StartIPRotationRequest" + }, + "LegacyAbac": { + "description": "Configuration for the legacy Attribute Based Access Control authorization\nmode.", + "type": "object", + "properties": { + "enabled": { + "description": "Whether the ABAC authorizer is enabled for this cluster. When enabled,\nidentities in the system, including service accounts, nodes, and\ncontrollers, will have statically granted permissions beyond those\nprovided by the RBAC configuration or IAM.", + "type": "boolean" + } + }, + "id": "LegacyAbac" + }, + "AcceleratorConfig": { + "description": "AcceleratorConfig represents a Hardware Accelerator request.", + "type": "object", + "properties": { + "acceleratorType": { + "type": "string", + "description": "The accelerator type resource name. List of supported accelerators\n[here](/compute/docs/gpus/#Introduction)" + }, + "acceleratorCount": { + "format": "int64", + "description": "The number of the accelerator cards exposed to an instance.", + "type": "string" + } + }, + "id": "AcceleratorConfig" + }, + "UpdateNodePoolRequest": { + "description": "UpdateNodePoolRequests update a node pool's image and/or version.", + "type": "object", + "properties": { + "nodeVersion": { + "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.", + "type": "string" + }, + "imageType": { + "description": "The desired image type for the node pool.", + "type": "string" + } + }, + "id": "UpdateNodePoolRequest" + }, + "SetAddonsConfigRequest": { + "id": "SetAddonsConfigRequest", + "description": "SetAddonsConfigRequest sets the addons associated with the cluster.", + "type": "object", + "properties": { + "addonsConfig": { + "description": "The desired configurations for the various addons available to run in the\ncluster.", + "$ref": "AddonsConfig" + } + } + }, + "NodePool": { + "type": "object", + "properties": { + "status": { + "enumDescriptions": [ + "Not set.", + "The PROVISIONING state indicates the node pool is being created.", + "The RUNNING state indicates the node pool has been created\nand is fully usable.", + "The RUNNING_WITH_ERROR state indicates the node pool has been created\nand is partially usable. Some error state has occurred and some\nfunctionality may be impaired. Customer may need to reissue a request\nor trigger a new update.", + "The RECONCILING state indicates that some work is actively being done on\nthe node pool, such as upgrading node software. Details can\nbe found in the `statusMessage` field.", + "The STOPPING state indicates the node pool is being deleted.", + "The ERROR state indicates the node pool may be unusable. Details\ncan be found in the `statusMessage` field." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "PROVISIONING", + "RUNNING", + "RUNNING_WITH_ERROR", + "RECONCILING", + "STOPPING", + "ERROR" + ], + "description": "[Output only] The status of the nodes in this pool instance.", + "type": "string" + }, + "config": { + "$ref": "NodeConfig", + "description": "The node configuration of the pool." + }, + "name": { + "description": "The name of the node pool.", + "type": "string" + }, + "statusMessage": { + "description": "[Output only] Additional information about the current status of this\nnode pool instance, if available.", + "type": "string" + }, + "autoscaling": { + "$ref": "NodePoolAutoscaling", + "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled\nonly if a valid configuration is present." + }, + "management": { + "description": "NodeManagement configuration for this NodePool.", + "$ref": "NodeManagement" + }, + "initialNodeCount": { + "format": "int32", + "description": "The initial node count for the pool. You must ensure that your\nCompute Engine \u003ca href=\"/compute/docs/resource-quotas\"\u003eresource quota\u003c/a\u003e\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.", + "type": "integer" + }, + "selfLink": { + "description": "[Output only] Server-defined URL for the resource.", + "type": "string" + }, + "version": { + "description": "[Output only] The version of the Kubernetes of this node.", + "type": "string" + }, + "instanceGroupUrls": { + "items": { + "type": "string" + }, + "type": "array", + "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\nnode pool." + } + }, + "id": "NodePool", + "description": "NodePool contains the name and configuration for a cluster's node pool.\nNode pools are a set of nodes (i.e. VM's), with a common configuration and\nspecification, under the control of the cluster master. They may have a set\nof Kubernetes labels applied to them, which may be used to reference them\nduring pod scheduling. They may also be resized up or down, to accommodate\nthe workload." + }, + "SetLabelsRequest": { + "description": "SetLabelsRequest sets the Google Cloud Platform labels on a Google Container\nEngine cluster, which will in turn set them for Google Compute Engine\nresources used by that cluster", + "type": "object", + "properties": { + "labelFingerprint": { + "description": "The fingerprint of the previous set of labels for this resource,\nused to detect conflicts. The fingerprint is initially generated by\nContainer Engine and changes after every request to modify or update\nlabels. You must always provide an up-to-date fingerprint hash when\nupdating or changing labels. Make a \u003ccode\u003eget()\u003c/code\u003e request to the\nresource to get the latest fingerprint.", + "type": "string" + }, + "resourceLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "The labels to set for that cluster.", + "type": "object" + } + }, + "id": "SetLabelsRequest" + }, + "NodeManagement": { + "description": "NodeManagement defines the set of node management services turned on for the\nnode pool.", + "type": "object", + "properties": { + "autoRepair": { + "description": "A flag that specifies whether the node auto-repair is enabled for the node\npool. If enabled, the nodes in this node pool will be monitored and, if\nthey fail health checks too many times, an automatic repair action will be\ntriggered.", + "type": "boolean" + }, + "autoUpgrade": { + "type": "boolean", + "description": "A flag that specifies whether node auto-upgrade is enabled for the node\npool. If enabled, node auto-upgrade helps keep the nodes in your node pool\nup to date with the latest release version of Kubernetes." + }, + "upgradeOptions": { + "$ref": "AutoUpgradeOptions", + "description": "Specifies the Auto Upgrade knobs for the node pool." + } + }, + "id": "NodeManagement" + }, + "CancelOperationRequest": { + "description": "CancelOperationRequest cancels a single operation.", + "type": "object", + "properties": {}, + "id": "CancelOperationRequest" + }, + "SetLegacyAbacRequest": { + "description": "SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for\na cluster.", + "type": "object", + "properties": { + "enabled": { + "description": "Whether ABAC authorization will be enabled in the cluster.", + "type": "boolean" + } + }, + "id": "SetLegacyAbacRequest" + }, + "KubernetesDashboard": { + "type": "object", + "properties": { + "disabled": { + "type": "boolean", + "description": "Whether the Kubernetes Dashboard is enabled for this cluster." + } + }, + "id": "KubernetesDashboard", + "description": "Configuration for the Kubernetes Dashboard." + }, + "Operation": { + "properties": { + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation\nis taking place.", + "type": "string" + }, + "status": { + "type": "string", + "enumDescriptions": [ + "Not set.", + "The operation has been created.", + "The operation is currently running.", + "The operation is done, either cancelled or completed.", + "The operation is aborting." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "PENDING", + "RUNNING", + "DONE", + "ABORTING" + ], + "description": "The current status of the operation." + }, + "statusMessage": { + "description": "If an error has occurred, a textual description of the error.", + "type": "string" + }, + "name": { + "description": "The server-assigned ID for the operation.", + "type": "string" + }, + "selfLink": { + "description": "Server-defined URL for the resource.", + "type": "string" + }, + "endTime": { + "description": "[Output only] The time the operation completed, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + }, + "targetLink": { + "description": "Server-defined URL for the target of the operation.", + "type": "string" + }, + "detail": { + "description": "Detailed operation progress, if available.", + "type": "string" + }, + "operationType": { + "enumDescriptions": [ + "Not set.", + "Cluster create.", + "Cluster delete.", + "A master upgrade.", + "A node upgrade.", + "Cluster repair.", + "Cluster update.", + "Node pool create.", + "Node pool delete.", + "Set node pool management.", + "Automatic node pool repair.", + "Automatic node upgrade.", + "Set labels.", + "Set/generate master auth materials", + "Set node pool size.", + "Updates network policy for a cluster." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "CREATE_CLUSTER", + "DELETE_CLUSTER", + "UPGRADE_MASTER", + "UPGRADE_NODES", + "REPAIR_CLUSTER", + "UPDATE_CLUSTER", + "CREATE_NODE_POOL", + "DELETE_NODE_POOL", + "SET_NODE_POOL_MANAGEMENT", + "AUTO_REPAIR_NODES", + "AUTO_UPGRADE_NODES", + "SET_LABELS", + "SET_MASTER_AUTH", + "SET_NODE_POOL_SIZE", + "SET_NETWORK_POLICY" + ], + "description": "The operation type.", + "type": "string" + }, + "startTime": { + "description": "[Output only] The time the operation started, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + } + }, + "id": "Operation", + "description": "This operation resource represents operations that may have happened or are\nhappening on the cluster. All fields are output only.", + "type": "object" + }, + "AddonsConfig": { + "description": "Configuration for the addons that can be automatically spun up in the\ncluster, enabling additional functionality.", + "type": "object", + "properties": { + "horizontalPodAutoscaling": { + "$ref": "HorizontalPodAutoscaling", + "description": "Configuration for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods." + }, + "httpLoadBalancing": { + "$ref": "HttpLoadBalancing", + "description": "Configuration for the HTTP (L7) load balancing controller addon, which\nmakes it easy to set up HTTP load balancers for services in a cluster." + }, + "kubernetesDashboard": { + "$ref": "KubernetesDashboard", + "description": "Configuration for the Kubernetes Dashboard." + } + }, + "id": "AddonsConfig" + }, + "SetLocationsRequest": { + "type": "object", + "properties": { + "locations": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone." + } + }, + "id": "SetLocationsRequest", + "description": "SetLocationsRequest sets the locations of the cluster." } }, "protocol": "rest", @@ -2347,22 +2392,5 @@ }, "version": "v1", "baseUrl": "https://container.googleapis.com/", - "canonicalName": "Container", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "servicePath": "", - "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.", - "kind": "discovery#restDescription", - "rootUrl": "https://container.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "container", - "batchPath": "batch" + "canonicalName": "Container" } diff --git a/vendor/google.golang.org/api/container/v1/container-gen.go b/vendor/google.golang.org/api/container/v1/container-gen.go index 7750819..1a8d6ac 100644 --- a/vendor/google.golang.org/api/container/v1/container-gen.go +++ b/vendor/google.golang.org/api/container/v1/container-gen.go @@ -850,28 +850,43 @@ func (s *HttpLoadBalancing) MarshalJSON() ([]byte, error) { // IPAllocationPolicy: Configuration for controlling how IPs are // allocated in the cluster. type IPAllocationPolicy struct { - // ClusterIpv4Cidr: The IP address range for the cluster pod IPs. If - // this field is set, then + // ClusterIpv4Cidr: This field is deprecated, use + // cluster_ipv4_cidr_block. + ClusterIpv4Cidr string `json:"clusterIpv4Cidr,omitempty"` + + // ClusterIpv4CidrBlock: The IP address range for the cluster pod IPs. + // If this field is set, then // `cluster.cluster_ipv4_cidr` must be left blank. // // This field is only applicable when `use_ip_aliases` is true. // - // Set to blank to have a range will be chosen with the default - // size. + // Set to blank to have a range chosen with the default size. // - // Set to /netmask (e.g. `/14`) to have a range be chosen with a + // Set to /netmask (e.g. `/14`) to have a range chosen with a // specific // netmask. // - // Set to a + // Set to + // a // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // no - // tation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks // (e.g. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific // range // to use. - ClusterIpv4Cidr string `json:"clusterIpv4Cidr,omitempty"` + ClusterIpv4CidrBlock string `json:"clusterIpv4CidrBlock,omitempty"` + + // ClusterSecondaryRangeName: The name of the secondary range to be used + // for the cluster CIDR + // block. The secondary range will be used for pod IP + // addresses. This must be an existing secondary range associated + // with the cluster subnetwork. + // + // This field is only applicable with use_ip_aliases is true + // and + // create_subnetwork is false. + ClusterSecondaryRangeName string `json:"clusterSecondaryRangeName,omitempty"` // CreateSubnetwork: Whether a new subnetwork will be created // automatically for the cluster. @@ -879,50 +894,68 @@ type IPAllocationPolicy struct { // This field is only applicable when `use_ip_aliases` is true. CreateSubnetwork bool `json:"createSubnetwork,omitempty"` - // NodeIpv4Cidr: The IP address range of the instance IPs in this + // NodeIpv4Cidr: This field is deprecated, use node_ipv4_cidr_block. + NodeIpv4Cidr string `json:"nodeIpv4Cidr,omitempty"` + + // NodeIpv4CidrBlock: The IP address range of the instance IPs in this // cluster. // // This is applicable only if `create_subnetwork` is true. // - // Set to blank to have a range will be chosen with the default - // size. + // Set to blank to have a range chosen with the default size. // - // Set to /netmask (e.g. `/14`) to have a range be chosen with a + // Set to /netmask (e.g. `/14`) to have a range chosen with a // specific // netmask. // - // Set to a + // Set to + // a // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // no - // tation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks // (e.g. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific // range // to use. - NodeIpv4Cidr string `json:"nodeIpv4Cidr,omitempty"` + NodeIpv4CidrBlock string `json:"nodeIpv4CidrBlock,omitempty"` - // ServicesIpv4Cidr: The IP address range of the services IPs in this - // cluster. If blank, a range + // ServicesIpv4Cidr: This field is deprecated, use + // services_ipv4_cidr_block. + ServicesIpv4Cidr string `json:"servicesIpv4Cidr,omitempty"` + + // ServicesIpv4CidrBlock: The IP address range of the services IPs in + // this cluster. If blank, a range // will be automatically chosen with the default size. // // This field is only applicable when `use_ip_aliases` is true. // - // Set to blank to have a range will be chosen with the default - // size. + // Set to blank to have a range chosen with the default size. // - // Set to /netmask (e.g. `/14`) to have a range be chosen with a + // Set to /netmask (e.g. `/14`) to have a range chosen with a // specific // netmask. // - // Set to a + // Set to + // a // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) - // no - // tation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks // (e.g. // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific // range // to use. - ServicesIpv4Cidr string `json:"servicesIpv4Cidr,omitempty"` + ServicesIpv4CidrBlock string `json:"servicesIpv4CidrBlock,omitempty"` + + // ServicesSecondaryRangeName: The name of the secondary range to be + // used as for the services + // CIDR block. The secondary range will be used for service + // ClusterIPs. This must be an existing secondary range associated + // with the cluster subnetwork. + // + // This field is only applicable with use_ip_aliases is true + // and + // create_subnetwork is false. + ServicesSecondaryRangeName string `json:"servicesSecondaryRangeName,omitempty"` // SubnetworkName: A custom subnetwork name to be used if // `create_subnetwork` is true. If @@ -1627,6 +1660,11 @@ type Operation struct { // Detail: Detailed operation progress, if available. Detail string `json:"detail,omitempty"` + // EndTime: [Output only] The time the operation completed, + // in + // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + EndTime string `json:"endTime,omitempty"` + // Name: The server-assigned ID for the operation. Name string `json:"name,omitempty"` @@ -1654,6 +1692,11 @@ type Operation struct { // SelfLink: Server-defined URL for the resource. SelfLink string `json:"selfLink,omitempty"` + // StartTime: [Output only] The time the operation started, + // in + // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + StartTime string `json:"startTime,omitempty"` + // Status: The current status of the operation. // // Possible values: diff --git a/vendor/google.golang.org/api/container/v1alpha1/container-api.json b/vendor/google.golang.org/api/container/v1alpha1/container-api.json new file mode 100644 index 0000000..84a18c2 --- /dev/null +++ b/vendor/google.golang.org/api/container/v1alpha1/container-api.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 404, + "message": "Discovery document not found for API service: container.googleapis.com format: rest version: v1alpha1", + "status": "NOT_FOUND" + } +} diff --git a/vendor/google.golang.org/api/container/v1alpha1/container-gen.go b/vendor/google.golang.org/api/container/v1alpha1/container-gen.go new file mode 100644 index 0000000..029b65b --- /dev/null +++ b/vendor/google.golang.org/api/container/v1alpha1/container-gen.go @@ -0,0 +1,65 @@ +// Package container provides access to the . +// +// Usage example: +// +// import "google.golang.org/api/container/v1alpha1" +// ... +// containerService, err := container.New(oauthHttpClient) +package container // import "google.golang.org/api/container/v1alpha1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "" +const apiName = "" +const apiVersion = "" +const basePath = "https://www.googleapis.com/discovery/v1/apis" + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} diff --git a/vendor/google.golang.org/api/container/v1beta1/container-api.json b/vendor/google.golang.org/api/container/v1beta1/container-api.json new file mode 100644 index 0000000..9e05753 --- /dev/null +++ b/vendor/google.golang.org/api/container/v1beta1/container-api.json @@ -0,0 +1,2884 @@ +{ + "title": "Google Container Engine API", + "ownerName": "Google", + "resources": { + "projects": { + "resources": { + "locations": { + "methods": { + "getServerConfig": { + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ServerConfig" + }, + "parameters": { + "zone": { + "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path", + "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'." + }, + "projectId": { + "type": "string", + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/serverConfig", + "path": "v1beta1/{+name}/serverConfig", + "id": "container.projects.locations.getServerConfig", + "description": "Returns configuration info about the Container Engine service." + } + }, + "resources": { + "clusters": { + "resources": { + "nodePools": { + "methods": { + "get": { + "response": { + "$ref": "NodePool" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "nodePoolId": { + "location": "query", + "description": "The name of the node pool.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "location": "path", + "description": "The name (project, location, cluster, node pool id) of the node pool to get.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "zone": { + "location": "query", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}", + "id": "container.projects.locations.clusters.nodePools.get", + "path": "v1beta1/{+name}", + "description": "Retrieves the node pool requested." + }, + "delete": { + "path": "v1beta1/{+name}", + "id": "container.projects.locations.clusters.nodePools.delete", + "description": "Deletes a node pool from a cluster.", + "httpMethod": "DELETE", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "clusterId": { + "type": "string", + "location": "query", + "description": "The name of the cluster.\nThis field is deprecated, use name instead." + }, + "nodePoolId": { + "description": "The name of the node pool to delete.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "The name (project, location, cluster, node pool id) of the node pool to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}" + }, + "setManagement": { + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}:setManagement", + "path": "v1beta1/{+name}:setManagement", + "id": "container.projects.locations.clusters.nodePools.setManagement", + "request": { + "$ref": "SetNodePoolManagementRequest" + }, + "description": "Sets the NodeManagement options for a node pool.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The name (project, location, cluster, node pool id) of the node pool to set\nmanagement properties. Specified in the format\n'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + "location": "path" + } + } + }, + "list": { + "response": { + "$ref": "ListNodePoolsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "zone": { + "type": "string", + "location": "query", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead." + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + "type": "string", + "location": "query" + }, + "parent": { + "location": "path", + "description": "The parent (project, location, cluster id) where the node pools will be listed.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools", + "id": "container.projects.locations.clusters.nodePools.list", + "path": "v1beta1/{+parent}/nodePools", + "description": "Lists the node pools for a cluster." + }, + "rollback": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + "location": "path", + "description": "The name (project, location, cluster, node pool id) of the node poll to\nrollback upgrade.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}:rollback", + "id": "container.projects.locations.clusters.nodePools.rollback", + "path": "v1beta1/{+name}:rollback", + "request": { + "$ref": "RollbackNodePoolUpgradeRequest" + }, + "description": "Roll back the previously Aborted or Failed NodePool upgrade.\nThis will be an no-op if the last upgrade successfully completed." + }, + "create": { + "request": { + "$ref": "CreateNodePoolRequest" + }, + "description": "Creates a node pool for a cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "parent": { + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path", + "description": "The parent (project, location, cluster id) where the node pool will be created.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools", + "id": "container.projects.locations.clusters.nodePools.create", + "path": "v1beta1/{+parent}/nodePools" + } + } + } + }, + "methods": { + "update": { + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + "path": "v1beta1/{+name}", + "id": "container.projects.locations.clusters.update", + "description": "Updates the settings of a specific cluster.", + "request": { + "$ref": "UpdateClusterRequest" + }, + "httpMethod": "PUT", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "name": { + "description": "The name (project, location, cluster) of the cluster to update.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "startIpRotation": { + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:startIpRotation", + "id": "container.projects.locations.clusters.startIpRotation", + "path": "v1beta1/{+name}:startIpRotation", + "request": { + "$ref": "StartIPRotationRequest" + }, + "description": "Start master IP rotation.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The name (project, location, cluster id) of the cluster to start IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path" + } + } + }, + "setMasterAuth": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path", + "description": "The name (project, location, cluster) of the cluster to set auth.\nSpecified in the format 'projects/*/locations/*/clusters/*'." + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setMasterAuth", + "id": "container.projects.locations.clusters.setMasterAuth", + "path": "v1beta1/{+name}:setMasterAuth", + "request": { + "$ref": "SetMasterAuthRequest" + }, + "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set.\nModify basic_auth.csv and reset the K8S API server.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST" + }, + "delete": { + "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "projectId": { + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "clusterId": { + "description": "The name of the cluster to delete.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "The name (project, location, cluster) of the cluster to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + "id": "container.projects.locations.clusters.delete", + "path": "v1beta1/{+name}" + }, + "list": { + "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.", + "response": { + "$ref": "ListClustersResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides, or \"-\" for all zones.\nThis field is deprecated, use parent instead.", + "type": "string", + "location": "query" + }, + "parent": { + "description": "The parent (project and location) where the clusters will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters", + "id": "container.projects.locations.clusters.list", + "path": "v1beta1/{+parent}/clusters" + }, + "setLegacyAbac": { + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setLegacyAbac", + "id": "container.projects.locations.clusters.setLegacyAbac", + "path": "v1beta1/{+name}:setLegacyAbac", + "request": { + "$ref": "SetLegacyAbacRequest" + }, + "description": "Enables or disables the ABAC authorization mechanism on a cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path", + "description": "The name (project, location, cluster id) of the cluster to set legacy abac.\nSpecified in the format 'projects/*/locations/*/clusters/*'." + } + } + }, + "setResourceLabels": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path", + "description": "The name (project, location, cluster id) of the cluster to set labels.\nSpecified in the format 'projects/*/locations/*/clusters/*'." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setResourceLabels", + "id": "container.projects.locations.clusters.setResourceLabels", + "path": "v1beta1/{+name}:setResourceLabels", + "description": "Sets labels on a cluster.", + "request": { + "$ref": "SetLabelsRequest" + } + }, + "create": { + "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.", + "request": { + "$ref": "CreateClusterRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "The parent (project and location) where the cluster will be created.\nSpecified in the format 'projects/*/locations/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters", + "id": "container.projects.locations.clusters.create", + "path": "v1beta1/{+parent}/clusters" + }, + "completeIpRotation": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "name": { + "description": "The name (project, location, cluster id) of the cluster to complete IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:completeIpRotation", + "path": "v1beta1/{+name}:completeIpRotation", + "id": "container.projects.locations.clusters.completeIpRotation", + "description": "Completes master IP rotation.", + "request": { + "$ref": "CompleteIPRotationRequest" + } + }, + "setNetworkPolicy": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path", + "description": "The name (project, location, cluster id) of the cluster to set networking policy.\nSpecified in the format 'projects/*/locations/*/clusters/*'." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setNetworkPolicy", + "id": "container.projects.locations.clusters.setNetworkPolicy", + "path": "v1beta1/{+name}:setNetworkPolicy", + "description": "Enables/Disables Network Policy for a cluster.", + "request": { + "$ref": "SetNetworkPolicyRequest" + } + }, + "get": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "clusterId": { + "description": "The name of the cluster to retrieve.\nThis field is deprecated, use name instead.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name (project, location, cluster) of the cluster to retrieve.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + "location": "path" + }, + "projectId": { + "type": "string", + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead." + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + "id": "container.projects.locations.clusters.get", + "path": "v1beta1/{+name}", + "description": "Gets the details of a specific cluster.", + "response": { + "$ref": "Cluster" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET" + } + } + }, + "operations": { + "methods": { + "cancel": { + "description": "Cancels the specified operation.", + "request": { + "$ref": "CancelOperationRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$", + "location": "path", + "description": "The name (project, location, operation id) of the operation to cancel.\nSpecified in the format 'projects/*/locations/*/operations/*'." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel", + "id": "container.projects.locations.operations.cancel", + "path": "v1beta1/{+name}:cancel" + }, + "get": { + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "location": "query", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$", + "location": "path", + "description": "The name (project, location, operation id) of the operation to get.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + "type": "string", + "required": true + }, + "operationId": { + "location": "query", + "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}", + "id": "container.projects.locations.operations.get", + "path": "v1beta1/{+name}", + "description": "Gets the specified operation." + }, + "list": { + "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations", + "id": "container.projects.locations.operations.list", + "path": "v1beta1/{+parent}/operations", + "description": "Lists all operations in a project in a specific zone or all zones.", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string", + "location": "query" + }, + "zone": { + "type": "string", + "location": "query", + "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.\nThis field is deprecated, use parent instead." + }, + "parent": { + "location": "path", + "description": "The parent (project and location) where the operations will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/locations/[^/]+$" + } + } + } + } + } + } + }, + "zones": { + "methods": { + "getServerconfig": { + "path": "v1beta1/projects/{projectId}/zones/{zone}/serverconfig", + "id": "container.projects.zones.getServerconfig", + "description": "Returns configuration info about the Container Engine service.", + "httpMethod": "GET", + "parameterOrder": [ + "projectId", + "zone" + ], + "response": { + "$ref": "ServerConfig" + }, + "parameters": { + "name": { + "location": "query", + "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.", + "type": "string" + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/serverconfig" + } + }, + "resources": { + "operations": { + "methods": { + "cancel": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "projectId", + "zone", + "operationId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "operationId": { + "location": "path", + "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", + "id": "container.projects.zones.operations.cancel", + "path": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", + "request": { + "$ref": "CancelOperationRequest" + }, + "description": "Cancels the specified operation." + }, + "get": { + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}", + "id": "container.projects.zones.operations.get", + "path": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}", + "description": "Gets the specified operation.", + "parameterOrder": [ + "projectId", + "zone", + "operationId" + ], + "response": { + "$ref": "Operation" + }, + "httpMethod": "GET", + "parameters": { + "operationId": { + "location": "path", + "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead." + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "name": { + "location": "query", + "description": "The name (project, location, operation id) of the operation to get.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists all operations in a project in a specific zone or all zones.", + "parameterOrder": [ + "projectId", + "zone" + ], + "response": { + "$ref": "ListOperationsResponse" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + }, + "parent": { + "location": "query", + "description": "The parent (project and location) where the operations will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + "type": "string" + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations", + "id": "container.projects.zones.operations.list", + "path": "v1beta1/projects/{projectId}/zones/{zone}/operations" + } + } + }, + "clusters": { + "methods": { + "completeIpRotation": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", + "id": "container.projects.zones.clusters.completeIpRotation", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", + "description": "Completes master IP rotation.", + "request": { + "$ref": "CompleteIPRotationRequest" + } + }, + "legacyAbac": { + "id": "container.projects.zones.clusters.legacyAbac", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", + "request": { + "$ref": "SetLegacyAbacRequest" + }, + "description": "Enables or disables the ABAC authorization mechanism on a cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac" + }, + "setNetworkPolicy": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + "id": "container.projects.zones.clusters.setNetworkPolicy", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + "request": { + "$ref": "SetNetworkPolicyRequest" + }, + "description": "Enables/Disables Network Policy for a cluster." + }, + "get": { + "response": { + "$ref": "Cluster" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "GET", + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "description": "The name of the cluster to retrieve.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "name": { + "location": "query", + "description": "The name (project, location, cluster) of the cluster to retrieve.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "id": "container.projects.zones.clusters.get", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "description": "Gets the details of a specific cluster." + }, + "update": { + "request": { + "$ref": "UpdateClusterRequest" + }, + "description": "Updates the settings of a specific cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "id": "container.projects.zones.clusters.update", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}" + }, + "startIpRotation": { + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation", + "id": "container.projects.zones.clusters.startIpRotation", + "request": { + "$ref": "StartIPRotationRequest" + }, + "description": "Start master IP rotation.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation" + }, + "setMasterAuth": { + "request": { + "$ref": "SetMasterAuthRequest" + }, + "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set.\nModify basic_auth.csv and reset the K8S API server.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "clusterId": { + "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth", + "id": "container.projects.zones.clusters.setMasterAuth" + }, + "delete": { + "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "httpMethod": "DELETE", + "parameters": { + "clusterId": { + "location": "path", + "description": "The name of the cluster to delete.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "name": { + "description": "The name (project, location, cluster) of the cluster to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string", + "location": "query" + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + "id": "container.projects.zones.clusters.delete", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}" + }, + "list": { + "response": { + "$ref": "ListClustersResponse" + }, + "parameterOrder": [ + "projectId", + "zone" + ], + "httpMethod": "GET", + "parameters": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides, or \"-\" for all zones.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true, + "location": "path" + }, + "parent": { + "description": "The parent (project and location) where the clusters will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + "id": "container.projects.zones.clusters.list", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + "description": "Lists all clusters owned by a project in either the specified zone or all\nzones." + }, + "create": { + "request": { + "$ref": "CreateClusterRequest" + }, + "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "zone" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + "id": "container.projects.zones.clusters.create", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters" + }, + "resourceLabels": { + "description": "Sets labels on a cluster.", + "request": { + "$ref": "SetLabelsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", + "id": "container.projects.zones.clusters.resourceLabels" + } + }, + "resources": { + "nodePools": { + "methods": { + "list": { + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "ListNodePoolsResponse" + }, + "httpMethod": "GET", + "parameters": { + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead." + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + }, + "parent": { + "location": "query", + "description": "The parent (project, location, cluster id) where the node pools will be listed.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "id": "container.projects.zones.clusters.nodePools.list", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "description": "Lists the node pools for a cluster." + }, + "rollback": { + "description": "Roll back the previously Aborted or Failed NodePool upgrade.\nThis will be an no-op if the last upgrade successfully completed.", + "request": { + "$ref": "RollbackNodePoolUpgradeRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "clusterId": { + "location": "path", + "description": "The name of the cluster to rollback.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "nodePoolId": { + "description": "The name of the node pool to rollback.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + "id": "container.projects.zones.clusters.nodePools.rollback" + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + }, + "zone": { + "location": "path", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + "id": "container.projects.zones.clusters.nodePools.create", + "request": { + "$ref": "CreateNodePoolRequest" + }, + "description": "Creates a node pool for a cluster." + }, + "get": { + "httpMethod": "GET", + "response": { + "$ref": "NodePool" + }, + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "nodePoolId": { + "location": "path", + "description": "The name of the node pool.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "name": { + "location": "query", + "description": "The name (project, location, cluster, node pool id) of the node pool to get.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "id": "container.projects.zones.clusters.nodePools.get", + "description": "Retrieves the node pool requested." + }, + "delete": { + "description": "Deletes a node pool from a cluster.", + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "response": { + "$ref": "Operation" + }, + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "nodePoolId": { + "location": "path", + "description": "The name of the node pool to delete.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "name": { + "location": "query", + "description": "The name (project, location, cluster, node pool id) of the node pool to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + "id": "container.projects.zones.clusters.nodePools.delete", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}" + }, + "setManagement": { + "request": { + "$ref": "SetNodePoolManagementRequest" + }, + "description": "Sets the NodeManagement options for a node pool.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "zone", + "clusterId", + "nodePoolId" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterId": { + "location": "path", + "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true + }, + "nodePoolId": { + "description": "The name of the node pool to update.\nThis field is deprecated, use name instead.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + "id": "container.projects.zones.clusters.nodePools.setManagement" + } + } + } + } + } + } + } + } + } + }, + "parameters": { + "alt": { + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + } + }, + "version": "v1beta1", + "baseUrl": "https://container.googleapis.com/", + "kind": "discovery#restDescription", + "description": "The Google Container Engine API is used for building and managing container based applications, powered by the open source Kubernetes technology.", + "servicePath": "", + "basePath": "", + "id": "container:v1beta1", + "documentationLink": "https://cloud.google.com/container-engine/", + "revision": "20170818", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "NodeManagement": { + "description": "NodeManagement defines the set of node management services turned on for the\nnode pool.", + "type": "object", + "properties": { + "autoRepair": { + "description": "Whether the nodes will be automatically repaired.", + "type": "boolean" + }, + "autoUpgrade": { + "description": "Whether the nodes will be automatically upgraded.", + "type": "boolean" + }, + "upgradeOptions": { + "description": "Specifies the Auto Upgrade knobs for the node pool.", + "$ref": "AutoUpgradeOptions" + } + }, + "id": "NodeManagement" + }, + "CancelOperationRequest": { + "id": "CancelOperationRequest", + "description": "CancelOperationRequest cancels a single operation.", + "type": "object", + "properties": { + "name": { + "description": "The name (project, location, operation id) of the operation to cancel.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + "type": "string" + }, + "operationId": { + "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.\nThis field is deprecated, use name instead.", + "type": "string" + } + } + }, + "SetLegacyAbacRequest": { + "type": "object", + "properties": { + "name": { + "description": "The name (project, location, cluster id) of the cluster to set legacy abac.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "enabled": { + "description": "Whether ABAC authorization will be enabled in the cluster.", + "type": "boolean" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "type": "string", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead." + }, + "clusterId": { + "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "id": "SetLegacyAbacRequest", + "description": "SetLegacyAbacRequest enables or disables the ABAC authorization mechanism for\na cluster." + }, + "KubernetesDashboard": { + "description": "Configuration for the Kubernetes Dashboard.", + "type": "object", + "properties": { + "disabled": { + "description": "Whether the Kubernetes Dashboard is enabled for this cluster.", + "type": "boolean" + } + }, + "id": "KubernetesDashboard" + }, + "Operation": { + "description": "This operation resource represents operations that may have happened or are\nhappening on the cluster. All fields are output only.", + "type": "object", + "properties": { + "name": { + "description": "The server-assigned ID for the operation.", + "type": "string" + }, + "statusMessage": { + "description": "If an error has occurred, a textual description of the error.", + "type": "string" + }, + "selfLink": { + "description": "Server-defined URL for the resource.", + "type": "string" + }, + "detail": { + "description": "Detailed operation progress, if available.", + "type": "string" + }, + "targetLink": { + "description": "Server-defined URL for the target of the operation.", + "type": "string" + }, + "location": { + "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/regions-zones/regions-zones#available) or\n[region](/compute/docs/regions-zones/regions-zones#available) in which\nthe cluster resides.", + "type": "string" + }, + "operationType": { + "enumDescriptions": [ + "Not set.", + "Cluster create.", + "Cluster delete.", + "A master upgrade.", + "A node upgrade.", + "Cluster repair.", + "Cluster update.", + "Node pool create.", + "Node pool delete.", + "Set node pool management.", + "Automatic node pool repair.", + "Automatic node upgrade.", + "Set labels.", + "Set/generate master auth materials", + "Set node pool size.", + "Updates network policy for a cluster.", + "Set the maintenance policy." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "CREATE_CLUSTER", + "DELETE_CLUSTER", + "UPGRADE_MASTER", + "UPGRADE_NODES", + "REPAIR_CLUSTER", + "UPDATE_CLUSTER", + "CREATE_NODE_POOL", + "DELETE_NODE_POOL", + "SET_NODE_POOL_MANAGEMENT", + "AUTO_REPAIR_NODES", + "AUTO_UPGRADE_NODES", + "SET_LABELS", + "SET_MASTER_AUTH", + "SET_NODE_POOL_SIZE", + "SET_NETWORK_POLICY", + "SET_MAINTENANCE_POLICY" + ], + "description": "The operation type.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation\nis taking place.\nThis field is deprecated, use location instead.", + "type": "string" + }, + "status": { + "enum": [ + "STATUS_UNSPECIFIED", + "PENDING", + "RUNNING", + "DONE", + "ABORTING" + ], + "description": "The current status of the operation.", + "type": "string", + "enumDescriptions": [ + "Not set.", + "The operation has been created.", + "The operation is currently running.", + "The operation is done, either cancelled or completed.", + "The operation is aborting." + ] + } + }, + "id": "Operation" + }, + "AddonsConfig": { + "description": "Configuration for the addons that can be automatically spun up in the\ncluster, enabling additional functionality.", + "type": "object", + "properties": { + "horizontalPodAutoscaling": { + "$ref": "HorizontalPodAutoscaling", + "description": "Configuration for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods." + }, + "httpLoadBalancing": { + "$ref": "HttpLoadBalancing", + "description": "Configuration for the HTTP (L7) load balancing controller addon, which\nmakes it easy to set up HTTP load balancers for services in a cluster." + }, + "kubernetesDashboard": { + "description": "Configuration for the Kubernetes Dashboard.", + "$ref": "KubernetesDashboard" + } + }, + "id": "AddonsConfig" + }, + "RollbackNodePoolUpgradeRequest": { + "description": "RollbackNodePoolUpgradeRequest rollbacks the previously Aborted or Failed\nNodePool upgrade. This will be an no-op if the last upgrade successfully\ncompleted.", + "type": "object", + "properties": { + "name": { + "description": "The name (project, location, cluster, node pool id) of the node poll to\nrollback upgrade.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster to rollback.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "nodePoolId": { + "description": "The name of the node pool to rollback.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "id": "RollbackNodePoolUpgradeRequest" + }, + "UpdateClusterRequest": { + "description": "UpdateClusterRequest updates the settings of a cluster.", + "type": "object", + "properties": { + "name": { + "description": "The name (project, location, cluster) of the cluster to update.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "update": { + "$ref": "ClusterUpdate", + "description": "A description of the update." + } + }, + "id": "UpdateClusterRequest" + }, + "NetworkPolicy": { + "description": "Configuration options for the NetworkPolicy feature.\nhttps://kubernetes.io/docs/concepts/services-networking/networkpolicies/", + "type": "object", + "properties": { + "enabled": { + "description": "Whether network policy is enabled on the cluster.", + "type": "boolean" + }, + "provider": { + "enumDescriptions": [ + "Not set", + "Tigera (Calico Felix)." + ], + "enum": [ + "PROVIDER_UNSPECIFIED", + "CALICO" + ], + "description": "The selected network policy provider.", + "type": "string" + } + }, + "id": "NetworkPolicy" + }, + "Cluster": { + "properties": { + "addonsConfig": { + "description": "Configurations for the various addons available to run in the cluster.", + "$ref": "AddonsConfig" + }, + "status": { + "type": "string", + "enumDescriptions": [ + "Not set.", + "The PROVISIONING state indicates the cluster is being created.", + "The RUNNING state indicates the cluster has been created and is fully\nusable.", + "The RECONCILING state indicates that some work is actively being done on\nthe cluster, such as upgrading the master or node software. Details can\nbe found in the `statusMessage` field.", + "The STOPPING state indicates the cluster is being deleted.", + "The ERROR state indicates the cluster may be unusable. Details\ncan be found in the `statusMessage` field." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "PROVISIONING", + "RUNNING", + "RECONCILING", + "STOPPING", + "ERROR" + ], + "description": "[Output only] The current status of this cluster." + }, + "subnetwork": { + "description": "The name of the Google Compute Engine\n[subnetwork](/compute/docs/subnetworks) to which the\ncluster is connected.", + "type": "string" + }, + "currentNodeVersion": { + "type": "string", + "description": "[Output only] The current version of the node software components.\nIf they are currently at multiple versions because they're in the process\nof being upgraded, this reflects the minimum version of all nodes." + }, + "name": { + "description": "The name of this cluster. The name must be unique within this project\nand zone, and can be up to 40 characters with the following restrictions:\n\n* Lowercase letters, numbers, and hyphens only.\n* Must start with a letter.\n* Must end with a number or a letter.", + "type": "string" + }, + "initialClusterVersion": { + "description": "The initial Kubernetes version for this cluster. Valid versions are those\nfound in validMasterVersions returned by getServerConfig. The version can\nbe upgraded over time; such upgrades are reflected in\ncurrentMasterVersion and currentNodeVersion.", + "type": "string" + }, + "ipAllocationPolicy": { + "$ref": "IPAllocationPolicy", + "description": "Configuration for cluster IP allocation." + }, + "endpoint": { + "description": "[Output only] The IP address of this cluster's master endpoint.\nThe endpoint can be accessed from the internet at\n`https://username:password@endpoint/`.\n\nSee the `masterAuth` property of this resource for username and\npassword information.", + "type": "string" + }, + "location": { + "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/regions-zones/regions-zones#available) or\n[region](/compute/docs/regions-zones/regions-zones#available) in which\nthe cluster resides.", + "type": "string" + }, + "createTime": { + "description": "[Output only] The time the cluster was created, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + }, + "clusterIpv4Cidr": { + "description": "The IP address range of the container pods in this cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`). Leave blank to have\none automatically chosen or specify a `/14` block in `10.0.0.0/8`.", + "type": "string" + }, + "initialNodeCount": { + "format": "int32", + "description": "The number of nodes to create in this cluster. You must ensure that your\nCompute Engine \u003ca href=\"/compute/docs/resource-quotas\"\u003eresource quota\u003c/a\u003e\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"node_config\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.", + "type": "integer" + }, + "selfLink": { + "description": "[Output only] Server-defined URL for the resource.", + "type": "string" + }, + "locations": { + "description": "The list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located.", + "items": { + "type": "string" + }, + "type": "array" + }, + "nodePools": { + "items": { + "$ref": "NodePool" + }, + "type": "array", + "description": "The node pools associated with this cluster.\nThis field should not be set if \"node_config\" or \"initial_node_count\" are\nspecified." + }, + "instanceGroupUrls": { + "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\ncluster.", + "items": { + "type": "string" + }, + "type": "array" + }, + "networkPolicy": { + "$ref": "NetworkPolicy", + "description": "Configuration options for the NetworkPolicy feature." + }, + "servicesIpv4Cidr": { + "description": "[Output only] The IP address range of the Kubernetes services in\nthis cluster, in\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `1.2.3.4/29`). Service addresses are\ntypically put in the last `/16` from the container CIDR.", + "type": "string" + }, + "enableKubernetesAlpha": { + "description": "Kubernetes alpha features are enabled on this cluster. This includes alpha\nAPI groups (e.g. v1beta1) and features that may not be production ready in\nthe kubernetes version of the master and nodes.\nThe cluster has no SLA for uptime and master/node upgrades are disabled.\nAlpha enabled clusters are automatically deleted thirty days after\ncreation.", + "type": "boolean" + }, + "description": { + "description": "An optional description of this cluster.", + "type": "string" + }, + "currentNodeCount": { + "format": "int32", + "description": "[Output only] The number of nodes currently in the cluster.", + "type": "integer" + }, + "monitoringService": { + "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* `monitoring.googleapis.com` - the Google Cloud Monitoring service.\n* `none` - no metrics will be exported from the cluster.\n* if left as an empty string, `monitoring.googleapis.com` will be used.", + "type": "string" + }, + "network": { + "description": "The name of the Google Compute Engine\n[network](/compute/docs/networks-and-firewalls#networks) to which the\ncluster is connected. If left unspecified, the `default` network\nwill be used.", + "type": "string" + }, + "zone": { + "description": "[Output only] The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use location instead.", + "type": "string" + }, + "loggingService": { + "description": "The logging service the cluster should use to write logs.\nCurrently available options:\n\n* `logging.googleapis.com` - the Google Cloud Logging service.\n* `none` - no logs will be exported from the cluster.\n* if left as an empty string,`logging.googleapis.com` will be used.", + "type": "string" + }, + "nodeIpv4CidrSize": { + "format": "int32", + "description": "[Output only] The size of the address space on each node for hosting\ncontainers. This is provisioned from within the `container_ipv4_cidr`\nrange.", + "type": "integer" + }, + "expireTime": { + "description": "[Output only] The time the cluster will be automatically\ndeleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + }, + "masterAuthorizedNetworksConfig": { + "description": "The configuration options for master authorized networks feature.", + "$ref": "MasterAuthorizedNetworksConfig" + }, + "statusMessage": { + "description": "[Output only] Additional information about the current status of this\ncluster, if available.", + "type": "string" + }, + "masterAuth": { + "$ref": "MasterAuth", + "description": "The authentication information for accessing the master endpoint." + }, + "currentMasterVersion": { + "description": "[Output only] The current software version of the master endpoint.", + "type": "string" + }, + "nodeConfig": { + "description": "Parameters used in creating the cluster's nodes.\nSee `nodeConfig` for the description of its properties.\nFor requests, this field should only be used in lieu of a\n\"node_pool\" object, since this configuration (along with the\n\"initial_node_count\") will be used to create a \"NodePool\" object with an\nauto-generated name. Do not use this and a node_pool at the same time.\nFor responses, this field will be populated with the node configuration of\nthe first node pool.\n\nIf unspecified, the defaults are used.", + "$ref": "NodeConfig" + } + }, + "id": "Cluster", + "description": "A Google Container Engine cluster.", + "type": "object" + }, + "ListOperationsResponse": { + "description": "ListOperationsResponse is the result of ListOperationsRequest.", + "type": "object", + "properties": { + "operations": { + "description": "A list of operations in the project in the specified zone.", + "items": { + "$ref": "Operation" + }, + "type": "array" + }, + "missingZones": { + "description": "If any zones are listed here, the list of operations returned\nmay be missing the operations from those zones.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ListOperationsResponse" + }, + "CreateNodePoolRequest": { + "description": "CreateNodePoolRequest creates a node pool for a cluster.", + "type": "object", + "properties": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "parent": { + "description": "The parent (project, location, cluster id) where the node pool will be created.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string" + }, + "nodePool": { + "$ref": "NodePool", + "description": "The node pool to create." + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + "type": "string" + } + }, + "id": "CreateNodePoolRequest" + }, + "CidrBlock": { + "description": "CidrBlock contains an optional name and one CIDR block.", + "type": "object", + "properties": { + "cidrBlock": { + "description": "cidr_block must be specified in CIDR notation.", + "type": "string" + }, + "displayName": { + "type": "string", + "description": "display_name is an optional field for users to identify CIDR blocks." + } + }, + "id": "CidrBlock" + }, + "ServerConfig": { + "id": "ServerConfig", + "description": "Container Engine service configuration.", + "type": "object", + "properties": { + "validMasterVersions": { + "description": "List of valid master versions.", + "items": { + "type": "string" + }, + "type": "array" + }, + "defaultImageType": { + "description": "Default image type.", + "type": "string" + }, + "defaultClusterVersion": { + "description": "Version of Kubernetes the service deploys by default.", + "type": "string" + }, + "validImageTypes": { + "description": "List of valid image types.", + "items": { + "type": "string" + }, + "type": "array" + }, + "validNodeVersions": { + "description": "List of valid node upgrade target versions.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "MasterAuth": { + "properties": { + "clientKey": { + "type": "string", + "description": "[Output only] Base64-encoded private key used by clients to authenticate\nto the cluster endpoint." + }, + "clusterCaCertificate": { + "description": "[Output only] Base64-encoded public certificate that is the root of\ntrust for the cluster.", + "type": "string" + }, + "clientCertificate": { + "description": "[Output only] Base64-encoded public certificate used by clients to\nauthenticate to the cluster endpoint.", + "type": "string" + }, + "username": { + "description": "The username to use for HTTP basic authentication to the master endpoint.\nFor clusters v1.6.0 and later, you can disable basic authentication by\nproviding an empty username.", + "type": "string" + }, + "password": { + "type": "string", + "description": "The password to use for HTTP basic authentication to the master endpoint.\nBecause the master endpoint is open to the Internet, you should create a\nstrong password. If a password is provided for cluster creation, username\nmust be non-empty." + }, + "clientCertificateConfig": { + "$ref": "ClientCertificateConfig", + "description": "Configuration for client certificate authentication on the cluster. If no\nconfiguration is specified, a client certificate is issued." + } + }, + "id": "MasterAuth", + "description": "The authentication information for accessing the master endpoint.\nAuthentication can be done using HTTP basic auth or using client\ncertificates.", + "type": "object" + }, + "NodeConfig": { + "type": "object", + "properties": { + "imageType": { + "description": "The image type to use for this node. Note that for a given image type,\nthe latest version of it will be used.", + "type": "string" + }, + "oauthScopes": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The set of Google API scopes to be made available on all of the\nnode VMs under the \"default\" service account.\n\nThe following scopes are recommended, but not required, and by default are\nnot included:\n\n* `https://www.googleapis.com/auth/compute` is required for mounting\npersistent storage on your nodes.\n* `https://www.googleapis.com/auth/devstorage.read_only` is required for\ncommunicating with **gcr.io**\n(the [Google Container Registry](/container-registry/)).\n\nIf unspecified, no scopes are added, unless Cloud Logging or Cloud\nMonitoring are enabled, in which case their required scopes will be added." + }, + "preemptible": { + "description": "Whether the nodes are created as preemptible VM instances. See:\nhttps://cloud.google.com/compute/docs/instances/preemptible for more\ninforamtion about preemptible VM instances.", + "type": "boolean" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "The map of Kubernetes labels (key/value pairs) to be applied to each node.\nThese will added in addition to any default label(s) that\nKubernetes may apply to the node.\nIn case of conflict in label keys, the applied set may differ depending on\nthe Kubernetes version -- it's best to assume the behavior is undefined\nand conflicts should be avoided.\nFor more information, including usage and the valid values, see:\nhttp://kubernetes.io/v1.1/docs/user-guide/labels.html", + "type": "object" + }, + "localSsdCount": { + "format": "int32", + "description": "The number of local SSD disks to be attached to the node.\n\nThe limit for this value is dependant upon the maximum number of\ndisks available on a machine per zone. See:\nhttps://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_limits\nfor more information.", + "type": "integer" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "The metadata key/value pairs assigned to instances in the cluster.\n\nKeys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 bytes\nin length. These are reflected as part of a URL in the metadata server.\nAdditionally, to avoid ambiguity, keys must not conflict with any other\nmetadata keys for the project or be one of the four reserved keys:\n\"instance-template\", \"kube-env\", \"startup-script\", and \"user-data\"\n\nValues are free-form strings, and only have meaning as interpreted by\nthe image running in the instance. The only restriction placed on them is\nthat each value's size must be less than or equal to 32 KB.\n\nThe total size of all keys and values must be less than 512 KB.", + "type": "object" + }, + "diskSizeGb": { + "format": "int32", + "description": "Size of the disk attached to each node, specified in GB.\nThe smallest allowed disk size is 10GB.\n\nIf unspecified, the default disk size is 100GB.", + "type": "integer" + }, + "tags": { + "description": "The list of instance tags applied to all nodes. Tags are used to identify\nvalid sources or targets for network firewalls and are specified by\nthe client during cluster or node pool creation. Each tag within the list\nmust comply with RFC1035.", + "items": { + "type": "string" + }, + "type": "array" + }, + "serviceAccount": { + "type": "string", + "description": "The Google Cloud Platform Service Account to be used by the node VMs. If\nno Service Account is specified, the \"default\" service account is used." + }, + "accelerators": { + "description": "A list of hardware accelerators to be attached to each node.\nSee https://cloud.google.com/compute/docs/gpus for more information about\nsupport for GPUs.", + "items": { + "$ref": "AcceleratorConfig" + }, + "type": "array" + }, + "machineType": { + "description": "The name of a Google Compute Engine [machine\ntype](/compute/docs/machine-types) (e.g.\n`n1-standard-1`).\n\nIf unspecified, the default machine type is\n`n1-standard-1`.", + "type": "string" + } + }, + "id": "NodeConfig", + "description": "Parameters that describe the nodes in a cluster." + }, + "AutoUpgradeOptions": { + "id": "AutoUpgradeOptions", + "description": "AutoUpgradeOptions defines the set of options for the user to control how\nthe Auto Upgrades will proceed.", + "type": "object", + "properties": { + "description": { + "description": "[Output only] This field is set when upgrades are about to commence\nwith the description of the upgrade.", + "type": "string" + }, + "autoUpgradeStartTime": { + "description": "[Output only] This field is set when upgrades are about to commence\nwith the approximate start time for the upgrades, in\n[RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", + "type": "string" + } + } + }, + "ListClustersResponse": { + "properties": { + "missingZones": { + "description": "If any zones are listed here, the list of clusters returned\nmay be missing those zones.", + "items": { + "type": "string" + }, + "type": "array" + }, + "clusters": { + "description": "A list of clusters in the project in the specified zone, or\nacross all ones.", + "items": { + "$ref": "Cluster" + }, + "type": "array" + } + }, + "id": "ListClustersResponse", + "description": "ListClustersResponse is the result of ListClustersRequest.", + "type": "object" + }, + "HttpLoadBalancing": { + "description": "Configuration options for the HTTP (L7) load balancing controller addon,\nwhich makes it easy to set up HTTP load balancers for services in a cluster.", + "type": "object", + "properties": { + "disabled": { + "description": "Whether the HTTP Load Balancing controller is enabled in the cluster.\nWhen enabled, it runs a small pod in the cluster that manages the load\nbalancers.", + "type": "boolean" + } + }, + "id": "HttpLoadBalancing" + }, + "SetMasterAuthRequest": { + "description": "SetMasterAuthRequest updates the admin password of a cluster.", + "type": "object", + "properties": { + "update": { + "$ref": "MasterAuth", + "description": "A description of the update." + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "description": "The name (project, location, cluster) of the cluster to set auth.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "action": { + "enumDescriptions": [ + "Operation is unknown and will error out", + "Set the password to a user generated value.", + "Generate a new password and set it to that." + ], + "enum": [ + "UNKNOWN", + "SET_PASSWORD", + "GENERATE_PASSWORD" + ], + "description": "The exact form of action to be taken on the master auth", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "id": "SetMasterAuthRequest" + }, + "NodePoolAutoscaling": { + "description": "NodePoolAutoscaling contains information required by cluster autoscaler to\nadjust the size of the node pool to the current cluster usage.", + "type": "object", + "properties": { + "minNodeCount": { + "format": "int32", + "description": "Minimum number of nodes in the NodePool. Must be \u003e= 1 and \u003c=\nmax_node_count.", + "type": "integer" + }, + "enabled": { + "description": "Is autoscaling enabled for this node pool.", + "type": "boolean" + }, + "maxNodeCount": { + "type": "integer", + "format": "int32", + "description": "Maximum number of nodes in the NodePool. Must be \u003e= min_node_count. There\nhas to enough quota to scale up the cluster." + } + }, + "id": "NodePoolAutoscaling" + }, + "ClientCertificateConfig": { + "description": "Configuration for client certificates on the cluster.", + "type": "object", + "properties": { + "issueClientCertificate": { + "description": "Issue a client certificate.", + "type": "boolean" + } + }, + "id": "ClientCertificateConfig" + }, + "SetNetworkPolicyRequest": { + "description": "SetNetworkPolicyRequest enables/disables network policy for a cluster.", + "type": "object", + "properties": { + "networkPolicy": { + "$ref": "NetworkPolicy", + "description": "Configuration options for the NetworkPolicy feature." + }, + "name": { + "description": "The name (project, location, cluster id) of the cluster to set networking policy.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string" + } + }, + "id": "SetNetworkPolicyRequest" + }, + "ClusterUpdate": { + "properties": { + "desiredLocations": { + "description": "The desired list of Google Compute Engine\n[locations](/compute/docs/zones#available) in which the cluster's nodes\nshould be located. Changing the locations a cluster is in will result\nin nodes being either created or removed from the cluster, depending on\nwhether locations are being added or removed.\n\nThis list must always include the cluster's primary zone.", + "items": { + "type": "string" + }, + "type": "array" + }, + "desiredNodePoolAutoscaling": { + "$ref": "NodePoolAutoscaling", + "description": "Autoscaler configuration for the node pool specified in\ndesired_node_pool_id. If there is only one pool in the\ncluster and desired_node_pool_id is not provided then\nthe change applies to that single node pool." + }, + "desiredMonitoringService": { + "description": "The monitoring service the cluster should use to write metrics.\nCurrently available options:\n\n* \"monitoring.googleapis.com\" - the Google Cloud Monitoring service\n* \"none\" - no metrics will be exported from the cluster", + "type": "string" + }, + "desiredImageType": { + "description": "The desired image type for the node pool.\nNOTE: Set the \"desired_node_pool\" field as well.", + "type": "string" + }, + "desiredAddonsConfig": { + "$ref": "AddonsConfig", + "description": "Configurations for the various addons available to run in the cluster." + }, + "desiredNodePoolId": { + "description": "The node pool to be upgraded. This field is mandatory if\n\"desired_node_version\", \"desired_image_family\" or\n\"desired_node_pool_autoscaling\" is specified and there is more than one\nnode pool on the cluster.", + "type": "string" + }, + "desiredNodeVersion": { + "description": "The Kubernetes version to change the nodes to (typically an\nupgrade). Use `-` to upgrade to the latest version supported by\nthe server.", + "type": "string" + }, + "desiredMasterVersion": { + "description": "The Kubernetes version to change the master to. The only valid value is the\nlatest supported version. Use \"-\" to have the server automatically select\nthe latest version.", + "type": "string" + }, + "desiredMasterAuthorizedNetworksConfig": { + "description": "The desired configuration options for master authorized networks feature.", + "$ref": "MasterAuthorizedNetworksConfig" + } + }, + "id": "ClusterUpdate", + "description": "ClusterUpdate describes an update to the cluster. Exactly one update can\nbe applied to a cluster with each request, so at most one field can be\nprovided.", + "type": "object" + }, + "IPAllocationPolicy": { + "description": "Configuration for controlling how IPs are allocated in the cluster.", + "type": "object", + "properties": { + "servicesIpv4CidrBlock": { + "description": "The IP address range of the services IPs in this cluster. If blank, a range\nwill be automatically chosen with the default size.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "subnetworkName": { + "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If\nthis field is empty, then an automatic name will be chosen for the new\nsubnetwork.", + "type": "string" + }, + "clusterIpv4Cidr": { + "description": "This field is deprecated, use cluster_ipv4_cidr_block.", + "type": "string" + }, + "nodeIpv4Cidr": { + "description": "This field is deprecated, use node_ipv4_cidr_block.", + "type": "string" + }, + "clusterIpv4CidrBlock": { + "description": "The IP address range for the cluster pod IPs. If this field is set, then\n`cluster.cluster_ipv4_cidr` must be left blank.\n\nThis field is only applicable when `use_ip_aliases` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "clusterSecondaryRangeName": { + "description": "The name of the secondary range to be used for the cluster CIDR\nblock. The secondary range will be used for pod IP\naddresses. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases and\ncreate_subnetwork is false.", + "type": "string" + }, + "nodeIpv4CidrBlock": { + "description": "The IP address range of the instance IPs in this cluster.\n\nThis is applicable only if `create_subnetwork` is true.\n\nSet to blank to have a range chosen with the default size.\n\nSet to /netmask (e.g. `/14`) to have a range chosen with a specific\nnetmask.\n\nSet to a\n[CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing)\nnotation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks (e.g.\n`10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific range\nto use.", + "type": "string" + }, + "servicesIpv4Cidr": { + "description": "This field is deprecated, use services_ipv4_cidr_block.", + "type": "string" + }, + "servicesSecondaryRangeName": { + "description": "The name of the secondary range to be used as for the services\nCIDR block. The secondary range will be used for service\nClusterIPs. This must be an existing secondary range associated\nwith the cluster subnetwork.\n\nThis field is only applicable with use_ip_aliases and\ncreate_subnetwork is false.", + "type": "string" + }, + "useIpAliases": { + "type": "boolean", + "description": "Whether alias IPs will be used for pod IPs in the cluster." + }, + "createSubnetwork": { + "description": "Whether a new subnetwork will be created automatically for the cluster.\n\nThis field is only applicable when `use_ip_aliases` is true.", + "type": "boolean" + } + }, + "id": "IPAllocationPolicy" + }, + "HorizontalPodAutoscaling": { + "description": "Configuration options for the horizontal pod autoscaling feature, which\nincreases or decreases the number of replica pods a replication controller\nhas based on the resource usage of the existing pods.", + "type": "object", + "properties": { + "disabled": { + "description": "Whether the Horizontal Pod Autoscaling feature is enabled in the cluster.\nWhen enabled, it ensures that a Heapster pod is running in the cluster,\nwhich is also used by the Cloud Monitoring service.", + "type": "boolean" + } + }, + "id": "HorizontalPodAutoscaling" + }, + "SetNodePoolManagementRequest": { + "properties": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "management": { + "$ref": "NodeManagement", + "description": "NodeManagement configuration for the node pool." + }, + "clusterId": { + "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "nodePoolId": { + "description": "The name of the node pool to update.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "type": "string", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead." + }, + "name": { + "description": "The name (project, location, cluster, node pool id) of the node pool to set\nmanagement properties. Specified in the format\n'projects/*/locations/*/clusters/*/nodePools/*'.", + "type": "string" + } + }, + "id": "SetNodePoolManagementRequest", + "description": "SetNodePoolManagementRequest sets the node management properties of a node\npool.", + "type": "object" + }, + "Empty": { + "type": "object", + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." + }, + "MasterAuthorizedNetworksConfig": { + "description": "Configuration options for the master authorized networks feature. Enabled\nmaster authorized networks will disallow all external traffic to access\nKubernetes master through HTTPS except traffic from the given CIDR blocks,\nGoogle Compute Engine Public IPs and Google Prod IPs.", + "type": "object", + "properties": { + "enabled": { + "description": "Whether or not master authorized networks is enabled.", + "type": "boolean" + }, + "cidrBlocks": { + "description": "cidr_blocks define up to 10 external networks that could access\nKubernetes master through HTTPS.", + "items": { + "$ref": "CidrBlock" + }, + "type": "array" + } + }, + "id": "MasterAuthorizedNetworksConfig" + }, + "CreateClusterRequest": { + "id": "CreateClusterRequest", + "description": "CreateClusterRequest creates a cluster.", + "type": "object", + "properties": { + "cluster": { + "$ref": "Cluster", + "description": "A [cluster\nresource](/container-engine/reference/rest/v1beta1/projects.zones.clusters)" + }, + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + "type": "string" + }, + "parent": { + "description": "The parent (project and location) where the cluster will be created.\nSpecified in the format 'projects/*/locations/*'.", + "type": "string" + } + } + }, + "ListNodePoolsResponse": { + "description": "ListNodePoolsResponse is the result of ListNodePoolsRequest.", + "type": "object", + "properties": { + "nodePools": { + "items": { + "$ref": "NodePool" + }, + "type": "array", + "description": "A list of node pools for a cluster." + } + }, + "id": "ListNodePoolsResponse" + }, + "CompleteIPRotationRequest": { + "description": "CompleteIPRotationRequest moves the cluster master back into single-IP mode.", + "type": "object", + "properties": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "type": "string", + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead." + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "description": "The name (project, location, cluster id) of the cluster to complete IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + } + }, + "id": "CompleteIPRotationRequest" + }, + "StartIPRotationRequest": { + "description": "StartIPRotationRequest creates a new IP for the cluster and then performs\na node upgrade on each node pool to point to the new IP.", + "type": "object", + "properties": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "description": "The name (project, location, cluster id) of the cluster to start IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + } + }, + "id": "StartIPRotationRequest" + }, + "AcceleratorConfig": { + "description": "AcceleratorConfig represents a Hardware Accelerator request.", + "type": "object", + "properties": { + "acceleratorType": { + "description": "The accelerator type resource name. List of supported accelerators\n[here](/compute/docs/gpus/#Introduction)", + "type": "string" + }, + "acceleratorCount": { + "format": "int64", + "description": "The number of the accelerator cards exposed to an instance.", + "type": "string" + } + }, + "id": "AcceleratorConfig" + }, + "NodePool": { + "id": "NodePool", + "description": "NodePool contains the name and configuration for a cluster's node pool.\nNode pools are a set of nodes (i.e. VM's), with a common configuration and\nspecification, under the control of the cluster master. They may have a set\nof Kubernetes labels applied to them, which may be used to reference them\nduring pod scheduling. They may also be resized up or down, to accommodate\nthe workload.", + "type": "object", + "properties": { + "status": { + "enum": [ + "STATUS_UNSPECIFIED", + "PROVISIONING", + "RUNNING", + "RUNNING_WITH_ERROR", + "RECONCILING", + "STOPPING", + "ERROR" + ], + "description": "[Output only] The status of the nodes in this pool instance.", + "type": "string", + "enumDescriptions": [ + "Not set.", + "The PROVISIONING state indicates the node pool is being created.", + "The RUNNING state indicates the node pool has been created\nand is fully usable.", + "The RUNNING_WITH_ERROR state indicates the node pool has been created\nand is partially usable. Some error state has occurred and some\nfunctionality may be impaired. Customer may need to reissue a request\nor trigger a new update.", + "The RECONCILING state indicates that some work is actively being done on\nthe node pool, such as upgrading node software. Details can\nbe found in the `statusMessage` field.", + "The STOPPING state indicates the node pool is being deleted.", + "The ERROR state indicates the node pool may be unusable. Details\ncan be found in the `statusMessage` field." + ] + }, + "config": { + "$ref": "NodeConfig", + "description": "The node configuration of the pool." + }, + "name": { + "description": "The name of the node pool.", + "type": "string" + }, + "statusMessage": { + "description": "[Output only] Additional information about the current status of this\nnode pool instance, if available.", + "type": "string" + }, + "autoscaling": { + "$ref": "NodePoolAutoscaling", + "description": "Autoscaler configuration for this NodePool. Autoscaler is enabled\nonly if a valid configuration is present." + }, + "management": { + "$ref": "NodeManagement", + "description": "NodeManagement configuration for this NodePool." + }, + "initialNodeCount": { + "format": "int32", + "description": "The initial node count for the pool. You must ensure that your\nCompute Engine \u003ca href=\"/compute/docs/resource-quotas\"\u003eresource quota\u003c/a\u003e\nis sufficient for this number of instances. You must also have available\nfirewall and routes quota.", + "type": "integer" + }, + "selfLink": { + "description": "[Output only] Server-defined URL for the resource.", + "type": "string" + }, + "version": { + "description": "[Output only] The version of the Kubernetes of this node.", + "type": "string" + }, + "instanceGroupUrls": { + "description": "[Output only] The resource URLs of [instance\ngroups](/compute/docs/instance-groups/) associated with this\nnode pool.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "SetLabelsRequest": { + "type": "object", + "properties": { + "projectId": { + "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + "type": "string" + }, + "clusterId": { + "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "labelFingerprint": { + "description": "The fingerprint of the previous set of labels for this resource,\nused to detect conflicts. The fingerprint is initially generated by\nContainer Engine and changes after every request to modify or update\nlabels. You must always provide an up-to-date fingerprint hash when\nupdating or changing labels. Make a \u003ccode\u003eget()\u003c/code\u003e request to the\nresource to get the latest fingerprint.", + "type": "string" + }, + "zone": { + "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + "type": "string" + }, + "name": { + "description": "The name (project, location, cluster id) of the cluster to set labels.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + "type": "string" + }, + "resourceLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "The labels to set for that cluster.", + "type": "object" + } + }, + "id": "SetLabelsRequest", + "description": "SetLabelsRequest sets the Google Cloud Platform labels on a Google Container\nEngine cluster, which will in turn set them for Google Compute Engine\nresources used by that cluster" + } + }, + "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "canonicalName": "Container", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "rootUrl": "https://container.googleapis.com/", + "ownerDomain": "google.com", + "name": "container", + "batchPath": "batch" +} diff --git a/vendor/google.golang.org/api/container/v1beta1/container-gen.go b/vendor/google.golang.org/api/container/v1beta1/container-gen.go new file mode 100644 index 0000000..e8961e3 --- /dev/null +++ b/vendor/google.golang.org/api/container/v1beta1/container-gen.go @@ -0,0 +1,9055 @@ +// Package container provides access to the Google Container Engine API. +// +// See https://cloud.google.com/container-engine/ +// +// Usage example: +// +// import "google.golang.org/api/container/v1beta1" +// ... +// containerService, err := container.New(oauthHttpClient) +package container // import "google.golang.org/api/container/v1beta1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "container:v1beta1" +const apiName = "container" +const apiVersion = "v1beta1" +const basePath = "https://container.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // View and manage your data across Google Cloud Platform services + CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Projects = NewProjectsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Projects *ProjectsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewProjectsService(s *Service) *ProjectsService { + rs := &ProjectsService{s: s} + rs.Locations = NewProjectsLocationsService(s) + rs.Zones = NewProjectsZonesService(s) + return rs +} + +type ProjectsService struct { + s *Service + + Locations *ProjectsLocationsService + + Zones *ProjectsZonesService +} + +func NewProjectsLocationsService(s *Service) *ProjectsLocationsService { + rs := &ProjectsLocationsService{s: s} + rs.Clusters = NewProjectsLocationsClustersService(s) + rs.Operations = NewProjectsLocationsOperationsService(s) + return rs +} + +type ProjectsLocationsService struct { + s *Service + + Clusters *ProjectsLocationsClustersService + + Operations *ProjectsLocationsOperationsService +} + +func NewProjectsLocationsClustersService(s *Service) *ProjectsLocationsClustersService { + rs := &ProjectsLocationsClustersService{s: s} + rs.NodePools = NewProjectsLocationsClustersNodePoolsService(s) + return rs +} + +type ProjectsLocationsClustersService struct { + s *Service + + NodePools *ProjectsLocationsClustersNodePoolsService +} + +func NewProjectsLocationsClustersNodePoolsService(s *Service) *ProjectsLocationsClustersNodePoolsService { + rs := &ProjectsLocationsClustersNodePoolsService{s: s} + return rs +} + +type ProjectsLocationsClustersNodePoolsService struct { + s *Service +} + +func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService { + rs := &ProjectsLocationsOperationsService{s: s} + return rs +} + +type ProjectsLocationsOperationsService struct { + s *Service +} + +func NewProjectsZonesService(s *Service) *ProjectsZonesService { + rs := &ProjectsZonesService{s: s} + rs.Clusters = NewProjectsZonesClustersService(s) + rs.Operations = NewProjectsZonesOperationsService(s) + return rs +} + +type ProjectsZonesService struct { + s *Service + + Clusters *ProjectsZonesClustersService + + Operations *ProjectsZonesOperationsService +} + +func NewProjectsZonesClustersService(s *Service) *ProjectsZonesClustersService { + rs := &ProjectsZonesClustersService{s: s} + rs.NodePools = NewProjectsZonesClustersNodePoolsService(s) + return rs +} + +type ProjectsZonesClustersService struct { + s *Service + + NodePools *ProjectsZonesClustersNodePoolsService +} + +func NewProjectsZonesClustersNodePoolsService(s *Service) *ProjectsZonesClustersNodePoolsService { + rs := &ProjectsZonesClustersNodePoolsService{s: s} + return rs +} + +type ProjectsZonesClustersNodePoolsService struct { + s *Service +} + +func NewProjectsZonesOperationsService(s *Service) *ProjectsZonesOperationsService { + rs := &ProjectsZonesOperationsService{s: s} + return rs +} + +type ProjectsZonesOperationsService struct { + s *Service +} + +// AcceleratorConfig: AcceleratorConfig represents a Hardware +// Accelerator request. +type AcceleratorConfig struct { + // AcceleratorCount: The number of the accelerator cards exposed to an + // instance. + AcceleratorCount int64 `json:"acceleratorCount,omitempty,string"` + + // AcceleratorType: The accelerator type resource name. List of + // supported accelerators + // [here](/compute/docs/gpus/#Introduction) + AcceleratorType string `json:"acceleratorType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AcceleratorCount") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AcceleratorCount") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AcceleratorConfig) MarshalJSON() ([]byte, error) { + type noMethod AcceleratorConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AddonsConfig: Configuration for the addons that can be automatically +// spun up in the +// cluster, enabling additional functionality. +type AddonsConfig struct { + // HorizontalPodAutoscaling: Configuration for the horizontal pod + // autoscaling feature, which + // increases or decreases the number of replica pods a replication + // controller + // has based on the resource usage of the existing pods. + HorizontalPodAutoscaling *HorizontalPodAutoscaling `json:"horizontalPodAutoscaling,omitempty"` + + // HttpLoadBalancing: Configuration for the HTTP (L7) load balancing + // controller addon, which + // makes it easy to set up HTTP load balancers for services in a + // cluster. + HttpLoadBalancing *HttpLoadBalancing `json:"httpLoadBalancing,omitempty"` + + // KubernetesDashboard: Configuration for the Kubernetes Dashboard. + KubernetesDashboard *KubernetesDashboard `json:"kubernetesDashboard,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HorizontalPodAutoscaling") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HorizontalPodAutoscaling") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AddonsConfig) MarshalJSON() ([]byte, error) { + type noMethod AddonsConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AutoUpgradeOptions: AutoUpgradeOptions defines the set of options for +// the user to control how +// the Auto Upgrades will proceed. +type AutoUpgradeOptions struct { + // AutoUpgradeStartTime: [Output only] This field is set when upgrades + // are about to commence + // with the approximate start time for the upgrades, + // in + // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + AutoUpgradeStartTime string `json:"autoUpgradeStartTime,omitempty"` + + // Description: [Output only] This field is set when upgrades are about + // to commence + // with the description of the upgrade. + Description string `json:"description,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AutoUpgradeStartTime") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AutoUpgradeStartTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AutoUpgradeOptions) MarshalJSON() ([]byte, error) { + type noMethod AutoUpgradeOptions + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CancelOperationRequest: CancelOperationRequest cancels a single +// operation. +type CancelOperationRequest struct { + // Name: The name (project, location, operation id) of the operation to + // cancel. + // Specified in the format 'projects/*/locations/*/operations/*'. + Name string `json:"name,omitempty"` + + // OperationId: The server-assigned `name` of the operation. + // This field is deprecated, use name instead. + OperationId string `json:"operationId,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the operation + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CancelOperationRequest) MarshalJSON() ([]byte, error) { + type noMethod CancelOperationRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CidrBlock: CidrBlock contains an optional name and one CIDR block. +type CidrBlock struct { + // CidrBlock: cidr_block must be specified in CIDR notation. + CidrBlock string `json:"cidrBlock,omitempty"` + + // DisplayName: display_name is an optional field for users to identify + // CIDR blocks. + DisplayName string `json:"displayName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CidrBlock") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CidrBlock") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CidrBlock) MarshalJSON() ([]byte, error) { + type noMethod CidrBlock + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClientCertificateConfig: Configuration for client certificates on the +// cluster. +type ClientCertificateConfig struct { + // IssueClientCertificate: Issue a client certificate. + IssueClientCertificate bool `json:"issueClientCertificate,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IssueClientCertificate") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IssueClientCertificate") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClientCertificateConfig) MarshalJSON() ([]byte, error) { + type noMethod ClientCertificateConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Cluster: A Google Container Engine cluster. +type Cluster struct { + // AddonsConfig: Configurations for the various addons available to run + // in the cluster. + AddonsConfig *AddonsConfig `json:"addonsConfig,omitempty"` + + // ClusterIpv4Cidr: The IP address range of the container pods in this + // cluster, + // in + // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) + // + // notation (e.g. `10.96.0.0/14`). Leave blank to have + // one automatically chosen or specify a `/14` block in `10.0.0.0/8`. + ClusterIpv4Cidr string `json:"clusterIpv4Cidr,omitempty"` + + // CreateTime: [Output only] The time the cluster was created, + // in + // [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format. + CreateTime string `json:"createTime,omitempty"` + + // CurrentMasterVersion: [Output only] The current software version of + // the master endpoint. + CurrentMasterVersion string `json:"currentMasterVersion,omitempty"` + + // CurrentNodeCount: [Output only] The number of nodes currently in the + // cluster. + CurrentNodeCount int64 `json:"currentNodeCount,omitempty"` + + // CurrentNodeVersion: [Output only] The current version of the node + // software components. + // If they are currently at multiple versions because they're in the + // process + // of being upgraded, this reflects the minimum version of all nodes. + CurrentNodeVersion string `json:"currentNodeVersion,omitempty"` + + // Description: An optional description of this cluster. + Description string `json:"description,omitempty"` + + // EnableKubernetesAlpha: Kubernetes alpha features are enabled on this + // cluster. This includes alpha + // API groups (e.g. v1beta1) and features that may not be production + // ready in + // the kubernetes version of the master and nodes. + // The cluster has no SLA for uptime and master/node upgrades are + // disabled. + // Alpha enabled clusters are automatically deleted thirty days + // after + // creation. + EnableKubernetesAlpha bool `json:"enableKubernetesAlpha,omitempty"` + + // Endpoint: [Output only] The IP address of this cluster's master + // endpoint. + // The endpoint can be accessed from the internet + // at + // `https://username:password@endpoint/`. + // + // See the `masterAuth` property of this resource for username + // and + // password information. + Endpoint string `json:"endpoint,omitempty"` + + // ExpireTime: [Output only] The time the cluster will be + // automatically + // deleted in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text + // format. + ExpireTime string `json:"expireTime,omitempty"` + + // InitialClusterVersion: The initial Kubernetes version for this + // cluster. Valid versions are those + // found in validMasterVersions returned by getServerConfig. The + // version can + // be upgraded over time; such upgrades are reflected + // in + // currentMasterVersion and currentNodeVersion. + InitialClusterVersion string `json:"initialClusterVersion,omitempty"` + + // InitialNodeCount: The number of nodes to create in this cluster. You + // must ensure that your + // Compute Engine resource + // quota + // is sufficient for this number of instances. You must also have + // available + // firewall and routes quota. + // For requests, this field should only be used in lieu of a + // "node_pool" object, since this configuration (along with + // the + // "node_config") will be used to create a "NodePool" object with + // an + // auto-generated name. Do not use this and a node_pool at the same + // time. + InitialNodeCount int64 `json:"initialNodeCount,omitempty"` + + // InstanceGroupUrls: [Output only] The resource URLs of + // [instance + // groups](/compute/docs/instance-groups/) associated with this + // cluster. + InstanceGroupUrls []string `json:"instanceGroupUrls,omitempty"` + + // IpAllocationPolicy: Configuration for cluster IP allocation. + IpAllocationPolicy *IPAllocationPolicy `json:"ipAllocationPolicy,omitempty"` + + // Location: [Output only] The name of the Google Compute + // Engine + // [zone](/compute/docs/regions-zones/regions-zones#available) + // or + // [region](/compute/docs/regions-zones/regions-zones#available) in + // which + // the cluster resides. + Location string `json:"location,omitempty"` + + // Locations: The list of Google Compute + // Engine + // [locations](/compute/docs/zones#available) in which the cluster's + // nodes + // should be located. + Locations []string `json:"locations,omitempty"` + + // LoggingService: The logging service the cluster should use to write + // logs. + // Currently available options: + // + // * `logging.googleapis.com` - the Google Cloud Logging service. + // * `none` - no logs will be exported from the cluster. + // * if left as an empty string,`logging.googleapis.com` will be used. + LoggingService string `json:"loggingService,omitempty"` + + // MasterAuth: The authentication information for accessing the master + // endpoint. + MasterAuth *MasterAuth `json:"masterAuth,omitempty"` + + // MasterAuthorizedNetworksConfig: The configuration options for master + // authorized networks feature. + MasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `json:"masterAuthorizedNetworksConfig,omitempty"` + + // MonitoringService: The monitoring service the cluster should use to + // write metrics. + // Currently available options: + // + // * `monitoring.googleapis.com` - the Google Cloud Monitoring + // service. + // * `none` - no metrics will be exported from the cluster. + // * if left as an empty string, `monitoring.googleapis.com` will be + // used. + MonitoringService string `json:"monitoringService,omitempty"` + + // Name: The name of this cluster. The name must be unique within this + // project + // and zone, and can be up to 40 characters with the following + // restrictions: + // + // * Lowercase letters, numbers, and hyphens only. + // * Must start with a letter. + // * Must end with a number or a letter. + Name string `json:"name,omitempty"` + + // Network: The name of the Google Compute + // Engine + // [network](/compute/docs/networks-and-firewalls#networks) to which + // the + // cluster is connected. If left unspecified, the `default` network + // will be used. + Network string `json:"network,omitempty"` + + // NetworkPolicy: Configuration options for the NetworkPolicy feature. + NetworkPolicy *NetworkPolicy `json:"networkPolicy,omitempty"` + + // NodeConfig: Parameters used in creating the cluster's nodes. + // See `nodeConfig` for the description of its properties. + // For requests, this field should only be used in lieu of a + // "node_pool" object, since this configuration (along with + // the + // "initial_node_count") will be used to create a "NodePool" object with + // an + // auto-generated name. Do not use this and a node_pool at the same + // time. + // For responses, this field will be populated with the node + // configuration of + // the first node pool. + // + // If unspecified, the defaults are used. + NodeConfig *NodeConfig `json:"nodeConfig,omitempty"` + + // NodeIpv4CidrSize: [Output only] The size of the address space on each + // node for hosting + // containers. This is provisioned from within the + // `container_ipv4_cidr` + // range. + NodeIpv4CidrSize int64 `json:"nodeIpv4CidrSize,omitempty"` + + // NodePools: The node pools associated with this cluster. + // This field should not be set if "node_config" or "initial_node_count" + // are + // specified. + NodePools []*NodePool `json:"nodePools,omitempty"` + + // SelfLink: [Output only] Server-defined URL for the resource. + SelfLink string `json:"selfLink,omitempty"` + + // ServicesIpv4Cidr: [Output only] The IP address range of the + // Kubernetes services in + // this cluster, + // in + // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) + // + // notation (e.g. `1.2.3.4/29`). Service addresses are + // typically put in the last `/16` from the container CIDR. + ServicesIpv4Cidr string `json:"servicesIpv4Cidr,omitempty"` + + // Status: [Output only] The current status of this cluster. + // + // Possible values: + // "STATUS_UNSPECIFIED" - Not set. + // "PROVISIONING" - The PROVISIONING state indicates the cluster is + // being created. + // "RUNNING" - The RUNNING state indicates the cluster has been + // created and is fully + // usable. + // "RECONCILING" - The RECONCILING state indicates that some work is + // actively being done on + // the cluster, such as upgrading the master or node software. Details + // can + // be found in the `statusMessage` field. + // "STOPPING" - The STOPPING state indicates the cluster is being + // deleted. + // "ERROR" - The ERROR state indicates the cluster may be unusable. + // Details + // can be found in the `statusMessage` field. + Status string `json:"status,omitempty"` + + // StatusMessage: [Output only] Additional information about the current + // status of this + // cluster, if available. + StatusMessage string `json:"statusMessage,omitempty"` + + // Subnetwork: The name of the Google Compute + // Engine + // [subnetwork](/compute/docs/subnetworks) to which the + // cluster is connected. + Subnetwork string `json:"subnetwork,omitempty"` + + // Zone: [Output only] The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use location instead. + Zone string `json:"zone,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AddonsConfig") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddonsConfig") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Cluster) MarshalJSON() ([]byte, error) { + type noMethod Cluster + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterUpdate: ClusterUpdate describes an update to the cluster. +// Exactly one update can +// be applied to a cluster with each request, so at most one field can +// be +// provided. +type ClusterUpdate struct { + // DesiredAddonsConfig: Configurations for the various addons available + // to run in the cluster. + DesiredAddonsConfig *AddonsConfig `json:"desiredAddonsConfig,omitempty"` + + // DesiredImageType: The desired image type for the node pool. + // NOTE: Set the "desired_node_pool" field as well. + DesiredImageType string `json:"desiredImageType,omitempty"` + + // DesiredLocations: The desired list of Google Compute + // Engine + // [locations](/compute/docs/zones#available) in which the cluster's + // nodes + // should be located. Changing the locations a cluster is in will + // result + // in nodes being either created or removed from the cluster, depending + // on + // whether locations are being added or removed. + // + // This list must always include the cluster's primary zone. + DesiredLocations []string `json:"desiredLocations,omitempty"` + + // DesiredMasterAuthorizedNetworksConfig: The desired configuration + // options for master authorized networks feature. + DesiredMasterAuthorizedNetworksConfig *MasterAuthorizedNetworksConfig `json:"desiredMasterAuthorizedNetworksConfig,omitempty"` + + // DesiredMasterVersion: The Kubernetes version to change the master to. + // The only valid value is the + // latest supported version. Use "-" to have the server automatically + // select + // the latest version. + DesiredMasterVersion string `json:"desiredMasterVersion,omitempty"` + + // DesiredMonitoringService: The monitoring service the cluster should + // use to write metrics. + // Currently available options: + // + // * "monitoring.googleapis.com" - the Google Cloud Monitoring service + // * "none" - no metrics will be exported from the cluster + DesiredMonitoringService string `json:"desiredMonitoringService,omitempty"` + + // DesiredNodePoolAutoscaling: Autoscaler configuration for the node + // pool specified in + // desired_node_pool_id. If there is only one pool in the + // cluster and desired_node_pool_id is not provided then + // the change applies to that single node pool. + DesiredNodePoolAutoscaling *NodePoolAutoscaling `json:"desiredNodePoolAutoscaling,omitempty"` + + // DesiredNodePoolId: The node pool to be upgraded. This field is + // mandatory if + // "desired_node_version", "desired_image_family" + // or + // "desired_node_pool_autoscaling" is specified and there is more than + // one + // node pool on the cluster. + DesiredNodePoolId string `json:"desiredNodePoolId,omitempty"` + + // DesiredNodeVersion: The Kubernetes version to change the nodes to + // (typically an + // upgrade). Use `-` to upgrade to the latest version supported by + // the server. + DesiredNodeVersion string `json:"desiredNodeVersion,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DesiredAddonsConfig") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DesiredAddonsConfig") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClusterUpdate) MarshalJSON() ([]byte, error) { + type noMethod ClusterUpdate + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompleteIPRotationRequest: CompleteIPRotationRequest moves the +// cluster master back into single-IP mode. +type CompleteIPRotationRequest struct { + // ClusterId: The name of the cluster. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster id) of the cluster to + // complete IP rotation. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://developers.google.com/console/help/new/#projec + // tnumber). + // This field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompleteIPRotationRequest) MarshalJSON() ([]byte, error) { + type noMethod CompleteIPRotationRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CreateClusterRequest: CreateClusterRequest creates a cluster. +type CreateClusterRequest struct { + // Cluster: A + // [cluster + // resource](/container-engine/reference/rest/v1beta1/projects.z + // ones.clusters) + Cluster *Cluster `json:"cluster,omitempty"` + + // Parent: The parent (project and location) where the cluster will be + // created. + // Specified in the format 'projects/*/locations/*'. + Parent string `json:"parent,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use parent instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use parent instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Cluster") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Cluster") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CreateClusterRequest) MarshalJSON() ([]byte, error) { + type noMethod CreateClusterRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CreateNodePoolRequest: CreateNodePoolRequest creates a node pool for +// a cluster. +type CreateNodePoolRequest struct { + // ClusterId: The name of the cluster. + // This field is deprecated, use parent instead. + ClusterId string `json:"clusterId,omitempty"` + + // NodePool: The node pool to create. + NodePool *NodePool `json:"nodePool,omitempty"` + + // Parent: The parent (project, location, cluster id) where the node + // pool will be created. + // Specified in the format + // 'projects/*/locations/*/clusters/*/nodePools/*'. + Parent string `json:"parent,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://developers.google.com/console/help/new/#projec + // tnumber). + // This field is deprecated, use parent instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use parent instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CreateNodePoolRequest) MarshalJSON() ([]byte, error) { + type noMethod CreateNodePoolRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated +// empty messages in your APIs. A typical example is to use it as the +// request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// HorizontalPodAutoscaling: Configuration options for the horizontal +// pod autoscaling feature, which +// increases or decreases the number of replica pods a replication +// controller +// has based on the resource usage of the existing pods. +type HorizontalPodAutoscaling struct { + // Disabled: Whether the Horizontal Pod Autoscaling feature is enabled + // in the cluster. + // When enabled, it ensures that a Heapster pod is running in the + // cluster, + // which is also used by the Cloud Monitoring service. + Disabled bool `json:"disabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Disabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Disabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HorizontalPodAutoscaling) MarshalJSON() ([]byte, error) { + type noMethod HorizontalPodAutoscaling + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HttpLoadBalancing: Configuration options for the HTTP (L7) load +// balancing controller addon, +// which makes it easy to set up HTTP load balancers for services in a +// cluster. +type HttpLoadBalancing struct { + // Disabled: Whether the HTTP Load Balancing controller is enabled in + // the cluster. + // When enabled, it runs a small pod in the cluster that manages the + // load + // balancers. + Disabled bool `json:"disabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Disabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Disabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HttpLoadBalancing) MarshalJSON() ([]byte, error) { + type noMethod HttpLoadBalancing + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// IPAllocationPolicy: Configuration for controlling how IPs are +// allocated in the cluster. +type IPAllocationPolicy struct { + // ClusterIpv4Cidr: This field is deprecated, use + // cluster_ipv4_cidr_block. + ClusterIpv4Cidr string `json:"clusterIpv4Cidr,omitempty"` + + // ClusterIpv4CidrBlock: The IP address range for the cluster pod IPs. + // If this field is set, then + // `cluster.cluster_ipv4_cidr` must be left blank. + // + // This field is only applicable when `use_ip_aliases` is true. + // + // Set to blank to have a range chosen with the default size. + // + // Set to /netmask (e.g. `/14`) to have a range chosen with a + // specific + // netmask. + // + // Set to + // a + // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // (e.g. + // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific + // range + // to use. + ClusterIpv4CidrBlock string `json:"clusterIpv4CidrBlock,omitempty"` + + // ClusterSecondaryRangeName: The name of the secondary range to be used + // for the cluster CIDR + // block. The secondary range will be used for pod IP + // addresses. This must be an existing secondary range associated + // with the cluster subnetwork. + // + // This field is only applicable with use_ip_aliases + // and + // create_subnetwork is false. + ClusterSecondaryRangeName string `json:"clusterSecondaryRangeName,omitempty"` + + // CreateSubnetwork: Whether a new subnetwork will be created + // automatically for the cluster. + // + // This field is only applicable when `use_ip_aliases` is true. + CreateSubnetwork bool `json:"createSubnetwork,omitempty"` + + // NodeIpv4Cidr: This field is deprecated, use node_ipv4_cidr_block. + NodeIpv4Cidr string `json:"nodeIpv4Cidr,omitempty"` + + // NodeIpv4CidrBlock: The IP address range of the instance IPs in this + // cluster. + // + // This is applicable only if `create_subnetwork` is true. + // + // Set to blank to have a range chosen with the default size. + // + // Set to /netmask (e.g. `/14`) to have a range chosen with a + // specific + // netmask. + // + // Set to + // a + // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // (e.g. + // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific + // range + // to use. + NodeIpv4CidrBlock string `json:"nodeIpv4CidrBlock,omitempty"` + + // ServicesIpv4Cidr: This field is deprecated, use + // services_ipv4_cidr_block. + ServicesIpv4Cidr string `json:"servicesIpv4Cidr,omitempty"` + + // ServicesIpv4CidrBlock: The IP address range of the services IPs in + // this cluster. If blank, a range + // will be automatically chosen with the default size. + // + // This field is only applicable when `use_ip_aliases` is true. + // + // Set to blank to have a range chosen with the default size. + // + // Set to /netmask (e.g. `/14`) to have a range chosen with a + // specific + // netmask. + // + // Set to + // a + // [CIDR](http://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing) + // + // notation (e.g. `10.96.0.0/14`) from the RFC-1918 private networks + // (e.g. + // `10.0.0.0/8`, `172.16.0.0/12`, `192.168.0.0/16`) to pick a specific + // range + // to use. + ServicesIpv4CidrBlock string `json:"servicesIpv4CidrBlock,omitempty"` + + // ServicesSecondaryRangeName: The name of the secondary range to be + // used as for the services + // CIDR block. The secondary range will be used for service + // ClusterIPs. This must be an existing secondary range associated + // with the cluster subnetwork. + // + // This field is only applicable with use_ip_aliases + // and + // create_subnetwork is false. + ServicesSecondaryRangeName string `json:"servicesSecondaryRangeName,omitempty"` + + // SubnetworkName: A custom subnetwork name to be used if + // `create_subnetwork` is true. If + // this field is empty, then an automatic name will be chosen for the + // new + // subnetwork. + SubnetworkName string `json:"subnetworkName,omitempty"` + + // UseIpAliases: Whether alias IPs will be used for pod IPs in the + // cluster. + UseIpAliases bool `json:"useIpAliases,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterIpv4Cidr") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterIpv4Cidr") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *IPAllocationPolicy) MarshalJSON() ([]byte, error) { + type noMethod IPAllocationPolicy + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// KubernetesDashboard: Configuration for the Kubernetes Dashboard. +type KubernetesDashboard struct { + // Disabled: Whether the Kubernetes Dashboard is enabled for this + // cluster. + Disabled bool `json:"disabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Disabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Disabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *KubernetesDashboard) MarshalJSON() ([]byte, error) { + type noMethod KubernetesDashboard + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListClustersResponse: ListClustersResponse is the result of +// ListClustersRequest. +type ListClustersResponse struct { + // Clusters: A list of clusters in the project in the specified zone, + // or + // across all ones. + Clusters []*Cluster `json:"clusters,omitempty"` + + // MissingZones: If any zones are listed here, the list of clusters + // returned + // may be missing those zones. + MissingZones []string `json:"missingZones,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Clusters") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Clusters") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListClustersResponse) MarshalJSON() ([]byte, error) { + type noMethod ListClustersResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListNodePoolsResponse: ListNodePoolsResponse is the result of +// ListNodePoolsRequest. +type ListNodePoolsResponse struct { + // NodePools: A list of node pools for a cluster. + NodePools []*NodePool `json:"nodePools,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NodePools") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NodePools") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListNodePoolsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListNodePoolsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListOperationsResponse: ListOperationsResponse is the result of +// ListOperationsRequest. +type ListOperationsResponse struct { + // MissingZones: If any zones are listed here, the list of operations + // returned + // may be missing the operations from those zones. + MissingZones []string `json:"missingZones,omitempty"` + + // Operations: A list of operations in the project in the specified + // zone. + Operations []*Operation `json:"operations,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "MissingZones") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MissingZones") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListOperationsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// MasterAuth: The authentication information for accessing the master +// endpoint. +// Authentication can be done using HTTP basic auth or using +// client +// certificates. +type MasterAuth struct { + // ClientCertificate: [Output only] Base64-encoded public certificate + // used by clients to + // authenticate to the cluster endpoint. + ClientCertificate string `json:"clientCertificate,omitempty"` + + // ClientCertificateConfig: Configuration for client certificate + // authentication on the cluster. If no + // configuration is specified, a client certificate is issued. + ClientCertificateConfig *ClientCertificateConfig `json:"clientCertificateConfig,omitempty"` + + // ClientKey: [Output only] Base64-encoded private key used by clients + // to authenticate + // to the cluster endpoint. + ClientKey string `json:"clientKey,omitempty"` + + // ClusterCaCertificate: [Output only] Base64-encoded public certificate + // that is the root of + // trust for the cluster. + ClusterCaCertificate string `json:"clusterCaCertificate,omitempty"` + + // Password: The password to use for HTTP basic authentication to the + // master endpoint. + // Because the master endpoint is open to the Internet, you should + // create a + // strong password. If a password is provided for cluster creation, + // username + // must be non-empty. + Password string `json:"password,omitempty"` + + // Username: The username to use for HTTP basic authentication to the + // master endpoint. + // For clusters v1.6.0 and later, you can disable basic authentication + // by + // providing an empty username. + Username string `json:"username,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClientCertificate") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClientCertificate") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *MasterAuth) MarshalJSON() ([]byte, error) { + type noMethod MasterAuth + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// MasterAuthorizedNetworksConfig: Configuration options for the master +// authorized networks feature. Enabled +// master authorized networks will disallow all external traffic to +// access +// Kubernetes master through HTTPS except traffic from the given CIDR +// blocks, +// Google Compute Engine Public IPs and Google Prod IPs. +type MasterAuthorizedNetworksConfig struct { + // CidrBlocks: cidr_blocks define up to 10 external networks that could + // access + // Kubernetes master through HTTPS. + CidrBlocks []*CidrBlock `json:"cidrBlocks,omitempty"` + + // Enabled: Whether or not master authorized networks is enabled. + Enabled bool `json:"enabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CidrBlocks") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CidrBlocks") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MasterAuthorizedNetworksConfig) MarshalJSON() ([]byte, error) { + type noMethod MasterAuthorizedNetworksConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NetworkPolicy: Configuration options for the NetworkPolicy +// feature. +// https://kubernetes.io/docs/concepts/services-networking/netwo +// rkpolicies/ +type NetworkPolicy struct { + // Enabled: Whether network policy is enabled on the cluster. + Enabled bool `json:"enabled,omitempty"` + + // Provider: The selected network policy provider. + // + // Possible values: + // "PROVIDER_UNSPECIFIED" - Not set + // "CALICO" - Tigera (Calico Felix). + Provider string `json:"provider,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NetworkPolicy) MarshalJSON() ([]byte, error) { + type noMethod NetworkPolicy + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NodeConfig: Parameters that describe the nodes in a cluster. +type NodeConfig struct { + // Accelerators: A list of hardware accelerators to be attached to each + // node. + // See https://cloud.google.com/compute/docs/gpus for more information + // about + // support for GPUs. + Accelerators []*AcceleratorConfig `json:"accelerators,omitempty"` + + // DiskSizeGb: Size of the disk attached to each node, specified in + // GB. + // The smallest allowed disk size is 10GB. + // + // If unspecified, the default disk size is 100GB. + DiskSizeGb int64 `json:"diskSizeGb,omitempty"` + + // ImageType: The image type to use for this node. Note that for a given + // image type, + // the latest version of it will be used. + ImageType string `json:"imageType,omitempty"` + + // Labels: The map of Kubernetes labels (key/value pairs) to be applied + // to each node. + // These will added in addition to any default label(s) that + // Kubernetes may apply to the node. + // In case of conflict in label keys, the applied set may differ + // depending on + // the Kubernetes version -- it's best to assume the behavior is + // undefined + // and conflicts should be avoided. + // For more information, including usage and the valid values, + // see: + // http://kubernetes.io/v1.1/docs/user-guide/labels.html + Labels map[string]string `json:"labels,omitempty"` + + // LocalSsdCount: The number of local SSD disks to be attached to the + // node. + // + // The limit for this value is dependant upon the maximum number + // of + // disks available on a machine per zone. + // See: + // https://cloud.google.com/compute/docs/disks/local-ssd#local_ssd_l + // imits + // for more information. + LocalSsdCount int64 `json:"localSsdCount,omitempty"` + + // MachineType: The name of a Google Compute Engine + // [machine + // type](/compute/docs/machine-types) (e.g. + // `n1-standard-1`). + // + // If unspecified, the default machine type is + // `n1-standard-1`. + MachineType string `json:"machineType,omitempty"` + + // Metadata: The metadata key/value pairs assigned to instances in the + // cluster. + // + // Keys must conform to the regexp [a-zA-Z0-9-_]+ and be less than 128 + // bytes + // in length. These are reflected as part of a URL in the metadata + // server. + // Additionally, to avoid ambiguity, keys must not conflict with any + // other + // metadata keys for the project or be one of the four reserved + // keys: + // "instance-template", "kube-env", "startup-script", and + // "user-data" + // + // Values are free-form strings, and only have meaning as interpreted + // by + // the image running in the instance. The only restriction placed on + // them is + // that each value's size must be less than or equal to 32 KB. + // + // The total size of all keys and values must be less than 512 KB. + Metadata map[string]string `json:"metadata,omitempty"` + + // OauthScopes: The set of Google API scopes to be made available on all + // of the + // node VMs under the "default" service account. + // + // The following scopes are recommended, but not required, and by + // default are + // not included: + // + // * `https://www.googleapis.com/auth/compute` is required for + // mounting + // persistent storage on your nodes. + // * `https://www.googleapis.com/auth/devstorage.read_only` is required + // for + // communicating with **gcr.io** + // (the [Google Container Registry](/container-registry/)). + // + // If unspecified, no scopes are added, unless Cloud Logging or + // Cloud + // Monitoring are enabled, in which case their required scopes will be + // added. + OauthScopes []string `json:"oauthScopes,omitempty"` + + // Preemptible: Whether the nodes are created as preemptible VM + // instances. + // See: + // https://cloud.google.com/compute/docs/instances/preemptible for + // more + // inforamtion about preemptible VM instances. + Preemptible bool `json:"preemptible,omitempty"` + + // ServiceAccount: The Google Cloud Platform Service Account to be used + // by the node VMs. If + // no Service Account is specified, the "default" service account is + // used. + ServiceAccount string `json:"serviceAccount,omitempty"` + + // Tags: The list of instance tags applied to all nodes. Tags are used + // to identify + // valid sources or targets for network firewalls and are specified + // by + // the client during cluster or node pool creation. Each tag within the + // list + // must comply with RFC1035. + Tags []string `json:"tags,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Accelerators") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Accelerators") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NodeConfig) MarshalJSON() ([]byte, error) { + type noMethod NodeConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NodeManagement: NodeManagement defines the set of node management +// services turned on for the +// node pool. +type NodeManagement struct { + // AutoRepair: Whether the nodes will be automatically repaired. + AutoRepair bool `json:"autoRepair,omitempty"` + + // AutoUpgrade: Whether the nodes will be automatically upgraded. + AutoUpgrade bool `json:"autoUpgrade,omitempty"` + + // UpgradeOptions: Specifies the Auto Upgrade knobs for the node pool. + UpgradeOptions *AutoUpgradeOptions `json:"upgradeOptions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AutoRepair") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AutoRepair") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NodeManagement) MarshalJSON() ([]byte, error) { + type noMethod NodeManagement + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NodePool: NodePool contains the name and configuration for a +// cluster's node pool. +// Node pools are a set of nodes (i.e. VM's), with a common +// configuration and +// specification, under the control of the cluster master. They may have +// a set +// of Kubernetes labels applied to them, which may be used to reference +// them +// during pod scheduling. They may also be resized up or down, to +// accommodate +// the workload. +type NodePool struct { + // Autoscaling: Autoscaler configuration for this NodePool. Autoscaler + // is enabled + // only if a valid configuration is present. + Autoscaling *NodePoolAutoscaling `json:"autoscaling,omitempty"` + + // Config: The node configuration of the pool. + Config *NodeConfig `json:"config,omitempty"` + + // InitialNodeCount: The initial node count for the pool. You must + // ensure that your + // Compute Engine resource + // quota + // is sufficient for this number of instances. You must also have + // available + // firewall and routes quota. + InitialNodeCount int64 `json:"initialNodeCount,omitempty"` + + // InstanceGroupUrls: [Output only] The resource URLs of + // [instance + // groups](/compute/docs/instance-groups/) associated with this + // node pool. + InstanceGroupUrls []string `json:"instanceGroupUrls,omitempty"` + + // Management: NodeManagement configuration for this NodePool. + Management *NodeManagement `json:"management,omitempty"` + + // Name: The name of the node pool. + Name string `json:"name,omitempty"` + + // SelfLink: [Output only] Server-defined URL for the resource. + SelfLink string `json:"selfLink,omitempty"` + + // Status: [Output only] The status of the nodes in this pool instance. + // + // Possible values: + // "STATUS_UNSPECIFIED" - Not set. + // "PROVISIONING" - The PROVISIONING state indicates the node pool is + // being created. + // "RUNNING" - The RUNNING state indicates the node pool has been + // created + // and is fully usable. + // "RUNNING_WITH_ERROR" - The RUNNING_WITH_ERROR state indicates the + // node pool has been created + // and is partially usable. Some error state has occurred and + // some + // functionality may be impaired. Customer may need to reissue a + // request + // or trigger a new update. + // "RECONCILING" - The RECONCILING state indicates that some work is + // actively being done on + // the node pool, such as upgrading node software. Details can + // be found in the `statusMessage` field. + // "STOPPING" - The STOPPING state indicates the node pool is being + // deleted. + // "ERROR" - The ERROR state indicates the node pool may be unusable. + // Details + // can be found in the `statusMessage` field. + Status string `json:"status,omitempty"` + + // StatusMessage: [Output only] Additional information about the current + // status of this + // node pool instance, if available. + StatusMessage string `json:"statusMessage,omitempty"` + + // Version: [Output only] The version of the Kubernetes of this node. + Version string `json:"version,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Autoscaling") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Autoscaling") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NodePool) MarshalJSON() ([]byte, error) { + type noMethod NodePool + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NodePoolAutoscaling: NodePoolAutoscaling contains information +// required by cluster autoscaler to +// adjust the size of the node pool to the current cluster usage. +type NodePoolAutoscaling struct { + // Enabled: Is autoscaling enabled for this node pool. + Enabled bool `json:"enabled,omitempty"` + + // MaxNodeCount: Maximum number of nodes in the NodePool. Must be >= + // min_node_count. There + // has to enough quota to scale up the cluster. + MaxNodeCount int64 `json:"maxNodeCount,omitempty"` + + // MinNodeCount: Minimum number of nodes in the NodePool. Must be >= 1 + // and <= + // max_node_count. + MinNodeCount int64 `json:"minNodeCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *NodePoolAutoscaling) MarshalJSON() ([]byte, error) { + type noMethod NodePoolAutoscaling + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Operation: This operation resource represents operations that may +// have happened or are +// happening on the cluster. All fields are output only. +type Operation struct { + // Detail: Detailed operation progress, if available. + Detail string `json:"detail,omitempty"` + + // Location: [Output only] The name of the Google Compute + // Engine + // [zone](/compute/docs/regions-zones/regions-zones#available) + // or + // [region](/compute/docs/regions-zones/regions-zones#available) in + // which + // the cluster resides. + Location string `json:"location,omitempty"` + + // Name: The server-assigned ID for the operation. + Name string `json:"name,omitempty"` + + // OperationType: The operation type. + // + // Possible values: + // "TYPE_UNSPECIFIED" - Not set. + // "CREATE_CLUSTER" - Cluster create. + // "DELETE_CLUSTER" - Cluster delete. + // "UPGRADE_MASTER" - A master upgrade. + // "UPGRADE_NODES" - A node upgrade. + // "REPAIR_CLUSTER" - Cluster repair. + // "UPDATE_CLUSTER" - Cluster update. + // "CREATE_NODE_POOL" - Node pool create. + // "DELETE_NODE_POOL" - Node pool delete. + // "SET_NODE_POOL_MANAGEMENT" - Set node pool management. + // "AUTO_REPAIR_NODES" - Automatic node pool repair. + // "AUTO_UPGRADE_NODES" - Automatic node upgrade. + // "SET_LABELS" - Set labels. + // "SET_MASTER_AUTH" - Set/generate master auth materials + // "SET_NODE_POOL_SIZE" - Set node pool size. + // "SET_NETWORK_POLICY" - Updates network policy for a cluster. + // "SET_MAINTENANCE_POLICY" - Set the maintenance policy. + OperationType string `json:"operationType,omitempty"` + + // SelfLink: Server-defined URL for the resource. + SelfLink string `json:"selfLink,omitempty"` + + // Status: The current status of the operation. + // + // Possible values: + // "STATUS_UNSPECIFIED" - Not set. + // "PENDING" - The operation has been created. + // "RUNNING" - The operation is currently running. + // "DONE" - The operation is done, either cancelled or completed. + // "ABORTING" - The operation is aborting. + Status string `json:"status,omitempty"` + + // StatusMessage: If an error has occurred, a textual description of the + // error. + StatusMessage string `json:"statusMessage,omitempty"` + + // TargetLink: Server-defined URL for the target of the operation. + TargetLink string `json:"targetLink,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the operation + // is taking place. + // This field is deprecated, use location instead. + Zone string `json:"zone,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Detail") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Detail") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Operation) MarshalJSON() ([]byte, error) { + type noMethod Operation + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// RollbackNodePoolUpgradeRequest: RollbackNodePoolUpgradeRequest +// rollbacks the previously Aborted or Failed +// NodePool upgrade. This will be an no-op if the last upgrade +// successfully +// completed. +type RollbackNodePoolUpgradeRequest struct { + // ClusterId: The name of the cluster to rollback. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster, node pool id) of the node + // poll to + // rollback upgrade. + // Specified in the format + // 'projects/*/locations/*/clusters/*/nodePools/*'. + Name string `json:"name,omitempty"` + + // NodePoolId: The name of the node pool to rollback. + // This field is deprecated, use name instead. + NodePoolId string `json:"nodePoolId,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *RollbackNodePoolUpgradeRequest) MarshalJSON() ([]byte, error) { + type noMethod RollbackNodePoolUpgradeRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ServerConfig: Container Engine service configuration. +type ServerConfig struct { + // DefaultClusterVersion: Version of Kubernetes the service deploys by + // default. + DefaultClusterVersion string `json:"defaultClusterVersion,omitempty"` + + // DefaultImageType: Default image type. + DefaultImageType string `json:"defaultImageType,omitempty"` + + // ValidImageTypes: List of valid image types. + ValidImageTypes []string `json:"validImageTypes,omitempty"` + + // ValidMasterVersions: List of valid master versions. + ValidMasterVersions []string `json:"validMasterVersions,omitempty"` + + // ValidNodeVersions: List of valid node upgrade target versions. + ValidNodeVersions []string `json:"validNodeVersions,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "DefaultClusterVersion") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultClusterVersion") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ServerConfig) MarshalJSON() ([]byte, error) { + type noMethod ServerConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SetLabelsRequest: SetLabelsRequest sets the Google Cloud Platform +// labels on a Google Container +// Engine cluster, which will in turn set them for Google Compute +// Engine +// resources used by that cluster +type SetLabelsRequest struct { + // ClusterId: The name of the cluster. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // LabelFingerprint: The fingerprint of the previous set of labels for + // this resource, + // used to detect conflicts. The fingerprint is initially generated + // by + // Container Engine and changes after every request to modify or + // update + // labels. You must always provide an up-to-date fingerprint hash + // when + // updating or changing labels. Make a get() request to + // the + // resource to get the latest fingerprint. + LabelFingerprint string `json:"labelFingerprint,omitempty"` + + // Name: The name (project, location, cluster id) of the cluster to set + // labels. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://developers.google.com/console/help/new/#projec + // tnumber). + // This field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // ResourceLabels: The labels to set for that cluster. + ResourceLabels map[string]string `json:"resourceLabels,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SetLabelsRequest) MarshalJSON() ([]byte, error) { + type noMethod SetLabelsRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SetLegacyAbacRequest: SetLegacyAbacRequest enables or disables the +// ABAC authorization mechanism for +// a cluster. +type SetLegacyAbacRequest struct { + // ClusterId: The name of the cluster to update. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Enabled: Whether ABAC authorization will be enabled in the cluster. + Enabled bool `json:"enabled,omitempty"` + + // Name: The name (project, location, cluster id) of the cluster to set + // legacy abac. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SetLegacyAbacRequest) MarshalJSON() ([]byte, error) { + type noMethod SetLegacyAbacRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SetMasterAuthRequest: SetMasterAuthRequest updates the admin password +// of a cluster. +type SetMasterAuthRequest struct { + // Action: The exact form of action to be taken on the master auth + // + // Possible values: + // "UNKNOWN" - Operation is unknown and will error out + // "SET_PASSWORD" - Set the password to a user generated value. + // "GENERATE_PASSWORD" - Generate a new password and set it to that. + Action string `json:"action,omitempty"` + + // ClusterId: The name of the cluster to upgrade. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster) of the cluster to set + // auth. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Update: A description of the update. + Update *MasterAuth `json:"update,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Action") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Action") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SetMasterAuthRequest) MarshalJSON() ([]byte, error) { + type noMethod SetMasterAuthRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SetNetworkPolicyRequest: SetNetworkPolicyRequest enables/disables +// network policy for a cluster. +type SetNetworkPolicyRequest struct { + // ClusterId: The name of the cluster. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster id) of the cluster to set + // networking policy. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // NetworkPolicy: Configuration options for the NetworkPolicy feature. + NetworkPolicy *NetworkPolicy `json:"networkPolicy,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://developers.google.com/console/help/new/#projec + // tnumber). + // This field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SetNetworkPolicyRequest) MarshalJSON() ([]byte, error) { + type noMethod SetNetworkPolicyRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SetNodePoolManagementRequest: SetNodePoolManagementRequest sets the +// node management properties of a node +// pool. +type SetNodePoolManagementRequest struct { + // ClusterId: The name of the cluster to update. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Management: NodeManagement configuration for the node pool. + Management *NodeManagement `json:"management,omitempty"` + + // Name: The name (project, location, cluster, node pool id) of the node + // pool to set + // management properties. Specified in the + // format + // 'projects/*/locations/*/clusters/*/nodePools/*'. + Name string `json:"name,omitempty"` + + // NodePoolId: The name of the node pool to update. + // This field is deprecated, use name instead. + NodePoolId string `json:"nodePoolId,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SetNodePoolManagementRequest) MarshalJSON() ([]byte, error) { + type noMethod SetNodePoolManagementRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// StartIPRotationRequest: StartIPRotationRequest creates a new IP for +// the cluster and then performs +// a node upgrade on each node pool to point to the new IP. +type StartIPRotationRequest struct { + // ClusterId: The name of the cluster. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster id) of the cluster to + // start IP rotation. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://developers.google.com/console/help/new/#projec + // tnumber). + // This field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *StartIPRotationRequest) MarshalJSON() ([]byte, error) { + type noMethod StartIPRotationRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UpdateClusterRequest: UpdateClusterRequest updates the settings of a +// cluster. +type UpdateClusterRequest struct { + // ClusterId: The name of the cluster to upgrade. + // This field is deprecated, use name instead. + ClusterId string `json:"clusterId,omitempty"` + + // Name: The name (project, location, cluster) of the cluster to + // update. + // Specified in the format 'projects/*/locations/*/clusters/*'. + Name string `json:"name,omitempty"` + + // ProjectId: The Google Developers Console [project ID or + // project + // number](https://support.google.com/cloud/answer/6158840). + // This + // field is deprecated, use name instead. + ProjectId string `json:"projectId,omitempty"` + + // Update: A description of the update. + Update *ClusterUpdate `json:"update,omitempty"` + + // Zone: The name of the Google Compute + // Engine + // [zone](/compute/docs/zones#available) in which the + // cluster + // resides. + // This field is deprecated, use name instead. + Zone string `json:"zone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UpdateClusterRequest) MarshalJSON() ([]byte, error) { + type noMethod UpdateClusterRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "container.projects.locations.getServerConfig": + +type ProjectsLocationsGetServerConfigCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// GetServerConfig: Returns configuration info about the Container +// Engine service. +func (r *ProjectsLocationsService) GetServerConfig(name string) *ProjectsLocationsGetServerConfigCall { + c := &ProjectsLocationsGetServerConfigCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use name instead. +func (c *ProjectsLocationsGetServerConfigCall) ProjectId(projectId string) *ProjectsLocationsGetServerConfigCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine [zone](/compute/docs/zones#available) +// to return operations for. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsGetServerConfigCall) Zone(zone string) *ProjectsLocationsGetServerConfigCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsGetServerConfigCall) Fields(s ...googleapi.Field) *ProjectsLocationsGetServerConfigCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsGetServerConfigCall) IfNoneMatch(entityTag string) *ProjectsLocationsGetServerConfigCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsGetServerConfigCall) Context(ctx context.Context) *ProjectsLocationsGetServerConfigCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsGetServerConfigCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsGetServerConfigCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}/serverConfig") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.getServerConfig" call. +// Exactly one of *ServerConfig or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *ServerConfig.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsGetServerConfigCall) Do(opts ...googleapi.CallOption) (*ServerConfig, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ServerConfig{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns configuration info about the Container Engine service.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/serverConfig", + // "httpMethod": "GET", + // "id": "container.projects.locations.getServerConfig", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}/serverConfig", + // "response": { + // "$ref": "ServerConfig" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.completeIpRotation": + +type ProjectsLocationsClustersCompleteIpRotationCall struct { + s *Service + name string + completeiprotationrequest *CompleteIPRotationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// CompleteIpRotation: Completes master IP rotation. +func (r *ProjectsLocationsClustersService) CompleteIpRotation(name string, completeiprotationrequest *CompleteIPRotationRequest) *ProjectsLocationsClustersCompleteIpRotationCall { + c := &ProjectsLocationsClustersCompleteIpRotationCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.completeiprotationrequest = completeiprotationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersCompleteIpRotationCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersCompleteIpRotationCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersCompleteIpRotationCall) Context(ctx context.Context) *ProjectsLocationsClustersCompleteIpRotationCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersCompleteIpRotationCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.completeiprotationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:completeIpRotation") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.completeIpRotation" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersCompleteIpRotationCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Completes master IP rotation.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:completeIpRotation", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.completeIpRotation", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster id) of the cluster to complete IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:completeIpRotation", + // "request": { + // "$ref": "CompleteIPRotationRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.create": + +type ProjectsLocationsClustersCreateCall struct { + s *Service + parent string + createclusterrequest *CreateClusterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a cluster, consisting of the specified number and +// type of Google +// Compute Engine instances. +// +// By default, the cluster is created in the project's +// [default +// network](/compute/docs/networks-and-firewalls#networks). +// +// One firewall is added for the cluster. After cluster creation, +// the cluster creates routes for each node to allow the containers +// on that node to communicate with all other instances in +// the +// cluster. +// +// Finally, an entry is added to the project's global metadata +// indicating +// which CIDR range is being used by the cluster. +func (r *ProjectsLocationsClustersService) Create(parent string, createclusterrequest *CreateClusterRequest) *ProjectsLocationsClustersCreateCall { + c := &ProjectsLocationsClustersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.createclusterrequest = createclusterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersCreateCall) Context(ctx context.Context) *ProjectsLocationsClustersCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.createclusterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project and location) where the cluster will be created.\nSpecified in the format 'projects/*/locations/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/clusters", + // "request": { + // "$ref": "CreateClusterRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.delete": + +type ProjectsLocationsClustersDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes the cluster, including the Kubernetes endpoint and +// all worker +// nodes. +// +// Firewalls and routes that were configured during cluster creation +// are also deleted. +// +// Other Google Compute Engine resources that might be in use by the +// cluster +// (e.g. load balancer resources) will not be deleted if they weren't +// present +// at the initial create time. +func (r *ProjectsLocationsClustersService) Delete(name string) *ProjectsLocationsClustersDeleteCall { + c := &ProjectsLocationsClustersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// ClusterId sets the optional parameter "clusterId": The name of the +// cluster to delete. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersDeleteCall) ClusterId(clusterId string) *ProjectsLocationsClustersDeleteCall { + c.urlParams_.Set("clusterId", clusterId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use name instead. +func (c *ProjectsLocationsClustersDeleteCall) ProjectId(projectId string) *ProjectsLocationsClustersDeleteCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersDeleteCall) Zone(zone string) *ProjectsLocationsClustersDeleteCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersDeleteCall) Context(ctx context.Context) *ProjectsLocationsClustersDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + // "httpMethod": "DELETE", + // "id": "container.projects.locations.clusters.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to delete.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster) of the cluster to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.get": + +type ProjectsLocationsClustersGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the details of a specific cluster. +func (r *ProjectsLocationsClustersService) Get(name string) *ProjectsLocationsClustersGetCall { + c := &ProjectsLocationsClustersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// ClusterId sets the optional parameter "clusterId": The name of the +// cluster to retrieve. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersGetCall) ClusterId(clusterId string) *ProjectsLocationsClustersGetCall { + c.urlParams_.Set("clusterId", clusterId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use name instead. +func (c *ProjectsLocationsClustersGetCall) ProjectId(projectId string) *ProjectsLocationsClustersGetCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersGetCall) Zone(zone string) *ProjectsLocationsClustersGetCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsClustersGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersGetCall) Context(ctx context.Context) *ProjectsLocationsClustersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.get" call. +// Exactly one of *Cluster or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Cluster.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsLocationsClustersGetCall) Do(opts ...googleapi.CallOption) (*Cluster, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Cluster{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the details of a specific cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + // "httpMethod": "GET", + // "id": "container.projects.locations.clusters.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to retrieve.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster) of the cluster to retrieve.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Cluster" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.list": + +type ProjectsLocationsClustersListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all clusters owned by a project in either the specified +// zone or all +// zones. +func (r *ProjectsLocationsClustersService) List(parent string) *ProjectsLocationsClustersListCall { + c := &ProjectsLocationsClustersListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use parent instead. +func (c *ProjectsLocationsClustersListCall) ProjectId(projectId string) *ProjectsLocationsClustersListCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the cluster +// resides, or "-" for all zones. +// This field is deprecated, use parent instead. +func (c *ProjectsLocationsClustersListCall) Zone(zone string) *ProjectsLocationsClustersListCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersListCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsClustersListCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersListCall) Context(ctx context.Context) *ProjectsLocationsClustersListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.list" call. +// Exactly one of *ListClustersResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListClustersResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersListCall) Do(opts ...googleapi.CallOption) (*ListClustersResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListClustersResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters", + // "httpMethod": "GET", + // "id": "container.projects.locations.clusters.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project and location) where the clusters will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides, or \"-\" for all zones.\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/clusters", + // "response": { + // "$ref": "ListClustersResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.setLegacyAbac": + +type ProjectsLocationsClustersSetLegacyAbacCall struct { + s *Service + name string + setlegacyabacrequest *SetLegacyAbacRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetLegacyAbac: Enables or disables the ABAC authorization mechanism +// on a cluster. +func (r *ProjectsLocationsClustersService) SetLegacyAbac(name string, setlegacyabacrequest *SetLegacyAbacRequest) *ProjectsLocationsClustersSetLegacyAbacCall { + c := &ProjectsLocationsClustersSetLegacyAbacCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.setlegacyabacrequest = setlegacyabacrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersSetLegacyAbacCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersSetLegacyAbacCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersSetLegacyAbacCall) Context(ctx context.Context) *ProjectsLocationsClustersSetLegacyAbacCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersSetLegacyAbacCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersSetLegacyAbacCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setlegacyabacrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:setLegacyAbac") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.setLegacyAbac" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersSetLegacyAbacCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Enables or disables the ABAC authorization mechanism on a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setLegacyAbac", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.setLegacyAbac", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster id) of the cluster to set legacy abac.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:setLegacyAbac", + // "request": { + // "$ref": "SetLegacyAbacRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.setMasterAuth": + +type ProjectsLocationsClustersSetMasterAuthCall struct { + s *Service + name string + setmasterauthrequest *SetMasterAuthRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetMasterAuth: Used to set master auth materials. Currently supports +// :- +// Changing the admin password of a specific cluster. +// This can be either via password generation or explicitly set. +// Modify basic_auth.csv and reset the K8S API server. +func (r *ProjectsLocationsClustersService) SetMasterAuth(name string, setmasterauthrequest *SetMasterAuthRequest) *ProjectsLocationsClustersSetMasterAuthCall { + c := &ProjectsLocationsClustersSetMasterAuthCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.setmasterauthrequest = setmasterauthrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersSetMasterAuthCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersSetMasterAuthCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersSetMasterAuthCall) Context(ctx context.Context) *ProjectsLocationsClustersSetMasterAuthCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersSetMasterAuthCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setmasterauthrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:setMasterAuth") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.setMasterAuth" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersSetMasterAuthCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set.\nModify basic_auth.csv and reset the K8S API server.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setMasterAuth", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.setMasterAuth", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster) of the cluster to set auth.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:setMasterAuth", + // "request": { + // "$ref": "SetMasterAuthRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.setNetworkPolicy": + +type ProjectsLocationsClustersSetNetworkPolicyCall struct { + s *Service + name string + setnetworkpolicyrequest *SetNetworkPolicyRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetNetworkPolicy: Enables/Disables Network Policy for a cluster. +func (r *ProjectsLocationsClustersService) SetNetworkPolicy(name string, setnetworkpolicyrequest *SetNetworkPolicyRequest) *ProjectsLocationsClustersSetNetworkPolicyCall { + c := &ProjectsLocationsClustersSetNetworkPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.setnetworkpolicyrequest = setnetworkpolicyrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersSetNetworkPolicyCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersSetNetworkPolicyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersSetNetworkPolicyCall) Context(ctx context.Context) *ProjectsLocationsClustersSetNetworkPolicyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersSetNetworkPolicyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setnetworkpolicyrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:setNetworkPolicy") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.setNetworkPolicy" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersSetNetworkPolicyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Enables/Disables Network Policy for a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setNetworkPolicy", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.setNetworkPolicy", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster id) of the cluster to set networking policy.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:setNetworkPolicy", + // "request": { + // "$ref": "SetNetworkPolicyRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.setResourceLabels": + +type ProjectsLocationsClustersSetResourceLabelsCall struct { + s *Service + name string + setlabelsrequest *SetLabelsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetResourceLabels: Sets labels on a cluster. +func (r *ProjectsLocationsClustersService) SetResourceLabels(name string, setlabelsrequest *SetLabelsRequest) *ProjectsLocationsClustersSetResourceLabelsCall { + c := &ProjectsLocationsClustersSetResourceLabelsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.setlabelsrequest = setlabelsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersSetResourceLabelsCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersSetResourceLabelsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersSetResourceLabelsCall) Context(ctx context.Context) *ProjectsLocationsClustersSetResourceLabelsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersSetResourceLabelsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersSetResourceLabelsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setlabelsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:setResourceLabels") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.setResourceLabels" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersSetResourceLabelsCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Sets labels on a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:setResourceLabels", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.setResourceLabels", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster id) of the cluster to set labels.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:setResourceLabels", + // "request": { + // "$ref": "SetLabelsRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.startIpRotation": + +type ProjectsLocationsClustersStartIpRotationCall struct { + s *Service + name string + startiprotationrequest *StartIPRotationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// StartIpRotation: Start master IP rotation. +func (r *ProjectsLocationsClustersService) StartIpRotation(name string, startiprotationrequest *StartIPRotationRequest) *ProjectsLocationsClustersStartIpRotationCall { + c := &ProjectsLocationsClustersStartIpRotationCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.startiprotationrequest = startiprotationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersStartIpRotationCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersStartIpRotationCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersStartIpRotationCall) Context(ctx context.Context) *ProjectsLocationsClustersStartIpRotationCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersStartIpRotationCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.startiprotationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:startIpRotation") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.startIpRotation" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersStartIpRotationCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Start master IP rotation.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}:startIpRotation", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.startIpRotation", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster id) of the cluster to start IP rotation.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:startIpRotation", + // "request": { + // "$ref": "StartIPRotationRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.update": + +type ProjectsLocationsClustersUpdateCall struct { + s *Service + name string + updateclusterrequest *UpdateClusterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Updates the settings of a specific cluster. +func (r *ProjectsLocationsClustersService) Update(name string, updateclusterrequest *UpdateClusterRequest) *ProjectsLocationsClustersUpdateCall { + c := &ProjectsLocationsClustersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.updateclusterrequest = updateclusterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersUpdateCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersUpdateCall) Context(ctx context.Context) *ProjectsLocationsClustersUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateclusterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PUT", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.update" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the settings of a specific cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}", + // "httpMethod": "PUT", + // "id": "container.projects.locations.clusters.update", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster) of the cluster to update.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "request": { + // "$ref": "UpdateClusterRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.create": + +type ProjectsLocationsClustersNodePoolsCreateCall struct { + s *Service + parent string + createnodepoolrequest *CreateNodePoolRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a node pool for a cluster. +func (r *ProjectsLocationsClustersNodePoolsService) Create(parent string, createnodepoolrequest *CreateNodePoolRequest) *ProjectsLocationsClustersNodePoolsCreateCall { + c := &ProjectsLocationsClustersNodePoolsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.createnodepoolrequest = createnodepoolrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsCreateCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.createnodepoolrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/nodePools") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a node pool for a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.nodePools.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project, location, cluster id) where the node pool will be created.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/nodePools", + // "request": { + // "$ref": "CreateNodePoolRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.delete": + +type ProjectsLocationsClustersNodePoolsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a node pool from a cluster. +func (r *ProjectsLocationsClustersNodePoolsService) Delete(name string) *ProjectsLocationsClustersNodePoolsDeleteCall { + c := &ProjectsLocationsClustersNodePoolsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// ClusterId sets the optional parameter "clusterId": The name of the +// cluster. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) ClusterId(clusterId string) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.urlParams_.Set("clusterId", clusterId) + return c +} + +// NodePoolId sets the optional parameter "nodePoolId": The name of the +// node pool to delete. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) NodePoolId(nodePoolId string) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.urlParams_.Set("nodePoolId", nodePoolId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://developers.google.com/console/help/new/#projec +// tnumber). +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) ProjectId(projectId string) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) Zone(zone string) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a node pool from a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}", + // "httpMethod": "DELETE", + // "id": "container.projects.locations.clusters.nodePools.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node pool to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool to delete.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.get": + +type ProjectsLocationsClustersNodePoolsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Retrieves the node pool requested. +func (r *ProjectsLocationsClustersNodePoolsService) Get(name string) *ProjectsLocationsClustersNodePoolsGetCall { + c := &ProjectsLocationsClustersNodePoolsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// ClusterId sets the optional parameter "clusterId": The name of the +// cluster. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsGetCall) ClusterId(clusterId string) *ProjectsLocationsClustersNodePoolsGetCall { + c.urlParams_.Set("clusterId", clusterId) + return c +} + +// NodePoolId sets the optional parameter "nodePoolId": The name of the +// node pool. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsGetCall) NodePoolId(nodePoolId string) *ProjectsLocationsClustersNodePoolsGetCall { + c.urlParams_.Set("nodePoolId", nodePoolId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://developers.google.com/console/help/new/#projec +// tnumber). +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsGetCall) ProjectId(projectId string) *ProjectsLocationsClustersNodePoolsGetCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsClustersNodePoolsGetCall) Zone(zone string) *ProjectsLocationsClustersNodePoolsGetCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsClustersNodePoolsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersNodePoolsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsGetCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.get" call. +// Exactly one of *NodePool or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *NodePool.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsGetCall) Do(opts ...googleapi.CallOption) (*NodePool, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NodePool{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves the node pool requested.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}", + // "httpMethod": "GET", + // "id": "container.projects.locations.clusters.nodePools.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node pool to get.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "NodePool" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.list": + +type ProjectsLocationsClustersNodePoolsListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists the node pools for a cluster. +func (r *ProjectsLocationsClustersNodePoolsService) List(parent string) *ProjectsLocationsClustersNodePoolsListCall { + c := &ProjectsLocationsClustersNodePoolsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// ClusterId sets the optional parameter "clusterId": The name of the +// cluster. +// This field is deprecated, use parent instead. +func (c *ProjectsLocationsClustersNodePoolsListCall) ClusterId(clusterId string) *ProjectsLocationsClustersNodePoolsListCall { + c.urlParams_.Set("clusterId", clusterId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://developers.google.com/console/help/new/#projec +// tnumber). +// This field is deprecated, use parent instead. +func (c *ProjectsLocationsClustersNodePoolsListCall) ProjectId(projectId string) *ProjectsLocationsClustersNodePoolsListCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use parent instead. +func (c *ProjectsLocationsClustersNodePoolsListCall) Zone(zone string) *ProjectsLocationsClustersNodePoolsListCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsClustersNodePoolsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsClustersNodePoolsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsListCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/nodePools") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.list" call. +// Exactly one of *ListNodePoolsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListNodePoolsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsListCall) Do(opts ...googleapi.CallOption) (*ListNodePoolsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListNodePoolsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists the node pools for a cluster.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools", + // "httpMethod": "GET", + // "id": "container.projects.locations.clusters.nodePools.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "The parent (project, location, cluster id) where the node pools will be listed.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/nodePools", + // "response": { + // "$ref": "ListNodePoolsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.rollback": + +type ProjectsLocationsClustersNodePoolsRollbackCall struct { + s *Service + name string + rollbacknodepoolupgraderequest *RollbackNodePoolUpgradeRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Rollback: Roll back the previously Aborted or Failed NodePool +// upgrade. +// This will be an no-op if the last upgrade successfully completed. +func (r *ProjectsLocationsClustersNodePoolsService) Rollback(name string, rollbacknodepoolupgraderequest *RollbackNodePoolUpgradeRequest) *ProjectsLocationsClustersNodePoolsRollbackCall { + c := &ProjectsLocationsClustersNodePoolsRollbackCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.rollbacknodepoolupgraderequest = rollbacknodepoolupgraderequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsRollbackCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsRollbackCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsRollbackCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsRollbackCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsRollbackCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.rollbacknodepoolupgraderequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:rollback") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.rollback" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsRollbackCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Roll back the previously Aborted or Failed NodePool upgrade.\nThis will be an no-op if the last upgrade successfully completed.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}:rollback", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.nodePools.rollback", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node poll to\nrollback upgrade.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:rollback", + // "request": { + // "$ref": "RollbackNodePoolUpgradeRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.clusters.nodePools.setManagement": + +type ProjectsLocationsClustersNodePoolsSetManagementCall struct { + s *Service + name string + setnodepoolmanagementrequest *SetNodePoolManagementRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetManagement: Sets the NodeManagement options for a node pool. +func (r *ProjectsLocationsClustersNodePoolsService) SetManagement(name string, setnodepoolmanagementrequest *SetNodePoolManagementRequest) *ProjectsLocationsClustersNodePoolsSetManagementCall { + c := &ProjectsLocationsClustersNodePoolsSetManagementCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.setnodepoolmanagementrequest = setnodepoolmanagementrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) Fields(s ...googleapi.Field) *ProjectsLocationsClustersNodePoolsSetManagementCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) Context(ctx context.Context) *ProjectsLocationsClustersNodePoolsSetManagementCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setnodepoolmanagementrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:setManagement") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.clusters.nodePools.setManagement" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsClustersNodePoolsSetManagementCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Sets the NodeManagement options for a node pool.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/clusters/{clustersId}/nodePools/{nodePoolsId}:setManagement", + // "httpMethod": "POST", + // "id": "container.projects.locations.clusters.nodePools.setManagement", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node pool to set\nmanagement properties. Specified in the format\n'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/clusters/[^/]+/nodePools/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:setManagement", + // "request": { + // "$ref": "SetNodePoolManagementRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.operations.cancel": + +type ProjectsLocationsOperationsCancelCall struct { + s *Service + name string + canceloperationrequest *CancelOperationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Cancels the specified operation. +func (r *ProjectsLocationsOperationsService) Cancel(name string, canceloperationrequest *CancelOperationRequest) *ProjectsLocationsOperationsCancelCall { + c := &ProjectsLocationsOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.canceloperationrequest = canceloperationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsOperationsCancelCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsOperationsCancelCall) Context(ctx context.Context) *ProjectsLocationsOperationsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsOperationsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsOperationsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceloperationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.operations.cancel" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsLocationsOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Cancels the specified operation.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}:cancel", + // "httpMethod": "POST", + // "id": "container.projects.locations.operations.cancel", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, operation id) of the operation to cancel.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}:cancel", + // "request": { + // "$ref": "CancelOperationRequest" + // }, + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.operations.get": + +type ProjectsLocationsOperationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the specified operation. +func (r *ProjectsLocationsOperationsService) Get(name string) *ProjectsLocationsOperationsGetCall { + c := &ProjectsLocationsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// OperationId sets the optional parameter "operationId": The +// server-assigned `name` of the operation. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsOperationsGetCall) OperationId(operationId string) *ProjectsLocationsOperationsGetCall { + c.urlParams_.Set("operationId", operationId) + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use name instead. +func (c *ProjectsLocationsOperationsGetCall) ProjectId(projectId string) *ProjectsLocationsOperationsGetCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine +// [zone](/compute/docs/zones#available) in which the +// cluster +// resides. +// This field is deprecated, use name instead. +func (c *ProjectsLocationsOperationsGetCall) Zone(zone string) *ProjectsLocationsOperationsGetCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsOperationsGetCall) Context(ctx context.Context) *ProjectsLocationsOperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsOperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.operations.get" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the specified operation.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations/{operationsId}", + // "httpMethod": "GET", + // "id": "container.projects.locations.operations.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, operation id) of the operation to get.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "operationId": { + // "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.locations.operations.list": + +type ProjectsLocationsOperationsListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all operations in a project in a specific zone or all +// zones. +func (r *ProjectsLocationsOperationsService) List(parent string) *ProjectsLocationsOperationsListCall { + c := &ProjectsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// ProjectId sets the optional parameter "projectId": The Google +// Developers Console [project ID or +// project +// number](https://support.google.com/cloud/answer/6158840). +// This +// field is deprecated, use parent instead. +func (c *ProjectsLocationsOperationsListCall) ProjectId(projectId string) *ProjectsLocationsOperationsListCall { + c.urlParams_.Set("projectId", projectId) + return c +} + +// Zone sets the optional parameter "zone": The name of the Google +// Compute Engine [zone](/compute/docs/zones#available) +// to return operations for, or `-` for all zones. +// This field is deprecated, use parent instead. +func (c *ProjectsLocationsOperationsListCall) Zone(zone string) *ProjectsLocationsOperationsListCall { + c.urlParams_.Set("zone", zone) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsOperationsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsOperationsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsOperationsListCall) Context(ctx context.Context) *ProjectsLocationsOperationsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsOperationsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/operations") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.locations.operations.list" call. +// Exactly one of *ListOperationsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListOperationsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListOperationsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all operations in a project in a specific zone or all zones.", + // "flatPath": "v1beta1/projects/{projectsId}/locations/{locationsId}/operations", + // "httpMethod": "GET", + // "id": "container.projects.locations.operations.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project and location) where the operations will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.\nThis field is deprecated, use parent instead.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/operations", + // "response": { + // "$ref": "ListOperationsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.getServerconfig": + +type ProjectsZonesGetServerconfigCall struct { + s *Service + projectId string + zone string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// GetServerconfig: Returns configuration info about the Container +// Engine service. +func (r *ProjectsZonesService) GetServerconfig(projectId string, zone string) *ProjectsZonesGetServerconfigCall { + c := &ProjectsZonesGetServerconfigCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + return c +} + +// Name sets the optional parameter "name": The name (project and +// location) of the server config to get +// Specified in the format 'projects/*/locations/*'. +func (c *ProjectsZonesGetServerconfigCall) Name(name string) *ProjectsZonesGetServerconfigCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesGetServerconfigCall) Fields(s ...googleapi.Field) *ProjectsZonesGetServerconfigCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesGetServerconfigCall) IfNoneMatch(entityTag string) *ProjectsZonesGetServerconfigCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesGetServerconfigCall) Context(ctx context.Context) *ProjectsZonesGetServerconfigCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesGetServerconfigCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesGetServerconfigCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/serverconfig") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.getServerconfig" call. +// Exactly one of *ServerConfig or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *ServerConfig.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesGetServerconfigCall) Do(opts ...googleapi.CallOption) (*ServerConfig, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ServerConfig{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns configuration info about the Container Engine service.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/serverconfig", + // "httpMethod": "GET", + // "id": "container.projects.zones.getServerconfig", + // "parameterOrder": [ + // "projectId", + // "zone" + // ], + // "parameters": { + // "name": { + // "description": "The name (project and location) of the server config to get\nSpecified in the format 'projects/*/locations/*'.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/serverconfig", + // "response": { + // "$ref": "ServerConfig" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.completeIpRotation": + +type ProjectsZonesClustersCompleteIpRotationCall struct { + s *Service + projectId string + zone string + clusterId string + completeiprotationrequest *CompleteIPRotationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// CompleteIpRotation: Completes master IP rotation. +func (r *ProjectsZonesClustersService) CompleteIpRotation(projectId string, zone string, clusterId string, completeiprotationrequest *CompleteIPRotationRequest) *ProjectsZonesClustersCompleteIpRotationCall { + c := &ProjectsZonesClustersCompleteIpRotationCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.completeiprotationrequest = completeiprotationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersCompleteIpRotationCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersCompleteIpRotationCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersCompleteIpRotationCall) Context(ctx context.Context) *ProjectsZonesClustersCompleteIpRotationCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersCompleteIpRotationCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersCompleteIpRotationCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.completeiprotationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.completeIpRotation" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersCompleteIpRotationCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Completes master IP rotation.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.completeIpRotation", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:completeIpRotation", + // "request": { + // "$ref": "CompleteIPRotationRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.create": + +type ProjectsZonesClustersCreateCall struct { + s *Service + projectId string + zone string + createclusterrequest *CreateClusterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a cluster, consisting of the specified number and +// type of Google +// Compute Engine instances. +// +// By default, the cluster is created in the project's +// [default +// network](/compute/docs/networks-and-firewalls#networks). +// +// One firewall is added for the cluster. After cluster creation, +// the cluster creates routes for each node to allow the containers +// on that node to communicate with all other instances in +// the +// cluster. +// +// Finally, an entry is added to the project's global metadata +// indicating +// which CIDR range is being used by the cluster. +func (r *ProjectsZonesClustersService) Create(projectId string, zone string, createclusterrequest *CreateClusterRequest) *ProjectsZonesClustersCreateCall { + c := &ProjectsZonesClustersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.createclusterrequest = createclusterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersCreateCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersCreateCall) Context(ctx context.Context) *ProjectsZonesClustersCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.createclusterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a cluster, consisting of the specified number and type of Google\nCompute Engine instances.\n\nBy default, the cluster is created in the project's\n[default network](/compute/docs/networks-and-firewalls#networks).\n\nOne firewall is added for the cluster. After cluster creation,\nthe cluster creates routes for each node to allow the containers\non that node to communicate with all other instances in the\ncluster.\n\nFinally, an entry is added to the project's global metadata indicating\nwhich CIDR range is being used by the cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.create", + // "parameterOrder": [ + // "projectId", + // "zone" + // ], + // "parameters": { + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + // "request": { + // "$ref": "CreateClusterRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.delete": + +type ProjectsZonesClustersDeleteCall struct { + s *Service + projectId string + zone string + clusterId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes the cluster, including the Kubernetes endpoint and +// all worker +// nodes. +// +// Firewalls and routes that were configured during cluster creation +// are also deleted. +// +// Other Google Compute Engine resources that might be in use by the +// cluster +// (e.g. load balancer resources) will not be deleted if they weren't +// present +// at the initial create time. +func (r *ProjectsZonesClustersService) Delete(projectId string, zone string, clusterId string) *ProjectsZonesClustersDeleteCall { + c := &ProjectsZonesClustersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + return c +} + +// Name sets the optional parameter "name": The name (project, location, +// cluster) of the cluster to delete. +// Specified in the format 'projects/*/locations/*/clusters/*'. +func (c *ProjectsZonesClustersDeleteCall) Name(name string) *ProjectsZonesClustersDeleteCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersDeleteCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersDeleteCall) Context(ctx context.Context) *ProjectsZonesClustersDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the cluster, including the Kubernetes endpoint and all worker\nnodes.\n\nFirewalls and routes that were configured during cluster creation\nare also deleted.\n\nOther Google Compute Engine resources that might be in use by the cluster\n(e.g. load balancer resources) will not be deleted if they weren't present\nat the initial create time.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "httpMethod": "DELETE", + // "id": "container.projects.zones.clusters.delete", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to delete.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster) of the cluster to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.get": + +type ProjectsZonesClustersGetCall struct { + s *Service + projectId string + zone string + clusterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the details of a specific cluster. +func (r *ProjectsZonesClustersService) Get(projectId string, zone string, clusterId string) *ProjectsZonesClustersGetCall { + c := &ProjectsZonesClustersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + return c +} + +// Name sets the optional parameter "name": The name (project, location, +// cluster) of the cluster to retrieve. +// Specified in the format 'projects/*/locations/*/clusters/*'. +func (c *ProjectsZonesClustersGetCall) Name(name string) *ProjectsZonesClustersGetCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersGetCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesClustersGetCall) IfNoneMatch(entityTag string) *ProjectsZonesClustersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersGetCall) Context(ctx context.Context) *ProjectsZonesClustersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.get" call. +// Exactly one of *Cluster or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Cluster.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsZonesClustersGetCall) Do(opts ...googleapi.CallOption) (*Cluster, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Cluster{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the details of a specific cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "httpMethod": "GET", + // "id": "container.projects.zones.clusters.get", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to retrieve.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster) of the cluster to retrieve.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "response": { + // "$ref": "Cluster" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.legacyAbac": + +type ProjectsZonesClustersLegacyAbacCall struct { + s *Service + projectId string + zone string + clusterId string + setlegacyabacrequest *SetLegacyAbacRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// LegacyAbac: Enables or disables the ABAC authorization mechanism on a +// cluster. +func (r *ProjectsZonesClustersService) LegacyAbac(projectId string, zone string, clusterId string, setlegacyabacrequest *SetLegacyAbacRequest) *ProjectsZonesClustersLegacyAbacCall { + c := &ProjectsZonesClustersLegacyAbacCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.setlegacyabacrequest = setlegacyabacrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersLegacyAbacCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersLegacyAbacCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersLegacyAbacCall) Context(ctx context.Context) *ProjectsZonesClustersLegacyAbacCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersLegacyAbacCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersLegacyAbacCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setlegacyabacrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.legacyAbac" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersLegacyAbacCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Enables or disables the ABAC authorization mechanism on a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.legacyAbac", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/legacyAbac", + // "request": { + // "$ref": "SetLegacyAbacRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.list": + +type ProjectsZonesClustersListCall struct { + s *Service + projectId string + zone string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all clusters owned by a project in either the specified +// zone or all +// zones. +func (r *ProjectsZonesClustersService) List(projectId string, zone string) *ProjectsZonesClustersListCall { + c := &ProjectsZonesClustersListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + return c +} + +// Parent sets the optional parameter "parent": The parent (project and +// location) where the clusters will be listed. +// Specified in the format 'projects/*/locations/*'. +// Location "-" matches all zones and all regions. +func (c *ProjectsZonesClustersListCall) Parent(parent string) *ProjectsZonesClustersListCall { + c.urlParams_.Set("parent", parent) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersListCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesClustersListCall) IfNoneMatch(entityTag string) *ProjectsZonesClustersListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersListCall) Context(ctx context.Context) *ProjectsZonesClustersListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.list" call. +// Exactly one of *ListClustersResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListClustersResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsZonesClustersListCall) Do(opts ...googleapi.CallOption) (*ListClustersResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListClustersResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all clusters owned by a project in either the specified zone or all\nzones.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + // "httpMethod": "GET", + // "id": "container.projects.zones.clusters.list", + // "parameterOrder": [ + // "projectId", + // "zone" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project and location) where the clusters will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides, or \"-\" for all zones.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters", + // "response": { + // "$ref": "ListClustersResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.resourceLabels": + +type ProjectsZonesClustersResourceLabelsCall struct { + s *Service + projectId string + zone string + clusterId string + setlabelsrequest *SetLabelsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// ResourceLabels: Sets labels on a cluster. +func (r *ProjectsZonesClustersService) ResourceLabels(projectId string, zone string, clusterId string, setlabelsrequest *SetLabelsRequest) *ProjectsZonesClustersResourceLabelsCall { + c := &ProjectsZonesClustersResourceLabelsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.setlabelsrequest = setlabelsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersResourceLabelsCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersResourceLabelsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersResourceLabelsCall) Context(ctx context.Context) *ProjectsZonesClustersResourceLabelsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersResourceLabelsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersResourceLabelsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setlabelsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.resourceLabels" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersResourceLabelsCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Sets labels on a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.resourceLabels", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/resourceLabels", + // "request": { + // "$ref": "SetLabelsRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.setMasterAuth": + +type ProjectsZonesClustersSetMasterAuthCall struct { + s *Service + projectId string + zone string + clusterId string + setmasterauthrequest *SetMasterAuthRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetMasterAuth: Used to set master auth materials. Currently supports +// :- +// Changing the admin password of a specific cluster. +// This can be either via password generation or explicitly set. +// Modify basic_auth.csv and reset the K8S API server. +func (r *ProjectsZonesClustersService) SetMasterAuth(projectId string, zone string, clusterId string, setmasterauthrequest *SetMasterAuthRequest) *ProjectsZonesClustersSetMasterAuthCall { + c := &ProjectsZonesClustersSetMasterAuthCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.setmasterauthrequest = setmasterauthrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersSetMasterAuthCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersSetMasterAuthCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersSetMasterAuthCall) Context(ctx context.Context) *ProjectsZonesClustersSetMasterAuthCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersSetMasterAuthCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersSetMasterAuthCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setmasterauthrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.setMasterAuth" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersSetMasterAuthCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Used to set master auth materials. Currently supports :-\nChanging the admin password of a specific cluster.\nThis can be either via password generation or explicitly set.\nModify basic_auth.csv and reset the K8S API server.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.setMasterAuth", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setMasterAuth", + // "request": { + // "$ref": "SetMasterAuthRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.setNetworkPolicy": + +type ProjectsZonesClustersSetNetworkPolicyCall struct { + s *Service + projectId string + zone string + clusterId string + setnetworkpolicyrequest *SetNetworkPolicyRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetNetworkPolicy: Enables/Disables Network Policy for a cluster. +func (r *ProjectsZonesClustersService) SetNetworkPolicy(projectId string, zone string, clusterId string, setnetworkpolicyrequest *SetNetworkPolicyRequest) *ProjectsZonesClustersSetNetworkPolicyCall { + c := &ProjectsZonesClustersSetNetworkPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.setnetworkpolicyrequest = setnetworkpolicyrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersSetNetworkPolicyCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersSetNetworkPolicyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersSetNetworkPolicyCall) Context(ctx context.Context) *ProjectsZonesClustersSetNetworkPolicyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersSetNetworkPolicyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersSetNetworkPolicyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setnetworkpolicyrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.setNetworkPolicy" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersSetNetworkPolicyCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Enables/Disables Network Policy for a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.setNetworkPolicy", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:setNetworkPolicy", + // "request": { + // "$ref": "SetNetworkPolicyRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.startIpRotation": + +type ProjectsZonesClustersStartIpRotationCall struct { + s *Service + projectId string + zone string + clusterId string + startiprotationrequest *StartIPRotationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// StartIpRotation: Start master IP rotation. +func (r *ProjectsZonesClustersService) StartIpRotation(projectId string, zone string, clusterId string, startiprotationrequest *StartIPRotationRequest) *ProjectsZonesClustersStartIpRotationCall { + c := &ProjectsZonesClustersStartIpRotationCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.startiprotationrequest = startiprotationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersStartIpRotationCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersStartIpRotationCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersStartIpRotationCall) Context(ctx context.Context) *ProjectsZonesClustersStartIpRotationCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersStartIpRotationCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersStartIpRotationCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.startiprotationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.startIpRotation" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersStartIpRotationCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Start master IP rotation.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.startIpRotation", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}:startIpRotation", + // "request": { + // "$ref": "StartIPRotationRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.update": + +type ProjectsZonesClustersUpdateCall struct { + s *Service + projectId string + zone string + clusterId string + updateclusterrequest *UpdateClusterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Updates the settings of a specific cluster. +func (r *ProjectsZonesClustersService) Update(projectId string, zone string, clusterId string, updateclusterrequest *UpdateClusterRequest) *ProjectsZonesClustersUpdateCall { + c := &ProjectsZonesClustersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.updateclusterrequest = updateclusterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersUpdateCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersUpdateCall) Context(ctx context.Context) *ProjectsZonesClustersUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.updateclusterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PUT", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.update" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the settings of a specific cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "httpMethod": "PUT", + // "id": "container.projects.zones.clusters.update", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to upgrade.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}", + // "request": { + // "$ref": "UpdateClusterRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.create": + +type ProjectsZonesClustersNodePoolsCreateCall struct { + s *Service + projectId string + zone string + clusterId string + createnodepoolrequest *CreateNodePoolRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a node pool for a cluster. +func (r *ProjectsZonesClustersNodePoolsService) Create(projectId string, zone string, clusterId string, createnodepoolrequest *CreateNodePoolRequest) *ProjectsZonesClustersNodePoolsCreateCall { + c := &ProjectsZonesClustersNodePoolsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.createnodepoolrequest = createnodepoolrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsCreateCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsCreateCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.createnodepoolrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a node pool for a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.nodePools.create", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + // "request": { + // "$ref": "CreateNodePoolRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.delete": + +type ProjectsZonesClustersNodePoolsDeleteCall struct { + s *Service + projectId string + zone string + clusterId string + nodePoolId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a node pool from a cluster. +func (r *ProjectsZonesClustersNodePoolsService) Delete(projectId string, zone string, clusterId string, nodePoolId string) *ProjectsZonesClustersNodePoolsDeleteCall { + c := &ProjectsZonesClustersNodePoolsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.nodePoolId = nodePoolId + return c +} + +// Name sets the optional parameter "name": The name (project, location, +// cluster, node pool id) of the node pool to delete. +// Specified in the format +// 'projects/*/locations/*/clusters/*/nodePools/*'. +func (c *ProjectsZonesClustersNodePoolsDeleteCall) Name(name string) *ProjectsZonesClustersNodePoolsDeleteCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsDeleteCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsDeleteCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + "nodePoolId": c.nodePoolId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a node pool from a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + // "httpMethod": "DELETE", + // "id": "container.projects.zones.clusters.nodePools.delete", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId", + // "nodePoolId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node pool to delete.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "query", + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool to delete.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.get": + +type ProjectsZonesClustersNodePoolsGetCall struct { + s *Service + projectId string + zone string + clusterId string + nodePoolId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Retrieves the node pool requested. +func (r *ProjectsZonesClustersNodePoolsService) Get(projectId string, zone string, clusterId string, nodePoolId string) *ProjectsZonesClustersNodePoolsGetCall { + c := &ProjectsZonesClustersNodePoolsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.nodePoolId = nodePoolId + return c +} + +// Name sets the optional parameter "name": The name (project, location, +// cluster, node pool id) of the node pool to get. +// Specified in the format +// 'projects/*/locations/*/clusters/*/nodePools/*'. +func (c *ProjectsZonesClustersNodePoolsGetCall) Name(name string) *ProjectsZonesClustersNodePoolsGetCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsGetCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesClustersNodePoolsGetCall) IfNoneMatch(entityTag string) *ProjectsZonesClustersNodePoolsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsGetCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + "nodePoolId": c.nodePoolId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.get" call. +// Exactly one of *NodePool or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *NodePool.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsGetCall) Do(opts ...googleapi.CallOption) (*NodePool, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &NodePool{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves the node pool requested.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + // "httpMethod": "GET", + // "id": "container.projects.zones.clusters.nodePools.get", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId", + // "nodePoolId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "name": { + // "description": "The name (project, location, cluster, node pool id) of the node pool to get.\nSpecified in the format 'projects/*/locations/*/clusters/*/nodePools/*'.", + // "location": "query", + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}", + // "response": { + // "$ref": "NodePool" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.list": + +type ProjectsZonesClustersNodePoolsListCall struct { + s *Service + projectId string + zone string + clusterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists the node pools for a cluster. +func (r *ProjectsZonesClustersNodePoolsService) List(projectId string, zone string, clusterId string) *ProjectsZonesClustersNodePoolsListCall { + c := &ProjectsZonesClustersNodePoolsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + return c +} + +// Parent sets the optional parameter "parent": The parent (project, +// location, cluster id) where the node pools will be listed. +// Specified in the format 'projects/*/locations/*/clusters/*'. +func (c *ProjectsZonesClustersNodePoolsListCall) Parent(parent string) *ProjectsZonesClustersNodePoolsListCall { + c.urlParams_.Set("parent", parent) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsListCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesClustersNodePoolsListCall) IfNoneMatch(entityTag string) *ProjectsZonesClustersNodePoolsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsListCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.list" call. +// Exactly one of *ListNodePoolsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListNodePoolsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsListCall) Do(opts ...googleapi.CallOption) (*ListNodePoolsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListNodePoolsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists the node pools for a cluster.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + // "httpMethod": "GET", + // "id": "container.projects.zones.clusters.nodePools.list", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "parent": { + // "description": "The parent (project, location, cluster id) where the node pools will be listed.\nSpecified in the format 'projects/*/locations/*/clusters/*'.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://developers.google.com/console/help/new/#projectnumber).\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools", + // "response": { + // "$ref": "ListNodePoolsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.rollback": + +type ProjectsZonesClustersNodePoolsRollbackCall struct { + s *Service + projectId string + zone string + clusterId string + nodePoolId string + rollbacknodepoolupgraderequest *RollbackNodePoolUpgradeRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Rollback: Roll back the previously Aborted or Failed NodePool +// upgrade. +// This will be an no-op if the last upgrade successfully completed. +func (r *ProjectsZonesClustersNodePoolsService) Rollback(projectId string, zone string, clusterId string, nodePoolId string, rollbacknodepoolupgraderequest *RollbackNodePoolUpgradeRequest) *ProjectsZonesClustersNodePoolsRollbackCall { + c := &ProjectsZonesClustersNodePoolsRollbackCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.nodePoolId = nodePoolId + c.rollbacknodepoolupgraderequest = rollbacknodepoolupgraderequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsRollbackCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsRollbackCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsRollbackCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsRollbackCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsRollbackCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsRollbackCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.rollbacknodepoolupgraderequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + "nodePoolId": c.nodePoolId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.rollback" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsRollbackCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Roll back the previously Aborted or Failed NodePool upgrade.\nThis will be an no-op if the last upgrade successfully completed.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.nodePools.rollback", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId", + // "nodePoolId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to rollback.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool to rollback.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}:rollback", + // "request": { + // "$ref": "RollbackNodePoolUpgradeRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.clusters.nodePools.setManagement": + +type ProjectsZonesClustersNodePoolsSetManagementCall struct { + s *Service + projectId string + zone string + clusterId string + nodePoolId string + setnodepoolmanagementrequest *SetNodePoolManagementRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetManagement: Sets the NodeManagement options for a node pool. +func (r *ProjectsZonesClustersNodePoolsService) SetManagement(projectId string, zone string, clusterId string, nodePoolId string, setnodepoolmanagementrequest *SetNodePoolManagementRequest) *ProjectsZonesClustersNodePoolsSetManagementCall { + c := &ProjectsZonesClustersNodePoolsSetManagementCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.clusterId = clusterId + c.nodePoolId = nodePoolId + c.setnodepoolmanagementrequest = setnodepoolmanagementrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesClustersNodePoolsSetManagementCall) Fields(s ...googleapi.Field) *ProjectsZonesClustersNodePoolsSetManagementCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesClustersNodePoolsSetManagementCall) Context(ctx context.Context) *ProjectsZonesClustersNodePoolsSetManagementCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesClustersNodePoolsSetManagementCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesClustersNodePoolsSetManagementCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.setnodepoolmanagementrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "clusterId": c.clusterId, + "nodePoolId": c.nodePoolId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.clusters.nodePools.setManagement" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesClustersNodePoolsSetManagementCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Sets the NodeManagement options for a node pool.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + // "httpMethod": "POST", + // "id": "container.projects.zones.clusters.nodePools.setManagement", + // "parameterOrder": [ + // "projectId", + // "zone", + // "clusterId", + // "nodePoolId" + // ], + // "parameters": { + // "clusterId": { + // "description": "The name of the cluster to update.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "nodePoolId": { + // "description": "The name of the node pool to update.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/clusters/{clusterId}/nodePools/{nodePoolId}/setManagement", + // "request": { + // "$ref": "SetNodePoolManagementRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.operations.cancel": + +type ProjectsZonesOperationsCancelCall struct { + s *Service + projectId string + zone string + operationId string + canceloperationrequest *CancelOperationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Cancels the specified operation. +func (r *ProjectsZonesOperationsService) Cancel(projectId string, zone string, operationId string, canceloperationrequest *CancelOperationRequest) *ProjectsZonesOperationsCancelCall { + c := &ProjectsZonesOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.operationId = operationId + c.canceloperationrequest = canceloperationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesOperationsCancelCall) Fields(s ...googleapi.Field) *ProjectsZonesOperationsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesOperationsCancelCall) Context(ctx context.Context) *ProjectsZonesOperationsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesOperationsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesOperationsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceloperationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "operationId": c.operationId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.operations.cancel" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsZonesOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Cancels the specified operation.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", + // "httpMethod": "POST", + // "id": "container.projects.zones.operations.cancel", + // "parameterOrder": [ + // "projectId", + // "zone", + // "operationId" + // ], + // "parameters": { + // "operationId": { + // "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the operation resides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}:cancel", + // "request": { + // "$ref": "CancelOperationRequest" + // }, + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.operations.get": + +type ProjectsZonesOperationsGetCall struct { + s *Service + projectId string + zone string + operationId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the specified operation. +func (r *ProjectsZonesOperationsService) Get(projectId string, zone string, operationId string) *ProjectsZonesOperationsGetCall { + c := &ProjectsZonesOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + c.operationId = operationId + return c +} + +// Name sets the optional parameter "name": The name (project, location, +// operation id) of the operation to get. +// Specified in the format 'projects/*/locations/*/operations/*'. +func (c *ProjectsZonesOperationsGetCall) Name(name string) *ProjectsZonesOperationsGetCall { + c.urlParams_.Set("name", name) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsZonesOperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsZonesOperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesOperationsGetCall) Context(ctx context.Context) *ProjectsZonesOperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesOperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesOperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + "operationId": c.operationId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.operations.get" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsZonesOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the specified operation.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}", + // "httpMethod": "GET", + // "id": "container.projects.zones.operations.get", + // "parameterOrder": [ + // "projectId", + // "zone", + // "operationId" + // ], + // "parameters": { + // "name": { + // "description": "The name (project, location, operation id) of the operation to get.\nSpecified in the format 'projects/*/locations/*/operations/*'.", + // "location": "query", + // "type": "string" + // }, + // "operationId": { + // "description": "The server-assigned `name` of the operation.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine\n[zone](/compute/docs/zones#available) in which the cluster\nresides.\nThis field is deprecated, use name instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/operations/{operationId}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "container.projects.zones.operations.list": + +type ProjectsZonesOperationsListCall struct { + s *Service + projectId string + zone string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all operations in a project in a specific zone or all +// zones. +func (r *ProjectsZonesOperationsService) List(projectId string, zone string) *ProjectsZonesOperationsListCall { + c := &ProjectsZonesOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.zone = zone + return c +} + +// Parent sets the optional parameter "parent": The parent (project and +// location) where the operations will be listed. +// Specified in the format 'projects/*/locations/*'. +// Location "-" matches all zones and all regions. +func (c *ProjectsZonesOperationsListCall) Parent(parent string) *ProjectsZonesOperationsListCall { + c.urlParams_.Set("parent", parent) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsZonesOperationsListCall) Fields(s ...googleapi.Field) *ProjectsZonesOperationsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsZonesOperationsListCall) IfNoneMatch(entityTag string) *ProjectsZonesOperationsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsZonesOperationsListCall) Context(ctx context.Context) *ProjectsZonesOperationsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsZonesOperationsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsZonesOperationsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}/zones/{zone}/operations") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "zone": c.zone, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "container.projects.zones.operations.list" call. +// Exactly one of *ListOperationsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListOperationsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsZonesOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListOperationsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all operations in a project in a specific zone or all zones.", + // "flatPath": "v1beta1/projects/{projectId}/zones/{zone}/operations", + // "httpMethod": "GET", + // "id": "container.projects.zones.operations.list", + // "parameterOrder": [ + // "projectId", + // "zone" + // ], + // "parameters": { + // "parent": { + // "description": "The parent (project and location) where the operations will be listed.\nSpecified in the format 'projects/*/locations/*'.\nLocation \"-\" matches all zones and all regions.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "The Google Developers Console [project ID or project\nnumber](https://support.google.com/cloud/answer/6158840).\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "zone": { + // "description": "The name of the Google Compute Engine [zone](/compute/docs/zones#available)\nto return operations for, or `-` for all zones.\nThis field is deprecated, use parent instead.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}/zones/{zone}/operations", + // "response": { + // "$ref": "ListOperationsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} diff --git a/vendor/google.golang.org/api/dataflow/v1b3/dataflow-api.json b/vendor/google.golang.org/api/dataflow/v1b3/dataflow-api.json index a071b72..1af8483 100644 --- a/vendor/google.golang.org/api/dataflow/v1b3/dataflow-api.json +++ b/vendor/google.golang.org/api/dataflow/v1b3/dataflow-api.json @@ -1,52 +1,15 @@ { - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/compute.readonly": { - "description": "View your Google Compute Engine resources" - }, - "https://www.googleapis.com/auth/compute": { - "description": "View and manage your Google Compute Engine resources" - }, - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/userinfo.email": { - "description": "View your email address" - } - } - } - }, - "kind": "discovery#restDescription", - "description": "Manages Google Cloud Dataflow projects on Google Cloud Platform.", - "servicePath": "", - "rootUrl": "https://dataflow.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "dataflow", - "batchPath": "batch", - "id": "dataflow:v1b3", - "documentationLink": "https://cloud.google.com/dataflow", - "revision": "20170823", - "title": "Google Dataflow API", - "ownerName": "Google", - "discoveryVersion": "v1", "resources": { "projects": { "methods": { "workerMessages": { - "path": "v1b3/projects/{projectId}/WorkerMessages", - "id": "dataflow.projects.workerMessages", - "request": { - "$ref": "SendWorkerMessagesRequest" - }, - "description": "Send a worker_message to the service.", - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "SendWorkerMessagesResponse" + "parameters": { + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The project to send the WorkerMessages to." + } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", @@ -54,15 +17,20 @@ "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], - "parameters": { - "projectId": { - "description": "The project to send the WorkerMessages to.", - "type": "string", - "required": true, - "location": "path" - } + "flatPath": "v1b3/projects/{projectId}/WorkerMessages", + "id": "dataflow.projects.workerMessages", + "path": "v1b3/projects/{projectId}/WorkerMessages", + "description": "Send a worker_message to the service.", + "request": { + "$ref": "SendWorkerMessagesRequest" }, - "flatPath": "v1b3/projects/{projectId}/WorkerMessages" + "response": { + "$ref": "SendWorkerMessagesResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST" } }, "resources": { @@ -77,129 +45,39 @@ "location" ], "httpMethod": "POST", - "parameters": { - "location": { - "location": "path", - "description": "The location which contains the job", - "type": "string", - "required": true - }, - "projectId": { - "location": "path", - "description": "The project to send the WorkerMessages to.", - "type": "string", - "required": true - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], + "parameters": { + "location": { + "description": "The location which contains the job", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "description": "The project to send the WorkerMessages to.", + "type": "string", + "required": true, + "location": "path" + } + }, "flatPath": "v1b3/projects/{projectId}/locations/{location}/WorkerMessages", "id": "dataflow.projects.locations.workerMessages", "path": "v1b3/projects/{projectId}/locations/{location}/WorkerMessages", - "description": "Send a worker_message to the service.", "request": { "$ref": "SendWorkerMessagesRequest" - } + }, + "description": "Send a worker_message to the service." } }, "resources": { "templates": { "methods": { - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "projectId", - "location" - ], - "response": { - "$ref": "GetTemplateResponse" - }, - "parameters": { - "location": { - "location": "path", - "description": "The location to which to direct the request.", - "type": "string", - "required": true - }, - "view": { - "location": "query", - "enum": [ - "METADATA_ONLY" - ], - "description": "The view to retrieve. Defaults to METADATA_ONLY.", - "type": "string" - }, - "projectId": { - "description": "Required. The ID of the Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - }, - "gcsPath": { - "location": "query", - "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates:get", - "path": "v1b3/projects/{projectId}/locations/{location}/templates:get", - "id": "dataflow.projects.locations.templates.get", - "description": "Get the template associated with a template." - }, - "create": { - "request": { - "$ref": "CreateJobFromTemplateRequest" - }, - "description": "Creates a Cloud Dataflow job from a template.", - "response": { - "$ref": "Job" - }, - "parameterOrder": [ - "projectId", - "location" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "parameters": { - "location": { - "location": "path", - "description": "The location to which to direct the request.", - "type": "string", - "required": true - }, - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The ID of the Cloud Platform project that the job belongs to." - } - }, - "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates", - "id": "dataflow.projects.locations.templates.create", - "path": "v1b3/projects/{projectId}/locations/{location}/templates" - }, "launch": { - "id": "dataflow.projects.locations.templates.launch", - "path": "v1b3/projects/{projectId}/locations/{location}/templates:launch", - "description": "Launch a template.", - "request": { - "$ref": "LaunchTemplateParameters" - }, "response": { "$ref": "LaunchTemplateResponse" }, @@ -210,15 +88,15 @@ "httpMethod": "POST", "parameters": { "validateOnly": { - "location": "query", "description": "If true, the request is validated but not actually executed.\nDefaults to false.", - "type": "boolean" + "type": "boolean", + "location": "query" }, "projectId": { - "location": "path", - "description": "Required. The ID of the Cloud Platform project that the job belongs to.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Required. The ID of the Cloud Platform project that the job belongs to." }, "gcsPath": { "location": "query", @@ -238,51 +116,46 @@ "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], - "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates:launch" - } - } - }, - "jobs": { - "methods": { - "create": { - "description": "Creates a Cloud Dataflow job.", + "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates:launch", + "id": "dataflow.projects.locations.templates.launch", + "path": "v1b3/projects/{projectId}/locations/{location}/templates:launch", + "description": "Launch a template.", "request": { - "$ref": "Job" - }, - "response": { - "$ref": "Job" - }, + "$ref": "LaunchTemplateParameters" + } + }, + "get": { + "httpMethod": "GET", "parameterOrder": [ "projectId", "location" ], - "httpMethod": "POST", + "response": { + "$ref": "GetTemplateResponse" + }, "parameters": { - "replaceJobId": { - "location": "query", - "description": "Deprecated. This field is now in the Job message.", - "type": "string" - }, "view": { - "description": "The level of information requested in response.", - "type": "string", "location": "query", "enum": [ - "JOB_VIEW_UNKNOWN", - "JOB_VIEW_SUMMARY", - "JOB_VIEW_ALL", - "JOB_VIEW_DESCRIPTION" - ] + "METADATA_ONLY" + ], + "description": "The view to retrieve. Defaults to METADATA_ONLY.", + "type": "string" }, "projectId": { - "location": "path", - "description": "The ID of the Cloud Platform project that the job belongs to.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Required. The ID of the Cloud Platform project that the job belongs to." + }, + "gcsPath": { + "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", + "type": "string", + "location": "query" }, "location": { "location": "path", - "description": "The location that contains this job.", + "description": "The location to which to direct the request.", "type": "string", "required": true } @@ -293,15 +166,54 @@ "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs", - "id": "dataflow.projects.locations.jobs.create", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs" + "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates:get", + "path": "v1b3/projects/{projectId}/locations/{location}/templates:get", + "id": "dataflow.projects.locations.templates.get", + "description": "Get the template associated with a template." }, + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "location" + ], + "response": { + "$ref": "Job" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "Required. The ID of the Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + }, + "location": { + "location": "path", + "description": "The location to which to direct the request.", + "type": "string", + "required": true + } + }, + "flatPath": "v1b3/projects/{projectId}/locations/{location}/templates", + "path": "v1b3/projects/{projectId}/locations/{location}/templates", + "id": "dataflow.projects.locations.templates.create", + "request": { + "$ref": "CreateJobFromTemplateRequest" + }, + "description": "Creates a Cloud Dataflow job from a template." + } + } + }, + "jobs": { + "methods": { "getMetrics": { - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics", - "id": "dataflow.projects.locations.jobs.getMetrics", "description": "Request the job status.", - "httpMethod": "GET", "response": { "$ref": "JobMetrics" }, @@ -310,6 +222,7 @@ "location", "jobId" ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", @@ -336,31 +249,34 @@ "location": "path" }, "projectId": { + "location": "path", "description": "A project id.", "type": "string", - "required": true, - "location": "path" + "required": true } }, - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics" + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics", + "id": "dataflow.projects.locations.jobs.getMetrics", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/metrics" }, "list": { - "response": { - "$ref": "ListJobsResponse" - }, + "httpMethod": "GET", "parameterOrder": [ "projectId", "location" ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], + "response": { + "$ref": "ListJobsResponse" + }, "parameters": { + "projectId": { + "description": "The project which owns the jobs.", + "type": "string", + "required": true, + "location": "path" + }, "filter": { + "location": "query", "enum": [ "UNKNOWN", "ALL", @@ -368,28 +284,26 @@ "ACTIVE" ], "description": "The kind of filter to use.", - "type": "string", - "location": "query" - }, - "location": { - "location": "path", - "description": "The location that contains this job.", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.", "type": "string" }, - "pageSize": { - "format": "int32", - "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.", - "type": "integer", + "location": { + "type": "string", + "required": true, + "location": "path", + "description": "The location that contains this job." + }, + "pageToken": { + "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.", + "type": "string", "location": "query" }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.", + "type": "integer" + }, "view": { - "type": "string", "location": "query", "enum": [ "JOB_VIEW_UNKNOWN", @@ -397,18 +311,19 @@ "JOB_VIEW_ALL", "JOB_VIEW_DESCRIPTION" ], - "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`." - }, - "projectId": { - "location": "path", - "description": "The project which owns the jobs.", - "type": "string", - "required": true + "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.", + "type": "string" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs", - "id": "dataflow.projects.locations.jobs.list", "path": "v1b3/projects/{projectId}/locations/{location}/jobs", + "id": "dataflow.projects.locations.jobs.list", "description": "List the jobs of a project in a given region." }, "get": { @@ -429,6 +344,12 @@ "https://www.googleapis.com/auth/userinfo.email" ], "parameters": { + "location": { + "description": "The location that contains this job.", + "type": "string", + "required": true, + "location": "path" + }, "view": { "description": "The level of information requested in response.", "type": "string", @@ -441,17 +362,55 @@ ] }, "jobId": { - "type": "string", - "required": true, "location": "path", - "description": "The job ID." + "description": "The job ID.", + "type": "string", + "required": true }, "projectId": { + "location": "path", "description": "The ID of the Cloud Platform project that the job belongs to.", "type": "string", + "required": true + } + }, + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", + "id": "dataflow.projects.locations.jobs.get", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}" + }, + "update": { + "request": { + "$ref": "Job" + }, + "description": "Updates the state of an existing Cloud Dataflow job.", + "httpMethod": "PUT", + "parameterOrder": [ + "projectId", + "location", + "jobId" + ], + "response": { + "$ref": "Job" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "jobId": { + "description": "The job ID.", + "type": "string", "required": true, "location": "path" }, + "projectId": { + "location": "path", + "description": "The ID of the Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + }, "location": { "description": "The location that contains this job.", "type": "string", @@ -460,11 +419,14 @@ } }, "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", - "id": "dataflow.projects.locations.jobs.get", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}" + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", + "id": "dataflow.projects.locations.jobs.update" }, - "update": { - "description": "Updates the state of an existing Cloud Dataflow job.", + "create": { + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs", + "id": "dataflow.projects.locations.jobs.create", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs", + "description": "Creates a Cloud Dataflow job.", "request": { "$ref": "Job" }, @@ -473,10 +435,9 @@ }, "parameterOrder": [ "projectId", - "location", - "jobId" + "location" ], - "httpMethod": "PUT", + "httpMethod": "POST", "parameters": { "location": { "description": "The location that contains this job.", @@ -484,11 +445,21 @@ "required": true, "location": "path" }, - "jobId": { - "description": "The job ID.", + "replaceJobId": { + "description": "Deprecated. This field is now in the Job message.", "type": "string", - "required": true, - "location": "path" + "location": "query" + }, + "view": { + "type": "string", + "location": "query", + "enum": [ + "JOB_VIEW_UNKNOWN", + "JOB_VIEW_SUMMARY", + "JOB_VIEW_ALL", + "JOB_VIEW_DESCRIPTION" + ], + "description": "The level of information requested in response." }, "projectId": { "location": "path", @@ -502,75 +473,35 @@ "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}", - "id": "dataflow.projects.locations.jobs.update", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}" + ] } }, "resources": { "workItems": { "methods": { - "lease": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "parameters": { - "location": { - "type": "string", - "required": true, - "location": "path", - "description": "The location which contains the WorkItem's job." - }, - "jobId": { - "description": "Identifies the workflow job this worker belongs to.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "location": "path", - "description": "Identifies the project this worker belongs to.", - "type": "string", - "required": true - } - }, - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease", - "id": "dataflow.projects.locations.jobs.workItems.lease", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease", - "request": { - "$ref": "LeaseWorkItemRequest" - }, - "description": "Leases a dataflow WorkItem to run.", - "response": { - "$ref": "LeaseWorkItemResponse" - }, - "parameterOrder": [ - "projectId", - "location", - "jobId" - ], - "httpMethod": "POST" - }, "reportStatus": { - "httpMethod": "POST", - "parameterOrder": [ - "projectId", - "location", - "jobId" - ], + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus", + "id": "dataflow.projects.locations.jobs.workItems.reportStatus", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus", + "description": "Reports the status of dataflow WorkItems leased by a worker.", + "request": { + "$ref": "ReportWorkItemStatusRequest" + }, "response": { "$ref": "ReportWorkItemStatusResponse" }, + "parameterOrder": [ + "projectId", + "location", + "jobId" + ], + "httpMethod": "POST", "parameters": { "location": { - "location": "path", "description": "The location which contains the WorkItem's job.", "type": "string", - "required": true + "required": true, + "location": "path" }, "jobId": { "location": "path", @@ -590,14 +521,51 @@ "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:reportStatus", - "id": "dataflow.projects.locations.jobs.workItems.reportStatus", - "description": "Reports the status of dataflow WorkItems leased by a worker.", + ] + }, + "lease": { "request": { - "$ref": "ReportWorkItemStatusRequest" - } + "$ref": "LeaseWorkItemRequest" + }, + "description": "Leases a dataflow WorkItem to run.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "location", + "jobId" + ], + "response": { + "$ref": "LeaseWorkItemResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "location": { + "description": "The location which contains the WorkItem's job.", + "type": "string", + "required": true, + "location": "path" + }, + "jobId": { + "type": "string", + "required": true, + "location": "path", + "description": "Identifies the workflow job this worker belongs to." + }, + "projectId": { + "location": "path", + "description": "Identifies the project this worker belongs to.", + "type": "string", + "required": true + } + }, + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/workItems:lease", + "id": "dataflow.projects.locations.jobs.workItems.lease" } } }, @@ -613,54 +581,54 @@ "response": { "$ref": "SendDebugCaptureResponse" }, - "parameters": { - "location": { - "location": "path", - "description": "The location which contains the job specified by job_id.", - "type": "string", - "required": true - }, - "jobId": { - "type": "string", - "required": true, - "location": "path", - "description": "The job id." - }, - "projectId": { - "location": "path", - "description": "The project id.", - "type": "string", - "required": true - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], + "parameters": { + "location": { + "description": "The location which contains the job specified by job_id.", + "type": "string", + "required": true, + "location": "path" + }, + "jobId": { + "location": "path", + "description": "The job id.", + "type": "string", + "required": true + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The project id." + } + }, "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/sendCapture", "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/sendCapture", "id": "dataflow.projects.locations.jobs.debug.sendCapture", - "description": "Send encoded debug capture data for component.", "request": { "$ref": "SendDebugCaptureRequest" - } + }, + "description": "Send encoded debug capture data for component." }, "getConfig": { "request": { "$ref": "GetDebugConfigRequest" }, "description": "Get encoded debug configuration for component. Not cacheable.", - "httpMethod": "POST", + "response": { + "$ref": "GetDebugConfigResponse" + }, "parameterOrder": [ "projectId", "location", "jobId" ], - "response": { - "$ref": "GetDebugConfigResponse" - }, + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", @@ -675,48 +643,45 @@ "location": "path" }, "projectId": { - "description": "The project id.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "The project id." }, "location": { - "location": "path", - "description": "The location which contains the job specified by job_id.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "The location which contains the job specified by job_id." } }, "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig", - "id": "dataflow.projects.locations.jobs.debug.getConfig" + "id": "dataflow.projects.locations.jobs.debug.getConfig", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/debug/getConfig" } } }, "messages": { "methods": { "list": { + "id": "dataflow.projects.locations.jobs.messages.list", + "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages", + "description": "Request the job status.", "response": { "$ref": "ListJobMessagesResponse" }, + "httpMethod": "GET", "parameterOrder": [ "projectId", "location", "jobId" ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], "parameters": { "endTime": { + "location": "query", "format": "google-datetime", "description": "Return only messages with timestamps \u003c end_time. The default is now\n(i.e. return up to the latest messages available).", - "type": "string", - "location": "query" + "type": "string" }, "location": { "description": "The location which contains the job specified by job_id.", @@ -725,15 +690,15 @@ "location": "path" }, "pageToken": { + "location": "query", "description": "If supplied, this should be the value of next_page_token returned\nby an earlier call. This will cause the next page of results to\nbe returned.", - "type": "string", - "location": "query" + "type": "string" }, "startTime": { - "type": "string", - "location": "query", "format": "google-datetime", - "description": "If specified, return only messages with timestamps \u003e= start_time.\nThe default is the job creation time (i.e. beginning of messages)." + "description": "If specified, return only messages with timestamps \u003e= start_time.\nThe default is the job creation time (i.e. beginning of messages).", + "type": "string", + "location": "query" }, "pageSize": { "format": "int32", @@ -742,8 +707,6 @@ "location": "query" }, "minimumImportance": { - "description": "Filter to only get messages with importance \u003e= level", - "type": "string", "location": "query", "enum": [ "JOB_MESSAGE_IMPORTANCE_UNKNOWN", @@ -752,25 +715,30 @@ "JOB_MESSAGE_BASIC", "JOB_MESSAGE_WARNING", "JOB_MESSAGE_ERROR" - ] + ], + "description": "Filter to only get messages with importance \u003e= level", + "type": "string" }, "jobId": { + "location": "path", "description": "The job to get messages about.", "type": "string", - "required": true, - "location": "path" + "required": true }, "projectId": { - "type": "string", - "required": true, "location": "path", - "description": "A project id." + "description": "A project id.", + "type": "string", + "required": true } }, - "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages", - "id": "dataflow.projects.locations.jobs.messages.list", - "path": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages", - "description": "Request the job status." + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "flatPath": "v1b3/projects/{projectId}/locations/{location}/jobs/{jobId}/messages" } } } @@ -780,82 +748,9 @@ }, "templates": { "methods": { - "get": { - "response": { - "$ref": "GetTemplateResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "parameters": { - "gcsPath": { - "location": "query", - "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", - "type": "string" - }, - "location": { - "location": "query", - "description": "The location to which to direct the request.", - "type": "string" - }, - "view": { - "location": "query", - "enum": [ - "METADATA_ONLY" - ], - "description": "The view to retrieve. Defaults to METADATA_ONLY.", - "type": "string" - }, - "projectId": { - "location": "path", - "description": "Required. The ID of the Cloud Platform project that the job belongs to.", - "type": "string", - "required": true - } - }, - "flatPath": "v1b3/projects/{projectId}/templates:get", - "id": "dataflow.projects.templates.get", - "path": "v1b3/projects/{projectId}/templates:get", - "description": "Get the template associated with a template." - }, - "create": { - "description": "Creates a Cloud Dataflow job from a template.", - "request": { - "$ref": "CreateJobFromTemplateRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "Job" - }, - "parameters": { - "projectId": { - "location": "path", - "description": "Required. The ID of the Cloud Platform project that the job belongs to.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/templates", - "path": "v1b3/projects/{projectId}/templates", - "id": "dataflow.projects.templates.create" - }, "launch": { + "path": "v1b3/projects/{projectId}/templates:launch", + "id": "dataflow.projects.templates.launch", "request": { "$ref": "LaunchTemplateParameters" }, @@ -874,89 +769,90 @@ "https://www.googleapis.com/auth/userinfo.email" ], "parameters": { - "location": { - "location": "query", - "description": "The location to which to direct the request.", - "type": "string" - }, - "validateOnly": { - "location": "query", - "description": "If true, the request is validated but not actually executed.\nDefaults to false.", - "type": "boolean" - }, "projectId": { + "location": "path", "description": "Required. The ID of the Cloud Platform project that the job belongs to.", "type": "string", - "required": true, - "location": "path" + "required": true }, "gcsPath": { "location": "query", "description": "Required. A Cloud Storage path to the template from which to create\nthe job.\nMust be valid Cloud Storage URL, beginning with 'gs://'.", "type": "string" + }, + "location": { + "description": "The location to which to direct the request.", + "type": "string", + "location": "query" + }, + "validateOnly": { + "type": "boolean", + "location": "query", + "description": "If true, the request is validated but not actually executed.\nDefaults to false." } }, - "flatPath": "v1b3/projects/{projectId}/templates:launch", - "path": "v1b3/projects/{projectId}/templates:launch", - "id": "dataflow.projects.templates.launch" - } - } - }, - "jobs": { - "methods": { - "list": { - "httpMethod": "GET", + "flatPath": "v1b3/projects/{projectId}/templates:launch" + }, + "get": { + "flatPath": "v1b3/projects/{projectId}/templates:get", + "id": "dataflow.projects.templates.get", + "path": "v1b3/projects/{projectId}/templates:get", + "description": "Get the template associated with a template.", + "response": { + "$ref": "GetTemplateResponse" + }, "parameterOrder": [ "projectId" ], - "response": { - "$ref": "ListJobsResponse" - }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], "parameters": { - "projectId": { - "description": "The project which owns the jobs.", - "type": "string", - "required": true, - "location": "path" - }, - "filter": { - "description": "The kind of filter to use.", + "view": { + "description": "The view to retrieve. Defaults to METADATA_ONLY.", "type": "string", "location": "query", "enum": [ - "UNKNOWN", - "ALL", - "TERMINATED", - "ACTIVE" + "METADATA_ONLY" ] }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + }, + "gcsPath": { + "location": "query", + "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", + "type": "string" + }, "location": { "location": "query", - "description": "The location that contains this job.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit.", - "type": "integer" - }, - "view": { - "location": "query", - "enum": [ - "JOB_VIEW_UNKNOWN", - "JOB_VIEW_SUMMARY", - "JOB_VIEW_ALL", - "JOB_VIEW_DESCRIPTION" - ], - "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.", + "description": "The location to which to direct the request.", "type": "string" } + } + }, + "create": { + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "Required. The ID of the Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", @@ -964,12 +860,21 @@ "https://www.googleapis.com/auth/compute.readonly", "https://www.googleapis.com/auth/userinfo.email" ], - "flatPath": "v1b3/projects/{projectId}/jobs", - "path": "v1b3/projects/{projectId}/jobs", - "id": "dataflow.projects.jobs.list", - "description": "List the jobs of a project in a given region." - }, + "flatPath": "v1b3/projects/{projectId}/templates", + "id": "dataflow.projects.templates.create", + "path": "v1b3/projects/{projectId}/templates", + "description": "Creates a Cloud Dataflow job from a template.", + "request": { + "$ref": "CreateJobFromTemplateRequest" + } + } + } + }, + "jobs": { + "methods": { "create": { + "id": "dataflow.projects.jobs.create", + "path": "v1b3/projects/{projectId}/jobs", "description": "Creates a Cloud Dataflow job.", "request": { "$ref": "Job" @@ -988,10 +893,94 @@ "type": "string" }, "replaceJobId": { + "location": "query", "description": "Deprecated. This field is now in the Job message.", + "type": "string" + }, + "view": { + "location": "query", + "enum": [ + "JOB_VIEW_UNKNOWN", + "JOB_VIEW_SUMMARY", + "JOB_VIEW_ALL", + "JOB_VIEW_DESCRIPTION" + ], + "description": "The level of information requested in response.", + "type": "string" + }, + "projectId": { + "location": "path", + "description": "The ID of the Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "flatPath": "v1b3/projects/{projectId}/jobs" + }, + "getMetrics": { + "response": { + "$ref": "JobMetrics" + }, + "parameterOrder": [ + "projectId", + "jobId" + ], + "httpMethod": "GET", + "parameters": { + "location": { + "description": "The location which contains the job specified by job_id.", "type": "string", "location": "query" }, + "startTime": { + "location": "query", + "format": "google-datetime", + "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.", + "type": "string" + }, + "jobId": { + "description": "The job to get messages for.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "A project id.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/metrics", + "id": "dataflow.projects.jobs.getMetrics", + "path": "v1b3/projects/{projectId}/jobs/{jobId}/metrics", + "description": "Request the job status." + }, + "get": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "location": { + "type": "string", + "location": "query", + "description": "The location that contains this job." + }, "view": { "description": "The level of information requested in response.", "type": "string", @@ -1003,133 +992,33 @@ "JOB_VIEW_DESCRIPTION" ] }, - "projectId": { - "description": "The ID of the Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/jobs", - "id": "dataflow.projects.jobs.create", - "path": "v1b3/projects/{projectId}/jobs" - }, - "getMetrics": { - "description": "Request the job status.", - "response": { - "$ref": "JobMetrics" - }, - "parameterOrder": [ - "projectId", - "jobId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "parameters": { - "startTime": { - "location": "query", - "format": "google-datetime", - "description": "Return only metric data that has changed since this time.\nDefault is to return all information about all metrics for the job.", - "type": "string" - }, "jobId": { - "location": "path", - "description": "The job to get messages for.", - "type": "string", - "required": true - }, - "projectId": { - "location": "path", - "description": "A project id.", - "type": "string", - "required": true - }, - "location": { - "location": "query", - "description": "The location which contains the job specified by job_id.", - "type": "string" - } - }, - "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/metrics", - "id": "dataflow.projects.jobs.getMetrics", - "path": "v1b3/projects/{projectId}/jobs/{jobId}/metrics" - }, - "get": { - "parameterOrder": [ - "projectId", - "jobId" - ], - "response": { - "$ref": "Job" - }, - "httpMethod": "GET", - "parameters": { - "view": { - "type": "string", - "location": "query", - "enum": [ - "JOB_VIEW_UNKNOWN", - "JOB_VIEW_SUMMARY", - "JOB_VIEW_ALL", - "JOB_VIEW_DESCRIPTION" - ], - "description": "The level of information requested in response." - }, - "jobId": { - "location": "path", "description": "The job ID.", "type": "string", - "required": true + "required": true, + "location": "path" }, "projectId": { "description": "The ID of the Cloud Platform project that the job belongs to.", "type": "string", "required": true, "location": "path" - }, - "location": { - "type": "string", - "location": "query", - "description": "The location that contains this job." } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}", + "path": "v1b3/projects/{projectId}/jobs/{jobId}", "id": "dataflow.projects.jobs.get", - "path": "v1b3/projects/{projectId}/jobs/{jobId}", - "description": "Gets the state of the specified Cloud Dataflow job." - }, - "update": { - "path": "v1b3/projects/{projectId}/jobs/{jobId}", - "id": "dataflow.projects.jobs.update", - "request": { - "$ref": "Job" - }, - "description": "Updates the state of an existing Cloud Dataflow job.", - "httpMethod": "PUT", + "description": "Gets the state of the specified Cloud Dataflow job.", + "httpMethod": "GET", "parameterOrder": [ "projectId", "jobId" ], "response": { "$ref": "Job" - }, + } + }, + "update": { "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", @@ -1143,10 +1032,10 @@ "type": "string" }, "jobId": { - "location": "path", "description": "The job ID.", "type": "string", - "required": true + "required": true, + "location": "path" }, "projectId": { "description": "The ID of the Cloud Platform project that the job belongs to.", @@ -1155,16 +1044,37 @@ "location": "path" } }, - "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}" + "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}", + "id": "dataflow.projects.jobs.update", + "path": "v1b3/projects/{projectId}/jobs/{jobId}", + "request": { + "$ref": "Job" + }, + "description": "Updates the state of an existing Cloud Dataflow job.", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "jobId" + ], + "httpMethod": "PUT" }, "aggregated": { + "description": "List the jobs of a project across all regions.", "httpMethod": "GET", - "parameterOrder": [ - "projectId" - ], "response": { "$ref": "ListJobsResponse" }, + "parameterOrder": [ + "projectId" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], "parameters": { "projectId": { "description": "The project which owns the jobs.", @@ -1189,9 +1099,9 @@ "type": "string" }, "pageToken": { - "location": "query", "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { "location": "query", @@ -1200,7 +1110,70 @@ "type": "integer" }, "view": { + "location": "query", + "enum": [ + "JOB_VIEW_UNKNOWN", + "JOB_VIEW_SUMMARY", + "JOB_VIEW_ALL", + "JOB_VIEW_DESCRIPTION" + ], "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`.", + "type": "string" + } + }, + "flatPath": "v1b3/projects/{projectId}/jobs:aggregated", + "path": "v1b3/projects/{projectId}/jobs:aggregated", + "id": "dataflow.projects.jobs.aggregated" + }, + "list": { + "response": { + "$ref": "ListJobsResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The project which owns the jobs.", + "type": "string", + "required": true + }, + "filter": { + "description": "The kind of filter to use.", + "type": "string", + "location": "query", + "enum": [ + "UNKNOWN", + "ALL", + "TERMINATED", + "ACTIVE" + ] + }, + "location": { + "location": "query", + "description": "The location that contains this job.", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "Set this to the 'next_page_token' field of a previous response\nto request additional results in a long list.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "If there are many jobs, limit response to at most this many.\nThe actual number of jobs returned will be the lesser of max_responses\nand an unspecified server-defined limit." + }, + "view": { "type": "string", "location": "query", "enum": [ @@ -1208,33 +1181,34 @@ "JOB_VIEW_SUMMARY", "JOB_VIEW_ALL", "JOB_VIEW_DESCRIPTION" - ] + ], + "description": "Level of information requested in response. Default is `JOB_VIEW_SUMMARY`." } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "flatPath": "v1b3/projects/{projectId}/jobs:aggregated", - "path": "v1b3/projects/{projectId}/jobs:aggregated", - "id": "dataflow.projects.jobs.aggregated", - "description": "List the jobs of a project across all regions." + "flatPath": "v1b3/projects/{projectId}/jobs", + "id": "dataflow.projects.jobs.list", + "path": "v1b3/projects/{projectId}/jobs", + "description": "List the jobs of a project in a given region." } }, "resources": { "workItems": { "methods": { "reportStatus": { - "response": { - "$ref": "ReportWorkItemStatusResponse" + "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus", + "id": "dataflow.projects.jobs.workItems.reportStatus", + "request": { + "$ref": "ReportWorkItemStatusRequest" }, + "description": "Reports the status of dataflow WorkItems leased by a worker.", + "httpMethod": "POST", "parameterOrder": [ "projectId", "jobId" ], - "httpMethod": "POST", + "response": { + "$ref": "ReportWorkItemStatusResponse" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/compute", @@ -1255,15 +1229,13 @@ "location": "path" } }, - "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus", - "id": "dataflow.projects.jobs.workItems.reportStatus", - "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus", - "request": { - "$ref": "ReportWorkItemStatusRequest" - }, - "description": "Reports the status of dataflow WorkItems leased by a worker." + "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:reportStatus" }, "lease": { + "request": { + "$ref": "LeaseWorkItemRequest" + }, + "description": "Leases a dataflow WorkItem to run.", "response": { "$ref": "LeaseWorkItemResponse" }, @@ -1280,82 +1252,39 @@ ], "parameters": { "jobId": { - "type": "string", - "required": true, "location": "path", - "description": "Identifies the workflow job this worker belongs to." + "description": "Identifies the workflow job this worker belongs to.", + "type": "string", + "required": true }, "projectId": { + "location": "path", "description": "Identifies the project this worker belongs to.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:lease", "id": "dataflow.projects.jobs.workItems.lease", - "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:lease", - "request": { - "$ref": "LeaseWorkItemRequest" - }, - "description": "Leases a dataflow WorkItem to run." + "path": "v1b3/projects/{projectId}/jobs/{jobId}/workItems:lease" } } }, "debug": { "methods": { "sendCapture": { + "description": "Send encoded debug capture data for component.", "request": { "$ref": "SendDebugCaptureRequest" }, - "description": "Send encoded debug capture data for component.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "jobId" + ], "response": { "$ref": "SendDebugCaptureResponse" }, - "parameterOrder": [ - "projectId", - "jobId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], - "parameters": { - "jobId": { - "type": "string", - "required": true, - "location": "path", - "description": "The job id." - }, - "projectId": { - "description": "The project id.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/debug/sendCapture", - "id": "dataflow.projects.jobs.debug.sendCapture", - "path": "v1b3/projects/{projectId}/jobs/{jobId}/debug/sendCapture" - }, - "getConfig": { - "response": { - "$ref": "GetDebugConfigResponse" - }, - "parameterOrder": [ - "projectId", - "jobId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], "parameters": { "jobId": { "description": "The job id.", @@ -1364,15 +1293,54 @@ "location": "path" }, "projectId": { - "type": "string", - "required": true, "location": "path", - "description": "The project id." + "description": "The project id.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/debug/sendCapture", + "path": "v1b3/projects/{projectId}/jobs/{jobId}/debug/sendCapture", + "id": "dataflow.projects.jobs.debug.sendCapture" + }, + "getConfig": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "jobId" + ], + "response": { + "$ref": "GetDebugConfigResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], + "parameters": { + "jobId": { + "location": "path", + "description": "The job id.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "The project id.", + "type": "string", + "required": true } }, "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/debug/getConfig", - "id": "dataflow.projects.jobs.debug.getConfig", "path": "v1b3/projects/{projectId}/jobs/{jobId}/debug/getConfig", + "id": "dataflow.projects.jobs.debug.getConfig", "request": { "$ref": "GetDebugConfigRequest" }, @@ -1383,7 +1351,7 @@ "messages": { "methods": { "list": { - "httpMethod": "GET", + "description": "Request the job status.", "response": { "$ref": "ListJobMessagesResponse" }, @@ -1391,21 +1359,23 @@ "projectId", "jobId" ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/compute.readonly", + "https://www.googleapis.com/auth/userinfo.email" + ], "parameters": { - "endTime": { - "format": "google-datetime", - "description": "Return only messages with timestamps \u003c end_time. The default is now\n(i.e. return up to the latest messages available).", + "location": { + "description": "The location which contains the job specified by job_id.", "type": "string", "location": "query" }, - "location": { + "endTime": { "location": "query", - "description": "The location which contains the job specified by job_id.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "If supplied, this should be the value of next_page_token returned\nby an earlier call. This will cause the next page of results to\nbe returned.", + "format": "google-datetime", + "description": "Return only messages with timestamps \u003c end_time. The default is now\n(i.e. return up to the latest messages available).", "type": "string" }, "startTime": { @@ -1414,14 +1384,18 @@ "type": "string", "location": "query" }, - "pageSize": { + "pageToken": { "location": "query", + "description": "If supplied, this should be the value of next_page_token returned\nby an earlier call. This will cause the next page of results to\nbe returned.", + "type": "string" + }, + "pageSize": { "format": "int32", "description": "If specified, determines the maximum number of messages to\nreturn. If unspecified, the service may choose an appropriate\ndefault, or may return an arbitrarily large number of results.", - "type": "integer" + "type": "integer", + "location": "query" }, "minimumImportance": { - "type": "string", "location": "query", "enum": [ "JOB_MESSAGE_IMPORTANCE_UNKNOWN", @@ -1431,31 +1405,25 @@ "JOB_MESSAGE_WARNING", "JOB_MESSAGE_ERROR" ], - "description": "Filter to only get messages with importance \u003e= level" - }, - "jobId": { - "type": "string", - "required": true, - "location": "path", - "description": "The job to get messages about." + "description": "Filter to only get messages with importance \u003e= level", + "type": "string" }, "projectId": { + "location": "path", "description": "A project id.", "type": "string", + "required": true + }, + "jobId": { + "description": "The job to get messages about.", + "type": "string", "required": true, "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/compute.readonly", - "https://www.googleapis.com/auth/userinfo.email" - ], "flatPath": "v1b3/projects/{projectId}/jobs/{jobId}/messages", - "path": "v1b3/projects/{projectId}/jobs/{jobId}/messages", "id": "dataflow.projects.jobs.messages.list", - "description": "Request the job status." + "path": "v1b3/projects/{projectId}/jobs/{jobId}/messages" } } } @@ -1465,6 +1433,32 @@ } }, "parameters": { + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, "prettyPrint": { "location": "query", "description": "Returns response with indentations and line breaks.", @@ -1487,7 +1481,6 @@ "type": "string" }, "$.xgafv": { - "location": "query", "enum": [ "1", "2" @@ -1497,2142 +1490,42 @@ "enumDescriptions": [ "v1 error format", "v2 error format" - ] + ], + "location": "query" }, "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] }, "key": { - "location": "query", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" + "type": "string", + "location": "query" }, "access_token": { "location": "query", "description": "OAuth access token.", "type": "string" - }, - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" } }, "schemas": { - "ShellTask": { - "description": "A task which consists of a shell command for the worker to execute.", - "type": "object", - "properties": { - "command": { - "description": "The shell command to run.", - "type": "string" - }, - "exitCode": { - "format": "int32", - "description": "Exit code for the task.", - "type": "integer" - } - }, - "id": "ShellTask" - }, - "MetricShortId": { - "description": "The metric short id is returned to the user alongside an offset into\nReportWorkItemStatusRequest", - "type": "object", - "properties": { - "metricIndex": { - "format": "int32", - "description": "The index of the corresponding metric in\nthe ReportWorkItemStatusRequest. Required.", - "type": "integer" - }, - "shortId": { - "type": "string", - "format": "int64", - "description": "The service-generated short identifier for the metric." - } - }, - "id": "MetricShortId" - }, - "AutoscalingEvent": { - "description": "A structured message reporting an autoscaling decision made by the Dataflow\nservice.", - "type": "object", - "properties": { - "currentNumWorkers": { - "format": "int64", - "description": "The current number of workers the job has.", - "type": "string" - }, - "time": { - "format": "google-datetime", - "description": "The time this event was emitted to indicate a new target or current\nnum_workers value.", - "type": "string" - }, - "description": { - "$ref": "StructuredMessage", - "description": "A message describing why the system decided to adjust the current\nnumber of workers, why it failed, or why the system decided to\nnot make any changes to the number of workers." - }, - "eventType": { - "enum": [ - "TYPE_UNKNOWN", - "TARGET_NUM_WORKERS_CHANGED", - "CURRENT_NUM_WORKERS_CHANGED", - "ACTUATION_FAILURE", - "NO_CHANGE" - ], - "description": "The type of autoscaling event to report.", - "type": "string", - "enumDescriptions": [ - "Default type for the enum. Value should never be returned.", - "The TARGET_NUM_WORKERS_CHANGED type should be used when the target\nworker pool size has changed at the start of an actuation. An event\nshould always be specified as TARGET_NUM_WORKERS_CHANGED if it reflects\na change in the target_num_workers.", - "The CURRENT_NUM_WORKERS_CHANGED type should be used when actual worker\npool size has been changed, but the target_num_workers has not changed.", - "The ACTUATION_FAILURE type should be used when we want to report\nan error to the user indicating why the current number of workers\nin the pool could not be changed.\nDisplayed in the current status and history widgets.", - "Used when we want to report to the user a reason why we are\nnot currently adjusting the number of workers.\nShould specify both target_num_workers, current_num_workers and a\ndecision_message." - ] - }, - "targetNumWorkers": { - "format": "int64", - "description": "The target number of workers the worker pool wants to resize to use.", - "type": "string" - } - }, - "id": "AutoscalingEvent" - }, - "TaskRunnerSettings": { - "id": "TaskRunnerSettings", - "description": "Taskrunner configuration settings.", - "type": "object", - "properties": { - "continueOnException": { - "description": "Whether to continue taskrunner if an exception is hit.", - "type": "boolean" - }, - "parallelWorkerSettings": { - "description": "The settings to pass to the parallel worker harness.", - "$ref": "WorkerSettings" - }, - "taskUser": { - "description": "The UNIX user ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"root\".", - "type": "string" - }, - "vmId": { - "description": "The ID string of the VM.", - "type": "string" - }, - "alsologtostderr": { - "description": "Whether to also send taskrunner log info to stderr.", - "type": "boolean" - }, - "taskGroup": { - "description": "The UNIX group ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"wheel\".", - "type": "string" - }, - "harnessCommand": { - "description": "The command to launch the worker harness.", - "type": "string" - }, - "logDir": { - "description": "The directory on the VM to store logs.", - "type": "string" - }, - "dataflowApiVersion": { - "type": "string", - "description": "The API version of endpoint, e.g. \"v1b3\"" - }, - "oauthScopes": { - "description": "The OAuth2 scopes to be requested by the taskrunner in order to\naccess the Cloud Dataflow API.", - "items": { - "type": "string" - }, - "type": "array" - }, - "streamingWorkerMainClass": { - "description": "The streaming worker main class name.", - "type": "string" - }, - "logUploadLocation": { - "description": "Indicates where to put logs. If this is not specified, the logs\nwill not be uploaded.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", - "type": "string" - }, - "workflowFileName": { - "description": "The file to store the workflow in.", - "type": "string" - }, - "baseTaskDir": { - "description": "The location on the worker for task-specific subdirectories.", - "type": "string" - }, - "tempStoragePrefix": { - "description": "The prefix of the resources the taskrunner should use for\ntemporary storage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", - "type": "string" - }, - "commandlinesFileName": { - "type": "string", - "description": "The file to store preprocessing commands in." - }, - "languageHint": { - "description": "The suggested backend language.", - "type": "string" - }, - "baseUrl": { - "type": "string", - "description": "The base URL for the taskrunner to use when accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs. If this field is specified, it supplies the base\nURL to use for resolving these relative URLs. The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"" - }, - "logToSerialconsole": { - "description": "Whether to send taskrunner log info to Google Compute Engine VM serial\nconsole.", - "type": "boolean" - } - } - }, - "Position": { - "description": "Position defines a position within a collection of data. The value\ncan be either the end position, a key (used with ordered\ncollections), a byte offset, or a record index.", - "type": "object", - "properties": { - "shufflePosition": { - "type": "string", - "description": "CloudPosition is a base64 encoded BatchShufflePosition (with FIXED\nsharding)." - }, - "byteOffset": { - "format": "int64", - "description": "Position is a byte offset.", - "type": "string" - }, - "concatPosition": { - "$ref": "ConcatPosition", - "description": "CloudPosition is a concat position." - }, - "end": { - "description": "Position is past all other positions. Also useful for the end\nposition of an unbounded range.", - "type": "boolean" - }, - "key": { - "description": "Position is a string key, ordered lexicographically.", - "type": "string" - }, - "recordIndex": { - "format": "int64", - "description": "Position is a record index.", - "type": "string" - } - }, - "id": "Position" - }, - "Source": { - "description": "A source that records can be read and decoded from.", - "type": "object", - "properties": { - "spec": { - "description": "The source to read from, plus its parameters.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "metadata": { - "$ref": "SourceMetadata", - "description": "Optionally, metadata for this source can be supplied right away,\navoiding a SourceGetMetadataOperation roundtrip\n(see SourceOperationRequest).\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated." - }, - "baseSpecs": { - "description": "While splitting, sources may specify the produced bundles\nas differences against another source, in order to save backend-side\nmemory and allow bigger jobs. For details, see SourceSplitRequest.\nTo support this use case, the full set of parameters of the source\nis logically obtained by taking the latest explicitly specified value\nof each parameter in the order:\nbase_specs (later items win), spec (overrides anything in base_specs).", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "type": "array" - }, - "doesNotNeedSplitting": { - "type": "boolean", - "description": "Setting this value to true hints to the framework that the source\ndoesn't need splitting, and using SourceSplitRequest on it would\nyield SOURCE_SPLIT_OUTCOME_USE_CURRENT.\n\nE.g. a file splitter may set this to true when splitting a single file\ninto a set of byte ranges of appropriate size, and set this\nto false when splitting a filepattern into individual files.\nHowever, for efficiency, a file splitter may decide to produce\nfile subranges directly from the filepattern to avoid a splitting\nround-trip.\n\nSee SourceSplitRequest for an overview of the splitting process.\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated." - }, - "codec": { - "description": "The codec to use to decode data read from the source.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - } - }, - "id": "Source" - }, - "SplitInt64": { - "description": "A representation of an int64, n, that is immune to precision loss when\nencoded in JSON.", - "type": "object", - "properties": { - "lowBits": { - "format": "uint32", - "description": "The low order bits: n & 0xffffffff.", - "type": "integer" - }, - "highBits": { - "type": "integer", - "format": "int32", - "description": "The high order bits, including the sign: n \u003e\u003e 32." - } - }, - "id": "SplitInt64" - }, - "WorkerPool": { - "description": "Describes one particular pool of Cloud Dataflow workers to be\ninstantiated by the Cloud Dataflow service in order to perform the\ncomputations required by a job. Note that a workflow job may use\nmultiple pools, in order to match the various computational\nrequirements of the various stages of the job.", - "type": "object", - "properties": { - "dataDisks": { - "description": "Data disks that are used by a VM in this workflow.", - "items": { - "$ref": "Disk" - }, - "type": "array" - }, - "subnetwork": { - "description": "Subnetwork to which VMs will be assigned, if desired. Expected to be of\nthe form \"regions/REGION/subnetworks/SUBNETWORK\".", - "type": "string" - }, - "ipConfiguration": { - "description": "Configuration for VM IPs.", - "type": "string", - "enumDescriptions": [ - "The configuration is unknown, or unspecified.", - "Workers should have public IP addresses.", - "Workers should have private IP addresses." - ], - "enum": [ - "WORKER_IP_UNSPECIFIED", - "WORKER_IP_PUBLIC", - "WORKER_IP_PRIVATE" - ] - }, - "autoscalingSettings": { - "description": "Settings for autoscaling of this WorkerPool.", - "$ref": "AutoscalingSettings" - }, - "taskrunnerSettings": { - "$ref": "TaskRunnerSettings", - "description": "Settings passed through to Google Compute Engine workers when\nusing the standard Dataflow task runner. Users should ignore\nthis field." - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Metadata to set on the Google Compute Engine VMs." - }, - "network": { - "description": "Network to which VMs will be assigned. If empty or unspecified,\nthe service will use the network \"default\".", - "type": "string" - }, - "defaultPackageSet": { - "enum": [ - "DEFAULT_PACKAGE_SET_UNKNOWN", - "DEFAULT_PACKAGE_SET_NONE", - "DEFAULT_PACKAGE_SET_JAVA", - "DEFAULT_PACKAGE_SET_PYTHON" - ], - "description": "The default package set to install. This allows the service to\nselect a default set of packages which are useful to worker\nharnesses written in a particular language.", - "type": "string", - "enumDescriptions": [ - "The default set of packages to stage is unknown, or unspecified.", - "Indicates that no packages should be staged at the worker unless\nexplicitly specified by the job.", - "Stage packages typically useful to workers written in Java.", - "Stage pacakges typically useful to workers written in Python." - ] - }, - "numThreadsPerWorker": { - "type": "integer", - "format": "int32", - "description": "The number of threads per worker harness. If empty or unspecified, the\nservice will choose a number of threads (according to the number of cores\non the selected machine type for batch, or 1 by convention for streaming)." - }, - "numWorkers": { - "format": "int32", - "description": "Number of Google Compute Engine workers in this pool needed to\nexecute the job. If zero or unspecified, the service will\nattempt to choose a reasonable default.", - "type": "integer" - }, - "zone": { - "description": "Zone to run the worker pools in. If empty or unspecified, the service\nwill attempt to choose a reasonable default.", - "type": "string" - }, - "diskSourceImage": { - "description": "Fully qualified source image for disks.", - "type": "string" - }, - "packages": { - "description": "Packages to be installed on workers.", - "items": { - "$ref": "Package" - }, - "type": "array" - }, - "teardownPolicy": { - "enum": [ - "TEARDOWN_POLICY_UNKNOWN", - "TEARDOWN_ALWAYS", - "TEARDOWN_ON_SUCCESS", - "TEARDOWN_NEVER" - ], - "description": "Sets the policy for determining when to turndown worker pool.\nAllowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and\n`TEARDOWN_NEVER`.\n`TEARDOWN_ALWAYS` means workers are always torn down regardless of whether\nthe job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down\nif the job succeeds. `TEARDOWN_NEVER` means the workers are never torn\ndown.\n\nIf the workers are not torn down by the service, they will\ncontinue to run and use Google Compute Engine VM resources in the\nuser's project until they are explicitly terminated by the user.\nBecause of this, Google recommends using the `TEARDOWN_ALWAYS`\npolicy except for small, manually supervised test jobs.\n\nIf unknown or unspecified, the service will attempt to choose a reasonable\ndefault.", - "type": "string", - "enumDescriptions": [ - "The teardown policy isn't specified, or is unknown.", - "Always teardown the resource.", - "Teardown the resource on success. This is useful for debugging\nfailures.", - "Never teardown the resource. This is useful for debugging and\ndevelopment." - ] - }, - "onHostMaintenance": { - "description": "The action to take on host maintenance, as defined by the Google\nCompute Engine API.", - "type": "string" - }, - "poolArgs": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Extra arguments for this worker pool.", - "type": "object" - }, - "diskSizeGb": { - "format": "int32", - "description": "Size of root disk for VMs, in GB. If zero or unspecified, the service will\nattempt to choose a reasonable default.", - "type": "integer" - }, - "workerHarnessContainerImage": { - "description": "Required. Docker container image that executes the Cloud Dataflow worker\nharness, residing in Google Container Registry.", - "type": "string" - }, - "diskType": { - "description": "Type of root disk for VMs. If empty or unspecified, the service will\nattempt to choose a reasonable default.", - "type": "string" - }, - "machineType": { - "description": "Machine type (e.g. \"n1-standard-1\"). If empty or unspecified, the\nservice will attempt to choose a reasonable default.", - "type": "string" - }, - "kind": { - "description": "The kind of the worker pool; currently only `harness` and `shuffle`\nare supported.", - "type": "string" - } - }, - "id": "WorkerPool" - }, - "SourceOperationRequest": { - "description": "A work item that represents the different operations that can be\nperformed on a user-defined Source specification.", - "type": "object", - "properties": { - "getMetadata": { - "description": "Information about a request to get metadata about a source.", - "$ref": "SourceGetMetadataRequest" - }, - "split": { - "description": "Information about a request to split a source.", - "$ref": "SourceSplitRequest" - } - }, - "id": "SourceOperationRequest" - }, - "WorkItem": { - "description": "WorkItem represents basic information about a WorkItem to be executed\nin the cloud.", - "type": "object", - "properties": { - "reportStatusInterval": { - "format": "google-duration", - "description": "Recommended reporting interval.", - "type": "string" - }, - "streamingSetupTask": { - "$ref": "StreamingSetupTask", - "description": "Additional information for StreamingSetupTask WorkItems." - }, - "sourceOperationTask": { - "$ref": "SourceOperationRequest", - "description": "Additional information for source operation WorkItems." - }, - "streamingConfigTask": { - "description": "Additional information for StreamingConfigTask WorkItems.", - "$ref": "StreamingConfigTask" - }, - "leaseExpireTime": { - "format": "google-datetime", - "description": "Time when the lease on this Work will expire.", - "type": "string" - }, - "initialReportIndex": { - "format": "int64", - "description": "The initial index to use when reporting the status of the WorkItem.", - "type": "string" - }, - "streamingComputationTask": { - "$ref": "StreamingComputationTask", - "description": "Additional information for StreamingComputationTask WorkItems." - }, - "shellTask": { - "description": "Additional information for ShellTask WorkItems.", - "$ref": "ShellTask" - }, - "jobId": { - "description": "Identifies the workflow job this WorkItem belongs to.", - "type": "string" - }, - "id": { - "format": "int64", - "description": "Identifies this WorkItem.", - "type": "string" - }, - "configuration": { - "description": "Work item-specific configuration as an opaque blob.", - "type": "string" - }, - "mapTask": { - "$ref": "MapTask", - "description": "Additional information for MapTask WorkItems." - }, - "seqMapTask": { - "description": "Additional information for SeqMapTask WorkItems.", - "$ref": "SeqMapTask" - }, - "packages": { - "items": { - "$ref": "Package" - }, - "type": "array", - "description": "Any required packages that need to be fetched in order to execute\nthis WorkItem." - }, - "projectId": { - "description": "Identifies the cloud project this WorkItem belongs to.", - "type": "string" - } - }, - "id": "WorkItem" - }, - "StructuredMessage": { - "id": "StructuredMessage", - "description": "A rich message format, including a human readable string, a key for\nidentifying the message, and structured data associated with the message for\nprogrammatic consumption.", - "type": "object", - "properties": { - "messageText": { - "description": "Human-readable version of message.", - "type": "string" - }, - "parameters": { - "items": { - "$ref": "Parameter" - }, - "type": "array", - "description": "The structured data associated with this message." - }, - "messageKey": { - "description": "Idenfier for this message type. Used by external systems to\ninternationalize or personalize message.", - "type": "string" - } - } - }, - "ResourceUtilizationReport": { - "description": "Worker metrics exported from workers. This contains resource utilization\nmetrics accumulated from a variety of sources. For more information, see\ngo/df-resource-signals.", - "type": "object", - "properties": { - "cpuTime": { - "items": { - "$ref": "CPUTime" - }, - "type": "array", - "description": "CPU utilization samples." - } - }, - "id": "ResourceUtilizationReport" - }, - "ReportedParallelism": { - "description": "Represents the level of parallelism in a WorkItem's input,\nreported by the worker.", - "type": "object", - "properties": { - "isInfinite": { - "description": "Specifies whether the parallelism is infinite. If true, \"value\" is\nignored.\nInfinite parallelism means the service will assume that the work item\ncan always be split into more non-empty work items by dynamic splitting.\nThis is a work-around for lack of support for infinity by the current\nJSON-based Java RPC stack.", - "type": "boolean" - }, - "value": { - "format": "double", - "description": "Specifies the level of parallelism in case it is finite.", - "type": "number" - } - }, - "id": "ReportedParallelism" - }, - "TopologyConfig": { - "description": "Global topology of the streaming Dataflow job, including all\ncomputations and their sharded locations.", - "type": "object", - "properties": { - "computations": { - "description": "The computations associated with a streaming Dataflow job.", - "items": { - "$ref": "ComputationTopology" - }, - "type": "array" - }, - "persistentStateVersion": { - "format": "int32", - "description": "Version number for persistent state.", - "type": "integer" - }, - "dataDiskAssignments": { - "description": "The disks assigned to a streaming Dataflow job.", - "items": { - "$ref": "DataDiskAssignment" - }, - "type": "array" - }, - "forwardingKeyBits": { - "format": "int32", - "description": "The size (in bits) of keys that will be assigned to source messages.", - "type": "integer" - }, - "userStageToComputationNameMap": { - "additionalProperties": { - "type": "string" - }, - "description": "Maps user stage names to stable computation names.", - "type": "object" - } - }, - "id": "TopologyConfig" - }, - "SourceSplitOptions": { - "description": "Hints for splitting a Source into bundles (parts for parallel\nprocessing) using SourceSplitRequest.", - "type": "object", - "properties": { - "desiredBundleSizeBytes": { - "type": "string", - "format": "int64", - "description": "The source should be split into a set of bundles where the estimated size\nof each is approximately this many bytes." - }, - "desiredShardSizeBytes": { - "type": "string", - "format": "int64", - "description": "DEPRECATED in favor of desired_bundle_size_bytes." - } - }, - "id": "SourceSplitOptions" - }, - "ReadInstruction": { - "type": "object", - "properties": { - "source": { - "$ref": "Source", - "description": "The source to read from." - } - }, - "id": "ReadInstruction", - "description": "An instruction that reads records.\nTakes no inputs, produces one output." - }, - "WorkerSettings": { - "id": "WorkerSettings", - "description": "Provides data to pass through to the worker harness.", - "type": "object", - "properties": { - "tempStoragePrefix": { - "description": "The prefix of the resources the system should use for temporary\nstorage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", - "type": "string" - }, - "baseUrl": { - "description": "The base URL for accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs. If this field is specified, it supplies the base\nURL to use for resolving these relative URLs. The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"", - "type": "string" - }, - "reportingEnabled": { - "description": "Whether to send work progress updates to the service.", - "type": "boolean" - }, - "servicePath": { - "description": "The Cloud Dataflow service path relative to the root URL, for example,\n\"dataflow/v1b3/projects\".", - "type": "string" - }, - "shuffleServicePath": { - "description": "The Shuffle service path relative to the root URL, for example,\n\"shuffle/v1beta1\".", - "type": "string" - }, - "workerId": { - "description": "The ID of the worker running this pipeline.", - "type": "string" - } - } - }, - "DataDiskAssignment": { - "description": "Data disk assignment for a given VM instance.", - "type": "object", - "properties": { - "vmInstance": { - "description": "VM instance name the data disks mounted to, for example\n\"myproject-1014-104817-4c2-harness-0\".", - "type": "string" - }, - "dataDisks": { - "description": "Mounted data disks. The order is important a data disk's 0-based index in\nthis list defines which persistent directory the disk is mounted to, for\nexample the list of { \"myproject-1014-104817-4c2-harness-0-disk-0\" },\n{ \"myproject-1014-104817-4c2-harness-0-disk-1\" }.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "DataDiskAssignment" - }, - "StreamingStageLocation": { - "description": "Identifies the location of a streaming computation stage, for\nstage-to-stage communication.", - "type": "object", - "properties": { - "streamId": { - "description": "Identifies the particular stream within the streaming Dataflow\njob.", - "type": "string" - } - }, - "id": "StreamingStageLocation" - }, - "ApproximateSplitRequest": { - "id": "ApproximateSplitRequest", - "description": "A suggestion by the service to the worker to dynamically split the WorkItem.", - "type": "object", - "properties": { - "position": { - "description": "A Position at which to split the work item.", - "$ref": "Position" - }, - "fractionConsumed": { - "format": "double", - "description": "A fraction at which to split the work item, from 0.0 (beginning of the\ninput) to 1.0 (end of the input).", - "type": "number" - } - } - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - }, - "type": "object" - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "Status" - }, - "ExecutionStageState": { - "description": "A message describing the state of a particular execution stage.", - "type": "object", - "properties": { - "executionStageState": { - "description": "Executions stage states allow the same set of values as JobState.", - "type": "string", - "enumDescriptions": [ - "The job's run state isn't specified.", - "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.", - "`JOB_STATE_RUNNING` indicates that the job is currently running.", - "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state. This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.", - "`JOB_STATE_FAILED` indicates that the job has failed. This is a\nterminal job state. This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.", - "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.", - "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.", - "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.", - "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.", - "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning. Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.", - "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping. Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'." - ], - "enum": [ - "JOB_STATE_UNKNOWN", - "JOB_STATE_STOPPED", - "JOB_STATE_RUNNING", - "JOB_STATE_DONE", - "JOB_STATE_FAILED", - "JOB_STATE_CANCELLED", - "JOB_STATE_UPDATED", - "JOB_STATE_DRAINING", - "JOB_STATE_DRAINED", - "JOB_STATE_PENDING", - "JOB_STATE_CANCELLING" - ] - }, - "executionStageName": { - "description": "The name of the execution stage.", - "type": "string" - }, - "currentStateTime": { - "format": "google-datetime", - "description": "The time at which the stage transitioned to this state.", - "type": "string" - } - }, - "id": "ExecutionStageState" - }, - "StreamLocation": { - "id": "StreamLocation", - "description": "Describes a stream of data, either as input to be processed or as\noutput of a streaming Dataflow job.", - "type": "object", - "properties": { - "customSourceLocation": { - "$ref": "CustomSourceLocation", - "description": "The stream is a custom source." - }, - "sideInputLocation": { - "description": "The stream is a streaming side input.", - "$ref": "StreamingSideInputLocation" - }, - "pubsubLocation": { - "$ref": "PubsubLocation", - "description": "The stream is a pubsub stream." - }, - "streamingStageLocation": { - "$ref": "StreamingStageLocation", - "description": "The stream is part of another computation within the current\nstreaming Dataflow job." - } - } - }, - "SendWorkerMessagesResponse": { - "description": "The response to the worker messages.", - "type": "object", - "properties": { - "workerMessageResponses": { - "description": "The servers response to the worker messages.", - "items": { - "$ref": "WorkerMessageResponse" - }, - "type": "array" - } - }, - "id": "SendWorkerMessagesResponse" - }, - "StreamingComputationConfig": { - "description": "Configuration information for a single streaming computation.", - "type": "object", - "properties": { - "computationId": { - "description": "Unique identifier for this computation.", - "type": "string" - }, - "stageName": { - "description": "Stage name of this computation.", - "type": "string" - }, - "systemName": { - "description": "System defined name for this computation.", - "type": "string" - }, - "instructions": { - "description": "Instructions that comprise the computation.", - "items": { - "$ref": "ParallelInstruction" - }, - "type": "array" - } - }, - "id": "StreamingComputationConfig" - }, - "TransformSummary": { - "description": "Description of the type, names/ids, and input/outputs for a transform.", - "type": "object", - "properties": { - "kind": { - "enumDescriptions": [ - "Unrecognized transform type.", - "ParDo transform.", - "Group By Key transform.", - "Flatten transform.", - "Read transform.", - "Write transform.", - "Constructs from a constant value, such as with Create.of.", - "Creates a Singleton view of a collection.", - "Opening or closing a shuffle session, often as part of a GroupByKey." - ], - "enum": [ - "UNKNOWN_KIND", - "PAR_DO_KIND", - "GROUP_BY_KEY_KIND", - "FLATTEN_KIND", - "READ_KIND", - "WRITE_KIND", - "CONSTANT_KIND", - "SINGLETON_KIND", - "SHUFFLE_KIND" - ], - "description": "Type of transform.", - "type": "string" - }, - "inputCollectionName": { - "description": "User names for all collection inputs to this transform.", - "items": { - "type": "string" - }, - "type": "array" - }, - "name": { - "description": "User provided name for this transform instance.", - "type": "string" - }, - "id": { - "description": "SDK generated id of this transform instance.", - "type": "string" - }, - "displayData": { - "description": "Transform-specific display data.", - "items": { - "$ref": "DisplayData" - }, - "type": "array" - }, - "outputCollectionName": { - "description": "User names for all collection outputs to this transform.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TransformSummary" - }, - "LeaseWorkItemResponse": { - "description": "Response to a request to lease WorkItems.", - "type": "object", - "properties": { - "workItems": { - "description": "A list of the leased WorkItems.", - "items": { - "$ref": "WorkItem" - }, - "type": "array" - } - }, - "id": "LeaseWorkItemResponse" - }, - "LaunchTemplateParameters": { - "properties": { - "jobName": { - "description": "Required. The job name to use for the created job.", - "type": "string" - }, - "environment": { - "$ref": "RuntimeEnvironment", - "description": "The runtime environment for the job." - }, - "parameters": { - "additionalProperties": { - "type": "string" - }, - "description": "The runtime parameters to pass to the job.", - "type": "object" - } - }, - "id": "LaunchTemplateParameters", - "description": "Parameters to provide to the template being launched.", - "type": "object" - }, - "Sink": { - "description": "A sink that records can be encoded and written to.", - "type": "object", - "properties": { - "codec": { - "description": "The codec to use to encode data written to the sink.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "spec": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The sink to write to, plus its parameters.", - "type": "object" - } - }, - "id": "Sink" - }, - "FlattenInstruction": { - "description": "An instruction that copies its inputs (zero or more) to its (single) output.", - "type": "object", - "properties": { - "inputs": { - "description": "Describes the inputs to the flatten instruction.", - "items": { - "$ref": "InstructionInput" - }, - "type": "array" - } - }, - "id": "FlattenInstruction" - }, - "PartialGroupByKeyInstruction": { - "properties": { - "originalCombineValuesStepName": { - "description": "If this instruction includes a combining function, this is the name of the\nCombineValues instruction lifted into this instruction.", - "type": "string" - }, - "sideInputs": { - "description": "Zero or more side inputs.", - "items": { - "$ref": "SideInputInfo" - }, - "type": "array" - }, - "input": { - "description": "Describes the input to the partial group-by-key instruction.", - "$ref": "InstructionInput" - }, - "inputElementCodec": { - "additionalProperties": { - "type": "any", - "description": "Properties of the object." - }, - "description": "The codec to use for interpreting an element in the input PTable.", - "type": "object" - }, - "valueCombiningFn": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The value combining function to invoke." - }, - "originalCombineValuesInputStoreName": { - "description": "If this instruction includes a combining function this is the name of the\nintermediate store between the GBK and the CombineValues.", - "type": "string" - } - }, - "id": "PartialGroupByKeyInstruction", - "description": "An instruction that does a partial group-by-key.\nOne input and one output.", - "type": "object" - }, - "StageSource": { - "description": "Description of an input or output of an execution stage.", - "type": "object", - "properties": { - "sizeBytes": { - "format": "int64", - "description": "Size of the source, if measurable.", - "type": "string" - }, - "name": { - "description": "Dataflow service generated name for this source.", - "type": "string" - }, - "userName": { - "description": "Human-readable name for this source; may be user or system generated.", - "type": "string" - }, - "originalTransformOrCollection": { - "description": "User name for the original user transform or collection with which this\nsource is most closely associated.", - "type": "string" - } - }, - "id": "StageSource" - }, - "InstructionInput": { - "description": "An input of an instruction, as a reference to an output of a\nproducer instruction.", - "type": "object", - "properties": { - "producerInstructionIndex": { - "format": "int32", - "description": "The index (origin zero) of the parallel instruction that produces\nthe output to be consumed by this input. This index is relative\nto the list of instructions in this input's instruction's\ncontaining MapTask.", - "type": "integer" - }, - "outputNum": { - "format": "int32", - "description": "The output index (origin zero) within the producer.", - "type": "integer" - } - }, - "id": "InstructionInput" - }, - "StringList": { - "properties": { - "elements": { - "description": "Elements of the list.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "StringList", - "description": "A metric value representing a list of strings.", - "type": "object" - }, - "DisplayData": { - "description": "Data provided with a pipeline or transform to provide descriptive info.", - "type": "object", - "properties": { - "timestampValue": { - "format": "google-datetime", - "description": "Contains value if the data is of timestamp type.", - "type": "string" - }, - "javaClassValue": { - "description": "Contains value if the data is of java class type.", - "type": "string" - }, - "boolValue": { - "description": "Contains value if the data is of a boolean type.", - "type": "boolean" - }, - "strValue": { - "type": "string", - "description": "Contains value if the data is of string type." - }, - "durationValue": { - "format": "google-duration", - "description": "Contains value if the data is of duration type.", - "type": "string" - }, - "int64Value": { - "format": "int64", - "description": "Contains value if the data is of int64 type.", - "type": "string" - }, - "namespace": { - "description": "The namespace for the key. This is usually a class name or programming\nlanguage namespace (i.e. python module) which defines the display data.\nThis allows a dax monitoring system to specially handle the data\nand perform custom rendering.", - "type": "string" - }, - "floatValue": { - "format": "float", - "description": "Contains value if the data is of float type.", - "type": "number" - }, - "key": { - "description": "The key identifying the display data.\nThis is intended to be used as a label for the display data\nwhen viewed in a dax monitoring system.", - "type": "string" - }, - "shortStrValue": { - "description": "A possible additional shorter value to display.\nFor example a java_class_name_value of com.mypackage.MyDoFn\nwill be stored with MyDoFn as the short_str_value and\ncom.mypackage.MyDoFn as the java_class_name value.\nshort_str_value can be displayed and java_class_name_value\nwill be displayed as a tooltip.", - "type": "string" - }, - "url": { - "description": "An optional full URL.", - "type": "string" - }, - "label": { - "description": "An optional label to display in a dax UI for the element.", - "type": "string" - } - }, - "id": "DisplayData" - }, - "GetDebugConfigRequest": { - "description": "Request to get updated debug configuration for component.", - "type": "object", - "properties": { - "componentId": { - "type": "string", - "description": "The internal component id for which debug configuration is\nrequested." - }, - "workerId": { - "description": "The worker id, i.e., VM hostname.", - "type": "string" - }, - "location": { - "description": "The location which contains the job specified by job_id.", - "type": "string" - } - }, - "id": "GetDebugConfigRequest" - }, - "LeaseWorkItemRequest": { - "type": "object", - "properties": { - "workerCapabilities": { - "description": "Worker capabilities. WorkItems might be limited to workers with specific\ncapabilities.", - "items": { - "type": "string" - }, - "type": "array" - }, - "workerId": { - "type": "string", - "description": "Identifies the worker leasing work -- typically the ID of the\nvirtual machine running the worker." - }, - "requestedLeaseDuration": { - "format": "google-duration", - "description": "The initial lease period.", - "type": "string" - }, - "currentWorkerTime": { - "format": "google-datetime", - "description": "The current timestamp at the worker.", - "type": "string" - }, - "location": { - "description": "The location which contains the WorkItem's job.", - "type": "string" - }, - "workItemTypes": { - "description": "Filter for WorkItem type.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "LeaseWorkItemRequest", - "description": "Request to lease WorkItems." - }, - "GetTemplateResponse": { - "properties": { - "metadata": { - "$ref": "TemplateMetadata", - "description": "The template metadata describing the template name, available\nparameters, etc." - }, - "status": { - "$ref": "Status", - "description": "The status of the get template request. Any problems with the\nrequest will be indicated in the error_details." - } - }, - "id": "GetTemplateResponse", - "description": "The response to a GetTemplate request.", - "type": "object" - }, - "Parameter": { - "type": "object", - "properties": { - "value": { - "description": "Value for this parameter.", - "type": "any" - }, - "key": { - "description": "Key or name for this parameter.", - "type": "string" - } - }, - "id": "Parameter", - "description": "Structured data associated with this message." - }, - "ReportWorkItemStatusRequest": { - "properties": { - "workItemStatuses": { - "description": "The order is unimportant, except that the order of the\nWorkItemServiceState messages in the ReportWorkItemStatusResponse\ncorresponds to the order of WorkItemStatus messages here.", - "items": { - "$ref": "WorkItemStatus" - }, - "type": "array" - }, - "currentWorkerTime": { - "format": "google-datetime", - "description": "The current timestamp at the worker.", - "type": "string" - }, - "workerId": { - "description": "The ID of the worker reporting the WorkItem status. If this\ndoes not match the ID of the worker which the Dataflow service\nbelieves currently has the lease on the WorkItem, the report\nwill be dropped (with an error response).", - "type": "string" - }, - "location": { - "description": "The location which contains the WorkItem's job.", - "type": "string" - } - }, - "id": "ReportWorkItemStatusRequest", - "description": "Request to report the status of WorkItems.", - "type": "object" - }, - "StreamingConfigTask": { - "description": "A task that carries configuration information for streaming computations.", - "type": "object", - "properties": { - "userStepToStateFamilyNameMap": { - "additionalProperties": { - "type": "string" - }, - "description": "Map from user step names to state families.", - "type": "object" - }, - "windmillServicePort": { - "format": "int64", - "description": "If present, the worker must use this port to communicate with Windmill\nService dispatchers. Only applicable when windmill_service_endpoint is\nspecified.", - "type": "string" - }, - "streamingComputationConfigs": { - "description": "Set of computation configuration information.", - "items": { - "$ref": "StreamingComputationConfig" - }, - "type": "array" - }, - "windmillServiceEndpoint": { - "type": "string", - "description": "If present, the worker must use this endpoint to communicate with Windmill\nService dispatchers, otherwise the worker must continue to use whatever\nendpoint it had been using." - } - }, - "id": "StreamingConfigTask" - }, - "PipelineDescription": { - "description": "A descriptive representation of submitted pipeline as well as the executed\nform. This data is provided by the Dataflow service for ease of visualizing\nthe pipeline and interpretting Dataflow provided metrics.", - "type": "object", - "properties": { - "originalPipelineTransform": { - "description": "Description of each transform in the pipeline and collections between them.", - "items": { - "$ref": "TransformSummary" - }, - "type": "array" - }, - "displayData": { - "description": "Pipeline level display data.", - "items": { - "$ref": "DisplayData" - }, - "type": "array" - }, - "executionPipelineStage": { - "description": "Description of each stage of execution of the pipeline.", - "items": { - "$ref": "ExecutionStageSummary" - }, - "type": "array" - } - }, - "id": "PipelineDescription" - }, - "Step": { - "description": "Defines a particular step within a Cloud Dataflow job.\n\nA job consists of multiple steps, each of which performs some\nspecific operation as part of the overall job. Data is typically\npassed from one step to another as part of the job.\n\nHere's an example of a sequence of steps which together implement a\nMap-Reduce job:\n\n * Read a collection of data from some source, parsing the\n collection's elements.\n\n * Validate the elements.\n\n * Apply a user-defined function to map each element to some value\n and extract an element-specific key value.\n\n * Group elements with the same key into a single element with\n that key, transforming a multiply-keyed collection into a\n uniquely-keyed collection.\n\n * Write the elements out to some data sink.\n\nNote that the Cloud Dataflow service may be used to run many different\ntypes of jobs, not just Map-Reduce.", - "type": "object", - "properties": { - "name": { - "description": "The name that identifies the step. This must be unique for each\nstep with respect to all other steps in the Cloud Dataflow job.", - "type": "string" - }, - "kind": { - "description": "The kind of step in the Cloud Dataflow job.", - "type": "string" - }, - "properties": { - "description": "Named properties associated with the step. Each kind of\npredefined step has its own required set of properties.\nMust be provided on Create. Only retrieved with JOB_VIEW_ALL.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - } - }, - "id": "Step" - }, - "JobExecutionInfo": { - "description": "Additional information about how a Cloud Dataflow job will be executed that\nisn't contained in the submitted job.", - "type": "object", - "properties": { - "stages": { - "description": "A mapping from each stage to the information about that stage.", - "type": "object", - "additionalProperties": { - "$ref": "JobExecutionStageInfo" - } - } - }, - "id": "JobExecutionInfo" - }, - "FailedLocation": { - "id": "FailedLocation", - "description": "Indicates which location failed to respond to a request for data.", - "type": "object", - "properties": { - "name": { - "description": "The name of the failed location.", - "type": "string" - } - } - }, - "Disk": { - "description": "Describes the data disk used by a workflow job.", - "type": "object", - "properties": { - "diskType": { - "description": "Disk storage type, as defined by Google Compute Engine. This\nmust be a disk type appropriate to the project and zone in which\nthe workers will run. If unknown or unspecified, the service\nwill attempt to choose a reasonable default.\n\nFor example, the standard persistent disk type is a resource name\ntypically ending in \"pd-standard\". If SSD persistent disks are\navailable, the resource name typically ends with \"pd-ssd\". The\nactual valid values are defined the Google Compute Engine API,\nnot by the Cloud Dataflow API; consult the Google Compute Engine\ndocumentation for more information about determining the set of\navailable disk types for a particular project and zone.\n\nGoogle Compute Engine Disk types are local to a particular\nproject in a particular zone, and so the resource name will\ntypically look something like this:\n\ncompute.googleapis.com/projects/project-id/zones/zone/diskTypes/pd-standard", - "type": "string" - }, - "sizeGb": { - "format": "int32", - "description": "Size of disk in GB. If zero or unspecified, the service will\nattempt to choose a reasonable default.", - "type": "integer" - }, - "mountPoint": { - "type": "string", - "description": "Directory in a VM where disk is mounted." - } - }, - "id": "Disk" - }, - "CounterMetadata": { - "id": "CounterMetadata", - "description": "CounterMetadata includes all static non-name non-value counter attributes.", - "type": "object", - "properties": { - "standardUnits": { - "type": "string", - "enumDescriptions": [ - "Counter returns a value in bytes.", - "Counter returns a value in bytes per second.", - "Counter returns a value in milliseconds.", - "Counter returns a value in microseconds.", - "Counter returns a value in nanoseconds.", - "Counter returns a timestamp in milliseconds.", - "Counter returns a timestamp in microseconds.", - "Counter returns a timestamp in nanoseconds." - ], - "enum": [ - "BYTES", - "BYTES_PER_SEC", - "MILLISECONDS", - "MICROSECONDS", - "NANOSECONDS", - "TIMESTAMP_MSEC", - "TIMESTAMP_USEC", - "TIMESTAMP_NSEC" - ], - "description": "System defined Units, see above enum." - }, - "otherUnits": { - "type": "string", - "description": "A string referring to the unit type." - }, - "description": { - "description": "Human-readable description of the counter semantics.", - "type": "string" - }, - "kind": { - "enumDescriptions": [ - "Counter aggregation kind was not set.", - "Aggregated value is the sum of all contributed values.", - "Aggregated value is the max of all contributed values.", - "Aggregated value is the min of all contributed values.", - "Aggregated value is the mean of all contributed values.", - "Aggregated value represents the logical 'or' of all contributed values.", - "Aggregated value represents the logical 'and' of all contributed values.", - "Aggregated value is a set of unique contributed values.", - "Aggregated value captures statistics about a distribution." - ], - "enum": [ - "INVALID", - "SUM", - "MAX", - "MIN", - "MEAN", - "OR", - "AND", - "SET", - "DISTRIBUTION" - ], - "description": "Counter aggregation kind.", - "type": "string" - } - } - }, - "ListJobMessagesResponse": { - "description": "Response to a request to list job messages.", - "type": "object", - "properties": { - "jobMessages": { - "description": "Messages in ascending timestamp order.", - "items": { - "$ref": "JobMessage" - }, - "type": "array" - }, - "nextPageToken": { - "description": "The token to obtain the next page of results if there are more.", - "type": "string" - }, - "autoscalingEvents": { - "items": { - "$ref": "AutoscalingEvent" - }, - "type": "array", - "description": "Autoscaling events in ascending timestamp order." - } - }, - "id": "ListJobMessagesResponse" - }, - "ApproximateReportedProgress": { - "description": "A progress measurement of a WorkItem by a worker.", - "type": "object", - "properties": { - "consumedParallelism": { - "$ref": "ReportedParallelism", - "description": "Total amount of parallelism in the portion of input of this task that has\nalready been consumed and is no longer active. In the first two examples\nabove (see remaining_parallelism), the value should be 29 or 2\nrespectively. The sum of remaining_parallelism and consumed_parallelism\nshould equal the total amount of parallelism in this work item. If\nspecified, must be finite." - }, - "remainingParallelism": { - "description": "Total amount of parallelism in the input of this task that remains,\n(i.e. can be delegated to this task and any new tasks via dynamic\nsplitting). Always at least 1 for non-finished work items and 0 for\nfinished.\n\n\"Amount of parallelism\" refers to how many non-empty parts of the input\ncan be read in parallel. This does not necessarily equal number\nof records. An input that can be read in parallel down to the\nindividual records is called \"perfectly splittable\".\nAn example of non-perfectly parallelizable input is a block-compressed\nfile format where a block of records has to be read as a whole,\nbut different blocks can be read in parallel.\n\nExamples:\n* If we are processing record #30 (starting at 1) out of 50 in a perfectly\n splittable 50-record input, this value should be 21 (20 remaining + 1\n current).\n* If we are reading through block 3 in a block-compressed file consisting\n of 5 blocks, this value should be 3 (since blocks 4 and 5 can be\n processed in parallel by new tasks via dynamic splitting and the current\n task remains processing block 3).\n* If we are reading through the last block in a block-compressed file,\n or reading or processing the last record in a perfectly splittable\n input, this value should be 1, because apart from the current task, no\n additional remainder can be split off.", - "$ref": "ReportedParallelism" - }, - "position": { - "$ref": "Position", - "description": "A Position within the work to represent a progress." - }, - "fractionConsumed": { - "format": "double", - "description": "Completion as fraction of the input consumed, from 0.0 (beginning, nothing\nconsumed), to 1.0 (end of the input, entire input consumed).", - "type": "number" - } - }, - "id": "ApproximateReportedProgress" - }, - "IntegerList": { - "description": "A metric value representing a list of integers.", - "type": "object", - "properties": { - "elements": { - "description": "Elements of the list.", - "items": { - "$ref": "SplitInt64" - }, - "type": "array" - } - }, - "id": "IntegerList" - }, - "StateFamilyConfig": { - "description": "State family configuration.", - "type": "object", - "properties": { - "isRead": { - "description": "If true, this family corresponds to a read operation.", - "type": "boolean" - }, - "stateFamily": { - "description": "The state family value.", - "type": "string" - } - }, - "id": "StateFamilyConfig" - }, - "ResourceUtilizationReportResponse": { - "properties": {}, - "id": "ResourceUtilizationReportResponse", - "description": "Service-side response to WorkerMessage reporting resource utilization.", - "type": "object" - }, - "SourceSplitResponse": { - "description": "The response to a SourceSplitRequest.", - "type": "object", - "properties": { - "outcome": { - "enum": [ - "SOURCE_SPLIT_OUTCOME_UNKNOWN", - "SOURCE_SPLIT_OUTCOME_USE_CURRENT", - "SOURCE_SPLIT_OUTCOME_SPLITTING_HAPPENED" - ], - "description": "Indicates whether splitting happened and produced a list of bundles.\nIf this is USE_CURRENT_SOURCE_AS_IS, the current source should\nbe processed \"as is\" without splitting. \"bundles\" is ignored in this case.\nIf this is SPLITTING_HAPPENED, then \"bundles\" contains a list of\nbundles into which the source was split.", - "type": "string", - "enumDescriptions": [ - "The source split outcome is unknown, or unspecified.", - "The current source should be processed \"as is\" without splitting.", - "Splitting produced a list of bundles." - ] - }, - "bundles": { - "description": "If outcome is SPLITTING_HAPPENED, then this is a list of bundles\ninto which the source was split. Otherwise this field is ignored.\nThis list can be empty, which means the source represents an empty input.", - "items": { - "$ref": "DerivedSource" - }, - "type": "array" - }, - "shards": { - "description": "DEPRECATED in favor of bundles.", - "items": { - "$ref": "SourceSplitShard" - }, - "type": "array" - } - }, - "id": "SourceSplitResponse" - }, - "ParallelInstruction": { - "id": "ParallelInstruction", - "description": "Describes a particular operation comprising a MapTask.", - "type": "object", - "properties": { - "outputs": { - "description": "Describes the outputs of the instruction.", - "items": { - "$ref": "InstructionOutput" - }, - "type": "array" - }, - "name": { - "type": "string", - "description": "User-provided name of this operation." - }, - "read": { - "description": "Additional information for Read instructions.", - "$ref": "ReadInstruction" - }, - "parDo": { - "$ref": "ParDoInstruction", - "description": "Additional information for ParDo instructions." - }, - "originalName": { - "description": "System-defined name for the operation in the original workflow graph.", - "type": "string" - }, - "flatten": { - "$ref": "FlattenInstruction", - "description": "Additional information for Flatten instructions." - }, - "write": { - "$ref": "WriteInstruction", - "description": "Additional information for Write instructions." - }, - "systemName": { - "type": "string", - "description": "System-defined name of this operation.\nUnique across the workflow." - }, - "partialGroupByKey": { - "$ref": "PartialGroupByKeyInstruction", - "description": "Additional information for PartialGroupByKey instructions." - } - } - }, - "Package": { - "type": "object", - "properties": { - "location": { - "description": "The resource to read the package from. The supported resource type is:\n\nGoogle Cloud Storage:\n\n storage.googleapis.com/{bucket}\n bucket.storage.googleapis.com/", - "type": "string" - }, - "name": { - "description": "The name of the package.", - "type": "string" - } - }, - "id": "Package", - "description": "The packages that must be installed in order for a worker to run the\nsteps of the Cloud Dataflow job that will be assigned to its worker\npool.\n\nThis is the mechanism by which the Cloud Dataflow SDK causes code to\nbe loaded onto the workers. For example, the Cloud Dataflow Java SDK\nmight use this to install jars containing the user's code and all of the\nvarious dependencies (libraries, data files, etc.) required in order\nfor that code to run." - }, - "KeyRangeDataDiskAssignment": { - "id": "KeyRangeDataDiskAssignment", - "description": "Data disk assignment information for a specific key-range of a sharded\ncomputation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON.", - "type": "object", - "properties": { - "dataDisk": { - "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".", - "type": "string" - }, - "start": { - "description": "The start (inclusive) of the key range.", - "type": "string" - }, - "end": { - "description": "The end (exclusive) of the key range.", - "type": "string" - } - } - }, - "ParDoInstruction": { - "id": "ParDoInstruction", - "description": "An instruction that does a ParDo operation.\nTakes one main input and zero or more side inputs, and produces\nzero or more outputs.\nRuns user code.", - "type": "object", - "properties": { - "numOutputs": { - "format": "int32", - "description": "The number of outputs.", - "type": "integer" - }, - "sideInputs": { - "description": "Zero or more side inputs.", - "items": { - "$ref": "SideInputInfo" - }, - "type": "array" - }, - "multiOutputInfos": { - "description": "Information about each of the outputs, if user_fn is a MultiDoFn.", - "items": { - "$ref": "MultiOutputInfo" - }, - "type": "array" - }, - "userFn": { - "description": "The user function to invoke.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "input": { - "$ref": "InstructionInput", - "description": "The input." - } - } - }, - "WorkerShutdownNotice": { - "description": "Shutdown notification from workers. This is to be sent by the shutdown\nscript of the worker VM so that the backend knows that the VM is being\nshut down.", - "type": "object", - "properties": { - "reason": { - "description": "Optional reason to be attached for the shutdown notice.\nFor example: \"PREEMPTION\" would indicate the VM is being shut down because\nof preemption. Other possible reasons may be added in the future.", - "type": "string" - } - }, - "id": "WorkerShutdownNotice" - }, - "MetricUpdate": { - "description": "Describes the state of a metric.", - "type": "object", - "properties": { - "updateTime": { - "format": "google-datetime", - "description": "Timestamp associated with the metric value. Optional when workers are\nreporting work progress; it will be filled in responses from the\nmetrics API.", - "type": "string" - }, - "name": { - "$ref": "MetricStructuredName", - "description": "Name of the metric." - }, - "distribution": { - "description": "A struct value describing properties of a distribution of numeric values.", - "type": "any" - }, - "set": { - "description": "Worker-computed aggregate value for the \"Set\" aggregation kind. The only\npossible value type is a list of Values whose type can be Long, Double,\nor String, according to the metric's type. All Values in the list must\nbe of the same type.", - "type": "any" - }, - "cumulative": { - "description": "True if this metric is reported as the total cumulative aggregate\nvalue accumulated since the worker started working on this WorkItem.\nBy default this is false, indicating that this metric is reported\nas a delta that is not associated with any WorkItem.", - "type": "boolean" - }, - "internal": { - "description": "Worker-computed aggregate value for internal use by the Dataflow\nservice.", - "type": "any" - }, - "kind": { - "description": "Metric aggregation kind. The possible metric aggregation kinds are\n\"Sum\", \"Max\", \"Min\", \"Mean\", \"Set\", \"And\", \"Or\", and \"Distribution\".\nThe specified aggregation kind is case-insensitive.\n\nIf omitted, this is not an aggregated value but instead\na single metric sample value.", - "type": "string" - }, - "scalar": { - "description": "Worker-computed aggregate value for aggregation kinds \"Sum\", \"Max\", \"Min\",\n\"And\", and \"Or\". The possible value types are Long, Double, and Boolean.", - "type": "any" - }, - "meanCount": { - "description": "Worker-computed aggregate value for the \"Mean\" aggregation kind.\nThis holds the count of the aggregated values and is used in combination\nwith mean_sum above to obtain the actual mean aggregate value.\nThe only possible value type is Long.", - "type": "any" - }, - "meanSum": { - "description": "Worker-computed aggregate value for the \"Mean\" aggregation kind.\nThis holds the sum of the aggregated values and is used in combination\nwith mean_count below to obtain the actual mean aggregate value.\nThe only possible value types are Long and Double.", - "type": "any" - } - }, - "id": "MetricUpdate" - }, - "CounterStructuredName": { - "properties": { - "componentStepName": { - "description": "Name of the optimized step being executed by the workers.", - "type": "string" - }, - "portion": { - "enum": [ - "ALL", - "KEY", - "VALUE" - ], - "description": "Portion of this counter, either key or value.", - "type": "string", - "enumDescriptions": [ - "Counter portion has not been set.", - "Counter reports a key.", - "Counter reports a value." - ] - }, - "originalShuffleStepName": { - "description": "The GroupByKey step name from the original graph.", - "type": "string" - }, - "originalStepName": { - "description": "System generated name of the original step in the user's graph, before\noptimization.", - "type": "string" - }, - "workerId": { - "description": "ID of a particular worker.", - "type": "string" - }, - "originNamespace": { - "description": "A string containing a more specific namespace of the counter's origin.", - "type": "string" - }, - "sideInput": { - "$ref": "SideInputId", - "description": "ID of a side input being read from/written to. Side inputs are identified\nby a pair of (reader, input_index). The reader is usually equal to the\noriginal name, but it may be different, if a ParDo emits it's Iterator /\nMap side input object." - }, - "executionStepName": { - "description": "Name of the stage. An execution step contains multiple component steps.", - "type": "string" - }, - "name": { - "description": "Counter name. Not necessarily globally-unique, but unique within the\ncontext of the other fields.\nRequired.", - "type": "string" - }, - "origin": { - "type": "string", - "enumDescriptions": [ - "Counter was created by the Dataflow system.", - "Counter was created by the user." - ], - "enum": [ - "SYSTEM", - "USER" - ], - "description": "One of the standard Origins defined above." - } - }, - "id": "CounterStructuredName", - "description": "Identifies a counter within a per-job namespace. Counters whose structured\nnames are the same get merged into a single value for the job.", - "type": "object" - }, - "ApproximateProgress": { - "description": "Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest.", - "type": "object", - "properties": { - "remainingTime": { - "format": "google-duration", - "description": "Obsolete.", - "type": "string" - }, - "position": { - "$ref": "Position", - "description": "Obsolete." - }, - "percentComplete": { - "format": "float", - "description": "Obsolete.", - "type": "number" - } - }, - "id": "ApproximateProgress" - }, - "WorkerMessageResponse": { - "description": "A worker_message response allows the server to pass information to the\nsender.", - "type": "object", - "properties": { - "workerShutdownNoticeResponse": { - "description": "Service's response to shutdown notice (currently empty).", - "$ref": "WorkerShutdownNoticeResponse" - }, - "workerMetricsResponse": { - "description": "Service's response to reporting worker metrics (currently empty).", - "$ref": "ResourceUtilizationReportResponse" - }, - "workerHealthReportResponse": { - "$ref": "WorkerHealthReportResponse", - "description": "The service's response to a worker's health report." - } - }, - "id": "WorkerMessageResponse" - }, - "TemplateMetadata": { - "description": "Metadata describing a template.", - "type": "object", - "properties": { - "parameters": { - "description": "The parameters for the template.", - "items": { - "$ref": "ParameterMetadata" - }, - "type": "array" - }, - "name": { - "description": "Required. The name of the template.", - "type": "string" - }, - "description": { - "description": "Optional. A description of the template.", - "type": "string" - } - }, - "id": "TemplateMetadata" - }, - "WorkerMessage": { - "description": "WorkerMessage provides information to the backend about a worker.", - "type": "object", - "properties": { - "labels": { - "description": "Labels are used to group WorkerMessages.\nFor example, a worker_message about a particular container\nmight have the labels:\n{ \"JOB_ID\": \"2015-04-22\",\n \"WORKER_ID\": \"wordcount-vm-2015…\"\n \"CONTAINER_TYPE\": \"worker\",\n \"CONTAINER_ID\": \"ac1234def\"}\nLabel tags typically correspond to Label enum values. However, for ease\nof development other strings can be used as tags. LABEL_UNSPECIFIED should\nnot be used here.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "time": { - "format": "google-datetime", - "description": "The timestamp of the worker_message.", - "type": "string" - }, - "workerShutdownNotice": { - "description": "Shutdown notice by workers.", - "$ref": "WorkerShutdownNotice" - }, - "workerHealthReport": { - "$ref": "WorkerHealthReport", - "description": "The health of a worker." - }, - "workerMessageCode": { - "$ref": "WorkerMessageCode", - "description": "A worker message code." - }, - "workerMetrics": { - "$ref": "ResourceUtilizationReport", - "description": "Resource metrics reported by workers." - } - }, - "id": "WorkerMessage" - }, - "WorkerShutdownNoticeResponse": { - "description": "Service-side response to WorkerMessage issuing shutdown notice.", - "type": "object", - "properties": {}, - "id": "WorkerShutdownNoticeResponse" - }, - "JobMetrics": { - "description": "JobMetrics contains a collection of metrics descibing the detailed progress\nof a Dataflow job. Metrics correspond to user-defined and system-defined\nmetrics in the job.\n\nThis resource captures only the most recent values of each metric;\ntime-series data can be queried for them (under the same metric names)\nfrom Cloud Monitoring.", - "type": "object", - "properties": { - "metrics": { - "description": "All metrics for this job.", - "items": { - "$ref": "MetricUpdate" - }, - "type": "array" - }, - "metricTime": { - "format": "google-datetime", - "description": "Timestamp as of which metric values are current.", - "type": "string" - } - }, - "id": "JobMetrics" - }, - "FloatingPointList": { - "description": "A metric value representing a list of floating point numbers.", - "type": "object", - "properties": { - "elements": { - "description": "Elements of the list.", - "items": { - "format": "double", - "type": "number" - }, - "type": "array" - } - }, - "id": "FloatingPointList" - }, - "CounterUpdate": { - "description": "An update to a Counter sent from a worker.", - "type": "object", - "properties": { - "floatingPointList": { - "description": "List of floating point numbers, for Set.", - "$ref": "FloatingPointList" - }, - "integer": { - "$ref": "SplitInt64", - "description": "Integer value for Sum, Max, Min." - }, - "structuredNameAndMetadata": { - "description": "Counter structured name and metadata.", - "$ref": "CounterStructuredNameAndMetadata" - }, - "integerList": { - "$ref": "IntegerList", - "description": "List of integers, for Set." - }, - "integerMean": { - "description": "Integer mean aggregation value for Mean.", - "$ref": "IntegerMean" - }, - "floatingPoint": { - "format": "double", - "description": "Floating point value for Sum, Max, Min.", - "type": "number" - }, - "internal": { - "description": "Value for internally-defined counters used by the Dataflow service.", - "type": "any" - }, - "cumulative": { - "description": "True if this counter is reported as the total cumulative aggregate\nvalue accumulated since the worker started working on this WorkItem.\nBy default this is false, indicating that this counter is reported\nas a delta.", - "type": "boolean" - }, - "floatingPointMean": { - "$ref": "FloatingPointMean", - "description": "Floating point mean aggregation value for Mean." - }, - "boolean": { - "description": "Boolean value for And, Or.", - "type": "boolean" - }, - "nameAndKind": { - "$ref": "NameAndKind", - "description": "Counter name and aggregation type." - }, - "distribution": { - "$ref": "DistributionUpdate", - "description": "Distribution data" - }, - "stringList": { - "description": "List of strings, for Set.", - "$ref": "StringList" - }, - "shortId": { - "format": "int64", - "description": "The service-generated short identifier for this counter.\nThe short_id -\u003e (name, metadata) mapping is constant for the lifetime of\na job.", - "type": "string" - } - }, - "id": "CounterUpdate" - }, - "SourceMetadata": { - "description": "Metadata about a Source useful for automatically optimizing\nand tuning the pipeline, etc.", - "type": "object", - "properties": { - "estimatedSizeBytes": { - "format": "int64", - "description": "An estimate of the total size (in bytes) of the data that would be\nread from this source. This estimate is in terms of external storage\nsize, before any decompression or other processing done by the reader.", - "type": "string" - }, - "infinite": { - "description": "Specifies that the size of this source is known to be infinite\n(this is a streaming source).", - "type": "boolean" - }, - "producesSortedKeys": { - "description": "Whether this source is known to produce key/value pairs with\nthe (encoded) keys in lexicographically sorted order.", - "type": "boolean" - } - }, - "id": "SourceMetadata" - }, - "DistributionUpdate": { - "description": "A metric value representing a distribution.", - "type": "object", - "properties": { - "max": { - "description": "The maximum value present in the distribution.", - "$ref": "SplitInt64" - }, - "logBuckets": { - "description": "(Optional) Logarithmic histogram of values.\nEach log may be in no more than one bucket. Order does not matter.", - "items": { - "$ref": "LogBucket" - }, - "type": "array" - }, - "count": { - "$ref": "SplitInt64", - "description": "The count of the number of elements present in the distribution." - }, - "min": { - "description": "The minimum value present in the distribution.", - "$ref": "SplitInt64" - }, - "sumOfSquares": { - "type": "number", - "format": "double", - "description": "Use a double since the sum of squares is likely to overflow int64." - }, - "sum": { - "description": "Use an int64 since we'd prefer the added precision. If overflow is a common\nproblem we can detect it and use an additional int64 or a double.", - "$ref": "SplitInt64" - } - }, - "id": "DistributionUpdate" - }, - "WorkerHealthReportResponse": { - "description": "WorkerHealthReportResponse contains information returned to the worker\nin response to a health ping.", - "type": "object", - "properties": { - "reportInterval": { - "format": "google-duration", - "description": "A positive value indicates the worker should change its reporting interval\nto the specified value.\n\nThe default value of zero means no change in report rate is requested by\nthe server.", - "type": "string" - } - }, - "id": "WorkerHealthReportResponse" - }, - "SourceFork": { - "description": "DEPRECATED in favor of DynamicSourceSplit.", - "type": "object", - "properties": { - "primarySource": { - "$ref": "DerivedSource", - "description": "DEPRECATED" - }, - "residual": { - "description": "DEPRECATED", - "$ref": "SourceSplitShard" - }, - "residualSource": { - "$ref": "DerivedSource", - "description": "DEPRECATED" - }, - "primary": { - "$ref": "SourceSplitShard", - "description": "DEPRECATED" - } - }, - "id": "SourceFork" - }, "WorkItemStatus": { + "id": "WorkItemStatus", "description": "Conveys a worker's progress through the work described by a WorkItem.", "type": "object", "properties": { - "workItemId": { - "description": "Identifies the WorkItem.", - "type": "string" - }, - "errors": { - "items": { - "$ref": "Status" - }, - "type": "array", - "description": "Specifies errors which occurred during processing. If errors are\nprovided, and completed = true, then the WorkItem is considered\nto have failed." - }, "metricUpdates": { "description": "DEPRECATED in favor of counter_updates.", "items": { @@ -3640,22 +1533,29 @@ }, "type": "array" }, + "errors": { + "description": "Specifies errors which occurred during processing. If errors are\nprovided, and completed = true, then the WorkItem is considered\nto have failed.", + "items": { + "$ref": "Status" + }, + "type": "array" + }, "dynamicSourceSplit": { - "description": "See documentation of stop_position.", - "$ref": "DynamicSourceSplit" + "$ref": "DynamicSourceSplit", + "description": "See documentation of stop_position." }, "sourceOperationResponse": { - "$ref": "SourceOperationResponse", - "description": "If the work item represented a SourceOperationRequest, and the work\nis completed, contains the result of the operation." + "description": "If the work item represented a SourceOperationRequest, and the work\nis completed, contains the result of the operation.", + "$ref": "SourceOperationResponse" }, "progress": { "description": "DEPRECATED in favor of reported_progress.", "$ref": "ApproximateProgress" }, "requestedLeaseDuration": { + "type": "string", "format": "google-duration", - "description": "Amount of time the worker requests for its lease.", - "type": "string" + "description": "Amount of time the worker requests for its lease." }, "reportIndex": { "format": "int64", @@ -3663,8 +1563,8 @@ "type": "string" }, "stopPosition": { - "$ref": "Position", - "description": "A worker may split an active map task in two parts, \"primary\" and\n\"residual\", continuing to process the primary part and returning the\nresidual part into the pool of available work.\nThis event is called a \"dynamic split\" and is critical to the dynamic\nwork rebalancing feature. The two obtained sub-tasks are called\n\"parts\" of the split.\nThe parts, if concatenated, must represent the same input as would\nbe read by the current task if the split did not happen.\nThe exact way in which the original task is decomposed into the two\nparts is specified either as a position demarcating them\n(stop_position), or explicitly as two DerivedSources, if this\ntask consumes a user-defined source type (dynamic_source_split).\n\nThe \"current\" task is adjusted as a result of the split: after a task\nwith range [A, B) sends a stop_position update at C, its range is\nconsidered to be [A, C), e.g.:\n* Progress should be interpreted relative to the new range, e.g.\n \"75% completed\" means \"75% of [A, C) completed\"\n* The worker should interpret proposed_stop_position relative to the\n new range, e.g. \"split at 68%\" should be interpreted as\n \"split at 68% of [A, C)\".\n* If the worker chooses to split again using stop_position, only\n stop_positions in [A, C) will be accepted.\n* Etc.\ndynamic_source_split has similar semantics: e.g., if a task with\nsource S splits using dynamic_source_split into {P, R}\n(where P and R must be together equivalent to S), then subsequent\nprogress and proposed_stop_position should be interpreted relative\nto P, and in a potential subsequent dynamic_source_split into {P', R'},\nP' and R' must be together equivalent to P, etc." + "description": "A worker may split an active map task in two parts, \"primary\" and\n\"residual\", continuing to process the primary part and returning the\nresidual part into the pool of available work.\nThis event is called a \"dynamic split\" and is critical to the dynamic\nwork rebalancing feature. The two obtained sub-tasks are called\n\"parts\" of the split.\nThe parts, if concatenated, must represent the same input as would\nbe read by the current task if the split did not happen.\nThe exact way in which the original task is decomposed into the two\nparts is specified either as a position demarcating them\n(stop_position), or explicitly as two DerivedSources, if this\ntask consumes a user-defined source type (dynamic_source_split).\n\nThe \"current\" task is adjusted as a result of the split: after a task\nwith range [A, B) sends a stop_position update at C, its range is\nconsidered to be [A, C), e.g.:\n* Progress should be interpreted relative to the new range, e.g.\n \"75% completed\" means \"75% of [A, C) completed\"\n* The worker should interpret proposed_stop_position relative to the\n new range, e.g. \"split at 68%\" should be interpreted as\n \"split at 68% of [A, C)\".\n* If the worker chooses to split again using stop_position, only\n stop_positions in [A, C) will be accepted.\n* Etc.\ndynamic_source_split has similar semantics: e.g., if a task with\nsource S splits using dynamic_source_split into {P, R}\n(where P and R must be together equivalent to S), then subsequent\nprogress and proposed_stop_position should be interpreted relative\nto P, and in a potential subsequent dynamic_source_split into {P', R'},\nP' and R' must be together equivalent to P, etc.", + "$ref": "Position" }, "completed": { "description": "True if the WorkItem was completed (successfully or unsuccessfully).", @@ -3675,8 +1575,8 @@ "description": "The worker's progress through this WorkItem." }, "sourceFork": { - "description": "DEPRECATED in favor of dynamic_source_split.", - "$ref": "SourceFork" + "$ref": "SourceFork", + "description": "DEPRECATED in favor of dynamic_source_split." }, "counterUpdates": { "description": "Worker output counters for this WorkItem.", @@ -3684,11 +1584,16 @@ "$ref": "CounterUpdate" }, "type": "array" + }, + "workItemId": { + "description": "Identifies the WorkItem.", + "type": "string" } - }, - "id": "WorkItemStatus" + } }, "ComponentSource": { + "description": "Description of an interstitial value between transforms in an execution\nstage.", + "type": "object", "properties": { "name": { "description": "Dataflow service generated name for this source.", @@ -3699,27 +1604,25 @@ "type": "string" }, "originalTransformOrCollection": { - "description": "User name for the original user transform or collection with which this\nsource is most closely associated.", - "type": "string" + "type": "string", + "description": "User name for the original user transform or collection with which this\nsource is most closely associated." } }, - "id": "ComponentSource", - "description": "Description of an interstitial value between transforms in an execution\nstage.", - "type": "object" + "id": "ComponentSource" }, "WorkItemServiceState": { "description": "The Dataflow service's idea of the current state of a WorkItem\nbeing processed by a worker.", "type": "object", "properties": { - "suggestedStopPosition": { - "$ref": "Position", - "description": "Obsolete, always empty." - }, "reportStatusInterval": { "format": "google-duration", "description": "New recommended reporting interval.", "type": "string" }, + "suggestedStopPosition": { + "$ref": "Position", + "description": "Obsolete, always empty." + }, "harnessData": { "additionalProperties": { "description": "Properties of the object.", @@ -3741,17 +1644,17 @@ "type": "array" }, "nextReportIndex": { - "type": "string", "format": "int64", - "description": "The index value to use for the next report sent by the worker.\nNote: If the report call fails for whatever reason, the worker should\nreuse this index for subsequent report attempts." + "description": "The index value to use for the next report sent by the worker.\nNote: If the report call fails for whatever reason, the worker should\nreuse this index for subsequent report attempts.", + "type": "string" }, "suggestedStopPoint": { "description": "DEPRECATED in favor of split_request.", "$ref": "ApproximateProgress" }, "splitRequest": { - "$ref": "ApproximateSplitRequest", - "description": "The progress point in the WorkItem where the Dataflow service\nsuggests that the worker truncate the task." + "description": "The progress point in the WorkItem where the Dataflow service\nsuggests that the worker truncate the task.", + "$ref": "ApproximateSplitRequest" } }, "id": "WorkItemServiceState" @@ -3760,13 +1663,6 @@ "description": "Identifies a metric, by describing the source which generated the\nmetric.", "type": "object", "properties": { - "context": { - "additionalProperties": { - "type": "string" - }, - "description": "Zero or more labeled fields which identify the part of the job this\nmetric is associated with, such as the name of a step or collection.\n\nFor example, built-in counters associated with steps will have\ncontext['step'] = \u003cstep-name\u003e. Counters associated with PCollections\nin the SDK will have context['pcollection'] = \u003cpcollection-name\u003e.", - "type": "object" - }, "name": { "description": "Worker-defined metric name.", "type": "string" @@ -3774,43 +1670,47 @@ "origin": { "description": "Origin (namespace) of metric name. May be blank for user-define metrics;\nwill be \"dataflow\" for metrics defined by the Dataflow service or SDK.", "type": "string" + }, + "context": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Zero or more labeled fields which identify the part of the job this\nmetric is associated with, such as the name of a step or collection.\n\nFor example, built-in counters associated with steps will have\ncontext['step'] = \u003cstep-name\u003e. Counters associated with PCollections\nin the SDK will have context['pcollection'] = \u003cpcollection-name\u003e." } }, "id": "MetricStructuredName" }, "SeqMapTaskOutputInfo": { + "description": "Information about an output of a SeqMapTask.", "type": "object", "properties": { + "sink": { + "description": "The sink to write the output value to.", + "$ref": "Sink" + }, "tag": { "description": "The id of the TupleTag the user code will tag the output value by.", "type": "string" - }, - "sink": { - "$ref": "Sink", - "description": "The sink to write the output value to." } }, - "id": "SeqMapTaskOutputInfo", - "description": "Information about an output of a SeqMapTask." + "id": "SeqMapTaskOutputInfo" }, "JobExecutionStageInfo": { "description": "Contains information about how a particular\ngoogle.dataflow.v1beta3.Step will be executed.", "type": "object", "properties": { "stepName": { + "description": "The steps associated with the execution stage.\nNote that stages may have several steps, and that a given step\nmight be run by more than one stage.", "items": { "type": "string" }, - "type": "array", - "description": "The steps associated with the execution stage.\nNote that stages may have several steps, and that a given step\nmight be run by more than one stage." + "type": "array" } }, "id": "JobExecutionStageInfo" }, "KeyRangeLocation": { - "id": "KeyRangeLocation", - "description": "Location information for a specific key-range of a sharded computation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON.", - "type": "object", "properties": { "deprecatedPersistentDirectory": { "description": "DEPRECATED. The location of the persistent state for this range, as a\npersistent directory in the worker local filesystem.", @@ -3821,21 +1721,23 @@ "type": "string" }, "dataDisk": { - "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".", - "type": "string" + "type": "string", + "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\"." }, "start": { - "description": "The start (inclusive) of the key range.", - "type": "string" + "type": "string", + "description": "The start (inclusive) of the key range." }, "end": { "description": "The end (exclusive) of the key range.", "type": "string" } - } + }, + "id": "KeyRangeLocation", + "description": "Location information for a specific key-range of a sharded computation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON.", + "type": "object" }, "SourceGetMetadataRequest": { - "description": "A request to compute the SourceMetadata of a Source.", "type": "object", "properties": { "source": { @@ -3843,17 +1745,20 @@ "description": "Specification of the source whose metadata should be computed." } }, - "id": "SourceGetMetadataRequest" + "id": "SourceGetMetadataRequest", + "description": "A request to compute the SourceMetadata of a Source." }, "NameAndKind": { "description": "Basic metadata about a counter.", "type": "object", "properties": { "name": { - "type": "string", - "description": "Name of the counter." + "description": "Name of the counter.", + "type": "string" }, "kind": { + "description": "Counter aggregation kind.", + "type": "string", "enumDescriptions": [ "Counter aggregation kind was not set.", "Aggregated value is the sum of all contributed values.", @@ -3875,25 +1780,25 @@ "AND", "SET", "DISTRIBUTION" - ], - "description": "Counter aggregation kind.", - "type": "string" + ] } }, "id": "NameAndKind" }, "SeqMapTask": { + "description": "Describes a particular function to invoke.", + "type": "object", "properties": { "name": { "description": "The user-provided name of the SeqDo operation.", "type": "string" }, "outputInfos": { + "description": "Information about each of the outputs.", "items": { "$ref": "SeqMapTaskOutputInfo" }, - "type": "array", - "description": "Information about each of the outputs." + "type": "array" }, "inputs": { "description": "Information about each of the inputs.", @@ -3919,21 +1824,19 @@ "type": "object" } }, - "id": "SeqMapTask", - "description": "Describes a particular function to invoke.", - "type": "object" + "id": "SeqMapTask" }, "WorkerMessageCode": { "description": "A message code is used to report status and error messages to the service.\nThe message codes are intended to be machine readable. The service will\ntake care of translating these into user understandable messages if\nnecessary.\n\nExample use cases:\n 1. Worker processes reporting successful startup.\n 2. Worker processes reporting specific errors (e.g. package staging\n failure).", "type": "object", "properties": { "parameters": { - "description": "Parameters contains specific information about the code.\n\nThis is a struct to allow parameters of different types.\n\nExamples:\n 1. For a \"HARNESS_STARTED\" message parameters might provide the name\n of the worker and additional data like timing information.\n 2. For a \"GCS_DOWNLOAD_ERROR\" parameters might contain fields listing\n the GCS objects being downloaded and fields containing errors.\n\nIn general complex data structures should be avoided. If a worker\nneeds to send a specific and complicated data structure then please\nconsider defining a new proto and adding it to the data oneof in\nWorkerMessageResponse.\n\nConventions:\n Parameters should only be used for information that isn't typically passed\n as a label.\n hostname and other worker identifiers should almost always be passed\n as labels since they will be included on most messages.", - "type": "object", "additionalProperties": { - "type": "any", - "description": "Properties of the object." - } + "description": "Properties of the object.", + "type": "any" + }, + "description": "Parameters contains specific information about the code.\n\nThis is a struct to allow parameters of different types.\n\nExamples:\n 1. For a \"HARNESS_STARTED\" message parameters might provide the name\n of the worker and additional data like timing information.\n 2. For a \"GCS_DOWNLOAD_ERROR\" parameters might contain fields listing\n the GCS objects being downloaded and fields containing errors.\n\nIn general complex data structures should be avoided. If a worker\nneeds to send a specific and complicated data structure then please\nconsider defining a new proto and adding it to the data oneof in\nWorkerMessageResponse.\n\nConventions:\n Parameters should only be used for information that isn't typically passed\n as a label.\n hostname and other worker identifiers should almost always be passed\n as labels since they will be included on most messages.", + "type": "object" }, "code": { "description": "The code is a string intended for consumption by a machine that identifies\nthe type of message being sent.\nExamples:\n 1. \"HARNESS_STARTED\" might be used to indicate the worker harness has\n started.\n 2. \"GCS_DOWNLOAD_ERROR\" might be used to indicate an error downloading\n a GCS file as part of the boot process of one of the worker containers.\n\nThis is a string and not an enum to make it easy to add new codes without\nwaiting for an API change.", @@ -3958,8 +1861,8 @@ "type": "object", "properties": { "stageName": { - "type": "string", - "description": "System-defined name of the stage containing this MapTask.\nUnique across the workflow." + "description": "System-defined name of the stage containing this MapTask.\nUnique across the workflow.", + "type": "string" }, "systemName": { "description": "System-defined name of this MapTask.\nUnique across the workflow.", @@ -3976,6 +1879,7 @@ "id": "MapTask" }, "FloatingPointMean": { + "description": "A representation of a floating point mean metric contribution.", "type": "object", "properties": { "sum": { @@ -3984,15 +1888,13 @@ "type": "number" }, "count": { - "$ref": "SplitInt64", - "description": "The number of values being aggregated." + "description": "The number of values being aggregated.", + "$ref": "SplitInt64" } }, - "id": "FloatingPointMean", - "description": "A representation of a floating point mean metric contribution." + "id": "FloatingPointMean" }, "ReportWorkItemStatusResponse": { - "description": "Response from a request to report the status of WorkItems.", "type": "object", "properties": { "workItemServiceStates": { @@ -4003,12 +1905,29 @@ "type": "array" } }, - "id": "ReportWorkItemStatusResponse" + "id": "ReportWorkItemStatusResponse", + "description": "Response from a request to report the status of WorkItems." }, "InstructionOutput": { "description": "An output of an instruction.", "type": "object", "properties": { + "codec": { + "description": "The codec to use to encode data being written via this output.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "name": { + "description": "The user-provided name of this output.", + "type": "string" + }, + "originalName": { + "description": "System-defined name for this output in the original workflow graph.\nOutputs that do not contribute to an original instruction do not set this.", + "type": "string" + }, "systemName": { "description": "System-defined name of this output.\nUnique across the workflow.", "type": "string" @@ -4020,22 +1939,6 @@ "onlyCountValueBytes": { "description": "For system-generated byte and mean byte metrics, certain instructions\nshould only report the value size.", "type": "boolean" - }, - "codec": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The codec to use to encode data being written via this output.", - "type": "object" - }, - "name": { - "description": "The user-provided name of this output.", - "type": "string" - }, - "originalName": { - "description": "System-defined name for this output in the original workflow graph.\nOutputs that do not contribute to an original instruction do not set this.", - "type": "string" } }, "id": "InstructionOutput" @@ -4044,6 +1947,14 @@ "description": "A request to create a Cloud Dataflow job from a template.", "type": "object", "properties": { + "jobName": { + "description": "Required. The job name to use for the created job.", + "type": "string" + }, + "gcsPath": { + "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", + "type": "string" + }, "environment": { "$ref": "RuntimeEnvironment", "description": "The runtime environment for the job." @@ -4058,36 +1969,26 @@ }, "description": "The runtime parameters to pass to the job.", "type": "object" - }, - "jobName": { - "description": "Required. The job name to use for the created job.", - "type": "string" - }, - "gcsPath": { - "description": "Required. A Cloud Storage path to the template from which to\ncreate the job.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", - "type": "string" } }, "id": "CreateJobFromTemplateRequest" }, "IntegerMean": { + "id": "IntegerMean", "description": "A representation of an integer mean metric contribution.", "type": "object", "properties": { "count": { - "description": "The number of values being aggregated.", - "$ref": "SplitInt64" + "$ref": "SplitInt64", + "description": "The number of values being aggregated." }, "sum": { "$ref": "SplitInt64", "description": "The sum of all values being aggregated." } - }, - "id": "IntegerMean" + } }, "ListJobsResponse": { - "description": "Response to a request to list Cloud Dataflow jobs. This may be a partial\nresponse, depending on the page size in the ListJobsRequest.", - "type": "object", "properties": { "jobs": { "description": "A subset of the requested job information.", @@ -4108,14 +2009,17 @@ "type": "string" } }, - "id": "ListJobsResponse" + "id": "ListJobsResponse", + "description": "Response to a request to list Cloud Dataflow jobs. This may be a partial\nresponse, depending on the page size in the ListJobsRequest.", + "type": "object" }, "ComputationTopology": { + "type": "object", "properties": { - "stateFamilies": { - "description": "The state family values.", + "keyRanges": { + "description": "The key ranges processed by the computation.", "items": { - "$ref": "StateFamilyConfig" + "$ref": "KeyRangeLocation" }, "type": "array" }, @@ -4126,41 +2030,36 @@ }, "type": "array" }, + "stateFamilies": { + "items": { + "$ref": "StateFamilyConfig" + }, + "type": "array", + "description": "The state family values." + }, "systemStageName": { "description": "The system stage name.", "type": "string" }, - "computationId": { - "description": "The ID of the computation.", - "type": "string" - }, "inputs": { + "description": "The inputs to the computation.", "items": { "$ref": "StreamLocation" }, - "type": "array", - "description": "The inputs to the computation." - }, - "keyRanges": { - "description": "The key ranges processed by the computation.", - "items": { - "$ref": "KeyRangeLocation" - }, "type": "array" + }, + "computationId": { + "description": "The ID of the computation.", + "type": "string" } }, "id": "ComputationTopology", - "description": "All configuration data for a particular Computation.", - "type": "object" + "description": "All configuration data for a particular Computation." }, "RuntimeEnvironment": { "description": "The environment values to set at runtime.", "type": "object", "properties": { - "machineType": { - "description": "The machine type to use for the job. Defaults to the value from the\ntemplate if not specified.", - "type": "string" - }, "zone": { "description": "The Compute Engine [availability\nzone](https://cloud.google.com/compute/docs/regions-zones/regions-zones)\nfor launching worker instances to run your pipeline.", "type": "string" @@ -4170,10 +2069,6 @@ "description": "The maximum number of Google Compute Engine instances to be made\navailable to your pipeline during execution, from 1 to 1000.", "type": "integer" }, - "bypassTempDirValidation": { - "description": "Whether to bypass the safety checks for the job's temporary directory.\nUse with caution.", - "type": "boolean" - }, "serviceAccountEmail": { "description": "The email address of the service account to run the job as.", "type": "string" @@ -4181,22 +2076,22 @@ "tempLocation": { "description": "The Cloud Storage path to use for temporary files.\nMust be a valid Cloud Storage URL, beginning with `gs://`.", "type": "string" + }, + "bypassTempDirValidation": { + "description": "Whether to bypass the safety checks for the job's temporary directory.\nUse with caution.", + "type": "boolean" + }, + "machineType": { + "description": "The machine type to use for the job. Defaults to the value from the\ntemplate if not specified.", + "type": "string" } }, "id": "RuntimeEnvironment" }, - "MountedDataDisk": { - "properties": { - "dataDisk": { - "description": "The name of the data disk.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".", - "type": "string" - } - }, - "id": "MountedDataDisk", - "description": "Describes mounted data disk.", - "type": "object" - }, "StreamingSideInputLocation": { + "id": "StreamingSideInputLocation", + "description": "Identifies the location of a streaming side input.", + "type": "object", "properties": { "tag": { "description": "Identifies the particular side input within the streaming Dataflow job.", @@ -4206,82 +2101,50 @@ "description": "Identifies the state family where this side input is stored.", "type": "string" } + } + }, + "MountedDataDisk": { + "description": "Describes mounted data disk.", + "type": "object", + "properties": { + "dataDisk": { + "description": "The name of the data disk.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\".", + "type": "string" + } }, - "id": "StreamingSideInputLocation", - "description": "Identifies the location of a streaming side input.", - "type": "object" + "id": "MountedDataDisk" }, "LaunchTemplateResponse": { + "id": "LaunchTemplateResponse", "description": "Response to the request to launch a template.", "type": "object", "properties": { "job": { - "description": "The job that was launched, if the request was not a dry run and\nthe job was successfully launched.", - "$ref": "Job" + "$ref": "Job", + "description": "The job that was launched, if the request was not a dry run and\nthe job was successfully launched." } - }, - "id": "LaunchTemplateResponse" + } }, "DynamicSourceSplit": { + "description": "When a task splits using WorkItemStatus.dynamic_source_split, this\nmessage describes the two parts of the split relative to the\ndescription of the current task's input.", + "type": "object", "properties": { "residual": { - "description": "Residual part (returned to the pool of work).\nSpecified relative to the previously-current source.", - "$ref": "DerivedSource" + "$ref": "DerivedSource", + "description": "Residual part (returned to the pool of work).\nSpecified relative to the previously-current source." }, "primary": { "$ref": "DerivedSource", "description": "Primary part (continued to be processed by worker).\nSpecified relative to the previously-current source.\nBecomes current." } }, - "id": "DynamicSourceSplit", - "description": "When a task splits using WorkItemStatus.dynamic_source_split, this\nmessage describes the two parts of the split relative to the\ndescription of the current task's input.", - "type": "object" + "id": "DynamicSourceSplit" }, "Job": { + "id": "Job", "description": "Defines a job to be run by the Cloud Dataflow service.", "type": "object", "properties": { - "labels": { - "description": "User-defined labels for this job.\n\nThe labels map can contain no more than 64 entries. Entries of the labels\nmap are UTF8 strings that comply with the following restrictions:\n\n* Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62}\n* Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n* Both keys and values are additionally constrained to be \u003c= 128 bytes in\nsize.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "environment": { - "description": "The environment for the job.", - "$ref": "Environment" - }, - "createTime": { - "format": "google-datetime", - "description": "The timestamp when the job was initially created. Immutable and set by the\nCloud Dataflow service.", - "type": "string" - }, - "stageStates": { - "description": "This field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.", - "items": { - "$ref": "ExecutionStageState" - }, - "type": "array" - }, - "projectId": { - "description": "The ID of the Cloud Platform project that the job belongs to.", - "type": "string" - }, - "type": { - "enumDescriptions": [ - "The type of the job is unspecified, or unknown.", - "A batch job with a well-defined end point: data is read, data is\nprocessed, data is written, and the job is done.", - "A continuously streaming job with no end: data is read,\nprocessed, and written continuously." - ], - "enum": [ - "JOB_TYPE_UNKNOWN", - "JOB_TYPE_BATCH", - "JOB_TYPE_STREAMING" - ], - "description": "The type of Cloud Dataflow job.", - "type": "string" - }, "pipelineDescription": { "description": "Preliminary field: The format of this data may change at any time.\nA description of the user pipeline and stages through which it is executed.\nCreated by Cloud Dataflow service. Only retrieved with\nJOB_VIEW_DESCRIPTION or JOB_VIEW_ALL.", "$ref": "PipelineDescription" @@ -4335,10 +2198,6 @@ "description": "The user-specified Cloud Dataflow job name.\n\nOnly one Job with a given name may exist in a project at any\ngiven time. If a caller attempts to create a Job with the same\nname as an already-existing Job, the attempt returns the\nexisting Job.\n\nThe name must match the regular expression\n`[a-z]([-a-z0-9]{0,38}[a-z0-9])?`", "type": "string" }, - "replacedByJobId": { - "type": "string", - "description": "If another job is an update of this job (and thus, this job is in\n`JOB_STATE_UPDATED`), this field contains the ID of that job." - }, "steps": { "description": "The top-level steps that constitute the entire job.", "items": { @@ -4346,17 +2205,19 @@ }, "type": "array" }, - "id": { - "description": "The unique ID of this job.\n\nThis field is set by the Cloud Dataflow service when the Job is\ncreated, and is immutable for the life of the job.", + "replacedByJobId": { + "description": "If another job is an update of this job (and thus, this job is in\n`JOB_STATE_UPDATED`), this field contains the ID of that job.", "type": "string" }, "executionInfo": { "description": "Deprecated.", "$ref": "JobExecutionInfo" }, - "currentState": { - "description": "The current state of the job.\n\nJobs are created in the `JOB_STATE_STOPPED` state unless otherwise\nspecified.\n\nA job in the `JOB_STATE_RUNNING` state may asynchronously enter a\nterminal state. After a job has reached a terminal state, no\nfurther state updates may be made.\n\nThis field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.", + "id": { "type": "string", + "description": "The unique ID of this job.\n\nThis field is set by the Cloud Dataflow service when the Job is\ncreated, and is immutable for the life of the job." + }, + "currentState": { "enumDescriptions": [ "The job's run state isn't specified.", "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.", @@ -4382,11 +2243,13 @@ "JOB_STATE_DRAINED", "JOB_STATE_PENDING", "JOB_STATE_CANCELLING" - ] + ], + "description": "The current state of the job.\n\nJobs are created in the `JOB_STATE_STOPPED` state unless otherwise\nspecified.\n\nA job in the `JOB_STATE_RUNNING` state may asynchronously enter a\nterminal state. After a job has reached a terminal state, no\nfurther state updates may be made.\n\nThis field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.", + "type": "string" }, "location": { - "type": "string", - "description": "The location that contains this job." + "description": "The location that contains this job.", + "type": "string" }, "currentStateTime": { "format": "google-datetime", @@ -4394,20 +2257,67 @@ "type": "string" }, "transformNameMapping": { - "description": "The map of transform name prefixes of the job to be replaced to the\ncorresponding name prefixes of the new job.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "The map of transform name prefixes of the job to be replaced to the\ncorresponding name prefixes of the new job.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "User-defined labels for this job.\n\nThe labels map can contain no more than 64 entries. Entries of the labels\nmap are UTF8 strings that comply with the following restrictions:\n\n* Keys must conform to regexp: \\p{Ll}\\p{Lo}{0,62}\n* Values must conform to regexp: [\\p{Ll}\\p{Lo}\\p{N}_-]{0,63}\n* Both keys and values are additionally constrained to be \u003c= 128 bytes in\nsize.", + "type": "object" + }, + "environment": { + "$ref": "Environment", + "description": "The environment for the job." + }, + "createTime": { + "format": "google-datetime", + "description": "The timestamp when the job was initially created. Immutable and set by the\nCloud Dataflow service.", + "type": "string" + }, + "stageStates": { + "description": "This field may be mutated by the Cloud Dataflow service;\ncallers cannot mutate it.", + "items": { + "$ref": "ExecutionStageState" + }, + "type": "array" + }, + "type": { + "type": "string", + "enumDescriptions": [ + "The type of the job is unspecified, or unknown.", + "A batch job with a well-defined end point: data is read, data is\nprocessed, data is written, and the job is done.", + "A continuously streaming job with no end: data is read,\nprocessed, and written continuously." + ], + "enum": [ + "JOB_TYPE_UNKNOWN", + "JOB_TYPE_BATCH", + "JOB_TYPE_STREAMING" + ], + "description": "The type of Cloud Dataflow job." + }, + "projectId": { + "description": "The ID of the Cloud Platform project that the job belongs to.", + "type": "string" } - }, - "id": "Job" + } }, "DerivedSource": { + "id": "DerivedSource", "description": "Specification of one of the bundles produced as a result of splitting\na Source (e.g. when executing a SourceSplitRequest, or when\nsplitting an active task using WorkItemStatus.dynamic_source_split),\nrelative to the source being split.", "type": "object", "properties": { "derivationMode": { + "enumDescriptions": [ + "The source derivation is unknown, or unspecified.", + "Produce a completely independent Source with no base.", + "Produce a Source based on the Source being split.", + "Produce a Source based on the base of the Source being split." + ], "enum": [ "SOURCE_DERIVATION_MODE_UNKNOWN", "SOURCE_DERIVATION_MODE_INDEPENDENT", @@ -4415,39 +2325,15 @@ "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT" ], "description": "What source to base the produced source on (if any).", - "type": "string", - "enumDescriptions": [ - "The source derivation is unknown, or unspecified.", - "Produce a completely independent Source with no base.", - "Produce a Source based on the Source being split.", - "Produce a Source based on the base of the Source being split." - ] + "type": "string" }, "source": { "$ref": "Source", "description": "Specification of the source." } - }, - "id": "DerivedSource" - }, - "SideInputId": { - "description": "Uniquely identifies a side input.", - "type": "object", - "properties": { - "inputIndex": { - "format": "int32", - "description": "The index of the side input, from the list of non_parallel_inputs.", - "type": "integer" - }, - "declaringStepName": { - "type": "string", - "description": "The step that receives and usually consumes this side input." - } - }, - "id": "SideInputId" + } }, "SourceOperationResponse": { - "id": "SourceOperationResponse", "description": "The result of a SourceOperationRequest, specified in\nReportWorkItemStatusRequest.source_operation when the work item\nis completed.", "type": "object", "properties": { @@ -4459,21 +2345,30 @@ "$ref": "SourceSplitResponse", "description": "A response to a request to split a source." } - } + }, + "id": "SourceOperationResponse" + }, + "SendDebugCaptureResponse": { + "type": "object", + "properties": {}, + "id": "SendDebugCaptureResponse", + "description": "Response to a send capture request.\nnothing" }, "SideInputInfo": { + "description": "Information about a side input of a DoFn or an input of a SeqDoFn.", + "type": "object", "properties": { "tag": { "description": "The id of the tag the user code will access this side input by;\nthis should correspond to the tag of some MultiOutputInfo.", "type": "string" }, "kind": { - "description": "How to interpret the source element(s) as a side input value.", - "type": "object", "additionalProperties": { "description": "Properties of the object.", "type": "any" - } + }, + "description": "How to interpret the source element(s) as a side input value.", + "type": "object" }, "sources": { "description": "The source(s) to read element(s) from to get the value of this side input.\nIf more than one source, then the elements are taken from the\nsources, in the specified order if order matters.\nAt least one source is required.", @@ -4483,33 +2378,24 @@ "type": "array" } }, - "id": "SideInputInfo", - "description": "Information about a side input of a DoFn or an input of a SeqDoFn.", - "type": "object" + "id": "SideInputInfo" }, - "SendDebugCaptureResponse": { - "description": "Response to a send capture request.\nnothing", + "CounterStructuredNameAndMetadata": { "type": "object", - "properties": {}, - "id": "SendDebugCaptureResponse" - }, - "WriteInstruction": { "properties": { - "input": { - "$ref": "InstructionInput", - "description": "The input." + "name": { + "$ref": "CounterStructuredName", + "description": "Structured name of the counter." }, - "sink": { - "$ref": "Sink", - "description": "The sink to write to." + "metadata": { + "$ref": "CounterMetadata", + "description": "Metadata associated with a counter" } }, - "id": "WriteInstruction", - "description": "An instruction that writes records.\nTakes one input, produces no outputs.", - "type": "object" + "id": "CounterStructuredNameAndMetadata", + "description": "A single message which encapsulates structured name and metadata for a given\ncounter." }, "ConcatPosition": { - "description": "A position that encapsulates an inner position and an index for the inner\nposition. A ConcatPosition can be used by a reader of a source that\nencapsulates a set of other sources.", "type": "object", "properties": { "position": { @@ -4522,50 +2408,26 @@ "type": "integer" } }, - "id": "ConcatPosition" + "id": "ConcatPosition", + "description": "A position that encapsulates an inner position and an index for the inner\nposition. A ConcatPosition can be used by a reader of a source that\nencapsulates a set of other sources." }, - "CounterStructuredNameAndMetadata": { - "description": "A single message which encapsulates structured name and metadata for a given\ncounter.", - "type": "object", + "WriteInstruction": { "properties": { - "name": { - "$ref": "CounterStructuredName", - "description": "Structured name of the counter." + "sink": { + "description": "The sink to write to.", + "$ref": "Sink" }, - "metadata": { - "$ref": "CounterMetadata", - "description": "Metadata associated with a counter" + "input": { + "description": "The input.", + "$ref": "InstructionInput" } }, - "id": "CounterStructuredNameAndMetadata" - }, - "AutoscalingSettings": { - "description": "Settings for WorkerPool autoscaling.", - "type": "object", - "properties": { - "algorithm": { - "enumDescriptions": [ - "The algorithm is unknown, or unspecified.", - "Disable autoscaling.", - "Increase worker count over time to reduce job execution time." - ], - "enum": [ - "AUTOSCALING_ALGORITHM_UNKNOWN", - "AUTOSCALING_ALGORITHM_NONE", - "AUTOSCALING_ALGORITHM_BASIC" - ], - "description": "The algorithm to use for autoscaling.", - "type": "string" - }, - "maxNumWorkers": { - "format": "int32", - "description": "The maximum number of workers to cap scaling at.", - "type": "integer" - } - }, - "id": "AutoscalingSettings" + "id": "WriteInstruction", + "description": "An instruction that writes records.\nTakes one input, produces no outputs.", + "type": "object" }, "StreamingComputationRanges": { + "id": "StreamingComputationRanges", "description": "Describes full or partial data disk assignment information of the computation\nranges.", "type": "object", "properties": { @@ -4574,41 +2436,43 @@ "type": "string" }, "rangeAssignments": { + "description": "Data disk assignments for ranges from this computation.", "items": { "$ref": "KeyRangeDataDiskAssignment" }, - "type": "array", - "description": "Data disk assignments for ranges from this computation." + "type": "array" } - }, - "id": "StreamingComputationRanges" + } }, - "ExecutionStageSummary": { - "description": "Description of the composing transforms, names/ids, and input/outputs of a\nstage of execution. Some composing transforms and sources may have been\ngenerated by the Dataflow service during execution planning.", + "AutoscalingSettings": { + "id": "AutoscalingSettings", + "description": "Settings for WorkerPool autoscaling.", "type": "object", "properties": { - "outputSource": { - "description": "Output sources for this stage.", - "items": { - "$ref": "StageSource" - }, - "type": "array" + "maxNumWorkers": { + "format": "int32", + "description": "The maximum number of workers to cap scaling at.", + "type": "integer" }, - "name": { - "description": "Dataflow service generated name for this stage.", - "type": "string" - }, - "inputSource": { - "description": "Input sources for this stage.", - "items": { - "$ref": "StageSource" - }, - "type": "array" - }, - "id": { + "algorithm": { + "enum": [ + "AUTOSCALING_ALGORITHM_UNKNOWN", + "AUTOSCALING_ALGORITHM_NONE", + "AUTOSCALING_ALGORITHM_BASIC" + ], + "description": "The algorithm to use for autoscaling.", "type": "string", - "description": "Dataflow service generated id for this stage." - }, + "enumDescriptions": [ + "The algorithm is unknown, or unspecified.", + "Disable autoscaling.", + "Increase worker count over time to reduce job execution time." + ] + } + } + }, + "ExecutionStageSummary": { + "type": "object", + "properties": { "componentTransform": { "description": "Transforms that comprise this execution stage.", "items": { @@ -4624,18 +2488,6 @@ "type": "array" }, "kind": { - "enum": [ - "UNKNOWN_KIND", - "PAR_DO_KIND", - "GROUP_BY_KEY_KIND", - "FLATTEN_KIND", - "READ_KIND", - "WRITE_KIND", - "CONSTANT_KIND", - "SINGLETON_KIND", - "SHUFFLE_KIND" - ], - "description": "Type of tranform this stage is executing.", "type": "string", "enumDescriptions": [ "Unrecognized transform type.", @@ -4647,13 +2499,65 @@ "Constructs from a constant value, such as with Create.of.", "Creates a Singleton view of a collection.", "Opening or closing a shuffle session, often as part of a GroupByKey." - ] + ], + "enum": [ + "UNKNOWN_KIND", + "PAR_DO_KIND", + "GROUP_BY_KEY_KIND", + "FLATTEN_KIND", + "READ_KIND", + "WRITE_KIND", + "CONSTANT_KIND", + "SINGLETON_KIND", + "SHUFFLE_KIND" + ], + "description": "Type of tranform this stage is executing." + }, + "outputSource": { + "description": "Output sources for this stage.", + "items": { + "$ref": "StageSource" + }, + "type": "array" + }, + "name": { + "description": "Dataflow service generated name for this stage.", + "type": "string" + }, + "inputSource": { + "items": { + "$ref": "StageSource" + }, + "type": "array", + "description": "Input sources for this stage." + }, + "id": { + "description": "Dataflow service generated id for this stage.", + "type": "string" } }, - "id": "ExecutionStageSummary" + "id": "ExecutionStageSummary", + "description": "Description of the composing transforms, names/ids, and input/outputs of a\nstage of execution. Some composing transforms and sources may have been\ngenerated by the Dataflow service during execution planning." + }, + "SendWorkerMessagesRequest": { + "id": "SendWorkerMessagesRequest", + "description": "A request for sending worker messages to the service.", + "type": "object", + "properties": { + "workerMessages": { + "items": { + "$ref": "WorkerMessage" + }, + "type": "array", + "description": "The WorkerMessages to send." + }, + "location": { + "description": "The location which contains the job", + "type": "string" + } + } }, "LogBucket": { - "description": "Bucket of values for Distribution's logarithmic histogram.", "type": "object", "properties": { "log": { @@ -4667,36 +2571,14 @@ "type": "string" } }, - "id": "LogBucket" - }, - "SendWorkerMessagesRequest": { - "description": "A request for sending worker messages to the service.", - "type": "object", - "properties": { - "workerMessages": { - "description": "The WorkerMessages to send.", - "items": { - "$ref": "WorkerMessage" - }, - "type": "array" - }, - "location": { - "description": "The location which contains the job", - "type": "string" - } - }, - "id": "SendWorkerMessagesRequest" + "id": "LogBucket", + "description": "Bucket of values for Distribution's logarithmic histogram." }, "SourceSplitShard": { + "description": "DEPRECATED in favor of DerivedSource.", "type": "object", "properties": { "derivationMode": { - "enum": [ - "SOURCE_DERIVATION_MODE_UNKNOWN", - "SOURCE_DERIVATION_MODE_INDEPENDENT", - "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT", - "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT" - ], "description": "DEPRECATED", "type": "string", "enumDescriptions": [ @@ -4704,17 +2586,25 @@ "Produce a completely independent Source with no base.", "Produce a Source based on the Source being split.", "Produce a Source based on the base of the Source being split." + ], + "enum": [ + "SOURCE_DERIVATION_MODE_UNKNOWN", + "SOURCE_DERIVATION_MODE_INDEPENDENT", + "SOURCE_DERIVATION_MODE_CHILD_OF_CURRENT", + "SOURCE_DERIVATION_MODE_SIBLING_OF_CURRENT" ] }, "source": { - "$ref": "Source", - "description": "DEPRECATED" + "description": "DEPRECATED", + "$ref": "Source" } }, - "id": "SourceSplitShard", - "description": "DEPRECATED in favor of DerivedSource." + "id": "SourceSplitShard" }, "CPUTime": { + "id": "CPUTime", + "description": "Modeled after information exposed by /proc/stat.", + "type": "object", "properties": { "rate": { "format": "double", @@ -4731,28 +2621,27 @@ "description": "Total active CPU time across all cores (ie., non-idle) in milliseconds\nsince start-up.", "type": "string" } - }, - "id": "CPUTime", - "description": "Modeled after information exposed by /proc/stat.", - "type": "object" + } }, "Environment": { + "description": "Describes the environment in which a Dataflow Job runs.", + "type": "object", "properties": { "sdkPipelineOptions": { - "description": "The Cloud Dataflow SDK pipeline options specified by the user. These\noptions are passed through the service and are used to recreate the\nSDK pipeline options on the worker in a language agnostic and platform\nindependent way.", - "type": "object", "additionalProperties": { "type": "any", "description": "Properties of the object." - } + }, + "description": "The Cloud Dataflow SDK pipeline options specified by the user. These\noptions are passed through the service and are used to recreate the\nSDK pipeline options on the worker in a language agnostic and platform\nindependent way.", + "type": "object" }, "userAgent": { + "type": "object", "additionalProperties": { "description": "Properties of the object.", "type": "any" }, - "description": "A description of the process that generated the request.", - "type": "object" + "description": "A description of the process that generated the request." }, "clusterManagerApiService": { "description": "The type of cluster manager API to use. If unknown or\nunspecified, the service will attempt to choose a reasonable\ndefault. This should be in the form of the API service name,\ne.g. \"compute.googleapis.com\".", @@ -4780,14 +2669,6 @@ }, "type": "array" }, - "internalExperiments": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Experimental settings.", - "type": "object" - }, "version": { "additionalProperties": { "description": "Properties of the object.", @@ -4796,25 +2677,30 @@ "description": "A structure describing which components and their versions of the service\nare required in order to run the job.", "type": "object" }, + "internalExperiments": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Experimental settings.", + "type": "object" + }, "serviceAccountEmail": { - "type": "string", - "description": "Identity to run virtual machines as. Defaults to the default account." + "description": "Identity to run virtual machines as. Defaults to the default account.", + "type": "string" } }, - "id": "Environment", - "description": "Describes the environment in which a Dataflow Job runs.", - "type": "object" + "id": "Environment" }, "StreamingComputationTask": { - "description": "A task which describes what action should be performed for the specified\nstreaming computation ranges.", "type": "object", "properties": { "dataDisks": { - "description": "Describes the set of data disks this task should apply to.", "items": { "$ref": "MountedDataDisk" }, - "type": "array" + "type": "array", + "description": "Describes the set of data disks this task should apply to." }, "taskType": { "enum": [ @@ -4838,20 +2724,16 @@ "type": "array" } }, - "id": "StreamingComputationTask" + "id": "StreamingComputationTask", + "description": "A task which describes what action should be performed for the specified\nstreaming computation ranges." }, "SendDebugCaptureRequest": { - "id": "SendDebugCaptureRequest", "description": "Request to send encoded debug information.", "type": "object", "properties": { - "location": { - "description": "The location which contains the job specified by job_id.", - "type": "string" - }, "data": { - "description": "The encoded debug information.", - "type": "string" + "type": "string", + "description": "The encoded debug information." }, "componentId": { "description": "The internal component id for which debug information is sent.", @@ -4860,8 +2742,13 @@ "workerId": { "description": "The worker id, i.e., VM hostname.", "type": "string" + }, + "location": { + "description": "The location which contains the job specified by job_id.", + "type": "string" } - } + }, + "id": "SendDebugCaptureRequest" }, "GetDebugConfigResponse": { "description": "Response to a get debug configuration request.", @@ -4895,10 +2782,6 @@ }, "StreamingSetupTask": { "properties": { - "streamingComputationTopology": { - "$ref": "TopologyConfig", - "description": "The global topology of the streaming Dataflow job." - }, "drain": { "description": "The user has requested drain.", "type": "boolean" @@ -4909,9 +2792,13 @@ "type": "integer" }, "receiveWorkPort": { + "type": "integer", "format": "int32", - "description": "The TCP port on which the worker should listen for messages from\nother streaming computation workers.", - "type": "integer" + "description": "The TCP port on which the worker should listen for messages from\nother streaming computation workers." + }, + "streamingComputationTopology": { + "$ref": "TopologyConfig", + "description": "The global topology of the streaming Dataflow job." } }, "id": "StreamingSetupTask", @@ -4919,25 +2806,15 @@ "type": "object" }, "PubsubLocation": { - "description": "Identifies a pubsub location to use for transferring data into or\nout of a streaming Dataflow job.", - "type": "object", "properties": { - "withAttributes": { - "description": "If true, then the client has requested to get pubsub attributes.", - "type": "boolean" - }, - "idLabel": { - "type": "string", - "description": "If set, contains a pubsub label from which to extract record ids.\nIf left empty, record deduplication will be strictly best effort." + "topic": { + "description": "A pubsub topic, in the form of\n\"pubsub.googleapis.com/topics/\u003cproject-id\u003e/\u003ctopic-name\u003e\"", + "type": "string" }, "timestampLabel": { "description": "If set, contains a pubsub label from which to extract record timestamps.\nIf left empty, record timestamps will be generated upon arrival.", "type": "string" }, - "topic": { - "type": "string", - "description": "A pubsub topic, in the form of\n\"pubsub.googleapis.com/topics/\u003cproject-id\u003e/\u003ctopic-name\u003e\"" - }, "subscription": { "description": "A pubsub subscription, in the form of\n\"pubsub.googleapis.com/subscriptions/\u003cproject-id\u003e/\u003csubscription-name\u003e\"", "type": "string" @@ -4949,20 +2826,31 @@ "trackingSubscription": { "description": "If set, specifies the pubsub subscription that will be used for tracking\ncustom time timestamps for watermark estimation.", "type": "string" + }, + "withAttributes": { + "description": "If true, then the client has requested to get pubsub attributes.", + "type": "boolean" + }, + "idLabel": { + "description": "If set, contains a pubsub label from which to extract record ids.\nIf left empty, record deduplication will be strictly best effort.", + "type": "string" } }, - "id": "PubsubLocation" + "id": "PubsubLocation", + "description": "Identifies a pubsub location to use for transferring data into or\nout of a streaming Dataflow job.", + "type": "object" }, "WorkerHealthReport": { + "type": "object", "properties": { "pods": { "description": "The pods running on the worker. See:\nhttp://kubernetes.io/v1.1/docs/api-reference/v1/definitions.html#_v1_pod\n\nThis field is used by the worker to send the status of the indvidual\ncontainers running on each worker.", "items": { - "type": "object", "additionalProperties": { "description": "Properties of the object.", "type": "any" - } + }, + "type": "object" }, "type": "array" }, @@ -4982,14 +2870,21 @@ } }, "id": "WorkerHealthReport", - "description": "WorkerHealthReport contains information about the health of a worker.\n\nThe VM should be identified by the labels attached to the WorkerMessage that\nthis health ping belongs to.", - "type": "object" + "description": "WorkerHealthReport contains information about the health of a worker.\n\nThe VM should be identified by the labels attached to the WorkerMessage that\nthis health ping belongs to." }, "JobMessage": { "description": "A particular message pertaining to a Dataflow job.", "type": "object", "properties": { "messageImportance": { + "enum": [ + "JOB_MESSAGE_IMPORTANCE_UNKNOWN", + "JOB_MESSAGE_DEBUG", + "JOB_MESSAGE_DETAILED", + "JOB_MESSAGE_BASIC", + "JOB_MESSAGE_WARNING", + "JOB_MESSAGE_ERROR" + ], "description": "Importance level of the message.", "type": "string", "enumDescriptions": [ @@ -4999,14 +2894,6 @@ "The message is at the 'basic' level: useful for keeping\ntrack of the execution of a Dataflow pipeline. Typically,\nDataflow pipeline runners display log messages at this level by\ndefault, and these messages are displayed by default in the\nDataflow monitoring UI.", "The message is at the 'warning' level: indicating a condition\npertaining to a job which may require human intervention.\nTypically, Dataflow pipeline runners display log messages at this\nlevel by default, and these messages are displayed by default in\nthe Dataflow monitoring UI.", "The message is at the 'error' level: indicating a condition\npreventing a job from succeeding. Typically, Dataflow pipeline\nrunners display log messages at this level by default, and these\nmessages are displayed by default in the Dataflow monitoring UI." - ], - "enum": [ - "JOB_MESSAGE_IMPORTANCE_UNKNOWN", - "JOB_MESSAGE_DEBUG", - "JOB_MESSAGE_DETAILED", - "JOB_MESSAGE_BASIC", - "JOB_MESSAGE_WARNING", - "JOB_MESSAGE_ERROR" ] }, "messageText": { @@ -5026,18 +2913,12 @@ "id": "JobMessage" }, "ParameterMetadata": { + "description": "Metadata for a specific parameter.", "type": "object", "properties": { - "regexes": { - "description": "Optional. Regexes that the parameter must match.", - "items": { - "type": "string" - }, - "type": "array" - }, "label": { - "description": "Required. The label to display for the parameter.", - "type": "string" + "type": "string", + "description": "Required. The label to display for the parameter." }, "helpText": { "description": "Required. The help text to display for the parameter.", @@ -5048,12 +2929,18 @@ "type": "boolean" }, "name": { - "description": "Required. The name of the parameter.", - "type": "string" + "type": "string", + "description": "Required. The name of the parameter." + }, + "regexes": { + "description": "Optional. Regexes that the parameter must match.", + "items": { + "type": "string" + }, + "type": "array" } }, - "id": "ParameterMetadata", - "description": "Metadata for a specific parameter." + "id": "ParameterMetadata" }, "MultiOutputInfo": { "description": "Information about an output of a multi-output DoFn.", @@ -5086,18 +2973,2082 @@ "type": "object", "properties": { "metadata": { - "$ref": "SourceMetadata", - "description": "The computed metadata." + "description": "The computed metadata.", + "$ref": "SourceMetadata" } }, "id": "SourceGetMetadataResponse" + }, + "AutoscalingEvent": { + "description": "A structured message reporting an autoscaling decision made by the Dataflow\nservice.", + "type": "object", + "properties": { + "time": { + "format": "google-datetime", + "description": "The time this event was emitted to indicate a new target or current\nnum_workers value.", + "type": "string" + }, + "description": { + "$ref": "StructuredMessage", + "description": "A message describing why the system decided to adjust the current\nnumber of workers, why it failed, or why the system decided to\nnot make any changes to the number of workers." + }, + "eventType": { + "enumDescriptions": [ + "Default type for the enum. Value should never be returned.", + "The TARGET_NUM_WORKERS_CHANGED type should be used when the target\nworker pool size has changed at the start of an actuation. An event\nshould always be specified as TARGET_NUM_WORKERS_CHANGED if it reflects\na change in the target_num_workers.", + "The CURRENT_NUM_WORKERS_CHANGED type should be used when actual worker\npool size has been changed, but the target_num_workers has not changed.", + "The ACTUATION_FAILURE type should be used when we want to report\nan error to the user indicating why the current number of workers\nin the pool could not be changed.\nDisplayed in the current status and history widgets.", + "Used when we want to report to the user a reason why we are\nnot currently adjusting the number of workers.\nShould specify both target_num_workers, current_num_workers and a\ndecision_message." + ], + "enum": [ + "TYPE_UNKNOWN", + "TARGET_NUM_WORKERS_CHANGED", + "CURRENT_NUM_WORKERS_CHANGED", + "ACTUATION_FAILURE", + "NO_CHANGE" + ], + "description": "The type of autoscaling event to report.", + "type": "string" + }, + "targetNumWorkers": { + "format": "int64", + "description": "The target number of workers the worker pool wants to resize to use.", + "type": "string" + }, + "currentNumWorkers": { + "type": "string", + "format": "int64", + "description": "The current number of workers the job has." + } + }, + "id": "AutoscalingEvent" + }, + "MetricShortId": { + "properties": { + "metricIndex": { + "format": "int32", + "description": "The index of the corresponding metric in\nthe ReportWorkItemStatusRequest. Required.", + "type": "integer" + }, + "shortId": { + "format": "int64", + "description": "The service-generated short identifier for the metric.", + "type": "string" + } + }, + "id": "MetricShortId", + "description": "The metric short id is returned to the user alongside an offset into\nReportWorkItemStatusRequest", + "type": "object" + }, + "ShellTask": { + "description": "A task which consists of a shell command for the worker to execute.", + "type": "object", + "properties": { + "exitCode": { + "format": "int32", + "description": "Exit code for the task.", + "type": "integer" + }, + "command": { + "description": "The shell command to run.", + "type": "string" + } + }, + "id": "ShellTask" + }, + "TaskRunnerSettings": { + "description": "Taskrunner configuration settings.", + "type": "object", + "properties": { + "commandlinesFileName": { + "description": "The file to store preprocessing commands in.", + "type": "string" + }, + "languageHint": { + "description": "The suggested backend language.", + "type": "string" + }, + "baseTaskDir": { + "description": "The location on the worker for task-specific subdirectories.", + "type": "string" + }, + "tempStoragePrefix": { + "description": "The prefix of the resources the taskrunner should use for\ntemporary storage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", + "type": "string" + }, + "baseUrl": { + "description": "The base URL for the taskrunner to use when accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs. If this field is specified, it supplies the base\nURL to use for resolving these relative URLs. The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"", + "type": "string" + }, + "logToSerialconsole": { + "description": "Whether to send taskrunner log info to Google Compute Engine VM serial\nconsole.", + "type": "boolean" + }, + "continueOnException": { + "description": "Whether to continue taskrunner if an exception is hit.", + "type": "boolean" + }, + "parallelWorkerSettings": { + "$ref": "WorkerSettings", + "description": "The settings to pass to the parallel worker harness." + }, + "vmId": { + "description": "The ID string of the VM.", + "type": "string" + }, + "taskUser": { + "description": "The UNIX user ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"root\".", + "type": "string" + }, + "alsologtostderr": { + "description": "Whether to also send taskrunner log info to stderr.", + "type": "boolean" + }, + "taskGroup": { + "description": "The UNIX group ID on the worker VM to use for tasks launched by\ntaskrunner; e.g. \"wheel\".", + "type": "string" + }, + "harnessCommand": { + "description": "The command to launch the worker harness.", + "type": "string" + }, + "logDir": { + "description": "The directory on the VM to store logs.", + "type": "string" + }, + "dataflowApiVersion": { + "description": "The API version of endpoint, e.g. \"v1b3\"", + "type": "string" + }, + "oauthScopes": { + "description": "The OAuth2 scopes to be requested by the taskrunner in order to\naccess the Cloud Dataflow API.", + "items": { + "type": "string" + }, + "type": "array" + }, + "streamingWorkerMainClass": { + "description": "The streaming worker main class name.", + "type": "string" + }, + "logUploadLocation": { + "description": "Indicates where to put logs. If this is not specified, the logs\nwill not be uploaded.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", + "type": "string" + }, + "workflowFileName": { + "description": "The file to store the workflow in.", + "type": "string" + } + }, + "id": "TaskRunnerSettings" + }, + "Position": { + "id": "Position", + "description": "Position defines a position within a collection of data. The value\ncan be either the end position, a key (used with ordered\ncollections), a byte offset, or a record index.", + "type": "object", + "properties": { + "concatPosition": { + "$ref": "ConcatPosition", + "description": "CloudPosition is a concat position." + }, + "byteOffset": { + "format": "int64", + "description": "Position is a byte offset.", + "type": "string" + }, + "end": { + "description": "Position is past all other positions. Also useful for the end\nposition of an unbounded range.", + "type": "boolean" + }, + "key": { + "description": "Position is a string key, ordered lexicographically.", + "type": "string" + }, + "recordIndex": { + "format": "int64", + "description": "Position is a record index.", + "type": "string" + }, + "shufflePosition": { + "description": "CloudPosition is a base64 encoded BatchShufflePosition (with FIXED\nsharding).", + "type": "string" + } + } + }, + "SplitInt64": { + "description": "A representation of an int64, n, that is immune to precision loss when\nencoded in JSON.", + "type": "object", + "properties": { + "lowBits": { + "format": "uint32", + "description": "The low order bits: n & 0xffffffff.", + "type": "integer" + }, + "highBits": { + "format": "int32", + "description": "The high order bits, including the sign: n \u003e\u003e 32.", + "type": "integer" + } + }, + "id": "SplitInt64" + }, + "Source": { + "type": "object", + "properties": { + "baseSpecs": { + "description": "While splitting, sources may specify the produced bundles\nas differences against another source, in order to save backend-side\nmemory and allow bigger jobs. For details, see SourceSplitRequest.\nTo support this use case, the full set of parameters of the source\nis logically obtained by taking the latest explicitly specified value\nof each parameter in the order:\nbase_specs (later items win), spec (overrides anything in base_specs).", + "items": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "doesNotNeedSplitting": { + "type": "boolean", + "description": "Setting this value to true hints to the framework that the source\ndoesn't need splitting, and using SourceSplitRequest on it would\nyield SOURCE_SPLIT_OUTCOME_USE_CURRENT.\n\nE.g. a file splitter may set this to true when splitting a single file\ninto a set of byte ranges of appropriate size, and set this\nto false when splitting a filepattern into individual files.\nHowever, for efficiency, a file splitter may decide to produce\nfile subranges directly from the filepattern to avoid a splitting\nround-trip.\n\nSee SourceSplitRequest for an overview of the splitting process.\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated." + }, + "codec": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The codec to use to decode data read from the source.", + "type": "object" + }, + "spec": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The source to read from, plus its parameters.", + "type": "object" + }, + "metadata": { + "description": "Optionally, metadata for this source can be supplied right away,\navoiding a SourceGetMetadataOperation roundtrip\n(see SourceOperationRequest).\n\nThis field is meaningful only in the Source objects populated\nby the user (e.g. when filling in a DerivedSource).\nSource objects supplied by the framework to the user don't have\nthis field populated.", + "$ref": "SourceMetadata" + } + }, + "id": "Source", + "description": "A source that records can be read and decoded from." + }, + "WorkerPool": { + "description": "Describes one particular pool of Cloud Dataflow workers to be\ninstantiated by the Cloud Dataflow service in order to perform the\ncomputations required by a job. Note that a workflow job may use\nmultiple pools, in order to match the various computational\nrequirements of the various stages of the job.", + "type": "object", + "properties": { + "machineType": { + "description": "Machine type (e.g. \"n1-standard-1\"). If empty or unspecified, the\nservice will attempt to choose a reasonable default.", + "type": "string" + }, + "diskType": { + "description": "Type of root disk for VMs. If empty or unspecified, the service will\nattempt to choose a reasonable default.", + "type": "string" + }, + "kind": { + "description": "The kind of the worker pool; currently only `harness` and `shuffle`\nare supported.", + "type": "string" + }, + "dataDisks": { + "description": "Data disks that are used by a VM in this workflow.", + "items": { + "$ref": "Disk" + }, + "type": "array" + }, + "subnetwork": { + "type": "string", + "description": "Subnetwork to which VMs will be assigned, if desired. Expected to be of\nthe form \"regions/REGION/subnetworks/SUBNETWORK\"." + }, + "ipConfiguration": { + "description": "Configuration for VM IPs.", + "type": "string", + "enumDescriptions": [ + "The configuration is unknown, or unspecified.", + "Workers should have public IP addresses.", + "Workers should have private IP addresses." + ], + "enum": [ + "WORKER_IP_UNSPECIFIED", + "WORKER_IP_PUBLIC", + "WORKER_IP_PRIVATE" + ] + }, + "taskrunnerSettings": { + "$ref": "TaskRunnerSettings", + "description": "Settings passed through to Google Compute Engine workers when\nusing the standard Dataflow task runner. Users should ignore\nthis field." + }, + "autoscalingSettings": { + "description": "Settings for autoscaling of this WorkerPool.", + "$ref": "AutoscalingSettings" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "Metadata to set on the Google Compute Engine VMs.", + "type": "object" + }, + "network": { + "description": "Network to which VMs will be assigned. If empty or unspecified,\nthe service will use the network \"default\".", + "type": "string" + }, + "defaultPackageSet": { + "enumDescriptions": [ + "The default set of packages to stage is unknown, or unspecified.", + "Indicates that no packages should be staged at the worker unless\nexplicitly specified by the job.", + "Stage packages typically useful to workers written in Java.", + "Stage pacakges typically useful to workers written in Python." + ], + "enum": [ + "DEFAULT_PACKAGE_SET_UNKNOWN", + "DEFAULT_PACKAGE_SET_NONE", + "DEFAULT_PACKAGE_SET_JAVA", + "DEFAULT_PACKAGE_SET_PYTHON" + ], + "description": "The default package set to install. This allows the service to\nselect a default set of packages which are useful to worker\nharnesses written in a particular language.", + "type": "string" + }, + "numThreadsPerWorker": { + "format": "int32", + "description": "The number of threads per worker harness. If empty or unspecified, the\nservice will choose a number of threads (according to the number of cores\non the selected machine type for batch, or 1 by convention for streaming).", + "type": "integer" + }, + "numWorkers": { + "format": "int32", + "description": "Number of Google Compute Engine workers in this pool needed to\nexecute the job. If zero or unspecified, the service will\nattempt to choose a reasonable default.", + "type": "integer" + }, + "zone": { + "description": "Zone to run the worker pools in. If empty or unspecified, the service\nwill attempt to choose a reasonable default.", + "type": "string" + }, + "diskSourceImage": { + "description": "Fully qualified source image for disks.", + "type": "string" + }, + "packages": { + "description": "Packages to be installed on workers.", + "items": { + "$ref": "Package" + }, + "type": "array" + }, + "teardownPolicy": { + "enumDescriptions": [ + "The teardown policy isn't specified, or is unknown.", + "Always teardown the resource.", + "Teardown the resource on success. This is useful for debugging\nfailures.", + "Never teardown the resource. This is useful for debugging and\ndevelopment." + ], + "enum": [ + "TEARDOWN_POLICY_UNKNOWN", + "TEARDOWN_ALWAYS", + "TEARDOWN_ON_SUCCESS", + "TEARDOWN_NEVER" + ], + "description": "Sets the policy for determining when to turndown worker pool.\nAllowed values are: `TEARDOWN_ALWAYS`, `TEARDOWN_ON_SUCCESS`, and\n`TEARDOWN_NEVER`.\n`TEARDOWN_ALWAYS` means workers are always torn down regardless of whether\nthe job succeeds. `TEARDOWN_ON_SUCCESS` means workers are torn down\nif the job succeeds. `TEARDOWN_NEVER` means the workers are never torn\ndown.\n\nIf the workers are not torn down by the service, they will\ncontinue to run and use Google Compute Engine VM resources in the\nuser's project until they are explicitly terminated by the user.\nBecause of this, Google recommends using the `TEARDOWN_ALWAYS`\npolicy except for small, manually supervised test jobs.\n\nIf unknown or unspecified, the service will attempt to choose a reasonable\ndefault.", + "type": "string" + }, + "onHostMaintenance": { + "description": "The action to take on host maintenance, as defined by the Google\nCompute Engine API.", + "type": "string" + }, + "poolArgs": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Extra arguments for this worker pool.", + "type": "object" + }, + "diskSizeGb": { + "format": "int32", + "description": "Size of root disk for VMs, in GB. If zero or unspecified, the service will\nattempt to choose a reasonable default.", + "type": "integer" + }, + "workerHarnessContainerImage": { + "description": "Required. Docker container image that executes the Cloud Dataflow worker\nharness, residing in Google Container Registry.", + "type": "string" + } + }, + "id": "WorkerPool" + }, + "SourceOperationRequest": { + "description": "A work item that represents the different operations that can be\nperformed on a user-defined Source specification.", + "type": "object", + "properties": { + "getMetadata": { + "description": "Information about a request to get metadata about a source.", + "$ref": "SourceGetMetadataRequest" + }, + "split": { + "$ref": "SourceSplitRequest", + "description": "Information about a request to split a source." + } + }, + "id": "SourceOperationRequest" + }, + "StructuredMessage": { + "description": "A rich message format, including a human readable string, a key for\nidentifying the message, and structured data associated with the message for\nprogrammatic consumption.", + "type": "object", + "properties": { + "parameters": { + "items": { + "$ref": "Parameter" + }, + "type": "array", + "description": "The structured data associated with this message." + }, + "messageKey": { + "description": "Idenfier for this message type. Used by external systems to\ninternationalize or personalize message.", + "type": "string" + }, + "messageText": { + "description": "Human-readable version of message.", + "type": "string" + } + }, + "id": "StructuredMessage" + }, + "WorkItem": { + "id": "WorkItem", + "description": "WorkItem represents basic information about a WorkItem to be executed\nin the cloud.", + "type": "object", + "properties": { + "reportStatusInterval": { + "format": "google-duration", + "description": "Recommended reporting interval.", + "type": "string" + }, + "streamingSetupTask": { + "$ref": "StreamingSetupTask", + "description": "Additional information for StreamingSetupTask WorkItems." + }, + "sourceOperationTask": { + "description": "Additional information for source operation WorkItems.", + "$ref": "SourceOperationRequest" + }, + "leaseExpireTime": { + "format": "google-datetime", + "description": "Time when the lease on this Work will expire.", + "type": "string" + }, + "streamingConfigTask": { + "$ref": "StreamingConfigTask", + "description": "Additional information for StreamingConfigTask WorkItems." + }, + "initialReportIndex": { + "format": "int64", + "description": "The initial index to use when reporting the status of the WorkItem.", + "type": "string" + }, + "streamingComputationTask": { + "description": "Additional information for StreamingComputationTask WorkItems.", + "$ref": "StreamingComputationTask" + }, + "shellTask": { + "description": "Additional information for ShellTask WorkItems.", + "$ref": "ShellTask" + }, + "jobId": { + "description": "Identifies the workflow job this WorkItem belongs to.", + "type": "string" + }, + "id": { + "format": "int64", + "description": "Identifies this WorkItem.", + "type": "string" + }, + "configuration": { + "description": "Work item-specific configuration as an opaque blob.", + "type": "string" + }, + "mapTask": { + "$ref": "MapTask", + "description": "Additional information for MapTask WorkItems." + }, + "seqMapTask": { + "$ref": "SeqMapTask", + "description": "Additional information for SeqMapTask WorkItems." + }, + "packages": { + "description": "Any required packages that need to be fetched in order to execute\nthis WorkItem.", + "items": { + "$ref": "Package" + }, + "type": "array" + }, + "projectId": { + "description": "Identifies the cloud project this WorkItem belongs to.", + "type": "string" + } + } + }, + "ReportedParallelism": { + "description": "Represents the level of parallelism in a WorkItem's input,\nreported by the worker.", + "type": "object", + "properties": { + "isInfinite": { + "description": "Specifies whether the parallelism is infinite. If true, \"value\" is\nignored.\nInfinite parallelism means the service will assume that the work item\ncan always be split into more non-empty work items by dynamic splitting.\nThis is a work-around for lack of support for infinity by the current\nJSON-based Java RPC stack.", + "type": "boolean" + }, + "value": { + "format": "double", + "description": "Specifies the level of parallelism in case it is finite.", + "type": "number" + } + }, + "id": "ReportedParallelism" + }, + "ResourceUtilizationReport": { + "properties": { + "cpuTime": { + "description": "CPU utilization samples.", + "items": { + "$ref": "CPUTime" + }, + "type": "array" + } + }, + "id": "ResourceUtilizationReport", + "description": "Worker metrics exported from workers. This contains resource utilization\nmetrics accumulated from a variety of sources. For more information, see\ngo/df-resource-signals.", + "type": "object" + }, + "TopologyConfig": { + "description": "Global topology of the streaming Dataflow job, including all\ncomputations and their sharded locations.", + "type": "object", + "properties": { + "persistentStateVersion": { + "format": "int32", + "description": "Version number for persistent state.", + "type": "integer" + }, + "dataDiskAssignments": { + "description": "The disks assigned to a streaming Dataflow job.", + "items": { + "$ref": "DataDiskAssignment" + }, + "type": "array" + }, + "forwardingKeyBits": { + "format": "int32", + "description": "The size (in bits) of keys that will be assigned to source messages.", + "type": "integer" + }, + "userStageToComputationNameMap": { + "description": "Maps user stage names to stable computation names.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "computations": { + "description": "The computations associated with a streaming Dataflow job.", + "items": { + "$ref": "ComputationTopology" + }, + "type": "array" + } + }, + "id": "TopologyConfig" + }, + "SourceSplitOptions": { + "properties": { + "desiredBundleSizeBytes": { + "type": "string", + "format": "int64", + "description": "The source should be split into a set of bundles where the estimated size\nof each is approximately this many bytes." + }, + "desiredShardSizeBytes": { + "format": "int64", + "description": "DEPRECATED in favor of desired_bundle_size_bytes.", + "type": "string" + } + }, + "id": "SourceSplitOptions", + "description": "Hints for splitting a Source into bundles (parts for parallel\nprocessing) using SourceSplitRequest.", + "type": "object" + }, + "ReadInstruction": { + "description": "An instruction that reads records.\nTakes no inputs, produces one output.", + "type": "object", + "properties": { + "source": { + "$ref": "Source", + "description": "The source to read from." + } + }, + "id": "ReadInstruction" + }, + "WorkerSettings": { + "properties": { + "servicePath": { + "description": "The Cloud Dataflow service path relative to the root URL, for example,\n\"dataflow/v1b3/projects\".", + "type": "string" + }, + "shuffleServicePath": { + "description": "The Shuffle service path relative to the root URL, for example,\n\"shuffle/v1beta1\".", + "type": "string" + }, + "workerId": { + "description": "The ID of the worker running this pipeline.", + "type": "string" + }, + "tempStoragePrefix": { + "description": "The prefix of the resources the system should use for temporary\nstorage.\n\nThe supported resource type is:\n\nGoogle Cloud Storage:\n\n storage.googleapis.com/{bucket}/{object}\n bucket.storage.googleapis.com/{object}", + "type": "string" + }, + "baseUrl": { + "type": "string", + "description": "The base URL for accessing Google Cloud APIs.\n\nWhen workers access Google Cloud APIs, they logically do so via\nrelative URLs. If this field is specified, it supplies the base\nURL to use for resolving these relative URLs. The normative\nalgorithm used is defined by RFC 1808, \"Relative Uniform Resource\nLocators\".\n\nIf not specified, the default value is \"http://www.googleapis.com/\"" + }, + "reportingEnabled": { + "type": "boolean", + "description": "Whether to send work progress updates to the service." + } + }, + "id": "WorkerSettings", + "description": "Provides data to pass through to the worker harness.", + "type": "object" + }, + "StreamingStageLocation": { + "type": "object", + "properties": { + "streamId": { + "description": "Identifies the particular stream within the streaming Dataflow\njob.", + "type": "string" + } + }, + "id": "StreamingStageLocation", + "description": "Identifies the location of a streaming computation stage, for\nstage-to-stage communication." + }, + "DataDiskAssignment": { + "description": "Data disk assignment for a given VM instance.", + "type": "object", + "properties": { + "vmInstance": { + "description": "VM instance name the data disks mounted to, for example\n\"myproject-1014-104817-4c2-harness-0\".", + "type": "string" + }, + "dataDisks": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Mounted data disks. The order is important a data disk's 0-based index in\nthis list defines which persistent directory the disk is mounted to, for\nexample the list of { \"myproject-1014-104817-4c2-harness-0-disk-0\" },\n{ \"myproject-1014-104817-4c2-harness-0-disk-1\" }." + } + }, + "id": "DataDiskAssignment" + }, + "ApproximateSplitRequest": { + "type": "object", + "properties": { + "position": { + "description": "A Position at which to split the work item.", + "$ref": "Position" + }, + "fractionConsumed": { + "format": "double", + "description": "A fraction at which to split the work item, from 0.0 (beginning of the\ninput) to 1.0 (end of the input).", + "type": "number" + } + }, + "id": "ApproximateSplitRequest", + "description": "A suggestion by the service to the worker to dynamically split the WorkItem." + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "ExecutionStageState": { + "properties": { + "executionStageState": { + "enumDescriptions": [ + "The job's run state isn't specified.", + "`JOB_STATE_STOPPED` indicates that the job has not\nyet started to run.", + "`JOB_STATE_RUNNING` indicates that the job is currently running.", + "`JOB_STATE_DONE` indicates that the job has successfully completed.\nThis is a terminal job state. This state may be set by the Cloud Dataflow\nservice, as a transition from `JOB_STATE_RUNNING`. It may also be set via a\nCloud Dataflow `UpdateJob` call, if the job has not yet reached a terminal\nstate.", + "`JOB_STATE_FAILED` indicates that the job has failed. This is a\nterminal job state. This state may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_RUNNING`.", + "`JOB_STATE_CANCELLED` indicates that the job has been explicitly\ncancelled. This is a terminal job state. This state may only be\nset via a Cloud Dataflow `UpdateJob` call, and only if the job has not\nyet reached another terminal state.", + "`JOB_STATE_UPDATED` indicates that the job was successfully updated,\nmeaning that this job was stopped and another job was started, inheriting\nstate from this one. This is a terminal job state. This state may only be\nset by the Cloud Dataflow service, and only as a transition from\n`JOB_STATE_RUNNING`.", + "`JOB_STATE_DRAINING` indicates that the job is in the process of draining.\nA draining job has stopped pulling from its input sources and is processing\nany data that remains in-flight. This state may be set via a Cloud Dataflow\n`UpdateJob` call, but only as a transition from `JOB_STATE_RUNNING`. Jobs\nthat are draining may only transition to `JOB_STATE_DRAINED`,\n`JOB_STATE_CANCELLED`, or `JOB_STATE_FAILED`.", + "`JOB_STATE_DRAINED` indicates that the job has been drained.\nA drained job terminated by stopping pulling from its input sources and\nprocessing any data that remained in-flight when draining was requested.\nThis state is a terminal state, may only be set by the Cloud Dataflow\nservice, and only as a transition from `JOB_STATE_DRAINING`.", + "'JOB_STATE_PENDING' indicates that the job has been created but is not yet\nrunning. Jobs that are pending may only transition to `JOB_STATE_RUNNING`,\nor `JOB_STATE_FAILED`.", + "'JOB_STATE_CANCELLING' indicates that the job has been explicitly cancelled\nand is in the process of stopping. Jobs that are cancelling may only\ntransition to 'JOB_STATE_CANCELLED' or 'JOB_STATE_FAILED'." + ], + "enum": [ + "JOB_STATE_UNKNOWN", + "JOB_STATE_STOPPED", + "JOB_STATE_RUNNING", + "JOB_STATE_DONE", + "JOB_STATE_FAILED", + "JOB_STATE_CANCELLED", + "JOB_STATE_UPDATED", + "JOB_STATE_DRAINING", + "JOB_STATE_DRAINED", + "JOB_STATE_PENDING", + "JOB_STATE_CANCELLING" + ], + "description": "Executions stage states allow the same set of values as JobState.", + "type": "string" + }, + "executionStageName": { + "description": "The name of the execution stage.", + "type": "string" + }, + "currentStateTime": { + "format": "google-datetime", + "description": "The time at which the stage transitioned to this state.", + "type": "string" + } + }, + "id": "ExecutionStageState", + "description": "A message describing the state of a particular execution stage.", + "type": "object" + }, + "StreamLocation": { + "properties": { + "sideInputLocation": { + "$ref": "StreamingSideInputLocation", + "description": "The stream is a streaming side input." + }, + "pubsubLocation": { + "description": "The stream is a pubsub stream.", + "$ref": "PubsubLocation" + }, + "streamingStageLocation": { + "$ref": "StreamingStageLocation", + "description": "The stream is part of another computation within the current\nstreaming Dataflow job." + }, + "customSourceLocation": { + "$ref": "CustomSourceLocation", + "description": "The stream is a custom source." + } + }, + "id": "StreamLocation", + "description": "Describes a stream of data, either as input to be processed or as\noutput of a streaming Dataflow job.", + "type": "object" + }, + "SendWorkerMessagesResponse": { + "type": "object", + "properties": { + "workerMessageResponses": { + "description": "The servers response to the worker messages.", + "items": { + "$ref": "WorkerMessageResponse" + }, + "type": "array" + } + }, + "id": "SendWorkerMessagesResponse", + "description": "The response to the worker messages." + }, + "StreamingComputationConfig": { + "description": "Configuration information for a single streaming computation.", + "type": "object", + "properties": { + "computationId": { + "description": "Unique identifier for this computation.", + "type": "string" + }, + "stageName": { + "description": "Stage name of this computation.", + "type": "string" + }, + "systemName": { + "description": "System defined name for this computation.", + "type": "string" + }, + "instructions": { + "items": { + "$ref": "ParallelInstruction" + }, + "type": "array", + "description": "Instructions that comprise the computation." + } + }, + "id": "StreamingComputationConfig" + }, + "TransformSummary": { + "id": "TransformSummary", + "description": "Description of the type, names/ids, and input/outputs for a transform.", + "type": "object", + "properties": { + "kind": { + "enumDescriptions": [ + "Unrecognized transform type.", + "ParDo transform.", + "Group By Key transform.", + "Flatten transform.", + "Read transform.", + "Write transform.", + "Constructs from a constant value, such as with Create.of.", + "Creates a Singleton view of a collection.", + "Opening or closing a shuffle session, often as part of a GroupByKey." + ], + "enum": [ + "UNKNOWN_KIND", + "PAR_DO_KIND", + "GROUP_BY_KEY_KIND", + "FLATTEN_KIND", + "READ_KIND", + "WRITE_KIND", + "CONSTANT_KIND", + "SINGLETON_KIND", + "SHUFFLE_KIND" + ], + "description": "Type of transform.", + "type": "string" + }, + "inputCollectionName": { + "description": "User names for all collection inputs to this transform.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "User provided name for this transform instance.", + "type": "string" + }, + "id": { + "description": "SDK generated id of this transform instance.", + "type": "string" + }, + "outputCollectionName": { + "description": "User names for all collection outputs to this transform.", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayData": { + "description": "Transform-specific display data.", + "items": { + "$ref": "DisplayData" + }, + "type": "array" + } + } + }, + "LeaseWorkItemResponse": { + "properties": { + "workItems": { + "description": "A list of the leased WorkItems.", + "items": { + "$ref": "WorkItem" + }, + "type": "array" + } + }, + "id": "LeaseWorkItemResponse", + "description": "Response to a request to lease WorkItems.", + "type": "object" + }, + "LaunchTemplateParameters": { + "description": "Parameters to provide to the template being launched.", + "type": "object", + "properties": { + "jobName": { + "description": "Required. The job name to use for the created job.", + "type": "string" + }, + "environment": { + "description": "The runtime environment for the job.", + "$ref": "RuntimeEnvironment" + }, + "parameters": { + "description": "The runtime parameters to pass to the job.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "id": "LaunchTemplateParameters" + }, + "Sink": { + "description": "A sink that records can be encoded and written to.", + "type": "object", + "properties": { + "spec": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The sink to write to, plus its parameters.", + "type": "object" + }, + "codec": { + "description": "The codec to use to encode data written to the sink.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + } + }, + "id": "Sink" + }, + "FlattenInstruction": { + "id": "FlattenInstruction", + "description": "An instruction that copies its inputs (zero or more) to its (single) output.", + "type": "object", + "properties": { + "inputs": { + "description": "Describes the inputs to the flatten instruction.", + "items": { + "$ref": "InstructionInput" + }, + "type": "array" + } + } + }, + "PartialGroupByKeyInstruction": { + "properties": { + "valueCombiningFn": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The value combining function to invoke.", + "type": "object" + }, + "inputElementCodec": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The codec to use for interpreting an element in the input PTable." + }, + "originalCombineValuesInputStoreName": { + "description": "If this instruction includes a combining function this is the name of the\nintermediate store between the GBK and the CombineValues.", + "type": "string" + }, + "sideInputs": { + "description": "Zero or more side inputs.", + "items": { + "$ref": "SideInputInfo" + }, + "type": "array" + }, + "originalCombineValuesStepName": { + "description": "If this instruction includes a combining function, this is the name of the\nCombineValues instruction lifted into this instruction.", + "type": "string" + }, + "input": { + "$ref": "InstructionInput", + "description": "Describes the input to the partial group-by-key instruction." + } + }, + "id": "PartialGroupByKeyInstruction", + "description": "An instruction that does a partial group-by-key.\nOne input and one output.", + "type": "object" + }, + "StageSource": { + "description": "Description of an input or output of an execution stage.", + "type": "object", + "properties": { + "originalTransformOrCollection": { + "description": "User name for the original user transform or collection with which this\nsource is most closely associated.", + "type": "string" + }, + "sizeBytes": { + "type": "string", + "format": "int64", + "description": "Size of the source, if measurable." + }, + "name": { + "description": "Dataflow service generated name for this source.", + "type": "string" + }, + "userName": { + "description": "Human-readable name for this source; may be user or system generated.", + "type": "string" + } + }, + "id": "StageSource" + }, + "InstructionInput": { + "description": "An input of an instruction, as a reference to an output of a\nproducer instruction.", + "type": "object", + "properties": { + "producerInstructionIndex": { + "format": "int32", + "description": "The index (origin zero) of the parallel instruction that produces\nthe output to be consumed by this input. This index is relative\nto the list of instructions in this input's instruction's\ncontaining MapTask.", + "type": "integer" + }, + "outputNum": { + "format": "int32", + "description": "The output index (origin zero) within the producer.", + "type": "integer" + } + }, + "id": "InstructionInput" + }, + "StringList": { + "type": "object", + "properties": { + "elements": { + "description": "Elements of the list.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "StringList", + "description": "A metric value representing a list of strings." + }, + "DisplayData": { + "description": "Data provided with a pipeline or transform to provide descriptive info.", + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "An optional full URL." + }, + "label": { + "description": "An optional label to display in a dax UI for the element.", + "type": "string" + }, + "timestampValue": { + "format": "google-datetime", + "description": "Contains value if the data is of timestamp type.", + "type": "string" + }, + "boolValue": { + "description": "Contains value if the data is of a boolean type.", + "type": "boolean" + }, + "javaClassValue": { + "description": "Contains value if the data is of java class type.", + "type": "string" + }, + "strValue": { + "description": "Contains value if the data is of string type.", + "type": "string" + }, + "durationValue": { + "format": "google-duration", + "description": "Contains value if the data is of duration type.", + "type": "string" + }, + "int64Value": { + "type": "string", + "format": "int64", + "description": "Contains value if the data is of int64 type." + }, + "namespace": { + "description": "The namespace for the key. This is usually a class name or programming\nlanguage namespace (i.e. python module) which defines the display data.\nThis allows a dax monitoring system to specially handle the data\nand perform custom rendering.", + "type": "string" + }, + "floatValue": { + "format": "float", + "description": "Contains value if the data is of float type.", + "type": "number" + }, + "key": { + "description": "The key identifying the display data.\nThis is intended to be used as a label for the display data\nwhen viewed in a dax monitoring system.", + "type": "string" + }, + "shortStrValue": { + "description": "A possible additional shorter value to display.\nFor example a java_class_name_value of com.mypackage.MyDoFn\nwill be stored with MyDoFn as the short_str_value and\ncom.mypackage.MyDoFn as the java_class_name value.\nshort_str_value can be displayed and java_class_name_value\nwill be displayed as a tooltip.", + "type": "string" + } + }, + "id": "DisplayData" + }, + "GetDebugConfigRequest": { + "description": "Request to get updated debug configuration for component.", + "type": "object", + "properties": { + "componentId": { + "description": "The internal component id for which debug configuration is\nrequested.", + "type": "string" + }, + "workerId": { + "description": "The worker id, i.e., VM hostname.", + "type": "string" + }, + "location": { + "description": "The location which contains the job specified by job_id.", + "type": "string" + } + }, + "id": "GetDebugConfigRequest" + }, + "LeaseWorkItemRequest": { + "description": "Request to lease WorkItems.", + "type": "object", + "properties": { + "currentWorkerTime": { + "format": "google-datetime", + "description": "The current timestamp at the worker.", + "type": "string" + }, + "location": { + "description": "The location which contains the WorkItem's job.", + "type": "string" + }, + "workItemTypes": { + "description": "Filter for WorkItem type.", + "items": { + "type": "string" + }, + "type": "array" + }, + "workerId": { + "type": "string", + "description": "Identifies the worker leasing work -- typically the ID of the\nvirtual machine running the worker." + }, + "workerCapabilities": { + "description": "Worker capabilities. WorkItems might be limited to workers with specific\ncapabilities.", + "items": { + "type": "string" + }, + "type": "array" + }, + "requestedLeaseDuration": { + "type": "string", + "format": "google-duration", + "description": "The initial lease period." + } + }, + "id": "LeaseWorkItemRequest" + }, + "GetTemplateResponse": { + "description": "The response to a GetTemplate request.", + "type": "object", + "properties": { + "metadata": { + "$ref": "TemplateMetadata", + "description": "The template metadata describing the template name, available\nparameters, etc." + }, + "status": { + "$ref": "Status", + "description": "The status of the get template request. Any problems with the\nrequest will be indicated in the error_details." + } + }, + "id": "GetTemplateResponse" + }, + "Parameter": { + "description": "Structured data associated with this message.", + "type": "object", + "properties": { + "value": { + "description": "Value for this parameter.", + "type": "any" + }, + "key": { + "description": "Key or name for this parameter.", + "type": "string" + } + }, + "id": "Parameter" + }, + "ReportWorkItemStatusRequest": { + "description": "Request to report the status of WorkItems.", + "type": "object", + "properties": { + "currentWorkerTime": { + "format": "google-datetime", + "description": "The current timestamp at the worker.", + "type": "string" + }, + "workerId": { + "description": "The ID of the worker reporting the WorkItem status. If this\ndoes not match the ID of the worker which the Dataflow service\nbelieves currently has the lease on the WorkItem, the report\nwill be dropped (with an error response).", + "type": "string" + }, + "location": { + "description": "The location which contains the WorkItem's job.", + "type": "string" + }, + "workItemStatuses": { + "description": "The order is unimportant, except that the order of the\nWorkItemServiceState messages in the ReportWorkItemStatusResponse\ncorresponds to the order of WorkItemStatus messages here.", + "items": { + "$ref": "WorkItemStatus" + }, + "type": "array" + } + }, + "id": "ReportWorkItemStatusRequest" + }, + "PipelineDescription": { + "type": "object", + "properties": { + "originalPipelineTransform": { + "description": "Description of each transform in the pipeline and collections between them.", + "items": { + "$ref": "TransformSummary" + }, + "type": "array" + }, + "displayData": { + "description": "Pipeline level display data.", + "items": { + "$ref": "DisplayData" + }, + "type": "array" + }, + "executionPipelineStage": { + "description": "Description of each stage of execution of the pipeline.", + "items": { + "$ref": "ExecutionStageSummary" + }, + "type": "array" + } + }, + "id": "PipelineDescription", + "description": "A descriptive representation of submitted pipeline as well as the executed\nform. This data is provided by the Dataflow service for ease of visualizing\nthe pipeline and interpretting Dataflow provided metrics." + }, + "StreamingConfigTask": { + "description": "A task that carries configuration information for streaming computations.", + "type": "object", + "properties": { + "windmillServiceEndpoint": { + "description": "If present, the worker must use this endpoint to communicate with Windmill\nService dispatchers, otherwise the worker must continue to use whatever\nendpoint it had been using.", + "type": "string" + }, + "userStepToStateFamilyNameMap": { + "additionalProperties": { + "type": "string" + }, + "description": "Map from user step names to state families.", + "type": "object" + }, + "windmillServicePort": { + "type": "string", + "format": "int64", + "description": "If present, the worker must use this port to communicate with Windmill\nService dispatchers. Only applicable when windmill_service_endpoint is\nspecified." + }, + "streamingComputationConfigs": { + "description": "Set of computation configuration information.", + "items": { + "$ref": "StreamingComputationConfig" + }, + "type": "array" + } + }, + "id": "StreamingConfigTask" + }, + "JobExecutionInfo": { + "type": "object", + "properties": { + "stages": { + "description": "A mapping from each stage to the information about that stage.", + "type": "object", + "additionalProperties": { + "$ref": "JobExecutionStageInfo" + } + } + }, + "id": "JobExecutionInfo", + "description": "Additional information about how a Cloud Dataflow job will be executed that\nisn't contained in the submitted job." + }, + "Step": { + "description": "Defines a particular step within a Cloud Dataflow job.\n\nA job consists of multiple steps, each of which performs some\nspecific operation as part of the overall job. Data is typically\npassed from one step to another as part of the job.\n\nHere's an example of a sequence of steps which together implement a\nMap-Reduce job:\n\n * Read a collection of data from some source, parsing the\n collection's elements.\n\n * Validate the elements.\n\n * Apply a user-defined function to map each element to some value\n and extract an element-specific key value.\n\n * Group elements with the same key into a single element with\n that key, transforming a multiply-keyed collection into a\n uniquely-keyed collection.\n\n * Write the elements out to some data sink.\n\nNote that the Cloud Dataflow service may be used to run many different\ntypes of jobs, not just Map-Reduce.", + "type": "object", + "properties": { + "name": { + "description": "The name that identifies the step. This must be unique for each\nstep with respect to all other steps in the Cloud Dataflow job.", + "type": "string" + }, + "kind": { + "type": "string", + "description": "The kind of step in the Cloud Dataflow job." + }, + "properties": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "Named properties associated with the step. Each kind of\npredefined step has its own required set of properties.\nMust be provided on Create. Only retrieved with JOB_VIEW_ALL.", + "type": "object" + } + }, + "id": "Step" + }, + "FailedLocation": { + "properties": { + "name": { + "description": "The name of the failed location.", + "type": "string" + } + }, + "id": "FailedLocation", + "description": "Indicates which location failed to respond to a request for data.", + "type": "object" + }, + "Disk": { + "description": "Describes the data disk used by a workflow job.", + "type": "object", + "properties": { + "diskType": { + "type": "string", + "description": "Disk storage type, as defined by Google Compute Engine. This\nmust be a disk type appropriate to the project and zone in which\nthe workers will run. If unknown or unspecified, the service\nwill attempt to choose a reasonable default.\n\nFor example, the standard persistent disk type is a resource name\ntypically ending in \"pd-standard\". If SSD persistent disks are\navailable, the resource name typically ends with \"pd-ssd\". The\nactual valid values are defined the Google Compute Engine API,\nnot by the Cloud Dataflow API; consult the Google Compute Engine\ndocumentation for more information about determining the set of\navailable disk types for a particular project and zone.\n\nGoogle Compute Engine Disk types are local to a particular\nproject in a particular zone, and so the resource name will\ntypically look something like this:\n\ncompute.googleapis.com/projects/project-id/zones/zone/diskTypes/pd-standard" + }, + "sizeGb": { + "format": "int32", + "description": "Size of disk in GB. If zero or unspecified, the service will\nattempt to choose a reasonable default.", + "type": "integer" + }, + "mountPoint": { + "description": "Directory in a VM where disk is mounted.", + "type": "string" + } + }, + "id": "Disk" + }, + "ListJobMessagesResponse": { + "description": "Response to a request to list job messages.", + "type": "object", + "properties": { + "autoscalingEvents": { + "description": "Autoscaling events in ascending timestamp order.", + "items": { + "$ref": "AutoscalingEvent" + }, + "type": "array" + }, + "jobMessages": { + "description": "Messages in ascending timestamp order.", + "items": { + "$ref": "JobMessage" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The token to obtain the next page of results if there are more.", + "type": "string" + } + }, + "id": "ListJobMessagesResponse" + }, + "CounterMetadata": { + "description": "CounterMetadata includes all static non-name non-value counter attributes.", + "type": "object", + "properties": { + "description": { + "description": "Human-readable description of the counter semantics.", + "type": "string" + }, + "kind": { + "description": "Counter aggregation kind.", + "type": "string", + "enumDescriptions": [ + "Counter aggregation kind was not set.", + "Aggregated value is the sum of all contributed values.", + "Aggregated value is the max of all contributed values.", + "Aggregated value is the min of all contributed values.", + "Aggregated value is the mean of all contributed values.", + "Aggregated value represents the logical 'or' of all contributed values.", + "Aggregated value represents the logical 'and' of all contributed values.", + "Aggregated value is a set of unique contributed values.", + "Aggregated value captures statistics about a distribution." + ], + "enum": [ + "INVALID", + "SUM", + "MAX", + "MIN", + "MEAN", + "OR", + "AND", + "SET", + "DISTRIBUTION" + ] + }, + "standardUnits": { + "type": "string", + "enumDescriptions": [ + "Counter returns a value in bytes.", + "Counter returns a value in bytes per second.", + "Counter returns a value in milliseconds.", + "Counter returns a value in microseconds.", + "Counter returns a value in nanoseconds.", + "Counter returns a timestamp in milliseconds.", + "Counter returns a timestamp in microseconds.", + "Counter returns a timestamp in nanoseconds." + ], + "enum": [ + "BYTES", + "BYTES_PER_SEC", + "MILLISECONDS", + "MICROSECONDS", + "NANOSECONDS", + "TIMESTAMP_MSEC", + "TIMESTAMP_USEC", + "TIMESTAMP_NSEC" + ], + "description": "System defined Units, see above enum." + }, + "otherUnits": { + "description": "A string referring to the unit type.", + "type": "string" + } + }, + "id": "CounterMetadata" + }, + "ApproximateReportedProgress": { + "description": "A progress measurement of a WorkItem by a worker.", + "type": "object", + "properties": { + "remainingParallelism": { + "$ref": "ReportedParallelism", + "description": "Total amount of parallelism in the input of this task that remains,\n(i.e. can be delegated to this task and any new tasks via dynamic\nsplitting). Always at least 1 for non-finished work items and 0 for\nfinished.\n\n\"Amount of parallelism\" refers to how many non-empty parts of the input\ncan be read in parallel. This does not necessarily equal number\nof records. An input that can be read in parallel down to the\nindividual records is called \"perfectly splittable\".\nAn example of non-perfectly parallelizable input is a block-compressed\nfile format where a block of records has to be read as a whole,\nbut different blocks can be read in parallel.\n\nExamples:\n* If we are processing record #30 (starting at 1) out of 50 in a perfectly\n splittable 50-record input, this value should be 21 (20 remaining + 1\n current).\n* If we are reading through block 3 in a block-compressed file consisting\n of 5 blocks, this value should be 3 (since blocks 4 and 5 can be\n processed in parallel by new tasks via dynamic splitting and the current\n task remains processing block 3).\n* If we are reading through the last block in a block-compressed file,\n or reading or processing the last record in a perfectly splittable\n input, this value should be 1, because apart from the current task, no\n additional remainder can be split off." + }, + "position": { + "$ref": "Position", + "description": "A Position within the work to represent a progress." + }, + "fractionConsumed": { + "format": "double", + "description": "Completion as fraction of the input consumed, from 0.0 (beginning, nothing\nconsumed), to 1.0 (end of the input, entire input consumed).", + "type": "number" + }, + "consumedParallelism": { + "description": "Total amount of parallelism in the portion of input of this task that has\nalready been consumed and is no longer active. In the first two examples\nabove (see remaining_parallelism), the value should be 29 or 2\nrespectively. The sum of remaining_parallelism and consumed_parallelism\nshould equal the total amount of parallelism in this work item. If\nspecified, must be finite.", + "$ref": "ReportedParallelism" + } + }, + "id": "ApproximateReportedProgress" + }, + "StateFamilyConfig": { + "description": "State family configuration.", + "type": "object", + "properties": { + "isRead": { + "description": "If true, this family corresponds to a read operation.", + "type": "boolean" + }, + "stateFamily": { + "description": "The state family value.", + "type": "string" + } + }, + "id": "StateFamilyConfig" + }, + "IntegerList": { + "id": "IntegerList", + "description": "A metric value representing a list of integers.", + "type": "object", + "properties": { + "elements": { + "description": "Elements of the list.", + "items": { + "$ref": "SplitInt64" + }, + "type": "array" + } + } + }, + "ResourceUtilizationReportResponse": { + "description": "Service-side response to WorkerMessage reporting resource utilization.", + "type": "object", + "properties": {}, + "id": "ResourceUtilizationReportResponse" + }, + "SourceSplitResponse": { + "description": "The response to a SourceSplitRequest.", + "type": "object", + "properties": { + "bundles": { + "description": "If outcome is SPLITTING_HAPPENED, then this is a list of bundles\ninto which the source was split. Otherwise this field is ignored.\nThis list can be empty, which means the source represents an empty input.", + "items": { + "$ref": "DerivedSource" + }, + "type": "array" + }, + "shards": { + "description": "DEPRECATED in favor of bundles.", + "items": { + "$ref": "SourceSplitShard" + }, + "type": "array" + }, + "outcome": { + "enum": [ + "SOURCE_SPLIT_OUTCOME_UNKNOWN", + "SOURCE_SPLIT_OUTCOME_USE_CURRENT", + "SOURCE_SPLIT_OUTCOME_SPLITTING_HAPPENED" + ], + "description": "Indicates whether splitting happened and produced a list of bundles.\nIf this is USE_CURRENT_SOURCE_AS_IS, the current source should\nbe processed \"as is\" without splitting. \"bundles\" is ignored in this case.\nIf this is SPLITTING_HAPPENED, then \"bundles\" contains a list of\nbundles into which the source was split.", + "type": "string", + "enumDescriptions": [ + "The source split outcome is unknown, or unspecified.", + "The current source should be processed \"as is\" without splitting.", + "Splitting produced a list of bundles." + ] + } + }, + "id": "SourceSplitResponse" + }, + "ParallelInstruction": { + "description": "Describes a particular operation comprising a MapTask.", + "type": "object", + "properties": { + "outputs": { + "description": "Describes the outputs of the instruction.", + "items": { + "$ref": "InstructionOutput" + }, + "type": "array" + }, + "name": { + "type": "string", + "description": "User-provided name of this operation." + }, + "parDo": { + "$ref": "ParDoInstruction", + "description": "Additional information for ParDo instructions." + }, + "read": { + "$ref": "ReadInstruction", + "description": "Additional information for Read instructions." + }, + "flatten": { + "$ref": "FlattenInstruction", + "description": "Additional information for Flatten instructions." + }, + "originalName": { + "type": "string", + "description": "System-defined name for the operation in the original workflow graph." + }, + "systemName": { + "description": "System-defined name of this operation.\nUnique across the workflow.", + "type": "string" + }, + "write": { + "$ref": "WriteInstruction", + "description": "Additional information for Write instructions." + }, + "partialGroupByKey": { + "$ref": "PartialGroupByKeyInstruction", + "description": "Additional information for PartialGroupByKey instructions." + } + }, + "id": "ParallelInstruction" + }, + "Package": { + "description": "The packages that must be installed in order for a worker to run the\nsteps of the Cloud Dataflow job that will be assigned to its worker\npool.\n\nThis is the mechanism by which the Cloud Dataflow SDK causes code to\nbe loaded onto the workers. For example, the Cloud Dataflow Java SDK\nmight use this to install jars containing the user's code and all of the\nvarious dependencies (libraries, data files, etc.) required in order\nfor that code to run.", + "type": "object", + "properties": { + "location": { + "description": "The resource to read the package from. The supported resource type is:\n\nGoogle Cloud Storage:\n\n storage.googleapis.com/{bucket}\n bucket.storage.googleapis.com/", + "type": "string" + }, + "name": { + "description": "The name of the package.", + "type": "string" + } + }, + "id": "Package" + }, + "KeyRangeDataDiskAssignment": { + "type": "object", + "properties": { + "dataDisk": { + "type": "string", + "description": "The name of the data disk where data for this range is stored.\nThis name is local to the Google Cloud Platform project and uniquely\nidentifies the disk within that project, for example\n\"myproject-1014-104817-4c2-harness-0-disk-1\"." + }, + "start": { + "description": "The start (inclusive) of the key range.", + "type": "string" + }, + "end": { + "description": "The end (exclusive) of the key range.", + "type": "string" + } + }, + "id": "KeyRangeDataDiskAssignment", + "description": "Data disk assignment information for a specific key-range of a sharded\ncomputation.\nCurrently we only support UTF-8 character splits to simplify encoding into\nJSON." + }, + "ParDoInstruction": { + "description": "An instruction that does a ParDo operation.\nTakes one main input and zero or more side inputs, and produces\nzero or more outputs.\nRuns user code.", + "type": "object", + "properties": { + "sideInputs": { + "description": "Zero or more side inputs.", + "items": { + "$ref": "SideInputInfo" + }, + "type": "array" + }, + "multiOutputInfos": { + "description": "Information about each of the outputs, if user_fn is a MultiDoFn.", + "items": { + "$ref": "MultiOutputInfo" + }, + "type": "array" + }, + "userFn": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The user function to invoke." + }, + "input": { + "description": "The input.", + "$ref": "InstructionInput" + }, + "numOutputs": { + "format": "int32", + "description": "The number of outputs.", + "type": "integer" + } + }, + "id": "ParDoInstruction" + }, + "MetricUpdate": { + "properties": { + "scalar": { + "description": "Worker-computed aggregate value for aggregation kinds \"Sum\", \"Max\", \"Min\",\n\"And\", and \"Or\". The possible value types are Long, Double, and Boolean.", + "type": "any" + }, + "meanCount": { + "type": "any", + "description": "Worker-computed aggregate value for the \"Mean\" aggregation kind.\nThis holds the count of the aggregated values and is used in combination\nwith mean_sum above to obtain the actual mean aggregate value.\nThe only possible value type is Long." + }, + "meanSum": { + "description": "Worker-computed aggregate value for the \"Mean\" aggregation kind.\nThis holds the sum of the aggregated values and is used in combination\nwith mean_count below to obtain the actual mean aggregate value.\nThe only possible value types are Long and Double.", + "type": "any" + }, + "updateTime": { + "format": "google-datetime", + "description": "Timestamp associated with the metric value. Optional when workers are\nreporting work progress; it will be filled in responses from the\nmetrics API.", + "type": "string" + }, + "name": { + "$ref": "MetricStructuredName", + "description": "Name of the metric." + }, + "distribution": { + "description": "A struct value describing properties of a distribution of numeric values.", + "type": "any" + }, + "set": { + "description": "Worker-computed aggregate value for the \"Set\" aggregation kind. The only\npossible value type is a list of Values whose type can be Long, Double,\nor String, according to the metric's type. All Values in the list must\nbe of the same type.", + "type": "any" + }, + "internal": { + "description": "Worker-computed aggregate value for internal use by the Dataflow\nservice.", + "type": "any" + }, + "cumulative": { + "description": "True if this metric is reported as the total cumulative aggregate\nvalue accumulated since the worker started working on this WorkItem.\nBy default this is false, indicating that this metric is reported\nas a delta that is not associated with any WorkItem.", + "type": "boolean" + }, + "kind": { + "description": "Metric aggregation kind. The possible metric aggregation kinds are\n\"Sum\", \"Max\", \"Min\", \"Mean\", \"Set\", \"And\", \"Or\", and \"Distribution\".\nThe specified aggregation kind is case-insensitive.\n\nIf omitted, this is not an aggregated value but instead\na single metric sample value.", + "type": "string" + } + }, + "id": "MetricUpdate", + "description": "Describes the state of a metric.", + "type": "object" + }, + "CounterStructuredName": { + "properties": { + "originalStepName": { + "type": "string", + "description": "System generated name of the original step in the user's graph, before\noptimization." + }, + "workerId": { + "description": "ID of a particular worker.", + "type": "string" + }, + "originNamespace": { + "description": "A string containing a more specific namespace of the counter's origin.", + "type": "string" + }, + "origin": { + "enum": [ + "SYSTEM", + "USER" + ], + "description": "One of the standard Origins defined above.", + "type": "string", + "enumDescriptions": [ + "Counter was created by the Dataflow system.", + "Counter was created by the user." + ] + }, + "name": { + "description": "Counter name. Not necessarily globally-unique, but unique within the\ncontext of the other fields.\nRequired.", + "type": "string" + }, + "executionStepName": { + "description": "Name of the stage. An execution step contains multiple component steps.", + "type": "string" + }, + "componentStepName": { + "description": "Name of the optimized step being executed by the workers.", + "type": "string" + }, + "portion": { + "enumDescriptions": [ + "Counter portion has not been set.", + "Counter reports a key.", + "Counter reports a value." + ], + "enum": [ + "ALL", + "KEY", + "VALUE" + ], + "description": "Portion of this counter, either key or value.", + "type": "string" + } + }, + "id": "CounterStructuredName", + "description": "Identifies a counter within a per-job namespace. Counters whose structured\nnames are the same get merged into a single value for the job.", + "type": "object" + }, + "ApproximateProgress": { + "description": "Obsolete in favor of ApproximateReportedProgress and ApproximateSplitRequest.", + "type": "object", + "properties": { + "percentComplete": { + "format": "float", + "description": "Obsolete.", + "type": "number" + }, + "remainingTime": { + "format": "google-duration", + "description": "Obsolete.", + "type": "string" + }, + "position": { + "$ref": "Position", + "description": "Obsolete." + } + }, + "id": "ApproximateProgress" + }, + "WorkerMessageResponse": { + "properties": { + "workerMetricsResponse": { + "$ref": "ResourceUtilizationReportResponse", + "description": "Service's response to reporting worker metrics (currently empty)." + }, + "workerHealthReportResponse": { + "description": "The service's response to a worker's health report.", + "$ref": "WorkerHealthReportResponse" + } + }, + "id": "WorkerMessageResponse", + "description": "A worker_message response allows the server to pass information to the\nsender.", + "type": "object" + }, + "TemplateMetadata": { + "type": "object", + "properties": { + "parameters": { + "description": "The parameters for the template.", + "items": { + "$ref": "ParameterMetadata" + }, + "type": "array" + }, + "name": { + "description": "Required. The name of the template.", + "type": "string" + }, + "description": { + "description": "Optional. A description of the template.", + "type": "string" + } + }, + "id": "TemplateMetadata", + "description": "Metadata describing a template." + }, + "WorkerMessage": { + "type": "object", + "properties": { + "workerMetrics": { + "description": "Resource metrics reported by workers.", + "$ref": "ResourceUtilizationReport" + }, + "workerMessageCode": { + "$ref": "WorkerMessageCode", + "description": "A worker message code." + }, + "labels": { + "description": "Labels are used to group WorkerMessages.\nFor example, a worker_message about a particular container\nmight have the labels:\n{ \"JOB_ID\": \"2015-04-22\",\n \"WORKER_ID\": \"wordcount-vm-2015…\"\n \"CONTAINER_TYPE\": \"worker\",\n \"CONTAINER_ID\": \"ac1234def\"}\nLabel tags typically correspond to Label enum values. However, for ease\nof development other strings can be used as tags. LABEL_UNSPECIFIED should\nnot be used here.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "time": { + "format": "google-datetime", + "description": "The timestamp of the worker_message.", + "type": "string" + }, + "workerHealthReport": { + "description": "The health of a worker.", + "$ref": "WorkerHealthReport" + } + }, + "id": "WorkerMessage", + "description": "WorkerMessage provides information to the backend about a worker." + }, + "JobMetrics": { + "description": "JobMetrics contains a collection of metrics descibing the detailed progress\nof a Dataflow job. Metrics correspond to user-defined and system-defined\nmetrics in the job.\n\nThis resource captures only the most recent values of each metric;\ntime-series data can be queried for them (under the same metric names)\nfrom Cloud Monitoring.", + "type": "object", + "properties": { + "metrics": { + "description": "All metrics for this job.", + "items": { + "$ref": "MetricUpdate" + }, + "type": "array" + }, + "metricTime": { + "format": "google-datetime", + "description": "Timestamp as of which metric values are current.", + "type": "string" + } + }, + "id": "JobMetrics" + }, + "FloatingPointList": { + "description": "A metric value representing a list of floating point numbers.", + "type": "object", + "properties": { + "elements": { + "description": "Elements of the list.", + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + } + }, + "id": "FloatingPointList" + }, + "CounterUpdate": { + "type": "object", + "properties": { + "floatingPointMean": { + "$ref": "FloatingPointMean", + "description": "Floating point mean aggregation value for Mean." + }, + "boolean": { + "description": "Boolean value for And, Or.", + "type": "boolean" + }, + "nameAndKind": { + "$ref": "NameAndKind", + "description": "Counter name and aggregation type." + }, + "distribution": { + "$ref": "DistributionUpdate", + "description": "Distribution data" + }, + "stringList": { + "$ref": "StringList", + "description": "List of strings, for Set." + }, + "shortId": { + "format": "int64", + "description": "The service-generated short identifier for this counter.\nThe short_id -\u003e (name, metadata) mapping is constant for the lifetime of\na job.", + "type": "string" + }, + "floatingPointList": { + "$ref": "FloatingPointList", + "description": "List of floating point numbers, for Set." + }, + "integer": { + "$ref": "SplitInt64", + "description": "Integer value for Sum, Max, Min." + }, + "structuredNameAndMetadata": { + "description": "Counter structured name and metadata.", + "$ref": "CounterStructuredNameAndMetadata" + }, + "integerList": { + "description": "List of integers, for Set.", + "$ref": "IntegerList" + }, + "integerMean": { + "description": "Integer mean aggregation value for Mean.", + "$ref": "IntegerMean" + }, + "floatingPoint": { + "format": "double", + "description": "Floating point value for Sum, Max, Min.", + "type": "number" + }, + "internal": { + "description": "Value for internally-defined counters used by the Dataflow service.", + "type": "any" + }, + "cumulative": { + "description": "True if this counter is reported as the total cumulative aggregate\nvalue accumulated since the worker started working on this WorkItem.\nBy default this is false, indicating that this counter is reported\nas a delta.", + "type": "boolean" + } + }, + "id": "CounterUpdate", + "description": "An update to a Counter sent from a worker." + }, + "SourceMetadata": { + "description": "Metadata about a Source useful for automatically optimizing\nand tuning the pipeline, etc.", + "type": "object", + "properties": { + "estimatedSizeBytes": { + "format": "int64", + "description": "An estimate of the total size (in bytes) of the data that would be\nread from this source. This estimate is in terms of external storage\nsize, before any decompression or other processing done by the reader.", + "type": "string" + }, + "infinite": { + "type": "boolean", + "description": "Specifies that the size of this source is known to be infinite\n(this is a streaming source)." + }, + "producesSortedKeys": { + "type": "boolean", + "description": "Whether this source is known to produce key/value pairs with\nthe (encoded) keys in lexicographically sorted order." + } + }, + "id": "SourceMetadata" + }, + "DistributionUpdate": { + "type": "object", + "properties": { + "sum": { + "description": "Use an int64 since we'd prefer the added precision. If overflow is a common\nproblem we can detect it and use an additional int64 or a double.", + "$ref": "SplitInt64" + }, + "max": { + "$ref": "SplitInt64", + "description": "The maximum value present in the distribution." + }, + "logBuckets": { + "description": "(Optional) Logarithmic histogram of values.\nEach log may be in no more than one bucket. Order does not matter.", + "items": { + "$ref": "LogBucket" + }, + "type": "array" + }, + "count": { + "description": "The count of the number of elements present in the distribution.", + "$ref": "SplitInt64" + }, + "min": { + "$ref": "SplitInt64", + "description": "The minimum value present in the distribution." + }, + "sumOfSquares": { + "type": "number", + "format": "double", + "description": "Use a double since the sum of squares is likely to overflow int64." + } + }, + "id": "DistributionUpdate", + "description": "A metric value representing a distribution." + }, + "SourceFork": { + "description": "DEPRECATED in favor of DynamicSourceSplit.", + "type": "object", + "properties": { + "residualSource": { + "$ref": "DerivedSource", + "description": "DEPRECATED" + }, + "primary": { + "$ref": "SourceSplitShard", + "description": "DEPRECATED" + }, + "primarySource": { + "$ref": "DerivedSource", + "description": "DEPRECATED" + }, + "residual": { + "$ref": "SourceSplitShard", + "description": "DEPRECATED" + } + }, + "id": "SourceFork" + }, + "WorkerHealthReportResponse": { + "properties": { + "reportInterval": { + "format": "google-duration", + "description": "A positive value indicates the worker should change its reporting interval\nto the specified value.\n\nThe default value of zero means no change in report rate is requested by\nthe server.", + "type": "string" + } + }, + "id": "WorkerHealthReportResponse", + "description": "WorkerHealthReportResponse contains information returned to the worker\nin response to a health ping.", + "type": "object" } }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, "version": "v1b3", - "baseUrl": "https://dataflow.googleapis.com/" + "baseUrl": "https://dataflow.googleapis.com/", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/compute.readonly": { + "description": "View your Google Compute Engine resources" + }, + "https://www.googleapis.com/auth/compute": { + "description": "View and manage your Google Compute Engine resources" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/userinfo.email": { + "description": "View your email address" + } + } + } + }, + "kind": "discovery#restDescription", + "description": "Manages Google Cloud Dataflow projects on Google Cloud Platform.", + "servicePath": "", + "rootUrl": "https://dataflow.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "dataflow", + "batchPath": "batch", + "revision": "20170821", + "documentationLink": "https://cloud.google.com/dataflow", + "id": "dataflow:v1b3", + "title": "Google Dataflow API", + "ownerName": "Google", + "discoveryVersion": "v1" } diff --git a/vendor/google.golang.org/api/dataflow/v1b3/dataflow-gen.go b/vendor/google.golang.org/api/dataflow/v1b3/dataflow-gen.go index a472f83..5e1ef66 100644 --- a/vendor/google.golang.org/api/dataflow/v1b3/dataflow-gen.go +++ b/vendor/google.golang.org/api/dataflow/v1b3/dataflow-gen.go @@ -837,10 +837,6 @@ type CounterStructuredName struct { // counter's origin. OriginNamespace string `json:"originNamespace,omitempty"` - // OriginalShuffleStepName: The GroupByKey step name from the original - // graph. - OriginalShuffleStepName string `json:"originalShuffleStepName,omitempty"` - // OriginalStepName: System generated name of the original step in the // user's graph, before // optimization. @@ -854,15 +850,6 @@ type CounterStructuredName struct { // "VALUE" - Counter reports a value. Portion string `json:"portion,omitempty"` - // SideInput: ID of a side input being read from/written to. Side inputs - // are identified - // by a pair of (reader, input_index). The reader is usually equal to - // the - // original name, but it may be different, if a ParDo emits it's - // Iterator / - // Map side input object. - SideInput *SideInputId `json:"sideInput,omitempty"` - // WorkerId: ID of a particular worker. WorkerId string `json:"workerId,omitempty"` @@ -4189,40 +4176,6 @@ func (s *ShellTask) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// SideInputId: Uniquely identifies a side input. -type SideInputId struct { - // DeclaringStepName: The step that receives and usually consumes this - // side input. - DeclaringStepName string `json:"declaringStepName,omitempty"` - - // InputIndex: The index of the side input, from the list of - // non_parallel_inputs. - InputIndex int64 `json:"inputIndex,omitempty"` - - // ForceSendFields is a list of field names (e.g. "DeclaringStepName") - // to unconditionally include in API requests. By default, fields with - // empty values are omitted from API requests. However, any non-pointer, - // non-interface field appearing in ForceSendFields will be sent to the - // server regardless of whether the field is empty or not. This may be - // used to include empty fields in Patch requests. - ForceSendFields []string `json:"-"` - - // NullFields is a list of field names (e.g. "DeclaringStepName") to - // include in API requests with the JSON null value. By default, fields - // with empty values are omitted from API requests. However, any field - // with an empty value appearing in NullFields will be sent to the - // server as null. It is an error if a field in this list has a - // non-empty value. This may be used to include null fields in Patch - // requests. - NullFields []string `json:"-"` -} - -func (s *SideInputId) MarshalJSON() ([]byte, error) { - type noMethod SideInputId - raw := noMethod(*s) - return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) -} - // SideInputInfo: Information about a side input of a DoFn or an input // of a SeqDoFn. type SideInputInfo struct { @@ -6104,9 +6057,6 @@ type WorkerMessage struct { // WorkerMetrics: Resource metrics reported by workers. WorkerMetrics *ResourceUtilizationReport `json:"workerMetrics,omitempty"` - // WorkerShutdownNotice: Shutdown notice by workers. - WorkerShutdownNotice *WorkerShutdownNotice `json:"workerShutdownNotice,omitempty"` - // ForceSendFields is a list of field names (e.g. "Labels") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -6227,10 +6177,6 @@ type WorkerMessageResponse struct { // (currently empty). WorkerMetricsResponse *ResourceUtilizationReportResponse `json:"workerMetricsResponse,omitempty"` - // WorkerShutdownNoticeResponse: Service's response to shutdown notice - // (currently empty). - WorkerShutdownNoticeResponse *WorkerShutdownNoticeResponse `json:"workerShutdownNoticeResponse,omitempty"` - // ForceSendFields is a list of field names (e.g. // "WorkerHealthReportResponse") to unconditionally include in API // requests. By default, fields with empty values are omitted from API @@ -6504,46 +6450,6 @@ func (s *WorkerSettings) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// WorkerShutdownNotice: Shutdown notification from workers. This is to -// be sent by the shutdown -// script of the worker VM so that the backend knows that the VM is -// being -// shut down. -type WorkerShutdownNotice struct { - // Reason: Optional reason to be attached for the shutdown notice. - // For example: "PREEMPTION" would indicate the VM is being shut down - // because - // of preemption. Other possible reasons may be added in the future. - Reason string `json:"reason,omitempty"` - - // ForceSendFields is a list of field names (e.g. "Reason") to - // unconditionally include in API requests. By default, fields with - // empty values are omitted from API requests. However, any non-pointer, - // non-interface field appearing in ForceSendFields will be sent to the - // server regardless of whether the field is empty or not. This may be - // used to include empty fields in Patch requests. - ForceSendFields []string `json:"-"` - - // NullFields is a list of field names (e.g. "Reason") to include in API - // requests with the JSON null value. By default, fields with empty - // values are omitted from API requests. However, any field with an - // empty value appearing in NullFields will be sent to the server as - // null. It is an error if a field in this list has a non-empty value. - // This may be used to include null fields in Patch requests. - NullFields []string `json:"-"` -} - -func (s *WorkerShutdownNotice) MarshalJSON() ([]byte, error) { - type noMethod WorkerShutdownNotice - raw := noMethod(*s) - return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) -} - -// WorkerShutdownNoticeResponse: Service-side response to WorkerMessage -// issuing shutdown notice. -type WorkerShutdownNoticeResponse struct { -} - // WriteInstruction: An instruction that writes records. // Takes one input, produces no outputs. type WriteInstruction struct { diff --git a/vendor/google.golang.org/api/dataproc/v1/dataproc-api.json b/vendor/google.golang.org/api/dataproc/v1/dataproc-api.json index 97292b3..8224a42 100644 --- a/vendor/google.golang.org/api/dataproc/v1/dataproc-api.json +++ b/vendor/google.golang.org/api/dataproc/v1/dataproc-api.json @@ -1,140 +1,32 @@ { - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "kind": "discovery#restDescription", - "description": "Manages Hadoop-based clusters and jobs on Google Cloud Platform.", - "servicePath": "", - "rootUrl": "https://dataproc.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "dataproc", - "batchPath": "batch", - "revision": "20170822", - "documentationLink": "https://cloud.google.com/dataproc/", - "id": "dataproc:v1", - "title": "Google Cloud Dataproc API", - "discoveryVersion": "v1", - "ownerName": "Google", "resources": { "projects": { "resources": { "regions": { "resources": { - "clusters": { + "jobs": { "methods": { - "list": { - "response": { - "$ref": "ListClustersResponse" - }, - "parameterOrder": [ - "projectId", - "region" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "filter": { - "location": "query", - "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *", - "type": "string" - }, - "region": { - "location": "path", - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. The standard List page token.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The standard List page size.", - "type": "integer", - "location": "query" - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}/regions/{region}/clusters", - "id": "dataproc.projects.regions.clusters.list", - "path": "v1/projects/{projectId}/regions/{region}/clusters", - "description": "Lists all regions/{region}/clusters in a project." - }, - "create": { - "parameters": { - "region": { - "location": "path", - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true - }, - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/regions/{region}/clusters", - "path": "v1/projects/{projectId}/regions/{region}/clusters", - "id": "dataproc.projects.regions.clusters.create", - "description": "Creates a cluster in a project.", + "submit": { + "id": "dataproc.projects.regions.jobs.submit", + "path": "v1/projects/{projectId}/regions/{region}/jobs:submit", + "description": "Submits a job to a cluster.", "request": { - "$ref": "Cluster" + "$ref": "SubmitJobRequest" + }, + "response": { + "$ref": "Job" }, - "httpMethod": "POST", "parameterOrder": [ "projectId", "region" ], - "response": { - "$ref": "Operation" - } - }, - "get": { - "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", - "id": "dataproc.projects.regions.clusters.get", - "description": "Gets the resource representation for a cluster in a project.", - "httpMethod": "GET", - "parameterOrder": [ - "projectId", - "region", - "clusterName" - ], - "response": { - "$ref": "Cluster" - }, + "httpMethod": "POST", "parameters": { - "clusterName": { - "description": "Required. The cluster name.", - "type": "string", - "required": true, - "location": "path" - }, "projectId": { - "type": "string", - "required": true, "location": "path", - "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to." + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true }, "region": { "type": "string", @@ -146,18 +38,252 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}" + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs:submit" + }, + "delete": { + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", + "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", + "id": "dataproc.projects.regions.jobs.delete", + "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.", + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "jobId": { + "location": "path", + "description": "Required. The job ID.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + } + } + }, + "list": { + "description": "Lists regions/{region}/jobs in a project.", + "response": { + "$ref": "ListJobsResponse" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "GET", + "parameters": { + "clusterName": { + "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.", + "type": "string", + "location": "query" + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to." + }, + "filter": { + "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *", + "type": "string", + "location": "query" + }, + "jobStateMatcher": { + "location": "query", + "enum": [ + "ALL", + "ACTIVE", + "NON_ACTIVE" + ], + "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs).", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "Optional. The page token, returned by a previous call, to request the next page of results.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The number of results to return in each response.", + "type": "integer" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs", + "id": "dataproc.projects.regions.jobs.list", + "path": "v1/projects/{projectId}/regions/{region}/jobs" + }, + "cancel": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "jobId": { + "description": "Required. The job ID.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + "id": "dataproc.projects.regions.jobs.cancel", + "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + "request": { + "$ref": "CancelJobRequest" + }, + "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "httpMethod": "POST" + }, + "get": { + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "jobId": { + "type": "string", + "required": true, + "location": "path", + "description": "Required. The job ID." + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", + "id": "dataproc.projects.regions.jobs.get", + "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", + "description": "Gets the resource representation for a job in a project." }, "patch": { - "response": { - "$ref": "Operation" + "id": "dataproc.projects.regions.jobs.patch", + "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", + "request": { + "$ref": "Job" }, + "description": "Updates a job in a project.", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "jobId": { + "description": "Required. The job ID.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Required. Specifies the path, relative to \u003ccode\u003eJob\u003c/code\u003e, of the field to update. For example, to update the labels of a Job the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003elabels\u003c/code\u003e, and the PATCH request body would specify the new value. \u003cstrong\u003eNote:\u003c/strong\u003e Currently, \u003ccode\u003elabels\u003c/code\u003e is the only field that can be updated.", + "type": "string" + }, + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}" + } + } + }, + "clusters": { + "methods": { + "patch": { + "request": { + "$ref": "Cluster" + }, + "description": "Updates a cluster in a project.", + "httpMethod": "PATCH", "parameterOrder": [ "projectId", "region", "clusterName" ], - "httpMethod": "PATCH", + "response": { + "$ref": "Operation" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -188,23 +314,22 @@ } }, "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", - "id": "dataproc.projects.regions.clusters.patch", "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", - "request": { - "$ref": "Cluster" - }, - "description": "Updates a cluster in a project." + "id": "dataproc.projects.regions.clusters.patch" }, - "diagnose": { + "get": { + "httpMethod": "GET", "response": { - "$ref": "Operation" + "$ref": "Cluster" }, "parameterOrder": [ "projectId", "region", "clusterName" ], - "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "region": { "description": "Required. The Cloud Dataproc region in which to handle the request.", @@ -213,11 +338,50 @@ "location": "path" }, "clusterName": { + "location": "path", "description": "Required. The cluster name.", "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "id": "dataproc.projects.regions.clusters.get", + "description": "Gets the resource representation for a cluster in a project." + }, + "diagnose": { + "description": "Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.", + "request": { + "$ref": "DiagnoseClusterRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "region", + "clusterName" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", "required": true, "location": "path" }, + "clusterName": { + "location": "path", + "description": "Required. The cluster name.", + "type": "string", + "required": true + }, "projectId": { "location": "path", "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", @@ -229,32 +393,28 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", - "id": "dataproc.projects.regions.clusters.diagnose", "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", - "description": "Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.", - "request": { - "$ref": "DiagnoseClusterRequest" - } + "id": "dataproc.projects.regions.clusters.diagnose" }, "delete": { - "httpMethod": "DELETE", + "id": "dataproc.projects.regions.clusters.delete", + "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "description": "Deletes a cluster in a project.", + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "projectId", "region", "clusterName" ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], + "httpMethod": "DELETE", "parameters": { "clusterName": { - "location": "path", - "description": "Required. The cluster name.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "Required. The cluster name." }, "projectId": { "location": "path", @@ -263,32 +423,110 @@ "required": true }, "region": { + "location": "path", "description": "Required. The Cloud Dataproc region in which to handle the request.", "type": "string", - "required": true, - "location": "path" + "required": true } }, - "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", - "path": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}", - "id": "dataproc.projects.regions.clusters.delete", - "description": "Deletes a cluster in a project." + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/regions/{region}/clusters/{clusterName}" + }, + "list": { + "description": "Lists all regions/{region}/clusters in a project.", + "response": { + "$ref": "ListClustersResponse" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "GET", + "parameters": { + "filter": { + "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *", + "type": "string", + "location": "query" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "pageToken": { + "description": "Optional. The standard List page token.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The standard List page size.", + "type": "integer", + "location": "query" + }, + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectId}/regions/{region}/clusters", + "id": "dataproc.projects.regions.clusters.list", + "path": "v1/projects/{projectId}/regions/{region}/clusters" + }, + "create": { + "request": { + "$ref": "Cluster" + }, + "description": "Creates a cluster in a project.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectId}/regions/{region}/clusters", + "id": "dataproc.projects.regions.clusters.create", + "path": "v1/projects/{projectId}/regions/{region}/clusters" } } }, "operations": { "methods": { "cancel": { - "path": "v1/{+name}:cancel", - "id": "dataproc.projects.regions.operations.cancel", - "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.", - "httpMethod": "POST", "response": { "$ref": "Empty" }, "parameterOrder": [ "name" ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -301,42 +539,45 @@ "location": "path" } }, - "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}:cancel" + "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}:cancel", + "id": "dataproc.projects.regions.operations.cancel", + "path": "v1/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED." }, "delete": { - "path": "v1/{+name}", - "id": "dataproc.projects.regions.operations.delete", "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], "response": { "$ref": "Empty" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", "parameters": { "name": { - "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$", "location": "path", "description": "The name of the operation resource to be deleted.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}" + "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", + "id": "dataproc.projects.regions.operations.delete", + "path": "v1/{+name}" }, "get": { "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", - "response": { - "$ref": "Operation" - }, + "httpMethod": "GET", "parameterOrder": [ "name" ], - "httpMethod": "GET", + "response": { + "$ref": "Operation" + }, "parameters": { "name": { "description": "The name of the operation resource.", @@ -350,8 +591,8 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", - "id": "dataproc.projects.regions.operations.get", - "path": "v1/{+name}" + "path": "v1/{+name}", + "id": "dataproc.projects.regions.operations.get" }, "list": { "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", @@ -366,10 +607,16 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "filter": { + "pageSize": { "location": "query", - "description": "The standard list filter.", - "type": "string" + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "type": "string", + "location": "query", + "description": "The standard list filter." }, "pageToken": { "location": "query", @@ -377,17 +624,11 @@ "type": "string" }, "name": { + "pattern": "^projects/[^/]+/regions/[^/]+/operations$", "location": "path", "description": "The name of the operation's parent resource.", "type": "string", - "required": true, - "pattern": "^projects/[^/]+/regions/[^/]+/operations$" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" + "required": true } }, "flatPath": "v1/projects/{projectsId}/regions/{regionsId}/operations", @@ -395,270 +636,6 @@ "path": "v1/{+name}" } } - }, - "jobs": { - "methods": { - "list": { - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs", - "path": "v1/projects/{projectId}/regions/{region}/jobs", - "id": "dataproc.projects.regions.jobs.list", - "description": "Lists regions/{region}/jobs in a project.", - "httpMethod": "GET", - "parameterOrder": [ - "projectId", - "region" - ], - "response": { - "$ref": "ListJobsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "filter": { - "type": "string", - "location": "query", - "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *" - }, - "jobStateMatcher": { - "type": "string", - "location": "query", - "enum": [ - "ALL", - "ACTIVE", - "NON_ACTIVE" - ], - "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs)." - }, - "pageToken": { - "location": "query", - "description": "Optional. The page token, returned by a previous call, to request the next page of results.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The number of results to return in each response.", - "type": "integer" - }, - "region": { - "location": "path", - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true - }, - "clusterName": { - "location": "query", - "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.", - "type": "string" - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - } - } - }, - "cancel": { - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", - "id": "dataproc.projects.regions.jobs.cancel", - "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", - "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.", - "request": { - "$ref": "CancelJobRequest" - }, - "response": { - "$ref": "Job" - }, - "parameterOrder": [ - "projectId", - "region", - "jobId" - ], - "httpMethod": "POST", - "parameters": { - "jobId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The job ID." - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - }, - "region": { - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "get": { - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "id": "dataproc.projects.regions.jobs.get", - "description": "Gets the resource representation for a job in a project.", - "httpMethod": "GET", - "response": { - "$ref": "Job" - }, - "parameterOrder": [ - "projectId", - "region", - "jobId" - ], - "parameters": { - "jobId": { - "location": "path", - "description": "Required. The job ID.", - "type": "string", - "required": true - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - }, - "region": { - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "patch": { - "response": { - "$ref": "Job" - }, - "parameterOrder": [ - "projectId", - "region", - "jobId" - ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "updateMask": { - "format": "google-fieldmask", - "description": "Required. Specifies the path, relative to \u003ccode\u003eJob\u003c/code\u003e, of the field to update. For example, to update the labels of a Job the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003elabels\u003c/code\u003e, and the PATCH request body would specify the new value. \u003cstrong\u003eNote:\u003c/strong\u003e Currently, \u003ccode\u003elabels\u003c/code\u003e is the only field that can be updated.", - "type": "string", - "location": "query" - }, - "region": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The Cloud Dataproc region in which to handle the request." - }, - "jobId": { - "description": "Required. The job ID.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to." - } - }, - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "id": "dataproc.projects.regions.jobs.patch", - "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "request": { - "$ref": "Job" - }, - "description": "Updates a job in a project." - }, - "submit": { - "response": { - "$ref": "Job" - }, - "parameterOrder": [ - "projectId", - "region" - ], - "httpMethod": "POST", - "parameters": { - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to." - }, - "region": { - "description": "Required. The Cloud Dataproc region in which to handle the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs:submit", - "id": "dataproc.projects.regions.jobs.submit", - "path": "v1/projects/{projectId}/regions/{region}/jobs:submit", - "description": "Submits a job to a cluster.", - "request": { - "$ref": "SubmitJobRequest" - } - }, - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "projectId", - "region", - "jobId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "region": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The Cloud Dataproc region in which to handle the request." - }, - "jobId": { - "description": "Required. The job ID.", - "type": "string", - "required": true, - "location": "path" - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "path": "v1/projects/{projectId}/regions/{region}/jobs/{jobId}", - "id": "dataproc.projects.regions.jobs.delete", - "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION." - } - } } } } @@ -666,31 +643,52 @@ } }, "parameters": { - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, "bearer_token": { "location": "query", "description": "OAuth bearer token.", "type": "string" }, "upload_protocol": { + "type": "string", "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." }, "prettyPrint": { - "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean", - "location": "query" + "location": "query", + "description": "Returns response with indentations and line breaks." }, "fields": { + "location": "query", "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" + "type": "string" }, "uploadType": { "location": "query", @@ -698,13 +696,11 @@ "type": "string" }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { - "description": "V1 error format.", - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -713,7 +709,9 @@ "enum": [ "1", "2" - ] + ], + "description": "V1 error format.", + "type": "string" }, "alt": { "enumDescriptions": [ @@ -730,712 +728,32 @@ "proto" ], "type": "string" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" } }, "schemas": { - "ClusterOperationMetadata": { - "description": "Metadata describing the operation.", - "type": "object", - "properties": { - "operationType": { - "description": "Output-only. The operation type.", - "type": "string" - }, - "description": { - "description": "Output-only. Short description of operation.", - "type": "string" - }, - "warnings": { - "description": "Output-only. Errors encountered during operation execution.", - "items": { - "type": "string" - }, - "type": "array" - }, - "labels": { - "description": "Output-only. Labels associated with the operation", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "status": { - "$ref": "ClusterOperationStatus", - "description": "Output-only. Current operation status." - }, - "statusHistory": { - "description": "Output-only. The previous operation status.", - "items": { - "$ref": "ClusterOperationStatus" - }, - "type": "array" - }, - "clusterName": { - "type": "string", - "description": "Output-only. Name of the cluster for the operation." - }, - "clusterUuid": { - "description": "Output-only. Cluster UUID for the operation.", - "type": "string" - } - }, - "id": "ClusterOperationMetadata" - }, - "HiveJob": { - "description": "A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.", - "type": "object", - "properties": { - "queryList": { - "description": "A list of queries.", - "$ref": "QueryList" - }, - "queryFileUri": { - "type": "string", - "description": "The HCFS URI of the script that contains Hive queries." - }, - "scriptVariables": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";).", - "type": "object" - }, - "jarFileUris": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs." - }, - "properties": { - "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "continueOnFailure": { - "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", - "type": "boolean" - } - }, - "id": "HiveJob" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "DiagnoseClusterResults": { - "description": "The location of diagnostic output.", - "type": "object", - "properties": { - "outputUri": { - "description": "Output-only. The Google Cloud Storage URI of the diagnostic output. The output report is a plain text file with a summary of collected diagnostics.", - "type": "string" - } - }, - "id": "DiagnoseClusterResults" - }, - "ClusterConfig": { - "description": "The cluster config.", - "type": "object", - "properties": { - "masterConfig": { - "description": "Optional. The Google Compute Engine config settings for the master instance in a cluster.", - "$ref": "InstanceGroupConfig" - }, - "secondaryWorkerConfig": { - "description": "Optional. The Google Compute Engine config settings for additional worker instances in a cluster.", - "$ref": "InstanceGroupConfig" - }, - "initializationActions": { - "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):\nROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)\nif [[ \"${ROLE}\" == 'Master' ]]; then\n ... master specific actions ...\nelse\n ... worker specific actions ...\nfi\n", - "items": { - "$ref": "NodeInitializationAction" - }, - "type": "array" - }, - "configBucket": { - "description": "Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.", - "type": "string" - }, - "workerConfig": { - "$ref": "InstanceGroupConfig", - "description": "Optional. The Google Compute Engine config settings for worker instances in a cluster." - }, - "gceClusterConfig": { - "$ref": "GceClusterConfig", - "description": "Required. The shared Google Compute Engine config settings for all instances in a cluster." - }, - "softwareConfig": { - "description": "Optional. The config settings for software inside the cluster.", - "$ref": "SoftwareConfig" - } - }, - "id": "ClusterConfig" - }, - "PySparkJob": { - "properties": { - "jarFileUris": { - "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.", - "items": { - "type": "string" - }, - "type": "array" - }, - "loggingConfig": { - "$ref": "LoggingConfig", - "description": "Optional. The runtime log config for job execution." - }, - "properties": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.", - "type": "object" - }, - "args": { - "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", - "items": { - "type": "string" - }, - "type": "array" - }, - "fileUris": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks." - }, - "pythonFileUris": { - "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.", - "items": { - "type": "string" - }, - "type": "array" - }, - "mainPythonFileUri": { - "description": "Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.", - "type": "string" - }, - "archiveUris": { - "description": "Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "PySparkJob", - "description": "A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.", - "type": "object" - }, - "GceClusterConfig": { - "description": "Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster.", - "type": "object", - "properties": { - "zoneUri": { - "description": "Optional. The zone where the Google Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Cloud Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]\nprojects/[project_id]/zones/[zone]\nus-central1-f", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "The Google Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).", - "type": "object" - }, - "internalIpOnly": { - "type": "boolean", - "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses." - }, - "serviceAccountScopes": { - "description": "Optional. The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included:\nhttps://www.googleapis.com/auth/cloud.useraccounts.readonly\nhttps://www.googleapis.com/auth/devstorage.read_write\nhttps://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided:\nhttps://www.googleapis.com/auth/bigquery\nhttps://www.googleapis.com/auth/bigtable.admin.table\nhttps://www.googleapis.com/auth/bigtable.data\nhttps://www.googleapis.com/auth/devstorage.full_control", - "items": { - "type": "string" - }, - "type": "array" - }, - "tags": { - "description": "The Google Compute Engine tags to add to all instances (see Tagging instances).", - "items": { - "type": "string" - }, - "type": "array" - }, - "serviceAccount": { - "description": "Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:\nroles/logging.logWriter\nroles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com", - "type": "string" - }, - "subnetworkUri": { - "description": "Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0\nprojects/[project_id]/regions/us-east1/sub0\nsub0", - "type": "string" - }, - "networkUri": { - "description": "Optional. The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks for more information).A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default\nprojects/[project_id]/regions/global/default\ndefault", - "type": "string" - } - }, - "id": "GceClusterConfig" - }, - "AcceleratorConfig": { - "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).", - "type": "object", - "properties": { - "acceleratorTypeUri": { - "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)Examples * https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * nvidia-tesla-k80", - "type": "string" - }, - "acceleratorCount": { - "format": "int32", - "description": "The number of the accelerator cards of this type exposed to this instance.", - "type": "integer" - } - }, - "id": "AcceleratorConfig" - }, - "ClusterMetrics": { - "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", - "type": "object", - "properties": { - "yarnMetrics": { - "description": "The YARN metrics.", - "type": "object", - "additionalProperties": { - "format": "int64", - "type": "string" - } - }, - "hdfsMetrics": { - "description": "The HDFS metrics.", - "type": "object", - "additionalProperties": { - "format": "int64", - "type": "string" - } - } - }, - "id": "ClusterMetrics" - }, - "LoggingConfig": { - "description": "The runtime logging config of the job.", - "type": "object", - "properties": { - "driverLogLevels": { - "additionalProperties": { - "type": "string", - "enum": [ - "LEVEL_UNSPECIFIED", - "ALL", - "TRACE", - "DEBUG", - "INFO", - "WARN", - "ERROR", - "FATAL", - "OFF" - ] - }, - "description": "The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'", - "type": "object" - } - }, - "id": "LoggingConfig" - }, - "Operation": { - "description": "This resource represents a long-running operation that is the result of a network API call.", - "type": "object", - "properties": { - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", - "type": "object" - }, - "done": { - "type": "boolean", - "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available." - }, - "response": { - "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - } - }, - "id": "Operation" - }, - "JobReference": { - "type": "object", - "properties": { - "jobId": { - "description": "Optional. The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.", - "type": "string" - }, - "projectId": { - "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", - "type": "string" - } - }, - "id": "JobReference", - "description": "Encapsulates the full scoping used to reference a job." - }, - "SubmitJobRequest": { - "description": "A request to submit a job.", - "type": "object", - "properties": { - "job": { - "$ref": "Job", - "description": "Required. The job resource." - } - }, - "id": "SubmitJobRequest" - }, - "Status": { - "id": "Status", - "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array", - "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use." - } - } - }, - "JobScheduling": { - "description": "Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be changed before final release.", - "type": "object", - "properties": { - "maxFailuresPerHour": { - "format": "int32", - "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.", - "type": "integer" - } - }, - "id": "JobScheduling" - }, - "InstanceGroupConfig": { - "description": "Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group.", - "type": "object", - "properties": { - "diskConfig": { - "description": "Optional. Disk option config settings.", - "$ref": "DiskConfig" - }, - "managedGroupConfig": { - "$ref": "ManagedGroupConfig", - "description": "Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups." - }, - "isPreemptible": { - "description": "Optional. Specifies that this instance group contains preemptible instances.", - "type": "boolean" - }, - "imageUri": { - "description": "Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.", - "type": "string" - }, - "machineTypeUri": { - "description": "Optional. The Google Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nprojects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nn1-standard-2", - "type": "string" - }, - "instanceNames": { - "description": "Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).", - "items": { - "type": "string" - }, - "type": "array" - }, - "accelerators": { - "items": { - "$ref": "AcceleratorConfig" - }, - "type": "array", - "description": "Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release." - }, - "numInstances": { - "format": "int32", - "description": "Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.", - "type": "integer" - } - }, - "id": "InstanceGroupConfig" - }, - "ListJobsResponse": { - "description": "A list of jobs in a project.", - "type": "object", - "properties": { - "jobs": { - "description": "Output-only. Jobs list.", - "items": { - "$ref": "Job" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent \u003ccode\u003eListJobsRequest\u003c/code\u003e.", - "type": "string" - } - }, - "id": "ListJobsResponse" - }, - "NodeInitializationAction": { - "type": "object", - "properties": { - "executionTimeout": { - "format": "google-duration", - "description": "Optional. Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.", - "type": "string" - }, - "executableFile": { - "description": "Required. Google Cloud Storage URI of executable file.", - "type": "string" - } - }, - "id": "NodeInitializationAction", - "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion." - }, - "CancelJobRequest": { - "type": "object", - "properties": {}, - "id": "CancelJobRequest", - "description": "A request to cancel a job." - }, - "SparkSqlJob": { - "id": "SparkSqlJob", - "description": "A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.", - "type": "object", - "properties": { - "jarFileUris": { - "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.", - "items": { - "type": "string" - }, - "type": "array" - }, - "scriptVariables": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).", - "type": "object" - }, - "loggingConfig": { - "description": "Optional. The runtime log config for job execution.", - "$ref": "LoggingConfig" - }, - "properties": { - "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "queryFileUri": { - "description": "The HCFS URI of the script that contains SQL queries.", - "type": "string" - }, - "queryList": { - "description": "A list of queries.", - "$ref": "QueryList" - } - } - }, - "Cluster": { - "properties": { - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.", - "type": "object" - }, - "metrics": { - "$ref": "ClusterMetrics", - "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release." - }, - "status": { - "description": "Output-only. Cluster status.", - "$ref": "ClusterStatus" - }, - "config": { - "$ref": "ClusterConfig", - "description": "Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated." - }, - "statusHistory": { - "description": "Output-only. The previous cluster status.", - "items": { - "$ref": "ClusterStatus" - }, - "type": "array" - }, - "clusterUuid": { - "description": "Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.", - "type": "string" - }, - "clusterName": { - "description": "Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.", - "type": "string" - }, - "projectId": { - "description": "Required. The Google Cloud Platform project ID that the cluster belongs to.", - "type": "string" - } - }, - "id": "Cluster", - "description": "Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.", - "type": "object" - }, - "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", - "properties": { - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - }, - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - } - }, - "id": "ListOperationsResponse" - }, - "JobPlacement": { - "description": "Cloud Dataproc job config.", - "type": "object", - "properties": { - "clusterUuid": { - "description": "Output-only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.", - "type": "string" - }, - "clusterName": { - "description": "Required. The name of the cluster where the job will be submitted.", - "type": "string" - } - }, - "id": "JobPlacement" - }, - "SoftwareConfig": { - "description": "Specifies the selection and config of software inside the cluster.", - "type": "object", - "properties": { - "imageVersion": { - "description": "Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).", - "type": "string" - }, - "properties": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. The following are supported prefixes and their mappings:\ncapacity-scheduler: capacity-scheduler.xml\ncore: core-site.xml\ndistcp: distcp-default.xml\nhdfs: hdfs-site.xml\nhive: hive-site.xml\nmapred: mapred-site.xml\npig: pig.properties\nspark: spark-defaults.conf\nyarn: yarn-site.xmlFor more information, see Cluster properties.", - "type": "object" - } - }, - "id": "SoftwareConfig" - }, - "PigJob": { - "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.", - "type": "object", - "properties": { - "scriptVariables": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value])." - }, - "jarFileUris": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs." - }, - "loggingConfig": { - "description": "Optional. The runtime log config for job execution.", - "$ref": "LoggingConfig" - }, - "properties": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.", - "type": "object" - }, - "continueOnFailure": { - "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", - "type": "boolean" - }, - "queryList": { - "$ref": "QueryList", - "description": "A list of queries." - }, - "queryFileUri": { - "description": "The HCFS URI of the script that contains the Pig queries.", - "type": "string" - } - }, - "id": "PigJob" - }, "ClusterStatus": { "description": "The status of a cluster and its instances.", "type": "object", "properties": { + "substate": { + "description": "Output-only. Additional state information that includes status reported by the agent.", + "type": "string", + "enumDescriptions": [ + "", + "The cluster is known to be in an unhealthy state (for example, critical daemons are not running or HDFS capacity is exhausted).Applies to RUNNING state.", + "The agent-reported status is out of date (may occur if Cloud Dataproc loses communication with Agent).Applies to RUNNING state." + ], + "enum": [ + "UNSPECIFIED", + "UNHEALTHY", + "STALE_STATUS" + ] + }, + "stateStartTime": { + "format": "google-datetime", + "description": "Output-only. Time when this state was entered.", + "type": "string" + }, "detail": { "description": "Output-only. Optional details of cluster's state.", "type": "string" @@ -1459,30 +777,56 @@ ], "description": "Output-only. The cluster's state.", "type": "string" - }, - "substate": { - "enumDescriptions": [ - "", - "The cluster is known to be in an unhealthy state (for example, critical daemons are not running or HDFS capacity is exhausted).Applies to RUNNING state.", - "The agent-reported status is out of date (may occur if Cloud Dataproc loses communication with Agent).Applies to RUNNING state." - ], - "enum": [ - "UNSPECIFIED", - "UNHEALTHY", - "STALE_STATUS" - ], - "description": "Output-only. Additional state information that includes status reported by the agent.", - "type": "string" - }, - "stateStartTime": { - "format": "google-datetime", - "description": "Output-only. Time when this state was entered.", - "type": "string" } }, "id": "ClusterStatus" }, + "PigJob": { + "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.", + "type": "object", + "properties": { + "continueOnFailure": { + "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", + "type": "boolean" + }, + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + }, + "queryFileUri": { + "description": "The HCFS URI of the script that contains the Pig queries.", + "type": "string" + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scriptVariables": { + "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "id": "PigJob" + }, "ListClustersResponse": { + "description": "The list of all clusters in a project.", "type": "object", "properties": { "nextPageToken": { @@ -1497,13 +841,46 @@ "type": "array" } }, - "id": "ListClustersResponse", - "description": "The list of all clusters in a project." + "id": "ListClustersResponse" }, "Job": { "description": "A Cloud Dataproc job resource.", "type": "object", "properties": { + "statusHistory": { + "description": "Output-only. The previous job status.", + "items": { + "$ref": "JobStatus" + }, + "type": "array" + }, + "sparkJob": { + "$ref": "SparkJob", + "description": "Job is a Spark job." + }, + "sparkSqlJob": { + "$ref": "SparkSqlJob", + "description": "Job is a SparkSql job." + }, + "yarnApplications": { + "description": "Output-only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "items": { + "$ref": "YarnApplication" + }, + "type": "array" + }, + "pysparkJob": { + "$ref": "PySparkJob", + "description": "Job is a Pyspark job." + }, + "reference": { + "$ref": "JobReference", + "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a \u003ccode\u003ejob_id\u003c/code\u003e." + }, + "hadoopJob": { + "description": "Job is a Hadoop job.", + "$ref": "HadoopJob" + }, "placement": { "$ref": "JobPlacement", "description": "Required. Job information, including how, when, and where to run the job." @@ -1538,40 +915,6 @@ "driverOutputResourceUri": { "description": "Output-only. A URI pointing to the location of the stdout of the job's driver program.", "type": "string" - }, - "sparkSqlJob": { - "$ref": "SparkSqlJob", - "description": "Job is a SparkSql job." - }, - "statusHistory": { - "description": "Output-only. The previous job status.", - "items": { - "$ref": "JobStatus" - }, - "type": "array" - }, - "sparkJob": { - "$ref": "SparkJob", - "description": "Job is a Spark job." - }, - "yarnApplications": { - "description": "Output-only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", - "items": { - "$ref": "YarnApplication" - }, - "type": "array" - }, - "pysparkJob": { - "$ref": "PySparkJob", - "description": "Job is a Pyspark job." - }, - "reference": { - "$ref": "JobReference", - "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a \u003ccode\u003ejob_id\u003c/code\u003e." - }, - "hadoopJob": { - "$ref": "HadoopJob", - "description": "Job is a Hadoop job." } }, "id": "Job" @@ -1580,6 +923,10 @@ "description": "A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN.", "type": "object", "properties": { + "mainClass": { + "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.", + "type": "string" + }, "archiveUris": { "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.", "items": { @@ -1610,11 +957,11 @@ } }, "args": { - "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission." }, "fileUris": { "description": "Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.", @@ -1622,10 +969,6 @@ "type": "string" }, "type": "array" - }, - "mainClass": { - "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.", - "type": "string" } }, "id": "SparkJob" @@ -1637,6 +980,8 @@ "type": "string" }, "state": { + "description": "Output-only. A state message specifying the overall job state.", + "type": "string", "enumDescriptions": [ "The job state is unknown.", "The job is pending; it has been submitted, but is not yet running.", @@ -1660,9 +1005,7 @@ "DONE", "ERROR", "ATTEMPT_FAILURE" - ], - "description": "Output-only. A state message specifying the overall job state.", - "type": "string" + ] }, "substate": { "enum": [ @@ -1694,33 +1037,33 @@ "description": "Specifies the resources used to actively manage an instance group.", "type": "object", "properties": { - "instanceTemplateName": { - "description": "Output-only. The name of the Instance Template used for the Managed Instance Group.", - "type": "string" - }, "instanceGroupManagerName": { "description": "Output-only. The name of the Instance Group Manager for this group.", "type": "string" + }, + "instanceTemplateName": { + "type": "string", + "description": "Output-only. The name of the Instance Template used for the Managed Instance Group." } }, "id": "ManagedGroupConfig" }, "ClusterOperationStatus": { - "id": "ClusterOperationStatus", - "description": "The status of the operation.", - "type": "object", "properties": { + "innerState": { + "description": "Output-only. A message containing the detailed operation state.", + "type": "string" + }, + "stateStartTime": { + "format": "google-datetime", + "description": "Output-only. The time this state was entered.", + "type": "string" + }, "details": { "description": "Output-only.A message containing any operation metadata details.", "type": "string" }, "state": { - "enum": [ - "UNKNOWN", - "PENDING", - "RUNNING", - "DONE" - ], "description": "Output-only. A message containing the operation state.", "type": "string", "enumDescriptions": [ @@ -1728,23 +1071,27 @@ "The operation has been created.", "The operation is running.", "The operation is done; either cancelled or completed." + ], + "enum": [ + "UNKNOWN", + "PENDING", + "RUNNING", + "DONE" ] - }, - "innerState": { - "type": "string", - "description": "Output-only. A message containing the detailed operation state." - }, - "stateStartTime": { - "format": "google-datetime", - "description": "Output-only. The time this state was entered.", - "type": "string" } - } + }, + "id": "ClusterOperationStatus", + "description": "The status of the operation.", + "type": "object" }, "HadoopJob": { "description": "A Cloud Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).", "type": "object", "properties": { + "mainJarFileUri": { + "type": "string", + "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'" + }, "jarFileUris": { "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.", "items": { @@ -1753,15 +1100,15 @@ "type": "array" }, "loggingConfig": { - "description": "Optional. The runtime log config for job execution.", - "$ref": "LoggingConfig" + "$ref": "LoggingConfig", + "description": "Optional. The runtime log config for job execution." }, "properties": { - "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.", + "type": "object" }, "args": { "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", @@ -1771,11 +1118,11 @@ "type": "array" }, "fileUris": { - "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks." }, "mainClass": { "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.", @@ -1787,15 +1134,12 @@ "type": "string" }, "type": "array" - }, - "mainJarFileUri": { - "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'", - "type": "string" } }, "id": "HadoopJob" }, "QueryList": { + "id": "QueryList", "description": "A list of queries to run on a cluster.", "type": "object", "properties": { @@ -1806,24 +1150,13 @@ }, "type": "array" } - }, - "id": "QueryList" + } }, "YarnApplication": { - "id": "YarnApplication", - "description": "A YARN application created by a job. Application information is a subset of \u003ccode\u003eorg.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto\u003c/code\u003e.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", - "type": "object", "properties": { - "trackingUrl": { - "description": "Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.", - "type": "string" - }, - "progress": { - "format": "float", - "description": "Required. The numerical progress of the application, from 1 to 100.", - "type": "number" - }, "state": { + "description": "Required. The application state.", + "type": "string", "enumDescriptions": [ "Status is unspecified.", "Status is NEW.", @@ -1845,15 +1178,25 @@ "FINISHED", "FAILED", "KILLED" - ], - "description": "Required. The application state.", - "type": "string" + ] }, "name": { "description": "Required. The application name.", "type": "string" + }, + "trackingUrl": { + "type": "string", + "description": "Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access." + }, + "progress": { + "format": "float", + "description": "Required. The numerical progress of the application, from 1 to 100.", + "type": "number" } - } + }, + "id": "YarnApplication", + "description": "A YARN application created by a job. Application information is a subset of \u003ccode\u003eorg.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto\u003c/code\u003e.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "type": "object" }, "DiagnoseClusterRequest": { "description": "A request to collect cluster diagnostic information.", @@ -1862,21 +1205,655 @@ "id": "DiagnoseClusterRequest" }, "DiskConfig": { + "id": "DiskConfig", + "description": "Specifies the config of disk options for a group of VM instances.", + "type": "object", "properties": { - "numLocalSsds": { - "format": "int32", - "description": "Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.", - "type": "integer" - }, "bootDiskSizeGb": { "type": "integer", "format": "int32", "description": "Optional. Size in GB of the boot disk (default is 500GB)." + }, + "numLocalSsds": { + "format": "int32", + "description": "Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.", + "type": "integer" + } + } + }, + "ClusterOperationMetadata": { + "id": "ClusterOperationMetadata", + "description": "Metadata describing the operation.", + "type": "object", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Output-only. Labels associated with the operation", + "type": "object" + }, + "status": { + "$ref": "ClusterOperationStatus", + "description": "Output-only. Current operation status." + }, + "statusHistory": { + "items": { + "$ref": "ClusterOperationStatus" + }, + "type": "array", + "description": "Output-only. The previous operation status." + }, + "clusterUuid": { + "description": "Output-only. Cluster UUID for the operation.", + "type": "string" + }, + "clusterName": { + "description": "Output-only. Name of the cluster for the operation.", + "type": "string" + }, + "operationType": { + "description": "Output-only. The operation type.", + "type": "string" + }, + "description": { + "description": "Output-only. Short description of operation.", + "type": "string" + }, + "warnings": { + "description": "Output-only. Errors encountered during operation execution.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "HiveJob": { + "description": "A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.", + "type": "object", + "properties": { + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.", + "type": "object" + }, + "continueOnFailure": { + "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", + "type": "boolean" + }, + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + }, + "queryFileUri": { + "type": "string", + "description": "The HCFS URI of the script that contains Hive queries." + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scriptVariables": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";).", + "type": "object" } }, - "id": "DiskConfig", - "description": "Specifies the config of disk options for a group of VM instances.", + "id": "HiveJob" + }, + "Empty": { + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object", + "properties": {} + }, + "DiagnoseClusterResults": { + "description": "The location of diagnostic output.", + "type": "object", + "properties": { + "outputUri": { + "type": "string", + "description": "Output-only. The Google Cloud Storage URI of the diagnostic output. The output report is a plain text file with a summary of collected diagnostics." + } + }, + "id": "DiagnoseClusterResults" + }, + "ClusterConfig": { + "description": "The cluster config.", + "type": "object", + "properties": { + "masterConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for the master instance in a cluster." + }, + "secondaryWorkerConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for additional worker instances in a cluster." + }, + "initializationActions": { + "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's role metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):\nROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1/instance/attributes/dataproc-role)\nif [[ \"${ROLE}\" == 'Master' ]]; then\n ... master specific actions ...\nelse\n ... worker specific actions ...\nfi\n", + "items": { + "$ref": "NodeInitializationAction" + }, + "type": "array" + }, + "configBucket": { + "description": "Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.", + "type": "string" + }, + "workerConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for worker instances in a cluster." + }, + "gceClusterConfig": { + "description": "Required. The shared Google Compute Engine config settings for all instances in a cluster.", + "$ref": "GceClusterConfig" + }, + "softwareConfig": { + "description": "Optional. The config settings for software inside the cluster.", + "$ref": "SoftwareConfig" + } + }, + "id": "ClusterConfig" + }, + "PySparkJob": { + "description": "A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.", + "type": "object", + "properties": { + "fileUris": { + "description": "Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pythonFileUris": { + "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainPythonFileUri": { + "type": "string", + "description": "Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file." + }, + "archiveUris": { + "description": "Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.", + "items": { + "type": "string" + }, + "type": "array" + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "args": { + "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "PySparkJob" + }, + "GceClusterConfig": { + "description": "Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster.", + "type": "object", + "properties": { + "serviceAccountScopes": { + "description": "Optional. The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included:\nhttps://www.googleapis.com/auth/cloud.useraccounts.readonly\nhttps://www.googleapis.com/auth/devstorage.read_write\nhttps://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided:\nhttps://www.googleapis.com/auth/bigquery\nhttps://www.googleapis.com/auth/bigtable.admin.table\nhttps://www.googleapis.com/auth/bigtable.data\nhttps://www.googleapis.com/auth/devstorage.full_control", + "items": { + "type": "string" + }, + "type": "array" + }, + "tags": { + "description": "The Google Compute Engine tags to add to all instances (see Tagging instances).", + "items": { + "type": "string" + }, + "type": "array" + }, + "serviceAccount": { + "description": "Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:\nroles/logging.logWriter\nroles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com", + "type": "string" + }, + "subnetworkUri": { + "description": "Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0\nprojects/[project_id]/regions/us-east1/sub0\nsub0", + "type": "string" + }, + "networkUri": { + "description": "Optional. The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks for more information).A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default\nprojects/[project_id]/regions/global/default\ndefault", + "type": "string" + }, + "zoneUri": { + "description": "Optional. The zone where the Google Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Cloud Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]\nprojects/[project_id]/zones/[zone]\nus-central1-f", + "type": "string" + }, + "metadata": { + "description": "The Google Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "internalIpOnly": { + "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.", + "type": "boolean" + } + }, + "id": "GceClusterConfig" + }, + "ClusterMetrics": { + "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "type": "object", + "properties": { + "hdfsMetrics": { + "description": "The HDFS metrics.", + "type": "object", + "additionalProperties": { + "format": "int64", + "type": "string" + } + }, + "yarnMetrics": { + "description": "The YARN metrics.", + "type": "object", + "additionalProperties": { + "type": "string", + "format": "int64" + } + } + }, + "id": "ClusterMetrics" + }, + "AcceleratorConfig": { + "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).", + "type": "object", + "properties": { + "acceleratorCount": { + "format": "int32", + "description": "The number of the accelerator cards of this type exposed to this instance.", + "type": "integer" + }, + "acceleratorTypeUri": { + "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)Examples * https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * nvidia-tesla-k80", + "type": "string" + } + }, + "id": "AcceleratorConfig" + }, + "LoggingConfig": { + "description": "The runtime logging config of the job.", + "type": "object", + "properties": { + "driverLogLevels": { + "description": "The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'", + "type": "object", + "additionalProperties": { + "type": "string", + "enum": [ + "LEVEL_UNSPECIFIED", + "ALL", + "TRACE", + "DEBUG", + "INFO", + "WARN", + "ERROR", + "FATAL", + "OFF" + ] + } + } + }, + "id": "LoggingConfig" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a network API call.", + "type": "object", + "properties": { + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", + "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "type": "object" + }, + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + } + }, + "id": "Operation" + }, + "JobReference": { + "description": "Encapsulates the full scoping used to reference a job.", + "type": "object", + "properties": { + "jobId": { + "description": "Optional. The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.", + "type": "string" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string" + } + }, + "id": "JobReference" + }, + "SubmitJobRequest": { + "properties": { + "job": { + "description": "Required. The job resource.", + "$ref": "Job" + } + }, + "id": "SubmitJobRequest", + "description": "A request to submit a job.", "type": "object" + }, + "Status": { + "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "InstanceGroupConfig": { + "description": "Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group.", + "type": "object", + "properties": { + "diskConfig": { + "$ref": "DiskConfig", + "description": "Optional. Disk option config settings." + }, + "machineTypeUri": { + "description": "Optional. The Google Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nprojects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nn1-standard-2", + "type": "string" + }, + "imageUri": { + "description": "Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.", + "type": "string" + }, + "managedGroupConfig": { + "$ref": "ManagedGroupConfig", + "description": "Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups." + }, + "isPreemptible": { + "description": "Optional. Specifies that this instance group contains preemptible instances.", + "type": "boolean" + }, + "instanceNames": { + "description": "Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).", + "items": { + "type": "string" + }, + "type": "array" + }, + "accelerators": { + "description": "Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.", + "items": { + "$ref": "AcceleratorConfig" + }, + "type": "array" + }, + "numInstances": { + "format": "int32", + "description": "Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.", + "type": "integer" + } + }, + "id": "InstanceGroupConfig" + }, + "JobScheduling": { + "description": "Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be changed before final release.", + "type": "object", + "properties": { + "maxFailuresPerHour": { + "format": "int32", + "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.", + "type": "integer" + } + }, + "id": "JobScheduling" + }, + "NodeInitializationAction": { + "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.", + "type": "object", + "properties": { + "executionTimeout": { + "type": "string", + "format": "google-duration", + "description": "Optional. Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period." + }, + "executableFile": { + "description": "Required. Google Cloud Storage URI of executable file.", + "type": "string" + } + }, + "id": "NodeInitializationAction" + }, + "ListJobsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent \u003ccode\u003eListJobsRequest\u003c/code\u003e.", + "type": "string" + }, + "jobs": { + "description": "Output-only. Jobs list.", + "items": { + "$ref": "Job" + }, + "type": "array" + } + }, + "id": "ListJobsResponse", + "description": "A list of jobs in a project." + }, + "CancelJobRequest": { + "description": "A request to cancel a job.", + "type": "object", + "properties": {}, + "id": "CancelJobRequest" + }, + "SparkSqlJob": { + "properties": { + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + }, + "queryFileUri": { + "description": "The HCFS URI of the script that contains SQL queries.", + "type": "string" + }, + "scriptVariables": { + "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.", + "type": "object" + } + }, + "id": "SparkSqlJob", + "description": "A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.", + "type": "object" + }, + "Cluster": { + "description": "Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.", + "type": "object", + "properties": { + "config": { + "description": "Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.", + "$ref": "ClusterConfig" + }, + "statusHistory": { + "description": "Output-only. The previous cluster status.", + "items": { + "$ref": "ClusterStatus" + }, + "type": "array" + }, + "clusterUuid": { + "description": "Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.", + "type": "string" + }, + "clusterName": { + "description": "Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.", + "type": "string" + }, + "projectId": { + "description": "Required. The Google Cloud Platform project ID that the cluster belongs to.", + "type": "string" + }, + "labels": { + "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "metrics": { + "$ref": "ClusterMetrics", + "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release." + }, + "status": { + "$ref": "ClusterStatus", + "description": "Output-only. Cluster status." + } + }, + "id": "Cluster" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + } + }, + "id": "ListOperationsResponse" + }, + "JobPlacement": { + "description": "Cloud Dataproc job config.", + "type": "object", + "properties": { + "clusterUuid": { + "type": "string", + "description": "Output-only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted." + }, + "clusterName": { + "description": "Required. The name of the cluster where the job will be submitted.", + "type": "string" + } + }, + "id": "JobPlacement" + }, + "SoftwareConfig": { + "description": "Specifies the selection and config of software inside the cluster.", + "type": "object", + "properties": { + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. The following are supported prefixes and their mappings:\ncapacity-scheduler: capacity-scheduler.xml\ncore: core-site.xml\ndistcp: distcp-default.xml\nhdfs: hdfs-site.xml\nhive: hive-site.xml\nmapred: mapred-site.xml\npig: pig.properties\nspark: spark-defaults.conf\nyarn: yarn-site.xmlFor more information, see Cluster properties.", + "type": "object" + }, + "imageVersion": { + "description": "Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).", + "type": "string" + } + }, + "id": "SoftwareConfig" } }, "protocol": "rest", @@ -1885,5 +1862,28 @@ "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "version": "v1", - "baseUrl": "https://dataproc.googleapis.com/" + "baseUrl": "https://dataproc.googleapis.com/", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "servicePath": "", + "description": "Manages Hadoop-based clusters and jobs on Google Cloud Platform.", + "kind": "discovery#restDescription", + "rootUrl": "https://dataproc.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "dataproc", + "batchPath": "batch", + "id": "dataproc:v1", + "documentationLink": "https://cloud.google.com/dataproc/", + "revision": "20170822", + "title": "Google Cloud Dataproc API", + "ownerName": "Google", + "discoveryVersion": "v1" } diff --git a/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-api.json b/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-api.json new file mode 100644 index 0000000..e04ad02 --- /dev/null +++ b/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-api.json @@ -0,0 +1,1922 @@ +{ + "title": "Google Cloud Dataproc API", + "discoveryVersion": "v1", + "ownerName": "Google", + "version_module": true, + "resources": { + "projects": { + "resources": { + "regions": { + "resources": { + "clusters": { + "methods": { + "patch": { + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "id": "dataproc.projects.regions.clusters.patch", + "request": { + "$ref": "Cluster" + }, + "description": "Updates a cluster in a project.", + "httpMethod": "PATCH", + "parameterOrder": [ + "projectId", + "region", + "clusterName" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "gracefulDecommissionTimeout": { + "location": "query", + "format": "google-duration", + "description": "Optional. Timeout for graceful YARN decomissioning. Graceful decommissioning allows removing nodes from the cluster without interrupting jobs in progress. Timeout specifies how long to wait for jobs in progress to finish before forcefully removing nodes (and potentially interrupting jobs). Default timeout is 0 (for forceful decommission), and the maximum allowed timeout is 1 day.Only supported on Dataproc image versions 1.2 and higher.", + "type": "string" + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project the cluster belongs to.", + "type": "string", + "required": true + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "Required. Specifies the path, relative to \u003ccode\u003eCluster\u003c/code\u003e, of the field to update. For example, to change the number of workers in a cluster to 5, the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003econfig.worker_config.num_instances\u003c/code\u003e, and the PATCH request body would specify the new value, as follows:\n{\n \"config\":{\n \"workerConfig\":{\n \"numInstances\":\"5\"\n }\n }\n}\nSimilarly, to change the number of preemptible workers in a cluster to 5, the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be \u003ccode\u003econfig.secondary_worker_config.num_instances\u003c/code\u003e, and the PATCH request body would be set as follows:\n{\n \"config\":{\n \"secondaryWorkerConfig\":{\n \"numInstances\":\"5\"\n }\n }\n}\n\u003cstrong\u003eNote:\u003c/strong\u003e currently only some fields can be updated: |Mask|Purpose| |labels|Updates labels| |config.worker_config.num_instances|Resize primary worker group| |config.secondary_worker_config.num_instances|Resize secondary worker group|", + "type": "string" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "clusterName": { + "location": "path", + "description": "Required. The cluster name.", + "type": "string", + "required": true + } + } + }, + "get": { + "description": "Gets the resource representation for a cluster in a project.", + "response": { + "$ref": "Cluster" + }, + "parameterOrder": [ + "projectId", + "region", + "clusterName" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true, + "location": "path" + }, + "clusterName": { + "location": "path", + "description": "Required. The cluster name.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "id": "dataproc.projects.regions.clusters.get", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}" + }, + "diagnose": { + "request": { + "$ref": "DiagnoseClusterRequest" + }, + "description": "Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "region", + "clusterName" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "clusterName": { + "description": "Required. The cluster name.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", + "id": "dataproc.projects.regions.clusters.diagnose" + }, + "delete": { + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + "id": "dataproc.projects.regions.clusters.delete", + "description": "Deletes a cluster in a project.", + "httpMethod": "DELETE", + "parameterOrder": [ + "projectId", + "region", + "clusterName" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "clusterName": { + "location": "path", + "description": "Required. The cluster name.", + "type": "string", + "required": true + } + } + }, + "list": { + "description": "Lists all regions/{region}/clusters in a project.", + "response": { + "$ref": "ListClustersResponse" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "GET", + "parameters": { + "filter": { + "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *", + "type": "string", + "location": "query" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "pageToken": { + "location": "query", + "description": "Optional. The standard List page token.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The standard List page size.", + "type": "integer", + "location": "query" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters", + "id": "dataproc.projects.regions.clusters.list", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters" + }, + "create": { + "request": { + "$ref": "Cluster" + }, + "description": "Creates a cluster in a project.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "region" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + "type": "string", + "required": true + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters", + "path": "v1beta2/projects/{projectId}/regions/{region}/clusters", + "id": "dataproc.projects.regions.clusters.create" + } + } + }, + "operations": { + "methods": { + "get": { + "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", + "id": "dataproc.projects.regions.operations.get", + "path": "v1beta2/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$", + "location": "path" + } + } + }, + "list": { + "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/regions/[^/]+/operations$" + } + }, + "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations", + "id": "dataproc.projects.regions.operations.list", + "path": "v1beta2/{+name}" + }, + "cancel": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}:cancel", + "id": "dataproc.projects.regions.operations.cancel", + "path": "v1beta2/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED." + }, + "delete": { + "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", + "path": "v1beta2/{+name}", + "id": "dataproc.projects.regions.operations.delete", + "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$" + } + } + } + } + }, + "jobs": { + "methods": { + "cancel": { + "httpMethod": "POST", + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "response": { + "$ref": "Job" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "jobId": { + "location": "path", + "description": "Required. The job ID.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + }, + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + "id": "dataproc.projects.regions.jobs.cancel", + "request": { + "$ref": "CancelJobRequest" + }, + "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get." + }, + "patch": { + "description": "Updates a job in a project.", + "request": { + "$ref": "Job" + }, + "httpMethod": "PATCH", + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "response": { + "$ref": "Job" + }, + "parameters": { + "jobId": { + "location": "path", + "description": "Required. The job ID.", + "type": "string", + "required": true + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "Required. Specifies the path, relative to \u003ccode\u003eJob\u003c/code\u003e, of the field to update. For example, to update the labels of a Job the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003elabels\u003c/code\u003e, and the PATCH request body would specify the new value. \u003cstrong\u003eNote:\u003c/strong\u003e Currently, \u003ccode\u003elabels\u003c/code\u003e is the only field that can be updated.", + "type": "string", + "location": "query" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "id": "dataproc.projects.regions.jobs.patch" + }, + "get": { + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "id": "dataproc.projects.regions.jobs.get", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "description": "Gets the resource representation for a job in a project.", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "jobId": { + "description": "Required. The job ID.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "submit": { + "request": { + "$ref": "SubmitJobRequest" + }, + "description": "Submits a job to a cluster.", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "projectId": { + "location": "path", + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs:submit", + "id": "dataproc.projects.regions.jobs.submit", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs:submit" + }, + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "projectId", + "region", + "jobId" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "jobId": { + "description": "Required. The job ID.", + "type": "string", + "required": true, + "location": "path" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "region": { + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + "id": "dataproc.projects.regions.jobs.delete", + "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION." + }, + "list": { + "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs", + "id": "dataproc.projects.regions.jobs.list", + "path": "v1beta2/projects/{projectId}/regions/{region}/jobs", + "description": "Lists regions/{region}/jobs in a project.", + "response": { + "$ref": "ListJobsResponse" + }, + "parameterOrder": [ + "projectId", + "region" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "Optional. The number of results to return in each response.", + "type": "integer", + "location": "query" + }, + "region": { + "location": "path", + "description": "Required. The Cloud Dataproc region in which to handle the request.", + "type": "string", + "required": true + }, + "clusterName": { + "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.", + "type": "string", + "location": "query" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string", + "required": true, + "location": "path" + }, + "filter": { + "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *", + "type": "string", + "location": "query" + }, + "jobStateMatcher": { + "location": "query", + "enum": [ + "ALL", + "ACTIVE", + "NON_ACTIVE" + ], + "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs).", + "type": "string" + }, + "pageToken": { + "description": "Optional. The page token, returned by a previous call, to request the next page of results.", + "type": "string", + "location": "query" + } + } + } + } + } + } + } + } + } + }, + "parameters": { + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + } + }, + "schemas": { + "AcceleratorConfig": { + "description": "Specifies the type and number of accelerator cards attached to the instances of an instance group (see GPUs on Compute Engine).", + "type": "object", + "properties": { + "acceleratorCount": { + "format": "int32", + "description": "The number of the accelerator cards of this type exposed to this instance.", + "type": "integer" + }, + "acceleratorTypeUri": { + "description": "Full URL, partial URI, or short name of the accelerator type resource to expose to this instance. See Google Compute Engine AcceleratorTypes( /compute/docs/reference/beta/acceleratorTypes)Examples * https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * nvidia-tesla-k80", + "type": "string" + } + }, + "id": "AcceleratorConfig" + }, + "ClusterMetrics": { + "description": "Contains cluster daemon metrics, such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "type": "object", + "properties": { + "hdfsMetrics": { + "description": "The HDFS metrics.", + "type": "object", + "additionalProperties": { + "format": "int64", + "type": "string" + } + }, + "yarnMetrics": { + "description": "The YARN metrics.", + "type": "object", + "additionalProperties": { + "format": "int64", + "type": "string" + } + } + }, + "id": "ClusterMetrics" + }, + "LoggingConfig": { + "description": "The runtime logging config of the job.", + "type": "object", + "properties": { + "driverLogLevels": { + "description": "The per-package log levels for the driver. This may include \"root\" package name to configure rootLogger. Examples: 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'", + "type": "object", + "additionalProperties": { + "type": "string", + "enum": [ + "LEVEL_UNSPECIFIED", + "ALL", + "TRACE", + "DEBUG", + "INFO", + "WARN", + "ERROR", + "FATAL", + "OFF" + ] + } + } + }, + "id": "LoggingConfig" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a network API call.", + "type": "object", + "properties": { + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "type": "object" + }, + "done": { + "description": "If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should have the format of operations/some/unique/name.", + "type": "string" + } + }, + "id": "Operation" + }, + "JobReference": { + "description": "Encapsulates the full scoping used to reference a job.", + "type": "object", + "properties": { + "jobId": { + "description": "Optional. The job ID, which must be unique within the project. The job ID is generated by the server upon job submission or provided by the user as a means to perform retries without creating duplicate jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.", + "type": "string" + }, + "projectId": { + "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + "type": "string" + } + }, + "id": "JobReference" + }, + "SubmitJobRequest": { + "description": "A request to submit a job.", + "type": "object", + "properties": { + "job": { + "description": "Required. The job resource.", + "$ref": "Job" + } + }, + "id": "SubmitJobRequest" + }, + "Status": { + "description": "The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). The error model is designed to be:\nSimple to use and understand for most users\nFlexible enough to meet unexpected needsOverviewThe Status message contains three pieces of data: error code, error message, and error details. The error code should be an enum value of google.rpc.Code, but it may accept additional error codes if needed. The error message should be a developer-facing English message that helps developers understand and resolve the error. If a localized user-facing error message is needed, put the localized message in the error details or localize it in the client. The optional error details may contain arbitrary information about the error. There is a predefined set of error detail types in the package google.rpc that can be used for common error conditions.Language mappingThe Status message is the logical representation of the error model, but it is not necessarily the actual wire format. When the Status message is exposed in different client libraries and different wire protocols, it can be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped to some error codes in C.Other usesThe error model and the Status message can be used in a variety of environments, either with or without APIs, to provide a consistent developer experience across different environments.Example uses of this error model include:\nPartial errors. If a service needs to return partial errors to the client, it may embed the Status in the normal response to indicate the partial errors.\nWorkflow errors. A typical workflow has multiple steps. Each step may have a Status message for error reporting.\nBatch operations. If a client uses batch request and batch response, the Status message should be used directly inside batch response, one for each error sub-response.\nAsynchronous operations. If an API call embeds asynchronous operation results in its response, the status of those operations should be represented directly using the Status message.\nLogging. If some API errors are stored in logs, the message Status could be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "InstanceGroupConfig": { + "description": "Optional. The config settings for Google Compute Engine resources in an instance group, such as a master or worker group.", + "type": "object", + "properties": { + "diskConfig": { + "$ref": "DiskConfig", + "description": "Optional. Disk option config settings." + }, + "managedGroupConfig": { + "$ref": "ManagedGroupConfig", + "description": "Output-only. The config for Google Compute Engine Instance Group Manager that manages this group. This is only used for preemptible instance groups." + }, + "isPreemptible": { + "description": "Optional. Specifies that this instance group contains preemptible instances.", + "type": "boolean" + }, + "imageUri": { + "description": "Output-only. The Google Compute Engine image resource used for cluster instances. Inferred from SoftwareConfig.image_version.", + "type": "string" + }, + "machineTypeUri": { + "description": "Optional. The Google Compute Engine machine type used for cluster instances.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nprojects/[project_id]/zones/us-east1-a/machineTypes/n1-standard-2\nn1-standard-2", + "type": "string" + }, + "instanceNames": { + "description": "Optional. The list of instance names. Cloud Dataproc derives the names from cluster_name, num_instances, and the instance group if not set by user (recommended practice is to let Cloud Dataproc derive the name).", + "items": { + "type": "string" + }, + "type": "array" + }, + "accelerators": { + "description": "Optional. The Google Compute Engine accelerator configuration for these instances.Beta Feature: This feature is still under development. It may be changed before final release.", + "items": { + "$ref": "AcceleratorConfig" + }, + "type": "array" + }, + "numInstances": { + "format": "int32", + "description": "Optional. The number of VM instances in the instance group. For master instance groups, must be set to 1.", + "type": "integer" + } + }, + "id": "InstanceGroupConfig" + }, + "JobScheduling": { + "description": "Job scheduling options.Beta Feature: These options are available for testing purposes only. They may be changed before final release.", + "type": "object", + "properties": { + "maxFailuresPerHour": { + "format": "int32", + "description": "Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.", + "type": "integer" + } + }, + "id": "JobScheduling" + }, + "NodeInitializationAction": { + "description": "Specifies an executable to run on a fully configured node and a timeout period for executable completion.", + "type": "object", + "properties": { + "executionTimeout": { + "format": "google-duration", + "description": "Optional. Amount of time executable has to complete. Default is 10 minutes. Cluster creation fails with an explanatory error message (the name of the executable that caused the error and the exceeded timeout period) if the executable is not completed at end of the timeout period.", + "type": "string" + }, + "executableFile": { + "description": "Required. Google Cloud Storage URI of executable file.", + "type": "string" + } + }, + "id": "NodeInitializationAction" + }, + "ListJobsResponse": { + "description": "A list of jobs in a project.", + "type": "object", + "properties": { + "jobs": { + "description": "Output-only. Jobs list.", + "items": { + "$ref": "Job" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent \u003ccode\u003eListJobsRequest\u003c/code\u003e.", + "type": "string" + } + }, + "id": "ListJobsResponse" + }, + "CancelJobRequest": { + "description": "A request to cancel a job.", + "type": "object", + "properties": {}, + "id": "CancelJobRequest" + }, + "SparkSqlJob": { + "description": "A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries.", + "type": "object", + "properties": { + "scriptVariables": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=\"value\";).", + "type": "object" + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.", + "type": "object" + }, + "queryFileUri": { + "description": "The HCFS URI of the script that contains SQL queries.", + "type": "string" + }, + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + } + }, + "id": "SparkSqlJob" + }, + "Cluster": { + "description": "Describes the identifying information, config, and status of a cluster of Google Compute Engine instances.", + "type": "object", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The labels to associate with this cluster. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a cluster.", + "type": "object" + }, + "metrics": { + "$ref": "ClusterMetrics", + "description": "Contains cluster daemon metrics such as HDFS and YARN stats.Beta Feature: This report is available for testing purposes only. It may be changed before final release." + }, + "status": { + "$ref": "ClusterStatus", + "description": "Output-only. Cluster status." + }, + "statusHistory": { + "description": "Output-only. The previous cluster status.", + "items": { + "$ref": "ClusterStatus" + }, + "type": "array" + }, + "config": { + "description": "Required. The cluster config. Note that Cloud Dataproc may set default values, and values may change when clusters are updated.", + "$ref": "ClusterConfig" + }, + "clusterUuid": { + "description": "Output-only. A cluster UUID (Unique Universal Identifier). Cloud Dataproc generates this value when it creates the cluster.", + "type": "string" + }, + "clusterName": { + "description": "Required. The cluster name. Cluster names within a project must be unique. Names of deleted clusters can be reused.", + "type": "string" + }, + "projectId": { + "description": "Required. The Google Cloud Platform project ID that the cluster belongs to.", + "type": "string" + } + }, + "id": "Cluster" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + } + }, + "id": "ListOperationsResponse" + }, + "SoftwareConfig": { + "description": "Specifies the selection and config of software inside the cluster.", + "type": "object", + "properties": { + "imageVersion": { + "description": "Optional. The version of software inside the cluster. It must match the regular expression [0-9]+\\.[0-9]+. If unspecified, it defaults to the latest version (see Cloud Dataproc Versioning).", + "type": "string" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The properties to set on daemon config files.Property keys are specified in prefix:property format, such as core:fs.defaultFS. The following are supported prefixes and their mappings:\ncapacity-scheduler: capacity-scheduler.xml\ncore: core-site.xml\ndistcp: distcp-default.xml\nhdfs: hdfs-site.xml\nhive: hive-site.xml\nmapred: mapred-site.xml\npig: pig.properties\nspark: spark-defaults.conf\nyarn: yarn-site.xmlFor more information, see Cluster properties.", + "type": "object" + } + }, + "id": "SoftwareConfig" + }, + "JobPlacement": { + "description": "Cloud Dataproc job config.", + "type": "object", + "properties": { + "clusterUuid": { + "description": "Output-only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.", + "type": "string" + }, + "clusterName": { + "description": "Required. The name of the cluster where the job will be submitted.", + "type": "string" + } + }, + "id": "JobPlacement" + }, + "PigJob": { + "description": "A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN.", + "type": "object", + "properties": { + "continueOnFailure": { + "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", + "type": "boolean" + }, + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + }, + "queryFileUri": { + "description": "The HCFS URI of the script that contains the Pig queries.", + "type": "string" + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scriptVariables": { + "description": "Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.", + "type": "object" + } + }, + "id": "PigJob" + }, + "ClusterStatus": { + "description": "The status of a cluster and its instances.", + "type": "object", + "properties": { + "substate": { + "description": "Output-only. Additional state information that includes status reported by the agent.", + "type": "string", + "enumDescriptions": [ + "", + "The cluster is known to be in an unhealthy state (for example, critical daemons are not running or HDFS capacity is exhausted).Applies to RUNNING state.", + "The agent-reported status is out of date (may occur if Cloud Dataproc loses communication with Agent).Applies to RUNNING state." + ], + "enum": [ + "UNSPECIFIED", + "UNHEALTHY", + "STALE_STATUS" + ] + }, + "stateStartTime": { + "format": "google-datetime", + "description": "Output-only. Time when this state was entered.", + "type": "string" + }, + "detail": { + "description": "Output-only. Optional details of cluster's state.", + "type": "string" + }, + "state": { + "description": "Output-only. The cluster's state.", + "type": "string", + "enumDescriptions": [ + "The cluster state is unknown.", + "The cluster is being created and set up. It is not ready for use.", + "The cluster is currently running and healthy. It is ready for use.", + "The cluster encountered an error. It is not ready for use.", + "The cluster is being deleted. It cannot be used.", + "The cluster is being updated. It continues to accept and process jobs." + ], + "enum": [ + "UNKNOWN", + "CREATING", + "RUNNING", + "ERROR", + "DELETING", + "UPDATING" + ] + } + }, + "id": "ClusterStatus" + }, + "ListClustersResponse": { + "description": "The list of all clusters in a project.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Output-only. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent \u003ccode\u003eListClustersRequest\u003c/code\u003e.", + "type": "string" + }, + "clusters": { + "description": "Output-only. The clusters in the project.", + "items": { + "$ref": "Cluster" + }, + "type": "array" + } + }, + "id": "ListClustersResponse" + }, + "SparkJob": { + "description": "A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN.", + "type": "object", + "properties": { + "args": { + "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "fileUris": { + "description": "Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainClass": { + "description": "The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.", + "type": "string" + }, + "archiveUris": { + "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainJarFileUri": { + "description": "The HCFS URI of the jar file that contains the main class.", + "type": "string" + }, + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "$ref": "LoggingConfig", + "description": "Optional. The runtime log config for job execution." + }, + "properties": { + "description": "Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "id": "SparkJob" + }, + "Job": { + "description": "A Cloud Dataproc job resource.", + "type": "object", + "properties": { + "driverControlFilesUri": { + "description": "Output-only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.", + "type": "string" + }, + "scheduling": { + "description": "Optional. Job scheduling configuration.", + "$ref": "JobScheduling" + }, + "pigJob": { + "$ref": "PigJob", + "description": "Job is a Pig job." + }, + "hiveJob": { + "$ref": "HiveJob", + "description": "Job is a Hive job." + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.", + "type": "object" + }, + "driverOutputResourceUri": { + "description": "Output-only. A URI pointing to the location of the stdout of the job's driver program.", + "type": "string" + }, + "sparkJob": { + "description": "Job is a Spark job.", + "$ref": "SparkJob" + }, + "sparkSqlJob": { + "description": "Job is a SparkSql job.", + "$ref": "SparkSqlJob" + }, + "statusHistory": { + "description": "Output-only. The previous job status.", + "items": { + "$ref": "JobStatus" + }, + "type": "array" + }, + "yarnApplications": { + "description": "Output-only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "items": { + "$ref": "YarnApplication" + }, + "type": "array" + }, + "pysparkJob": { + "description": "Job is a Pyspark job.", + "$ref": "PySparkJob" + }, + "reference": { + "description": "Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a \u003ccode\u003ejob_id\u003c/code\u003e.", + "$ref": "JobReference" + }, + "hadoopJob": { + "description": "Job is a Hadoop job.", + "$ref": "HadoopJob" + }, + "placement": { + "description": "Required. Job information, including how, when, and where to run the job.", + "$ref": "JobPlacement" + }, + "status": { + "$ref": "JobStatus", + "description": "Output-only. The job status. Additional application-specific status information may be contained in the \u003ccode\u003etype_job\u003c/code\u003e and \u003ccode\u003eyarn_applications\u003c/code\u003e fields." + } + }, + "id": "Job" + }, + "JobStatus": { + "description": "Cloud Dataproc job status.", + "type": "object", + "properties": { + "substate": { + "enumDescriptions": [ + "", + "The Job is submitted to the agent.Applies to RUNNING state.", + "The Job has been received and is awaiting execution (it may be waiting for a condition to be met). See the \"details\" field for the reason for the delay.Applies to RUNNING state.", + "The agent-reported status is out of date, which may be caused by a loss of communication between the agent and Cloud Dataproc. If the agent does not send a timely update, the job will fail.Applies to RUNNING state." + ], + "enum": [ + "UNSPECIFIED", + "SUBMITTED", + "QUEUED", + "STALE_STATUS" + ], + "description": "Output-only. Additional state information, which includes status reported by the agent.", + "type": "string" + }, + "stateStartTime": { + "format": "google-datetime", + "description": "Output-only. The time when this state was entered.", + "type": "string" + }, + "details": { + "description": "Output-only. Optional job state details, such as an error description if the state is \u003ccode\u003eERROR\u003c/code\u003e.", + "type": "string" + }, + "state": { + "description": "Output-only. A state message specifying the overall job state.", + "type": "string", + "enumDescriptions": [ + "The job state is unknown.", + "The job is pending; it has been submitted, but is not yet running.", + "Job has been received by the service and completed initial setup; it will soon be submitted to the cluster.", + "The job is running on the cluster.", + "A CancelJob request has been received, but is pending.", + "Transient in-flight resources have been canceled, and the request to cancel the running job has been issued to the cluster.", + "The job cancellation was successful.", + "The job has completed successfully.", + "The job has completed, but encountered an error.", + "Job attempt has failed. The detail field contains failure details for this attempt.Applies to restartable jobs only." + ], + "enum": [ + "STATE_UNSPECIFIED", + "PENDING", + "SETUP_DONE", + "RUNNING", + "CANCEL_PENDING", + "CANCEL_STARTED", + "CANCELLED", + "DONE", + "ERROR", + "ATTEMPT_FAILURE" + ] + } + }, + "id": "JobStatus" + }, + "LifecycleConfig": { + "description": "Specifies the cluster auto delete related schedule configuration.", + "type": "object", + "properties": { + "autoDeleteTtl": { + "format": "google-duration", + "description": "Optional. The life duration of cluster, the cluster will be auto-deleted at the end of this duration.", + "type": "string" + }, + "autoDeleteTime": { + "format": "google-datetime", + "description": "Optional. The time when cluster will be auto-deleted.", + "type": "string" + }, + "idleDeleteTtl": { + "format": "google-duration", + "description": "Optional. The longest duration that cluster would keep alive while staying idle; passing this threshold will cause cluster to be auto-deleted.", + "type": "string" + } + }, + "id": "LifecycleConfig" + }, + "ManagedGroupConfig": { + "description": "Specifies the resources used to actively manage an instance group.", + "type": "object", + "properties": { + "instanceGroupManagerName": { + "description": "Output-only. The name of the Instance Group Manager for this group.", + "type": "string" + }, + "instanceTemplateName": { + "description": "Output-only. The name of the Instance Template used for the Managed Instance Group.", + "type": "string" + } + }, + "id": "ManagedGroupConfig" + }, + "ClusterOperationStatus": { + "description": "The status of the operation.", + "type": "object", + "properties": { + "innerState": { + "description": "Output-only. A message containing the detailed operation state.", + "type": "string" + }, + "stateStartTime": { + "format": "google-datetime", + "description": "Output-only. The time this state was entered.", + "type": "string" + }, + "details": { + "description": "Output-only.A message containing any operation metadata details.", + "type": "string" + }, + "state": { + "enumDescriptions": [ + "Unused.", + "The operation has been created.", + "The operation is running.", + "The operation is done; either cancelled or completed." + ], + "enum": [ + "UNKNOWN", + "PENDING", + "RUNNING", + "DONE" + ], + "description": "Output-only. A message containing the operation state.", + "type": "string" + } + }, + "id": "ClusterOperationStatus" + }, + "HadoopJob": { + "description": "A Cloud Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html).", + "type": "object", + "properties": { + "args": { + "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "fileUris": { + "description": "Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainClass": { + "description": "The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.", + "type": "string" + }, + "archiveUris": { + "description": "Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainJarFileUri": { + "description": "The HCFS URI of the jar file containing the main class. Examples: 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' 'hdfs:/tmp/test-samples/custom-wordcount.jar' 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'", + "type": "string" + }, + "jarFileUris": { + "description": "Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "$ref": "LoggingConfig", + "description": "Optional. The runtime log config for job execution." + }, + "properties": { + "description": "Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "id": "HadoopJob" + }, + "QueryList": { + "description": "A list of queries to run on a cluster.", + "type": "object", + "properties": { + "queries": { + "description": "Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:\n\"hiveJob\": {\n \"queryList\": {\n \"queries\": [\n \"query1\",\n \"query2\",\n \"query3;query4\",\n ]\n }\n}\n", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "QueryList" + }, + "YarnApplication": { + "description": "A YARN application created by a job. Application information is a subset of \u003ccode\u003eorg.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto\u003c/code\u003e.Beta Feature: This report is available for testing purposes only. It may be changed before final release.", + "type": "object", + "properties": { + "state": { + "enumDescriptions": [ + "Status is unspecified.", + "Status is NEW.", + "Status is NEW_SAVING.", + "Status is SUBMITTED.", + "Status is ACCEPTED.", + "Status is RUNNING.", + "Status is FINISHED.", + "Status is FAILED.", + "Status is KILLED." + ], + "enum": [ + "STATE_UNSPECIFIED", + "NEW", + "NEW_SAVING", + "SUBMITTED", + "ACCEPTED", + "RUNNING", + "FINISHED", + "FAILED", + "KILLED" + ], + "description": "Required. The application state.", + "type": "string" + }, + "name": { + "description": "Required. The application name.", + "type": "string" + }, + "trackingUrl": { + "description": "Optional. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.", + "type": "string" + }, + "progress": { + "format": "float", + "description": "Required. The numerical progress of the application, from 1 to 100.", + "type": "number" + } + }, + "id": "YarnApplication" + }, + "DiagnoseClusterRequest": { + "description": "A request to collect cluster diagnostic information.", + "type": "object", + "properties": {}, + "id": "DiagnoseClusterRequest" + }, + "DiskConfig": { + "description": "Specifies the config of disk options for a group of VM instances.", + "type": "object", + "properties": { + "bootDiskSizeGb": { + "format": "int32", + "description": "Optional. Size in GB of the boot disk (default is 500GB).", + "type": "integer" + }, + "numLocalSsds": { + "format": "int32", + "description": "Optional. Number of attached SSDs, from 0 to 4 (default is 0). If SSDs are not attached, the boot disk is used to store runtime logs and HDFS (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If one or more SSDs are attached, this runtime bulk data is spread across them, and the boot disk contains only basic config and installed binaries.", + "type": "integer" + } + }, + "id": "DiskConfig" + }, + "ClusterOperationMetadata": { + "description": "Metadata describing the operation.", + "type": "object", + "properties": { + "description": { + "description": "Output-only. Short description of operation.", + "type": "string" + }, + "warnings": { + "description": "Output-only. Errors encountered during operation execution.", + "items": { + "type": "string" + }, + "type": "array" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Output-only. Labels associated with the operation", + "type": "object" + }, + "status": { + "$ref": "ClusterOperationStatus", + "description": "Output-only. Current operation status." + }, + "statusHistory": { + "description": "Output-only. The previous operation status.", + "items": { + "$ref": "ClusterOperationStatus" + }, + "type": "array" + }, + "clusterName": { + "description": "Output-only. Name of the cluster for the operation.", + "type": "string" + }, + "clusterUuid": { + "description": "Output-only. Cluster UUID for the operation.", + "type": "string" + }, + "operationType": { + "description": "Output-only. The operation type.", + "type": "string" + } + }, + "id": "ClusterOperationMetadata" + }, + "HiveJob": { + "description": "A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN.", + "type": "object", + "properties": { + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scriptVariables": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=\"value\";).", + "type": "object" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.", + "type": "object" + }, + "continueOnFailure": { + "description": "Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.", + "type": "boolean" + }, + "queryFileUri": { + "description": "The HCFS URI of the script that contains Hive queries.", + "type": "string" + }, + "queryList": { + "$ref": "QueryList", + "description": "A list of queries." + } + }, + "id": "HiveJob" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "DiagnoseClusterResults": { + "description": "The location of diagnostic output.", + "type": "object", + "properties": { + "outputUri": { + "description": "Output-only. The Google Cloud Storage URI of the diagnostic output. The output report is a plain text file with a summary of collected diagnostics.", + "type": "string" + } + }, + "id": "DiagnoseClusterResults" + }, + "ClusterConfig": { + "description": "The cluster config.", + "type": "object", + "properties": { + "lifecycleConfig": { + "description": "Optional. The config setting for auto delete cluster schedule.", + "$ref": "LifecycleConfig" + }, + "initializationActions": { + "description": "Optional. Commands to execute on each node after config is completed. By default, executables are run on master and all worker nodes. You can test a node's \u003ccode\u003erole\u003c/code\u003e metadata to run an executable on a master or worker node, as shown below using curl (you can also use wget):\nROLE=$(curl -H Metadata-Flavor:Google http://metadata/computeMetadata/v1beta2/instance/attributes/dataproc-role)\nif [[ \"${ROLE}\" == 'Master' ]]; then\n ... master specific actions ...\nelse\n ... worker specific actions ...\nfi\n", + "items": { + "$ref": "NodeInitializationAction" + }, + "type": "array" + }, + "configBucket": { + "description": "Optional. A Google Cloud Storage staging bucket used for sharing generated SSH keys and config. If you do not specify a staging bucket, Cloud Dataproc will determine an appropriate Cloud Storage location (US, ASIA, or EU) for your cluster's staging bucket according to the Google Compute Engine zone where your cluster is deployed, and then it will create and manage this project-level, per-location bucket for you.", + "type": "string" + }, + "workerConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for worker instances in a cluster." + }, + "gceClusterConfig": { + "description": "Required. The shared Google Compute Engine config settings for all instances in a cluster.", + "$ref": "GceClusterConfig" + }, + "softwareConfig": { + "$ref": "SoftwareConfig", + "description": "Optional. The config settings for software inside the cluster." + }, + "masterConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for the master instance in a cluster." + }, + "secondaryWorkerConfig": { + "$ref": "InstanceGroupConfig", + "description": "Optional. The Google Compute Engine config settings for additional worker instances in a cluster." + } + }, + "id": "ClusterConfig" + }, + "PySparkJob": { + "description": "A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN.", + "type": "object", + "properties": { + "jarFileUris": { + "description": "Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "loggingConfig": { + "description": "Optional. The runtime log config for job execution.", + "$ref": "LoggingConfig" + }, + "properties": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.", + "type": "object" + }, + "args": { + "description": "Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.", + "items": { + "type": "string" + }, + "type": "array" + }, + "fileUris": { + "description": "Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pythonFileUris": { + "description": "Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mainPythonFileUri": { + "description": "Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.", + "type": "string" + }, + "archiveUris": { + "description": "Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "PySparkJob" + }, + "GceClusterConfig": { + "description": "Common config settings for resources of Google Compute Engine cluster instances, applicable to all instances in the cluster.", + "type": "object", + "properties": { + "networkUri": { + "description": "Optional. The Google Compute Engine network to be used for machine communications. Cannot be specified with subnetwork_uri. If neither network_uri nor subnetwork_uri is specified, the \"default\" network of the project is used, if it exists. Cannot be a \"Custom Subnet Network\" (see Using Subnetworks for more information).A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/global/default\nprojects/[project_id]/regions/global/default\ndefault", + "type": "string" + }, + "zoneUri": { + "description": "Optional. The zone where the Google Compute Engine cluster will be located. On a create request, it is required in the \"global\" region. If omitted in a non-global Cloud Dataproc region, the service will pick a zone in the corresponding Compute Engine region. On a get request, zone will always be present.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/zones/[zone]\nprojects/[project_id]/zones/[zone]\nus-central1-f", + "type": "string" + }, + "internalIpOnly": { + "description": "Optional. If true, all instances in the cluster will only have internal IP addresses. By default, clusters are not restricted to internal IP addresses, and will have ephemeral external IP addresses assigned to each instance. This internal_ip_only restriction can only be enabled for subnetwork enabled networks, and all off-cluster dependencies must be configured to be accessible without external IP addresses.", + "type": "boolean" + }, + "metadata": { + "additionalProperties": { + "type": "string" + }, + "description": "The Google Compute Engine metadata entries to add to all instances (see Project and instance metadata (https://cloud.google.com/compute/docs/storing-retrieving-metadata#project_and_instance_metadata)).", + "type": "object" + }, + "serviceAccountScopes": { + "description": "Optional. The URIs of service account scopes to be included in Google Compute Engine instances. The following base set of scopes is always included:\nhttps://www.googleapis.com/auth/cloud.useraccounts.readonly\nhttps://www.googleapis.com/auth/devstorage.read_write\nhttps://www.googleapis.com/auth/logging.writeIf no scopes are specified, the following defaults are also provided:\nhttps://www.googleapis.com/auth/bigquery\nhttps://www.googleapis.com/auth/bigtable.admin.table\nhttps://www.googleapis.com/auth/bigtable.data\nhttps://www.googleapis.com/auth/devstorage.full_control", + "items": { + "type": "string" + }, + "type": "array" + }, + "tags": { + "description": "The Google Compute Engine tags to add to all instances (see Tagging instances).", + "items": { + "type": "string" + }, + "type": "array" + }, + "serviceAccount": { + "description": "Optional. The service account of the instances. Defaults to the default Google Compute Engine service account. Custom service accounts need permissions equivalent to the folloing IAM roles:\nroles/logging.logWriter\nroles/storage.objectAdmin(see https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: [account_id]@[project_id].iam.gserviceaccount.com", + "type": "string" + }, + "subnetworkUri": { + "description": "Optional. The Google Compute Engine subnetwork to be used for machine communications. Cannot be specified with network_uri.A full URL, partial URI, or short name are valid. Examples:\nhttps://www.googleapis.com/compute/v1/projects/[project_id]/regions/us-east1/sub0\nprojects/[project_id]/regions/us-east1/sub0\nsub0", + "type": "string" + } + }, + "id": "GceClusterConfig" + } + }, + "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "version": "v1beta2", + "baseUrl": "https://dataproc.googleapis.com/", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "kind": "discovery#restDescription", + "description": "Manages Hadoop-based clusters and jobs on Google Cloud Platform.", + "servicePath": "", + "rootUrl": "https://dataproc.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "dataproc", + "batchPath": "batch", + "revision": "20170822", + "documentationLink": "https://cloud.google.com/dataproc/", + "id": "dataproc:v1beta2" +} diff --git a/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-gen.go b/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-gen.go new file mode 100644 index 0000000..78b4634 --- /dev/null +++ b/vendor/google.golang.org/api/dataproc/v1beta2/dataproc-gen.go @@ -0,0 +1,4642 @@ +// Package dataproc provides access to the Google Cloud Dataproc API. +// +// See https://cloud.google.com/dataproc/ +// +// Usage example: +// +// import "google.golang.org/api/dataproc/v1beta2" +// ... +// dataprocService, err := dataproc.New(oauthHttpClient) +package dataproc // import "google.golang.org/api/dataproc/v1beta2" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "dataproc:v1beta2" +const apiName = "dataproc" +const apiVersion = "v1beta2" +const basePath = "https://dataproc.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // View and manage your data across Google Cloud Platform services + CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Projects = NewProjectsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Projects *ProjectsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewProjectsService(s *Service) *ProjectsService { + rs := &ProjectsService{s: s} + rs.Regions = NewProjectsRegionsService(s) + return rs +} + +type ProjectsService struct { + s *Service + + Regions *ProjectsRegionsService +} + +func NewProjectsRegionsService(s *Service) *ProjectsRegionsService { + rs := &ProjectsRegionsService{s: s} + rs.Clusters = NewProjectsRegionsClustersService(s) + rs.Jobs = NewProjectsRegionsJobsService(s) + rs.Operations = NewProjectsRegionsOperationsService(s) + return rs +} + +type ProjectsRegionsService struct { + s *Service + + Clusters *ProjectsRegionsClustersService + + Jobs *ProjectsRegionsJobsService + + Operations *ProjectsRegionsOperationsService +} + +func NewProjectsRegionsClustersService(s *Service) *ProjectsRegionsClustersService { + rs := &ProjectsRegionsClustersService{s: s} + return rs +} + +type ProjectsRegionsClustersService struct { + s *Service +} + +func NewProjectsRegionsJobsService(s *Service) *ProjectsRegionsJobsService { + rs := &ProjectsRegionsJobsService{s: s} + return rs +} + +type ProjectsRegionsJobsService struct { + s *Service +} + +func NewProjectsRegionsOperationsService(s *Service) *ProjectsRegionsOperationsService { + rs := &ProjectsRegionsOperationsService{s: s} + return rs +} + +type ProjectsRegionsOperationsService struct { + s *Service +} + +// AcceleratorConfig: Specifies the type and number of accelerator cards +// attached to the instances of an instance group (see GPUs on Compute +// Engine). +type AcceleratorConfig struct { + // AcceleratorCount: The number of the accelerator cards of this type + // exposed to this instance. + AcceleratorCount int64 `json:"acceleratorCount,omitempty"` + + // AcceleratorTypeUri: Full URL, partial URI, or short name of the + // accelerator type resource to expose to this instance. See Google + // Compute Engine AcceleratorTypes( + // /compute/docs/reference/beta/acceleratorTypes)Examples * + // https://www.googleapis.com/compute/beta/projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * projects/[project_id]/zones/us-east1-a/acceleratorTypes/nvidia-tesla-k80 * + // nvidia-tesla-k80 + AcceleratorTypeUri string `json:"acceleratorTypeUri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AcceleratorCount") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AcceleratorCount") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AcceleratorConfig) MarshalJSON() ([]byte, error) { + type noMethod AcceleratorConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CancelJobRequest: A request to cancel a job. +type CancelJobRequest struct { +} + +// Cluster: Describes the identifying information, config, and status of +// a cluster of Google Compute Engine instances. +type Cluster struct { + // ClusterName: Required. The cluster name. Cluster names within a + // project must be unique. Names of deleted clusters can be reused. + ClusterName string `json:"clusterName,omitempty"` + + // ClusterUuid: Output-only. A cluster UUID (Unique Universal + // Identifier). Cloud Dataproc generates this value when it creates the + // cluster. + ClusterUuid string `json:"clusterUuid,omitempty"` + + // Config: Required. The cluster config. Note that Cloud Dataproc may + // set default values, and values may change when clusters are updated. + Config *ClusterConfig `json:"config,omitempty"` + + // Labels: Optional. The labels to associate with this cluster. Label + // keys must contain 1 to 63 characters, and must conform to RFC 1035 + // (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, + // but, if present, must contain 1 to 63 characters, and must conform to + // RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 + // labels can be associated with a cluster. + Labels map[string]string `json:"labels,omitempty"` + + // Metrics: Contains cluster daemon metrics such as HDFS and YARN + // stats.Beta Feature: This report is available for testing purposes + // only. It may be changed before final release. + Metrics *ClusterMetrics `json:"metrics,omitempty"` + + // ProjectId: Required. The Google Cloud Platform project ID that the + // cluster belongs to. + ProjectId string `json:"projectId,omitempty"` + + // Status: Output-only. Cluster status. + Status *ClusterStatus `json:"status,omitempty"` + + // StatusHistory: Output-only. The previous cluster status. + StatusHistory []*ClusterStatus `json:"statusHistory,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "ClusterName") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Cluster) MarshalJSON() ([]byte, error) { + type noMethod Cluster + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterConfig: The cluster config. +type ClusterConfig struct { + // ConfigBucket: Optional. A Google Cloud Storage staging bucket used + // for sharing generated SSH keys and config. If you do not specify a + // staging bucket, Cloud Dataproc will determine an appropriate Cloud + // Storage location (US, ASIA, or EU) for your cluster's staging bucket + // according to the Google Compute Engine zone where your cluster is + // deployed, and then it will create and manage this project-level, + // per-location bucket for you. + ConfigBucket string `json:"configBucket,omitempty"` + + // GceClusterConfig: Required. The shared Google Compute Engine config + // settings for all instances in a cluster. + GceClusterConfig *GceClusterConfig `json:"gceClusterConfig,omitempty"` + + // InitializationActions: Optional. Commands to execute on each node + // after config is completed. By default, executables are run on master + // and all worker nodes. You can test a node's role + // metadata to run an executable on a master or worker node, as shown + // below using curl (you can also use wget): + // ROLE=$(curl -H Metadata-Flavor:Google + // http://metadata/computeMetadata/v1beta2/instance/attributes/dataproc-role) + // if [[ "${ROLE}" == 'Master' ]]; then + // ... master specific actions ... + // else + // ... worker specific actions ... + // fi + // + InitializationActions []*NodeInitializationAction `json:"initializationActions,omitempty"` + + // LifecycleConfig: Optional. The config setting for auto delete cluster + // schedule. + LifecycleConfig *LifecycleConfig `json:"lifecycleConfig,omitempty"` + + // MasterConfig: Optional. The Google Compute Engine config settings for + // the master instance in a cluster. + MasterConfig *InstanceGroupConfig `json:"masterConfig,omitempty"` + + // SecondaryWorkerConfig: Optional. The Google Compute Engine config + // settings for additional worker instances in a cluster. + SecondaryWorkerConfig *InstanceGroupConfig `json:"secondaryWorkerConfig,omitempty"` + + // SoftwareConfig: Optional. The config settings for software inside the + // cluster. + SoftwareConfig *SoftwareConfig `json:"softwareConfig,omitempty"` + + // WorkerConfig: Optional. The Google Compute Engine config settings for + // worker instances in a cluster. + WorkerConfig *InstanceGroupConfig `json:"workerConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConfigBucket") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConfigBucket") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterConfig) MarshalJSON() ([]byte, error) { + type noMethod ClusterConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterMetrics: Contains cluster daemon metrics, such as HDFS and +// YARN stats.Beta Feature: This report is available for testing +// purposes only. It may be changed before final release. +type ClusterMetrics struct { + // HdfsMetrics: The HDFS metrics. + HdfsMetrics map[string]string `json:"hdfsMetrics,omitempty"` + + // YarnMetrics: The YARN metrics. + YarnMetrics map[string]string `json:"yarnMetrics,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HdfsMetrics") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HdfsMetrics") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterMetrics) MarshalJSON() ([]byte, error) { + type noMethod ClusterMetrics + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterOperationMetadata: Metadata describing the operation. +type ClusterOperationMetadata struct { + // ClusterName: Output-only. Name of the cluster for the operation. + ClusterName string `json:"clusterName,omitempty"` + + // ClusterUuid: Output-only. Cluster UUID for the operation. + ClusterUuid string `json:"clusterUuid,omitempty"` + + // Description: Output-only. Short description of operation. + Description string `json:"description,omitempty"` + + // Labels: Output-only. Labels associated with the operation + Labels map[string]string `json:"labels,omitempty"` + + // OperationType: Output-only. The operation type. + OperationType string `json:"operationType,omitempty"` + + // Status: Output-only. Current operation status. + Status *ClusterOperationStatus `json:"status,omitempty"` + + // StatusHistory: Output-only. The previous operation status. + StatusHistory []*ClusterOperationStatus `json:"statusHistory,omitempty"` + + // Warnings: Output-only. Errors encountered during operation execution. + Warnings []string `json:"warnings,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterName") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterOperationMetadata) MarshalJSON() ([]byte, error) { + type noMethod ClusterOperationMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterOperationStatus: The status of the operation. +type ClusterOperationStatus struct { + // Details: Output-only.A message containing any operation metadata + // details. + Details string `json:"details,omitempty"` + + // InnerState: Output-only. A message containing the detailed operation + // state. + InnerState string `json:"innerState,omitempty"` + + // State: Output-only. A message containing the operation state. + // + // Possible values: + // "UNKNOWN" - Unused. + // "PENDING" - The operation has been created. + // "RUNNING" - The operation is running. + // "DONE" - The operation is done; either cancelled or completed. + State string `json:"state,omitempty"` + + // StateStartTime: Output-only. The time this state was entered. + StateStartTime string `json:"stateStartTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Details") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Details") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterOperationStatus) MarshalJSON() ([]byte, error) { + type noMethod ClusterOperationStatus + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClusterStatus: The status of a cluster and its instances. +type ClusterStatus struct { + // Detail: Output-only. Optional details of cluster's state. + Detail string `json:"detail,omitempty"` + + // State: Output-only. The cluster's state. + // + // Possible values: + // "UNKNOWN" - The cluster state is unknown. + // "CREATING" - The cluster is being created and set up. It is not + // ready for use. + // "RUNNING" - The cluster is currently running and healthy. It is + // ready for use. + // "ERROR" - The cluster encountered an error. It is not ready for + // use. + // "DELETING" - The cluster is being deleted. It cannot be used. + // "UPDATING" - The cluster is being updated. It continues to accept + // and process jobs. + State string `json:"state,omitempty"` + + // StateStartTime: Output-only. Time when this state was entered. + StateStartTime string `json:"stateStartTime,omitempty"` + + // Substate: Output-only. Additional state information that includes + // status reported by the agent. + // + // Possible values: + // "UNSPECIFIED" + // "UNHEALTHY" - The cluster is known to be in an unhealthy state (for + // example, critical daemons are not running or HDFS capacity is + // exhausted).Applies to RUNNING state. + // "STALE_STATUS" - The agent-reported status is out of date (may + // occur if Cloud Dataproc loses communication with Agent).Applies to + // RUNNING state. + Substate string `json:"substate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Detail") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Detail") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClusterStatus) MarshalJSON() ([]byte, error) { + type noMethod ClusterStatus + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DiagnoseClusterRequest: A request to collect cluster diagnostic +// information. +type DiagnoseClusterRequest struct { +} + +// DiagnoseClusterResults: The location of diagnostic output. +type DiagnoseClusterResults struct { + // OutputUri: Output-only. The Google Cloud Storage URI of the + // diagnostic output. The output report is a plain text file with a + // summary of collected diagnostics. + OutputUri string `json:"outputUri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OutputUri") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OutputUri") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DiagnoseClusterResults) MarshalJSON() ([]byte, error) { + type noMethod DiagnoseClusterResults + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DiskConfig: Specifies the config of disk options for a group of VM +// instances. +type DiskConfig struct { + // BootDiskSizeGb: Optional. Size in GB of the boot disk (default is + // 500GB). + BootDiskSizeGb int64 `json:"bootDiskSizeGb,omitempty"` + + // NumLocalSsds: Optional. Number of attached SSDs, from 0 to 4 (default + // is 0). If SSDs are not attached, the boot disk is used to store + // runtime logs and HDFS + // (https://hadoop.apache.org/docs/r1.2.1/hdfs_user_guide.html) data. If + // one or more SSDs are attached, this runtime bulk data is spread + // across them, and the boot disk contains only basic config and + // installed binaries. + NumLocalSsds int64 `json:"numLocalSsds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BootDiskSizeGb") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BootDiskSizeGb") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DiskConfig) MarshalJSON() ([]byte, error) { + type noMethod DiskConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated empty messages in your APIs. A typical example is to use +// it as the request or the response type of an API method. For +// instance: +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// The JSON representation for Empty is empty JSON object {}. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// GceClusterConfig: Common config settings for resources of Google +// Compute Engine cluster instances, applicable to all instances in the +// cluster. +type GceClusterConfig struct { + // InternalIpOnly: Optional. If true, all instances in the cluster will + // only have internal IP addresses. By default, clusters are not + // restricted to internal IP addresses, and will have ephemeral external + // IP addresses assigned to each instance. This internal_ip_only + // restriction can only be enabled for subnetwork enabled networks, and + // all off-cluster dependencies must be configured to be accessible + // without external IP addresses. + InternalIpOnly bool `json:"internalIpOnly,omitempty"` + + // Metadata: The Google Compute Engine metadata entries to add to all + // instances (see Project and instance metadata + // (https://cloud.google.com/compute/docs/storing-retrieving-metadata#pro + // ject_and_instance_metadata)). + Metadata map[string]string `json:"metadata,omitempty"` + + // NetworkUri: Optional. The Google Compute Engine network to be used + // for machine communications. Cannot be specified with subnetwork_uri. + // If neither network_uri nor subnetwork_uri is specified, the "default" + // network of the project is used, if it exists. Cannot be a "Custom + // Subnet Network" (see Using Subnetworks for more information).A full + // URL, partial URI, or short name are valid. + // Examples: + // https://www.googleapis.com/compute/v1/projects/[project_id]/ + // regions/global/default + // projects/[project_id]/regions/global/default + // de + // fault + NetworkUri string `json:"networkUri,omitempty"` + + // ServiceAccount: Optional. The service account of the instances. + // Defaults to the default Google Compute Engine service account. Custom + // service accounts need permissions equivalent to the folloing IAM + // roles: + // roles/logging.logWriter + // roles/storage.objectAdmin(see + // https://cloud.google.com/compute/docs/access/service-accounts#custom_service_accounts for more information). Example: + // [account_id]@[project_id].iam.gserviceaccount.com + ServiceAccount string `json:"serviceAccount,omitempty"` + + // ServiceAccountScopes: Optional. The URIs of service account scopes to + // be included in Google Compute Engine instances. The following base + // set of scopes is always + // included: + // https://www.googleapis.com/auth/cloud.useraccounts.readonly + // + // https://www.googleapis.com/auth/devstorage.read_write + // https://www.goog + // leapis.com/auth/logging.writeIf no scopes are specified, the + // following defaults are also + // provided: + // https://www.googleapis.com/auth/bigquery + // https://www.googlea + // pis.com/auth/bigtable.admin.table + // https://www.googleapis.com/auth/bigt + // able.data + // https://www.googleapis.com/auth/devstorage.full_control + ServiceAccountScopes []string `json:"serviceAccountScopes,omitempty"` + + // SubnetworkUri: Optional. The Google Compute Engine subnetwork to be + // used for machine communications. Cannot be specified with + // network_uri.A full URL, partial URI, or short name are valid. + // Examples: + // https://www.googleapis.com/compute/v1/projects/[project_id]/ + // regions/us-east1/sub0 + // projects/[project_id]/regions/us-east1/sub0 + // sub0 + SubnetworkUri string `json:"subnetworkUri,omitempty"` + + // Tags: The Google Compute Engine tags to add to all instances (see + // Tagging instances). + Tags []string `json:"tags,omitempty"` + + // ZoneUri: Optional. The zone where the Google Compute Engine cluster + // will be located. On a create request, it is required in the "global" + // region. If omitted in a non-global Cloud Dataproc region, the service + // will pick a zone in the corresponding Compute Engine region. On a get + // request, zone will always be present.A full URL, partial URI, or + // short name are valid. + // Examples: + // https://www.googleapis.com/compute/v1/projects/[project_id]/ + // zones/[zone] + // projects/[project_id]/zones/[zone] + // us-central1-f + ZoneUri string `json:"zoneUri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "InternalIpOnly") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InternalIpOnly") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GceClusterConfig) MarshalJSON() ([]byte, error) { + type noMethod GceClusterConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HadoopJob: A Cloud Dataproc job for running Apache Hadoop MapReduce +// (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop +// -mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop +// YARN +// (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YA +// RN.html). +type HadoopJob struct { + // ArchiveUris: Optional. HCFS URIs of archives to be extracted in the + // working directory of Hadoop drivers and tasks. Supported file types: + // .jar, .tar, .tar.gz, .tgz, or .zip. + ArchiveUris []string `json:"archiveUris,omitempty"` + + // Args: Optional. The arguments to pass to the driver. Do not include + // arguments, such as -libjars or -Dfoo=bar, that can be set as job + // properties, since a collision may occur that causes an incorrect job + // submission. + Args []string `json:"args,omitempty"` + + // FileUris: Optional. HCFS (Hadoop Compatible Filesystem) URIs of files + // to be copied to the working directory of Hadoop drivers and + // distributed tasks. Useful for naively parallel tasks. + FileUris []string `json:"fileUris,omitempty"` + + // JarFileUris: Optional. Jar file URIs to add to the CLASSPATHs of the + // Hadoop driver and tasks. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // LoggingConfig: Optional. The runtime log config for job execution. + LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"` + + // MainClass: The name of the driver's main class. The jar file + // containing the class must be in the default CLASSPATH or specified in + // jar_file_uris. + MainClass string `json:"mainClass,omitempty"` + + // MainJarFileUri: The HCFS URI of the jar file containing the main + // class. Examples: + // 'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar' + // 'hdfs:/tmp/test-samples/custom-wordcount.jar' + // 'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar' + MainJarFileUri string `json:"mainJarFileUri,omitempty"` + + // Properties: Optional. A mapping of property names to values, used to + // configure Hadoop. Properties that conflict with values set by the + // Cloud Dataproc API may be overwritten. Can include properties set in + // /etc/hadoop/conf/*-site and classes in user code. + Properties map[string]string `json:"properties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArchiveUris") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArchiveUris") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HadoopJob) MarshalJSON() ([]byte, error) { + type noMethod HadoopJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HiveJob: A Cloud Dataproc job for running Apache Hive +// (https://hive.apache.org/) queries on YARN. +type HiveJob struct { + // ContinueOnFailure: Optional. Whether to continue executing queries if + // a query fails. The default value is false. Setting to true can be + // useful when executing independent parallel queries. + ContinueOnFailure bool `json:"continueOnFailure,omitempty"` + + // JarFileUris: Optional. HCFS URIs of jar files to add to the CLASSPATH + // of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive + // SerDes and UDFs. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // Properties: Optional. A mapping of property names and values, used to + // configure Hive. Properties that conflict with values set by the Cloud + // Dataproc API may be overwritten. Can include properties set in + // /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and + // classes in user code. + Properties map[string]string `json:"properties,omitempty"` + + // QueryFileUri: The HCFS URI of the script that contains Hive queries. + QueryFileUri string `json:"queryFileUri,omitempty"` + + // QueryList: A list of queries. + QueryList *QueryList `json:"queryList,omitempty"` + + // ScriptVariables: Optional. Mapping of query variable names to values + // (equivalent to the Hive command: SET name="value";). + ScriptVariables map[string]string `json:"scriptVariables,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContinueOnFailure") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContinueOnFailure") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HiveJob) MarshalJSON() ([]byte, error) { + type noMethod HiveJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// InstanceGroupConfig: Optional. The config settings for Google Compute +// Engine resources in an instance group, such as a master or worker +// group. +type InstanceGroupConfig struct { + // Accelerators: Optional. The Google Compute Engine accelerator + // configuration for these instances.Beta Feature: This feature is still + // under development. It may be changed before final release. + Accelerators []*AcceleratorConfig `json:"accelerators,omitempty"` + + // DiskConfig: Optional. Disk option config settings. + DiskConfig *DiskConfig `json:"diskConfig,omitempty"` + + // ImageUri: Output-only. The Google Compute Engine image resource used + // for cluster instances. Inferred from SoftwareConfig.image_version. + ImageUri string `json:"imageUri,omitempty"` + + // InstanceNames: Optional. The list of instance names. Cloud Dataproc + // derives the names from cluster_name, num_instances, and the instance + // group if not set by user (recommended practice is to let Cloud + // Dataproc derive the name). + InstanceNames []string `json:"instanceNames,omitempty"` + + // IsPreemptible: Optional. Specifies that this instance group contains + // preemptible instances. + IsPreemptible bool `json:"isPreemptible,omitempty"` + + // MachineTypeUri: Optional. The Google Compute Engine machine type used + // for cluster instances.A full URL, partial URI, or short name are + // valid. + // Examples: + // https://www.googleapis.com/compute/v1/projects/[project_id]/ + // zones/us-east1-a/machineTypes/n1-standard-2 + // projects/[project_id]/zone + // s/us-east1-a/machineTypes/n1-standard-2 + // n1-standard-2 + MachineTypeUri string `json:"machineTypeUri,omitempty"` + + // ManagedGroupConfig: Output-only. The config for Google Compute Engine + // Instance Group Manager that manages this group. This is only used for + // preemptible instance groups. + ManagedGroupConfig *ManagedGroupConfig `json:"managedGroupConfig,omitempty"` + + // NumInstances: Optional. The number of VM instances in the instance + // group. For master instance groups, must be set to 1. + NumInstances int64 `json:"numInstances,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Accelerators") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Accelerators") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *InstanceGroupConfig) MarshalJSON() ([]byte, error) { + type noMethod InstanceGroupConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Job: A Cloud Dataproc job resource. +type Job struct { + // DriverControlFilesUri: Output-only. If present, the location of + // miscellaneous control files which may be used as part of job setup + // and handling. If not present, control files may be placed in the same + // location as driver_output_uri. + DriverControlFilesUri string `json:"driverControlFilesUri,omitempty"` + + // DriverOutputResourceUri: Output-only. A URI pointing to the location + // of the stdout of the job's driver program. + DriverOutputResourceUri string `json:"driverOutputResourceUri,omitempty"` + + // HadoopJob: Job is a Hadoop job. + HadoopJob *HadoopJob `json:"hadoopJob,omitempty"` + + // HiveJob: Job is a Hive job. + HiveJob *HiveJob `json:"hiveJob,omitempty"` + + // Labels: Optional. The labels to associate with this job. Label keys + // must contain 1 to 63 characters, and must conform to RFC 1035 + // (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, + // but, if present, must contain 1 to 63 characters, and must conform to + // RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 + // labels can be associated with a job. + Labels map[string]string `json:"labels,omitempty"` + + // PigJob: Job is a Pig job. + PigJob *PigJob `json:"pigJob,omitempty"` + + // Placement: Required. Job information, including how, when, and where + // to run the job. + Placement *JobPlacement `json:"placement,omitempty"` + + // PysparkJob: Job is a Pyspark job. + PysparkJob *PySparkJob `json:"pysparkJob,omitempty"` + + // Reference: Optional. The fully qualified reference to the job, which + // can be used to obtain the equivalent REST path of the job resource. + // If this property is not specified when a job is created, the server + // generates a job_id. + Reference *JobReference `json:"reference,omitempty"` + + // Scheduling: Optional. Job scheduling configuration. + Scheduling *JobScheduling `json:"scheduling,omitempty"` + + // SparkJob: Job is a Spark job. + SparkJob *SparkJob `json:"sparkJob,omitempty"` + + // SparkSqlJob: Job is a SparkSql job. + SparkSqlJob *SparkSqlJob `json:"sparkSqlJob,omitempty"` + + // Status: Output-only. The job status. Additional application-specific + // status information may be contained in the type_job and + // yarn_applications fields. + Status *JobStatus `json:"status,omitempty"` + + // StatusHistory: Output-only. The previous job status. + StatusHistory []*JobStatus `json:"statusHistory,omitempty"` + + // YarnApplications: Output-only. The collection of YARN applications + // spun up by this job.Beta Feature: This report is available for + // testing purposes only. It may be changed before final release. + YarnApplications []*YarnApplication `json:"yarnApplications,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "DriverControlFilesUri") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DriverControlFilesUri") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *Job) MarshalJSON() ([]byte, error) { + type noMethod Job + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// JobPlacement: Cloud Dataproc job config. +type JobPlacement struct { + // ClusterName: Required. The name of the cluster where the job will be + // submitted. + ClusterName string `json:"clusterName,omitempty"` + + // ClusterUuid: Output-only. A cluster UUID generated by the Cloud + // Dataproc service when the job is submitted. + ClusterUuid string `json:"clusterUuid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterName") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *JobPlacement) MarshalJSON() ([]byte, error) { + type noMethod JobPlacement + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// JobReference: Encapsulates the full scoping used to reference a job. +type JobReference struct { + // JobId: Optional. The job ID, which must be unique within the project. + // The job ID is generated by the server upon job submission or provided + // by the user as a means to perform retries without creating duplicate + // jobs. The ID must contain only letters (a-z, A-Z), numbers (0-9), + // underscores (_), or hyphens (-). The maximum length is 100 + // characters. + JobId string `json:"jobId,omitempty"` + + // ProjectId: Required. The ID of the Google Cloud Platform project that + // the job belongs to. + ProjectId string `json:"projectId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "JobId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "JobId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *JobReference) MarshalJSON() ([]byte, error) { + type noMethod JobReference + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// JobScheduling: Job scheduling options.Beta Feature: These options are +// available for testing purposes only. They may be changed before final +// release. +type JobScheduling struct { + // MaxFailuresPerHour: Optional. Maximum number of times per hour a + // driver may be restarted as a result of driver terminating with + // non-zero code before job is reported failed.A job may be reported as + // thrashing if driver exits with non-zero code 4 times within 10 minute + // window.Maximum value is 10. + MaxFailuresPerHour int64 `json:"maxFailuresPerHour,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MaxFailuresPerHour") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MaxFailuresPerHour") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *JobScheduling) MarshalJSON() ([]byte, error) { + type noMethod JobScheduling + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// JobStatus: Cloud Dataproc job status. +type JobStatus struct { + // Details: Output-only. Optional job state details, such as an error + // description if the state is ERROR. + Details string `json:"details,omitempty"` + + // State: Output-only. A state message specifying the overall job state. + // + // Possible values: + // "STATE_UNSPECIFIED" - The job state is unknown. + // "PENDING" - The job is pending; it has been submitted, but is not + // yet running. + // "SETUP_DONE" - Job has been received by the service and completed + // initial setup; it will soon be submitted to the cluster. + // "RUNNING" - The job is running on the cluster. + // "CANCEL_PENDING" - A CancelJob request has been received, but is + // pending. + // "CANCEL_STARTED" - Transient in-flight resources have been + // canceled, and the request to cancel the running job has been issued + // to the cluster. + // "CANCELLED" - The job cancellation was successful. + // "DONE" - The job has completed successfully. + // "ERROR" - The job has completed, but encountered an error. + // "ATTEMPT_FAILURE" - Job attempt has failed. The detail field + // contains failure details for this attempt.Applies to restartable jobs + // only. + State string `json:"state,omitempty"` + + // StateStartTime: Output-only. The time when this state was entered. + StateStartTime string `json:"stateStartTime,omitempty"` + + // Substate: Output-only. Additional state information, which includes + // status reported by the agent. + // + // Possible values: + // "UNSPECIFIED" + // "SUBMITTED" - The Job is submitted to the agent.Applies to RUNNING + // state. + // "QUEUED" - The Job has been received and is awaiting execution (it + // may be waiting for a condition to be met). See the "details" field + // for the reason for the delay.Applies to RUNNING state. + // "STALE_STATUS" - The agent-reported status is out of date, which + // may be caused by a loss of communication between the agent and Cloud + // Dataproc. If the agent does not send a timely update, the job will + // fail.Applies to RUNNING state. + Substate string `json:"substate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Details") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Details") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *JobStatus) MarshalJSON() ([]byte, error) { + type noMethod JobStatus + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// LifecycleConfig: Specifies the cluster auto delete related schedule +// configuration. +type LifecycleConfig struct { + // AutoDeleteTime: Optional. The time when cluster will be auto-deleted. + AutoDeleteTime string `json:"autoDeleteTime,omitempty"` + + // AutoDeleteTtl: Optional. The life duration of cluster, the cluster + // will be auto-deleted at the end of this duration. + AutoDeleteTtl string `json:"autoDeleteTtl,omitempty"` + + // IdleDeleteTtl: Optional. The longest duration that cluster would keep + // alive while staying idle; passing this threshold will cause cluster + // to be auto-deleted. + IdleDeleteTtl string `json:"idleDeleteTtl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AutoDeleteTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AutoDeleteTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *LifecycleConfig) MarshalJSON() ([]byte, error) { + type noMethod LifecycleConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListClustersResponse: The list of all clusters in a project. +type ListClustersResponse struct { + // Clusters: Output-only. The clusters in the project. + Clusters []*Cluster `json:"clusters,omitempty"` + + // NextPageToken: Output-only. This token is included in the response if + // there are more results to fetch. To fetch additional results, provide + // this value as the page_token in a subsequent + // ListClustersRequest. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Clusters") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Clusters") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListClustersResponse) MarshalJSON() ([]byte, error) { + type noMethod ListClustersResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListJobsResponse: A list of jobs in a project. +type ListJobsResponse struct { + // Jobs: Output-only. Jobs list. + Jobs []*Job `json:"jobs,omitempty"` + + // NextPageToken: Optional. This token is included in the response if + // there are more results to fetch. To fetch additional results, provide + // this value as the page_token in a subsequent + // ListJobsRequest. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Jobs") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Jobs") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListJobsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListJobsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListOperationsResponse: The response message for +// Operations.ListOperations. +type ListOperationsResponse struct { + // NextPageToken: The standard List next-page token. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Operations: A list of operations that matches the specified filter in + // the request. + Operations []*Operation `json:"operations,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListOperationsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// LoggingConfig: The runtime logging config of the job. +type LoggingConfig struct { + // DriverLogLevels: The per-package log levels for the driver. This may + // include "root" package name to configure rootLogger. Examples: + // 'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG' + DriverLogLevels map[string]string `json:"driverLogLevels,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DriverLogLevels") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DriverLogLevels") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *LoggingConfig) MarshalJSON() ([]byte, error) { + type noMethod LoggingConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ManagedGroupConfig: Specifies the resources used to actively manage +// an instance group. +type ManagedGroupConfig struct { + // InstanceGroupManagerName: Output-only. The name of the Instance Group + // Manager for this group. + InstanceGroupManagerName string `json:"instanceGroupManagerName,omitempty"` + + // InstanceTemplateName: Output-only. The name of the Instance Template + // used for the Managed Instance Group. + InstanceTemplateName string `json:"instanceTemplateName,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "InstanceGroupManagerName") to unconditionally include in API + // requests. By default, fields with empty values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InstanceGroupManagerName") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ManagedGroupConfig) MarshalJSON() ([]byte, error) { + type noMethod ManagedGroupConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// NodeInitializationAction: Specifies an executable to run on a fully +// configured node and a timeout period for executable completion. +type NodeInitializationAction struct { + // ExecutableFile: Required. Google Cloud Storage URI of executable + // file. + ExecutableFile string `json:"executableFile,omitempty"` + + // ExecutionTimeout: Optional. Amount of time executable has to + // complete. Default is 10 minutes. Cluster creation fails with an + // explanatory error message (the name of the executable that caused the + // error and the exceeded timeout period) if the executable is not + // completed at end of the timeout period. + ExecutionTimeout string `json:"executionTimeout,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExecutableFile") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExecutableFile") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *NodeInitializationAction) MarshalJSON() ([]byte, error) { + type noMethod NodeInitializationAction + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Operation: This resource represents a long-running operation that is +// the result of a network API call. +type Operation struct { + // Done: If the value is false, it means the operation is still in + // progress. If true, the operation is completed, and either error or + // response is available. + Done bool `json:"done,omitempty"` + + // Error: The error result of the operation in case of failure or + // cancellation. + Error *Status `json:"error,omitempty"` + + // Metadata: Service-specific metadata associated with the operation. It + // typically contains progress information and common metadata such as + // create time. Some services might not provide such metadata. Any + // method that returns a long-running operation should document the + // metadata type, if any. + Metadata googleapi.RawMessage `json:"metadata,omitempty"` + + // Name: The server-assigned name, which is only unique within the same + // service that originally returns it. If you use the default HTTP + // mapping, the name should have the format of + // operations/some/unique/name. + Name string `json:"name,omitempty"` + + // Response: The normal response of the operation in case of success. If + // the original method returns no data on success, such as Delete, the + // response is google.protobuf.Empty. If the original method is standard + // Get/Create/Update, the response should be the resource. For other + // methods, the response should have the type XxxResponse, where Xxx is + // the original method name. For example, if the original method name is + // TakeSnapshot(), the inferred response type is TakeSnapshotResponse. + Response googleapi.RawMessage `json:"response,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Done") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Done") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Operation) MarshalJSON() ([]byte, error) { + type noMethod Operation + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PigJob: A Cloud Dataproc job for running Apache Pig +// (https://pig.apache.org/) queries on YARN. +type PigJob struct { + // ContinueOnFailure: Optional. Whether to continue executing queries if + // a query fails. The default value is false. Setting to true can be + // useful when executing independent parallel queries. + ContinueOnFailure bool `json:"continueOnFailure,omitempty"` + + // JarFileUris: Optional. HCFS URIs of jar files to add to the CLASSPATH + // of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig + // UDFs. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // LoggingConfig: Optional. The runtime log config for job execution. + LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"` + + // Properties: Optional. A mapping of property names to values, used to + // configure Pig. Properties that conflict with values set by the Cloud + // Dataproc API may be overwritten. Can include properties set in + // /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and + // classes in user code. + Properties map[string]string `json:"properties,omitempty"` + + // QueryFileUri: The HCFS URI of the script that contains the Pig + // queries. + QueryFileUri string `json:"queryFileUri,omitempty"` + + // QueryList: A list of queries. + QueryList *QueryList `json:"queryList,omitempty"` + + // ScriptVariables: Optional. Mapping of query variable names to values + // (equivalent to the Pig command: name=[value]). + ScriptVariables map[string]string `json:"scriptVariables,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContinueOnFailure") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContinueOnFailure") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *PigJob) MarshalJSON() ([]byte, error) { + type noMethod PigJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PySparkJob: A Cloud Dataproc job for running Apache PySpark +// (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) +// applications on YARN. +type PySparkJob struct { + // ArchiveUris: Optional. HCFS URIs of archives to be extracted in the + // working directory of .jar, .tar, .tar.gz, .tgz, and .zip. + ArchiveUris []string `json:"archiveUris,omitempty"` + + // Args: Optional. The arguments to pass to the driver. Do not include + // arguments, such as --conf, that can be set as job properties, since a + // collision may occur that causes an incorrect job submission. + Args []string `json:"args,omitempty"` + + // FileUris: Optional. HCFS URIs of files to be copied to the working + // directory of Python drivers and distributed tasks. Useful for naively + // parallel tasks. + FileUris []string `json:"fileUris,omitempty"` + + // JarFileUris: Optional. HCFS URIs of jar files to add to the + // CLASSPATHs of the Python driver and tasks. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // LoggingConfig: Optional. The runtime log config for job execution. + LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"` + + // MainPythonFileUri: Required. The HCFS URI of the main Python file to + // use as the driver. Must be a .py file. + MainPythonFileUri string `json:"mainPythonFileUri,omitempty"` + + // Properties: Optional. A mapping of property names to values, used to + // configure PySpark. Properties that conflict with values set by the + // Cloud Dataproc API may be overwritten. Can include properties set in + // /etc/spark/conf/spark-defaults.conf and classes in user code. + Properties map[string]string `json:"properties,omitempty"` + + // PythonFileUris: Optional. HCFS file URIs of Python files to pass to + // the PySpark framework. Supported file types: .py, .egg, and .zip. + PythonFileUris []string `json:"pythonFileUris,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArchiveUris") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArchiveUris") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PySparkJob) MarshalJSON() ([]byte, error) { + type noMethod PySparkJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// QueryList: A list of queries to run on a cluster. +type QueryList struct { + // Queries: Required. The queries to execute. You do not need to + // terminate a query with a semicolon. Multiple queries can be specified + // in one string by separating each with a semicolon. Here is an example + // of an Cloud Dataproc API snippet that uses a QueryList to specify a + // HiveJob: + // "hiveJob": { + // "queryList": { + // "queries": [ + // "query1", + // "query2", + // "query3;query4", + // ] + // } + // } + // + Queries []string `json:"queries,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Queries") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Queries") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *QueryList) MarshalJSON() ([]byte, error) { + type noMethod QueryList + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SoftwareConfig: Specifies the selection and config of software inside +// the cluster. +type SoftwareConfig struct { + // ImageVersion: Optional. The version of software inside the cluster. + // It must match the regular expression [0-9]+\.[0-9]+. If unspecified, + // it defaults to the latest version (see Cloud Dataproc Versioning). + ImageVersion string `json:"imageVersion,omitempty"` + + // Properties: Optional. The properties to set on daemon config + // files.Property keys are specified in prefix:property format, such as + // core:fs.defaultFS. The following are supported prefixes and their + // mappings: + // capacity-scheduler: capacity-scheduler.xml + // core: core-site.xml + // distcp: distcp-default.xml + // hdfs: hdfs-site.xml + // hive: hive-site.xml + // mapred: mapred-site.xml + // pig: pig.properties + // spark: spark-defaults.conf + // yarn: yarn-site.xmlFor more information, see Cluster properties. + Properties map[string]string `json:"properties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ImageVersion") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ImageVersion") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SoftwareConfig) MarshalJSON() ([]byte, error) { + type noMethod SoftwareConfig + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SparkJob: A Cloud Dataproc job for running Apache Spark +// (http://spark.apache.org/) applications on YARN. +type SparkJob struct { + // ArchiveUris: Optional. HCFS URIs of archives to be extracted in the + // working directory of Spark drivers and tasks. Supported file types: + // .jar, .tar, .tar.gz, .tgz, and .zip. + ArchiveUris []string `json:"archiveUris,omitempty"` + + // Args: Optional. The arguments to pass to the driver. Do not include + // arguments, such as --conf, that can be set as job properties, since a + // collision may occur that causes an incorrect job submission. + Args []string `json:"args,omitempty"` + + // FileUris: Optional. HCFS URIs of files to be copied to the working + // directory of Spark drivers and distributed tasks. Useful for naively + // parallel tasks. + FileUris []string `json:"fileUris,omitempty"` + + // JarFileUris: Optional. HCFS URIs of jar files to add to the + // CLASSPATHs of the Spark driver and tasks. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // LoggingConfig: Optional. The runtime log config for job execution. + LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"` + + // MainClass: The name of the driver's main class. The jar file that + // contains the class must be in the default CLASSPATH or specified in + // jar_file_uris. + MainClass string `json:"mainClass,omitempty"` + + // MainJarFileUri: The HCFS URI of the jar file that contains the main + // class. + MainJarFileUri string `json:"mainJarFileUri,omitempty"` + + // Properties: Optional. A mapping of property names to values, used to + // configure Spark. Properties that conflict with values set by the + // Cloud Dataproc API may be overwritten. Can include properties set in + // /etc/spark/conf/spark-defaults.conf and classes in user code. + Properties map[string]string `json:"properties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArchiveUris") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArchiveUris") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SparkJob) MarshalJSON() ([]byte, error) { + type noMethod SparkJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SparkSqlJob: A Cloud Dataproc job for running Apache Spark SQL +// (http://spark.apache.org/sql/) queries. +type SparkSqlJob struct { + // JarFileUris: Optional. HCFS URIs of jar files to be added to the + // Spark CLASSPATH. + JarFileUris []string `json:"jarFileUris,omitempty"` + + // LoggingConfig: Optional. The runtime log config for job execution. + LoggingConfig *LoggingConfig `json:"loggingConfig,omitempty"` + + // Properties: Optional. A mapping of property names to values, used to + // configure Spark SQL's SparkConf. Properties that conflict with values + // set by the Cloud Dataproc API may be overwritten. + Properties map[string]string `json:"properties,omitempty"` + + // QueryFileUri: The HCFS URI of the script that contains SQL queries. + QueryFileUri string `json:"queryFileUri,omitempty"` + + // QueryList: A list of queries. + QueryList *QueryList `json:"queryList,omitempty"` + + // ScriptVariables: Optional. Mapping of query variable names to values + // (equivalent to the Spark SQL command: SET name="value";). + ScriptVariables map[string]string `json:"scriptVariables,omitempty"` + + // ForceSendFields is a list of field names (e.g. "JarFileUris") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "JarFileUris") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SparkSqlJob) MarshalJSON() ([]byte, error) { + type noMethod SparkSqlJob + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Status: The Status type defines a logical error model that is +// suitable for different programming environments, including REST APIs +// and RPC APIs. It is used by gRPC (https://github.com/grpc). The error +// model is designed to be: +// Simple to use and understand for most users +// Flexible enough to meet unexpected needsOverviewThe Status message +// contains three pieces of data: error code, error message, and error +// details. The error code should be an enum value of google.rpc.Code, +// but it may accept additional error codes if needed. The error message +// should be a developer-facing English message that helps developers +// understand and resolve the error. If a localized user-facing error +// message is needed, put the localized message in the error details or +// localize it in the client. The optional error details may contain +// arbitrary information about the error. There is a predefined set of +// error detail types in the package google.rpc that can be used for +// common error conditions.Language mappingThe Status message is the +// logical representation of the error model, but it is not necessarily +// the actual wire format. When the Status message is exposed in +// different client libraries and different wire protocols, it can be +// mapped differently. For example, it will likely be mapped to some +// exceptions in Java, but more likely mapped to some error codes in +// C.Other usesThe error model and the Status message can be used in a +// variety of environments, either with or without APIs, to provide a +// consistent developer experience across different environments.Example +// uses of this error model include: +// Partial errors. If a service needs to return partial errors to the +// client, it may embed the Status in the normal response to indicate +// the partial errors. +// Workflow errors. A typical workflow has multiple steps. Each step may +// have a Status message for error reporting. +// Batch operations. If a client uses batch request and batch response, +// the Status message should be used directly inside batch response, one +// for each error sub-response. +// Asynchronous operations. If an API call embeds asynchronous operation +// results in its response, the status of those operations should be +// represented directly using the Status message. +// Logging. If some API errors are stored in logs, the message Status +// could be used directly after any stripping needed for +// security/privacy reasons. +type Status struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any user-facing error message should be localized and sent + // in the google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Status) MarshalJSON() ([]byte, error) { + type noMethod Status + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SubmitJobRequest: A request to submit a job. +type SubmitJobRequest struct { + // Job: Required. The job resource. + Job *Job `json:"job,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Job") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Job") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SubmitJobRequest) MarshalJSON() ([]byte, error) { + type noMethod SubmitJobRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// YarnApplication: A YARN application created by a job. Application +// information is a subset of +// org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes +// only. It may be changed before final release. +type YarnApplication struct { + // Name: Required. The application name. + Name string `json:"name,omitempty"` + + // Progress: Required. The numerical progress of the application, from 1 + // to 100. + Progress float64 `json:"progress,omitempty"` + + // State: Required. The application state. + // + // Possible values: + // "STATE_UNSPECIFIED" - Status is unspecified. + // "NEW" - Status is NEW. + // "NEW_SAVING" - Status is NEW_SAVING. + // "SUBMITTED" - Status is SUBMITTED. + // "ACCEPTED" - Status is ACCEPTED. + // "RUNNING" - Status is RUNNING. + // "FINISHED" - Status is FINISHED. + // "FAILED" - Status is FAILED. + // "KILLED" - Status is KILLED. + State string `json:"state,omitempty"` + + // TrackingUrl: Optional. The HTTP URL of the ApplicationMaster, + // HistoryServer, or TimelineServer that provides application-specific + // information. The URL uses the internal hostname, and requires a proxy + // server for resolution and, possibly, access. + TrackingUrl string `json:"trackingUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *YarnApplication) MarshalJSON() ([]byte, error) { + type noMethod YarnApplication + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *YarnApplication) UnmarshalJSON(data []byte) error { + type noMethod YarnApplication + var s1 struct { + Progress gensupport.JSONFloat64 `json:"progress"` + *noMethod + } + s1.noMethod = (*noMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Progress = float64(s1.Progress) + return nil +} + +// method id "dataproc.projects.regions.clusters.create": + +type ProjectsRegionsClustersCreateCall struct { + s *Service + projectId string + region string + cluster *Cluster + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a cluster in a project. +func (r *ProjectsRegionsClustersService) Create(projectId string, region string, cluster *Cluster) *ProjectsRegionsClustersCreateCall { + c := &ProjectsRegionsClustersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.cluster = cluster + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersCreateCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersCreateCall) Context(ctx context.Context) *ProjectsRegionsClustersCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.cluster) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsRegionsClustersCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a cluster in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters", + // "httpMethod": "POST", + // "id": "dataproc.projects.regions.clusters.create", + // "parameterOrder": [ + // "projectId", + // "region" + // ], + // "parameters": { + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters", + // "request": { + // "$ref": "Cluster" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.clusters.delete": + +type ProjectsRegionsClustersDeleteCall struct { + s *Service + projectId string + region string + clusterName string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a cluster in a project. +func (r *ProjectsRegionsClustersService) Delete(projectId string, region string, clusterName string) *ProjectsRegionsClustersDeleteCall { + c := &ProjectsRegionsClustersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.clusterName = clusterName + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersDeleteCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersDeleteCall) Context(ctx context.Context) *ProjectsRegionsClustersDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "clusterName": c.clusterName, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsRegionsClustersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a cluster in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "httpMethod": "DELETE", + // "id": "dataproc.projects.regions.clusters.delete", + // "parameterOrder": [ + // "projectId", + // "region", + // "clusterName" + // ], + // "parameters": { + // "clusterName": { + // "description": "Required. The cluster name.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.clusters.diagnose": + +type ProjectsRegionsClustersDiagnoseCall struct { + s *Service + projectId string + region string + clusterName string + diagnoseclusterrequest *DiagnoseClusterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Diagnose: Gets cluster diagnostic information. After the operation +// completes, the Operation.response field contains +// DiagnoseClusterOutputLocation. +func (r *ProjectsRegionsClustersService) Diagnose(projectId string, region string, clusterName string, diagnoseclusterrequest *DiagnoseClusterRequest) *ProjectsRegionsClustersDiagnoseCall { + c := &ProjectsRegionsClustersDiagnoseCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.clusterName = clusterName + c.diagnoseclusterrequest = diagnoseclusterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersDiagnoseCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersDiagnoseCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersDiagnoseCall) Context(ctx context.Context) *ProjectsRegionsClustersDiagnoseCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersDiagnoseCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersDiagnoseCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.diagnoseclusterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "clusterName": c.clusterName, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.diagnose" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsRegionsClustersDiagnoseCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets cluster diagnostic information. After the operation completes, the Operation.response field contains DiagnoseClusterOutputLocation.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", + // "httpMethod": "POST", + // "id": "dataproc.projects.regions.clusters.diagnose", + // "parameterOrder": [ + // "projectId", + // "region", + // "clusterName" + // ], + // "parameters": { + // "clusterName": { + // "description": "Required. The cluster name.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}:diagnose", + // "request": { + // "$ref": "DiagnoseClusterRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.clusters.get": + +type ProjectsRegionsClustersGetCall struct { + s *Service + projectId string + region string + clusterName string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the resource representation for a cluster in a project. +func (r *ProjectsRegionsClustersService) Get(projectId string, region string, clusterName string) *ProjectsRegionsClustersGetCall { + c := &ProjectsRegionsClustersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.clusterName = clusterName + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersGetCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsClustersGetCall) IfNoneMatch(entityTag string) *ProjectsRegionsClustersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersGetCall) Context(ctx context.Context) *ProjectsRegionsClustersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "clusterName": c.clusterName, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.get" call. +// Exactly one of *Cluster or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Cluster.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsRegionsClustersGetCall) Do(opts ...googleapi.CallOption) (*Cluster, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Cluster{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the resource representation for a cluster in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.clusters.get", + // "parameterOrder": [ + // "projectId", + // "region", + // "clusterName" + // ], + // "parameters": { + // "clusterName": { + // "description": "Required. The cluster name.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "response": { + // "$ref": "Cluster" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.clusters.list": + +type ProjectsRegionsClustersListCall struct { + s *Service + projectId string + region string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all regions/{region}/clusters in a project. +func (r *ProjectsRegionsClustersService) List(projectId string, region string) *ProjectsRegionsClustersListCall { + c := &ProjectsRegionsClustersListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + return c +} + +// Filter sets the optional parameter "filter": A filter constraining +// the clusters to list. Filters are case-sensitive and have the +// following syntax:field = value AND field = value ...where field is +// one of status.state, clusterName, or labels.[KEY], and [KEY] is a +// label key. value can be * to match all values. status.state can be +// one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, +// DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and +// RUNNING states. INACTIVE contains the DELETING and ERROR states. +// clusterName is the name of the cluster provided at creation time. +// Only the logical AND operator is supported; space-separated items are +// treated as having an implicit AND operator.Example +// filter:status.state = ACTIVE AND clusterName = mycluster AND +// labels.env = staging AND labels.starred = * +func (c *ProjectsRegionsClustersListCall) Filter(filter string) *ProjectsRegionsClustersListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The standard List +// page size. +func (c *ProjectsRegionsClustersListCall) PageSize(pageSize int64) *ProjectsRegionsClustersListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The standard List +// page token. +func (c *ProjectsRegionsClustersListCall) PageToken(pageToken string) *ProjectsRegionsClustersListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersListCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsClustersListCall) IfNoneMatch(entityTag string) *ProjectsRegionsClustersListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersListCall) Context(ctx context.Context) *ProjectsRegionsClustersListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.list" call. +// Exactly one of *ListClustersResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListClustersResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsRegionsClustersListCall) Do(opts ...googleapi.CallOption) (*ListClustersResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListClustersResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all regions/{region}/clusters in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.clusters.list", + // "parameterOrder": [ + // "projectId", + // "region" + // ], + // "parameters": { + // "filter": { + // "description": "Optional. A filter constraining the clusters to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is one of status.state, clusterName, or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be one of the following: ACTIVE, INACTIVE, CREATING, RUNNING, ERROR, DELETING, or UPDATING. ACTIVE contains the CREATING, UPDATING, and RUNNING states. INACTIVE contains the DELETING and ERROR states. clusterName is the name of the cluster provided at creation time. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND clusterName = mycluster AND labels.env = staging AND labels.starred = *", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "Optional. The standard List page size.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "Optional. The standard List page token.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters", + // "response": { + // "$ref": "ListClustersResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsRegionsClustersListCall) Pages(ctx context.Context, f func(*ListClustersResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "dataproc.projects.regions.clusters.patch": + +type ProjectsRegionsClustersPatchCall struct { + s *Service + projectId string + region string + clusterName string + cluster *Cluster + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates a cluster in a project. +func (r *ProjectsRegionsClustersService) Patch(projectId string, region string, clusterName string, cluster *Cluster) *ProjectsRegionsClustersPatchCall { + c := &ProjectsRegionsClustersPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.clusterName = clusterName + c.cluster = cluster + return c +} + +// GracefulDecommissionTimeout sets the optional parameter +// "gracefulDecommissionTimeout": Timeout for graceful YARN +// decomissioning. Graceful decommissioning allows removing nodes from +// the cluster without interrupting jobs in progress. Timeout specifies +// how long to wait for jobs in progress to finish before forcefully +// removing nodes (and potentially interrupting jobs). Default timeout +// is 0 (for forceful decommission), and the maximum allowed timeout is +// 1 day.Only supported on Dataproc image versions 1.2 and higher. +func (c *ProjectsRegionsClustersPatchCall) GracefulDecommissionTimeout(gracefulDecommissionTimeout string) *ProjectsRegionsClustersPatchCall { + c.urlParams_.Set("gracefulDecommissionTimeout", gracefulDecommissionTimeout) + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. +// Specifies the path, relative to Cluster, of the field to +// update. For example, to change the number of workers in a cluster to +// 5, the update_mask parameter would be specified as +// config.worker_config.num_instances, and the PATCH +// request body would specify the new value, as follows: +// { +// "config":{ +// "workerConfig":{ +// "numInstances":"5" +// } +// } +// } +// Similarly, to change the number of preemptible workers in a cluster +// to 5, the update_mask parameter would be +// config.secondary_worker_config.num_instances, and the +// PATCH request body would be set as follows: +// { +// "config":{ +// "secondaryWorkerConfig":{ +// "numInstances":"5" +// } +// } +// } +// Note: currently only some fields can be updated: +// |Mask|Purpose| |labels|Updates labels| +// |config.worker_config.num_instances|Resize primary worker group| +// |config.secondary_worker_config.num_instances|Resize secondary worker +// group| +func (c *ProjectsRegionsClustersPatchCall) UpdateMask(updateMask string) *ProjectsRegionsClustersPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsClustersPatchCall) Fields(s ...googleapi.Field) *ProjectsRegionsClustersPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsClustersPatchCall) Context(ctx context.Context) *ProjectsRegionsClustersPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsClustersPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsClustersPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.cluster) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PATCH", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "clusterName": c.clusterName, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.clusters.patch" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsRegionsClustersPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates a cluster in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "httpMethod": "PATCH", + // "id": "dataproc.projects.regions.clusters.patch", + // "parameterOrder": [ + // "projectId", + // "region", + // "clusterName" + // ], + // "parameters": { + // "clusterName": { + // "description": "Required. The cluster name.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "gracefulDecommissionTimeout": { + // "description": "Optional. Timeout for graceful YARN decomissioning. Graceful decommissioning allows removing nodes from the cluster without interrupting jobs in progress. Timeout specifies how long to wait for jobs in progress to finish before forcefully removing nodes (and potentially interrupting jobs). Default timeout is 0 (for forceful decommission), and the maximum allowed timeout is 1 day.Only supported on Dataproc image versions 1.2 and higher.", + // "format": "google-duration", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project the cluster belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. Specifies the path, relative to \u003ccode\u003eCluster\u003c/code\u003e, of the field to update. For example, to change the number of workers in a cluster to 5, the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003econfig.worker_config.num_instances\u003c/code\u003e, and the PATCH request body would specify the new value, as follows:\n{\n \"config\":{\n \"workerConfig\":{\n \"numInstances\":\"5\"\n }\n }\n}\nSimilarly, to change the number of preemptible workers in a cluster to 5, the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be \u003ccode\u003econfig.secondary_worker_config.num_instances\u003c/code\u003e, and the PATCH request body would be set as follows:\n{\n \"config\":{\n \"secondaryWorkerConfig\":{\n \"numInstances\":\"5\"\n }\n }\n}\n\u003cstrong\u003eNote:\u003c/strong\u003e currently only some fields can be updated: |Mask|Purpose| |labels|Updates labels| |config.worker_config.num_instances|Resize primary worker group| |config.secondary_worker_config.num_instances|Resize secondary worker group|", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/clusters/{clusterName}", + // "request": { + // "$ref": "Cluster" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.jobs.cancel": + +type ProjectsRegionsJobsCancelCall struct { + s *Service + projectId string + region string + jobId string + canceljobrequest *CancelJobRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Starts a job cancellation request. To access the job resource +// after cancellation, call regions/{region}/jobs.list or +// regions/{region}/jobs.get. +func (r *ProjectsRegionsJobsService) Cancel(projectId string, region string, jobId string, canceljobrequest *CancelJobRequest) *ProjectsRegionsJobsCancelCall { + c := &ProjectsRegionsJobsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.jobId = jobId + c.canceljobrequest = canceljobrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsCancelCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsCancelCall) Context(ctx context.Context) *ProjectsRegionsJobsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.canceljobrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "jobId": c.jobId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.cancel" call. +// Exactly one of *Job or error will be non-nil. Any non-2xx status code +// is an error. Response headers are in either +// *Job.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsRegionsJobsCancelCall) Do(opts ...googleapi.CallOption) (*Job, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Job{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + // "httpMethod": "POST", + // "id": "dataproc.projects.regions.jobs.cancel", + // "parameterOrder": [ + // "projectId", + // "region", + // "jobId" + // ], + // "parameters": { + // "jobId": { + // "description": "Required. The job ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}:cancel", + // "request": { + // "$ref": "CancelJobRequest" + // }, + // "response": { + // "$ref": "Job" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.jobs.delete": + +type ProjectsRegionsJobsDeleteCall struct { + s *Service + projectId string + region string + jobId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes the job from the project. If the job is active, the +// delete fails, and the response returns FAILED_PRECONDITION. +func (r *ProjectsRegionsJobsService) Delete(projectId string, region string, jobId string) *ProjectsRegionsJobsDeleteCall { + c := &ProjectsRegionsJobsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.jobId = jobId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsDeleteCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsDeleteCall) Context(ctx context.Context) *ProjectsRegionsJobsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "jobId": c.jobId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsRegionsJobsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "httpMethod": "DELETE", + // "id": "dataproc.projects.regions.jobs.delete", + // "parameterOrder": [ + // "projectId", + // "region", + // "jobId" + // ], + // "parameters": { + // "jobId": { + // "description": "Required. The job ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.jobs.get": + +type ProjectsRegionsJobsGetCall struct { + s *Service + projectId string + region string + jobId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the resource representation for a job in a project. +func (r *ProjectsRegionsJobsService) Get(projectId string, region string, jobId string) *ProjectsRegionsJobsGetCall { + c := &ProjectsRegionsJobsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.jobId = jobId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsGetCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsJobsGetCall) IfNoneMatch(entityTag string) *ProjectsRegionsJobsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsGetCall) Context(ctx context.Context) *ProjectsRegionsJobsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "jobId": c.jobId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.get" call. +// Exactly one of *Job or error will be non-nil. Any non-2xx status code +// is an error. Response headers are in either +// *Job.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsRegionsJobsGetCall) Do(opts ...googleapi.CallOption) (*Job, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Job{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the resource representation for a job in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.jobs.get", + // "parameterOrder": [ + // "projectId", + // "region", + // "jobId" + // ], + // "parameters": { + // "jobId": { + // "description": "Required. The job ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "response": { + // "$ref": "Job" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.jobs.list": + +type ProjectsRegionsJobsListCall struct { + s *Service + projectId string + region string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists regions/{region}/jobs in a project. +func (r *ProjectsRegionsJobsService) List(projectId string, region string) *ProjectsRegionsJobsListCall { + c := &ProjectsRegionsJobsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + return c +} + +// ClusterName sets the optional parameter "clusterName": If set, the +// returned jobs list includes only jobs that were submitted to the +// named cluster. +func (c *ProjectsRegionsJobsListCall) ClusterName(clusterName string) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("clusterName", clusterName) + return c +} + +// Filter sets the optional parameter "filter": A filter constraining +// the jobs to list. Filters are case-sensitive and have the following +// syntax:field = value AND field = value ...where field is status.state +// or labels.[KEY], and [KEY] is a label key. value can be * to match +// all values. status.state can be either ACTIVE or INACTIVE. Only the +// logical AND operator is supported; space-separated items are treated +// as having an implicit AND operator.Example filter:status.state = +// ACTIVE AND labels.env = staging AND labels.starred = * +func (c *ProjectsRegionsJobsListCall) Filter(filter string) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// JobStateMatcher sets the optional parameter "jobStateMatcher": +// Specifies enumerated categories of jobs to list (default = match ALL +// jobs). +// +// Possible values: +// "ALL" +// "ACTIVE" +// "NON_ACTIVE" +func (c *ProjectsRegionsJobsListCall) JobStateMatcher(jobStateMatcher string) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("jobStateMatcher", jobStateMatcher) + return c +} + +// PageSize sets the optional parameter "pageSize": The number of +// results to return in each response. +func (c *ProjectsRegionsJobsListCall) PageSize(pageSize int64) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The page token, +// returned by a previous call, to request the next page of results. +func (c *ProjectsRegionsJobsListCall) PageToken(pageToken string) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsListCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsJobsListCall) IfNoneMatch(entityTag string) *ProjectsRegionsJobsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsListCall) Context(ctx context.Context) *ProjectsRegionsJobsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.list" call. +// Exactly one of *ListJobsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListJobsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsRegionsJobsListCall) Do(opts ...googleapi.CallOption) (*ListJobsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListJobsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists regions/{region}/jobs in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.jobs.list", + // "parameterOrder": [ + // "projectId", + // "region" + // ], + // "parameters": { + // "clusterName": { + // "description": "Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.", + // "location": "query", + // "type": "string" + // }, + // "filter": { + // "description": "Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or INACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *", + // "location": "query", + // "type": "string" + // }, + // "jobStateMatcher": { + // "description": "Optional. Specifies enumerated categories of jobs to list (default = match ALL jobs).", + // "enum": [ + // "ALL", + // "ACTIVE", + // "NON_ACTIVE" + // ], + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "Optional. The number of results to return in each response.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "Optional. The page token, returned by a previous call, to request the next page of results.", + // "location": "query", + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs", + // "response": { + // "$ref": "ListJobsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsRegionsJobsListCall) Pages(ctx context.Context, f func(*ListJobsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "dataproc.projects.regions.jobs.patch": + +type ProjectsRegionsJobsPatchCall struct { + s *Service + projectId string + region string + jobId string + job *Job + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates a job in a project. +func (r *ProjectsRegionsJobsService) Patch(projectId string, region string, jobId string, job *Job) *ProjectsRegionsJobsPatchCall { + c := &ProjectsRegionsJobsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.jobId = jobId + c.job = job + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. +// Specifies the path, relative to Job, of the field to +// update. For example, to update the labels of a Job the +// update_mask parameter would be specified as +// labels, and the PATCH request body would specify the new +// value. Note: Currently, labels is the +// only field that can be updated. +func (c *ProjectsRegionsJobsPatchCall) UpdateMask(updateMask string) *ProjectsRegionsJobsPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsPatchCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsPatchCall) Context(ctx context.Context) *ProjectsRegionsJobsPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.job) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PATCH", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + "jobId": c.jobId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.patch" call. +// Exactly one of *Job or error will be non-nil. Any non-2xx status code +// is an error. Response headers are in either +// *Job.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsRegionsJobsPatchCall) Do(opts ...googleapi.CallOption) (*Job, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Job{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates a job in a project.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "httpMethod": "PATCH", + // "id": "dataproc.projects.regions.jobs.patch", + // "parameterOrder": [ + // "projectId", + // "region", + // "jobId" + // ], + // "parameters": { + // "jobId": { + // "description": "Required. The job ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. Specifies the path, relative to \u003ccode\u003eJob\u003c/code\u003e, of the field to update. For example, to update the labels of a Job the \u003ccode\u003eupdate_mask\u003c/code\u003e parameter would be specified as \u003ccode\u003elabels\u003c/code\u003e, and the PATCH request body would specify the new value. \u003cstrong\u003eNote:\u003c/strong\u003e Currently, \u003ccode\u003elabels\u003c/code\u003e is the only field that can be updated.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs/{jobId}", + // "request": { + // "$ref": "Job" + // }, + // "response": { + // "$ref": "Job" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.jobs.submit": + +type ProjectsRegionsJobsSubmitCall struct { + s *Service + projectId string + region string + submitjobrequest *SubmitJobRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Submit: Submits a job to a cluster. +func (r *ProjectsRegionsJobsService) Submit(projectId string, region string, submitjobrequest *SubmitJobRequest) *ProjectsRegionsJobsSubmitCall { + c := &ProjectsRegionsJobsSubmitCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.region = region + c.submitjobrequest = submitjobrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsJobsSubmitCall) Fields(s ...googleapi.Field) *ProjectsRegionsJobsSubmitCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsJobsSubmitCall) Context(ctx context.Context) *ProjectsRegionsJobsSubmitCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsJobsSubmitCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsJobsSubmitCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.submitjobrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/projects/{projectId}/regions/{region}/jobs:submit") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "region": c.region, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.jobs.submit" call. +// Exactly one of *Job or error will be non-nil. Any non-2xx status code +// is an error. Response headers are in either +// *Job.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsRegionsJobsSubmitCall) Do(opts ...googleapi.CallOption) (*Job, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Job{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Submits a job to a cluster.", + // "flatPath": "v1beta2/projects/{projectId}/regions/{region}/jobs:submit", + // "httpMethod": "POST", + // "id": "dataproc.projects.regions.jobs.submit", + // "parameterOrder": [ + // "projectId", + // "region" + // ], + // "parameters": { + // "projectId": { + // "description": "Required. The ID of the Google Cloud Platform project that the job belongs to.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "region": { + // "description": "Required. The Cloud Dataproc region in which to handle the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/projects/{projectId}/regions/{region}/jobs:submit", + // "request": { + // "$ref": "SubmitJobRequest" + // }, + // "response": { + // "$ref": "Job" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.operations.cancel": + +type ProjectsRegionsOperationsCancelCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Starts asynchronous cancellation on a long-running operation. +// The server makes a best effort to cancel the operation, but success +// is not guaranteed. If the server doesn't support this method, it +// returns google.rpc.Code.UNIMPLEMENTED. Clients can use +// Operations.GetOperation or other methods to check whether the +// cancellation succeeded or whether the operation completed despite +// cancellation. On successful cancellation, the operation is not +// deleted; instead, it becomes an operation with an Operation.error +// value with a google.rpc.Status.code of 1, corresponding to +// Code.CANCELLED. +func (r *ProjectsRegionsOperationsService) Cancel(name string) *ProjectsRegionsOperationsCancelCall { + c := &ProjectsRegionsOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsOperationsCancelCall) Fields(s ...googleapi.Field) *ProjectsRegionsOperationsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsOperationsCancelCall) Context(ctx context.Context) *ProjectsRegionsOperationsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsOperationsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsOperationsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/{+name}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.operations.cancel" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsRegionsOperationsCancelCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED. Clients can use Operations.GetOperation or other methods to check whether the cancellation succeeded or whether the operation completed despite cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to Code.CANCELLED.", + // "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}:cancel", + // "httpMethod": "POST", + // "id": "dataproc.projects.regions.operations.cancel", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be cancelled.", + // "location": "path", + // "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/{+name}:cancel", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.operations.delete": + +type ProjectsRegionsOperationsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a long-running operation. This method indicates that +// the client is no longer interested in the operation result. It does +// not cancel the operation. If the server doesn't support this method, +// it returns google.rpc.Code.UNIMPLEMENTED. +func (r *ProjectsRegionsOperationsService) Delete(name string) *ProjectsRegionsOperationsDeleteCall { + c := &ProjectsRegionsOperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsOperationsDeleteCall) Fields(s ...googleapi.Field) *ProjectsRegionsOperationsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsOperationsDeleteCall) Context(ctx context.Context) *ProjectsRegionsOperationsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsOperationsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsOperationsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.operations.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ProjectsRegionsOperationsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a long-running operation. This method indicates that the client is no longer interested in the operation result. It does not cancel the operation. If the server doesn't support this method, it returns google.rpc.Code.UNIMPLEMENTED.", + // "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", + // "httpMethod": "DELETE", + // "id": "dataproc.projects.regions.operations.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be deleted.", + // "location": "path", + // "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/{+name}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.operations.get": + +type ProjectsRegionsOperationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the latest state of a long-running operation. Clients can +// use this method to poll the operation result at intervals as +// recommended by the API service. +func (r *ProjectsRegionsOperationsService) Get(name string) *ProjectsRegionsOperationsGetCall { + c := &ProjectsRegionsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsOperationsGetCall) Fields(s ...googleapi.Field) *ProjectsRegionsOperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsOperationsGetCall) IfNoneMatch(entityTag string) *ProjectsRegionsOperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsOperationsGetCall) Context(ctx context.Context) *ProjectsRegionsOperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsOperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsOperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.operations.get" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsRegionsOperationsGetCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the latest state of a long-running operation. Clients can use this method to poll the operation result at intervals as recommended by the API service.", + // "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations/{operationsId}", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.operations.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource.", + // "location": "path", + // "pattern": "^projects/[^/]+/regions/[^/]+/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta2/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dataproc.projects.regions.operations.list": + +type ProjectsRegionsOperationsListCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists operations that match the specified filter in the +// request. If the server doesn't support this method, it returns +// UNIMPLEMENTED.NOTE: the name binding allows API services to override +// the binding to use different resource name schemes, such as +// users/*/operations. To override the binding, API services can add a +// binding such as "/v1/{name=users/*}/operations" to their service +// configuration. For backwards compatibility, the default name includes +// the operations collection id, however overriding users must ensure +// the name binding is the parent resource, without the operations +// collection id. +func (r *ProjectsRegionsOperationsService) List(name string) *ProjectsRegionsOperationsListCall { + c := &ProjectsRegionsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Filter sets the optional parameter "filter": The standard list +// filter. +func (c *ProjectsRegionsOperationsListCall) Filter(filter string) *ProjectsRegionsOperationsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The standard list +// page size. +func (c *ProjectsRegionsOperationsListCall) PageSize(pageSize int64) *ProjectsRegionsOperationsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The standard list +// page token. +func (c *ProjectsRegionsOperationsListCall) PageToken(pageToken string) *ProjectsRegionsOperationsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsRegionsOperationsListCall) Fields(s ...googleapi.Field) *ProjectsRegionsOperationsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsRegionsOperationsListCall) IfNoneMatch(entityTag string) *ProjectsRegionsOperationsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsRegionsOperationsListCall) Context(ctx context.Context) *ProjectsRegionsOperationsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsRegionsOperationsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsRegionsOperationsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta2/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dataproc.projects.regions.operations.list" call. +// Exactly one of *ListOperationsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListOperationsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsRegionsOperationsListCall) Do(opts ...googleapi.CallOption) (*ListOperationsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListOperationsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns UNIMPLEMENTED.NOTE: the name binding allows API services to override the binding to use different resource name schemes, such as users/*/operations. To override the binding, API services can add a binding such as \"/v1/{name=users/*}/operations\" to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.", + // "flatPath": "v1beta2/projects/{projectsId}/regions/{regionsId}/operations", + // "httpMethod": "GET", + // "id": "dataproc.projects.regions.operations.list", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "filter": { + // "description": "The standard list filter.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name of the operation's parent resource.", + // "location": "path", + // "pattern": "^projects/[^/]+/regions/[^/]+/operations$", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "The standard list page size.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The standard list page token.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta2/{+name}", + // "response": { + // "$ref": "ListOperationsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsRegionsOperationsListCall) Pages(ctx context.Context, f func(*ListOperationsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} diff --git a/vendor/google.golang.org/api/datastore/v1/datastore-api.json b/vendor/google.golang.org/api/datastore/v1/datastore-api.json index 7f7114c..bb7ffef 100644 --- a/vendor/google.golang.org/api/datastore/v1/datastore-api.json +++ b/vendor/google.golang.org/api/datastore/v1/datastore-api.json @@ -1,74 +1,14 @@ { - "basePath": "", - "ownerDomain": "google.com", - "name": "datastore", - "batchPath": "batch", "id": "datastore:v1", "documentationLink": "https://cloud.google.com/datastore/", "revision": "20170821", "title": "Google Cloud Datastore API", - "discoveryVersion": "v1", "ownerName": "Google", + "discoveryVersion": "v1", "version_module": true, "resources": { "projects": { "methods": { - "allocateIds": { - "path": "v1/projects/{projectId}:allocateIds", - "id": "datastore.projects.allocateIds", - "request": { - "$ref": "AllocateIdsRequest" - }, - "description": "Allocates IDs for the given keys, which is useful for referencing an entity\nbefore it is inserted.", - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "AllocateIdsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "parameters": { - "projectId": { - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/projects/{projectId}:allocateIds" - }, - "beginTransaction": { - "id": "datastore.projects.beginTransaction", - "path": "v1/projects/{projectId}:beginTransaction", - "description": "Begins a new transaction.", - "request": { - "$ref": "BeginTransactionRequest" - }, - "response": { - "$ref": "BeginTransactionResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "parameters": { - "projectId": { - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1/projects/{projectId}:beginTransaction" - }, "commit": { "response": { "$ref": "CommitResponse" @@ -83,10 +23,10 @@ ], "parameters": { "projectId": { + "location": "path", "description": "The ID of the project against which to make the request.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "flatPath": "v1/projects/{projectId}:commit", @@ -97,26 +37,54 @@ }, "description": "Commits a transaction, optionally creating, deleting or modifying some\nentities." }, - "runQuery": { - "path": "v1/projects/{projectId}:runQuery", - "id": "datastore.projects.runQuery", - "description": "Queries for entities.", - "request": { - "$ref": "RunQueryRequest" - }, + "beginTransaction": { "httpMethod": "POST", "parameterOrder": [ "projectId" ], "response": { - "$ref": "RunQueryResponse" + "$ref": "BeginTransactionResponse" }, "parameters": { "projectId": { - "location": "path", "description": "The ID of the project against which to make the request.", "type": "string", - "required": true + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1/projects/{projectId}:beginTransaction", + "path": "v1/projects/{projectId}:beginTransaction", + "id": "datastore.projects.beginTransaction", + "description": "Begins a new transaction.", + "request": { + "$ref": "BeginTransactionRequest" + } + }, + "runQuery": { + "id": "datastore.projects.runQuery", + "path": "v1/projects/{projectId}:runQuery", + "description": "Queries for entities.", + "request": { + "$ref": "RunQueryRequest" + }, + "response": { + "$ref": "RunQueryResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true, + "location": "path" } }, "scopes": [ @@ -139,10 +107,10 @@ ], "parameters": { "projectId": { + "location": "path", "description": "The ID of the project against which to make the request.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "flatPath": "v1/projects/{projectId}:rollback", @@ -154,106 +122,67 @@ "description": "Rolls back a transaction." }, "lookup": { + "path": "v1/projects/{projectId}:lookup", + "id": "datastore.projects.lookup", + "description": "Looks up entities by key.", "request": { "$ref": "LookupRequest" }, - "description": "Looks up entities by key.", + "httpMethod": "POST", + "parameterOrder": [ + "projectId" + ], "response": { "$ref": "LookupResponse" }, + "parameters": { + "projectId": { + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1/projects/{projectId}:lookup" + }, + "allocateIds": { + "response": { + "$ref": "AllocateIdsResponse" + }, "parameterOrder": [ "projectId" ], "httpMethod": "POST", + "parameters": { + "projectId": { + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true, + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/datastore" ], - "parameters": { - "projectId": { - "location": "path", - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectId}:lookup", - "id": "datastore.projects.lookup", - "path": "v1/projects/{projectId}:lookup" + "flatPath": "v1/projects/{projectId}:allocateIds", + "id": "datastore.projects.allocateIds", + "path": "v1/projects/{projectId}:allocateIds", + "description": "Allocates IDs for the given keys, which is useful for referencing an entity\nbefore it is inserted.", + "request": { + "$ref": "AllocateIdsRequest" + } } }, "resources": { "operations": { "methods": { - "get": { - "httpMethod": "GET", - "response": { - "$ref": "GoogleLongrunningOperation" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/operations/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", - "path": "v1/{+name}", - "id": "datastore.projects.operations.get", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "GoogleLongrunningListOperationsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "parameters": { - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The name of the operation's parent resource." - }, - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - }, - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/operations", - "path": "v1/{+name}/operations", - "id": "datastore.projects.operations.list", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." - }, "cancel": { + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", "httpMethod": "POST", "response": { "$ref": "Empty" @@ -261,6 +190,10 @@ "parameterOrder": [ "name" ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], "parameters": { "name": { "pattern": "^projects/[^/]+/operations/[^/]+$", @@ -270,14 +203,9 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], "flatPath": "v1/projects/{projectsId}/operations/{operationsId}:cancel", "path": "v1/{+name}:cancel", - "id": "datastore.projects.operations.cancel", - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." + "id": "datastore.projects.operations.cancel" }, "delete": { "response": { @@ -289,11 +217,11 @@ "httpMethod": "DELETE", "parameters": { "name": { + "description": "The name of the operation resource to be deleted.", "type": "string", "required": true, "pattern": "^projects/[^/]+/operations/[^/]+$", - "location": "path", - "description": "The name of the operation resource to be deleted." + "location": "path" } }, "scopes": [ @@ -304,6 +232,74 @@ "id": "datastore.projects.operations.delete", "path": "v1/{+name}", "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`." + }, + "get": { + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/operations/[^/]+$", + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", + "id": "datastore.projects.operations.get", + "path": "v1/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." + }, + "list": { + "response": { + "$ref": "GoogleLongrunningListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1/projects/{projectsId}/operations", + "id": "datastore.projects.operations.list", + "path": "v1/{+name}/operations", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." } } } @@ -311,16 +307,63 @@ } }, "parameters": { + "alt": { + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", @@ -328,9 +371,9 @@ "location": "query" }, "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", - "location": "query", - "description": "Selector specifying which fields to include in a partial response." + "location": "query" }, "callback": { "location": "query", @@ -349,196 +392,10 @@ ], "description": "V1 error format.", "type": "string" - }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "type": "string", - "location": "query", - "description": "OAuth bearer token." } }, "schemas": { - "BeginTransactionResponse": { - "description": "The response for Datastore.BeginTransaction.", - "type": "object", - "properties": { - "transaction": { - "type": "string", - "format": "byte", - "description": "The transaction identifier (always present)." - } - }, - "id": "BeginTransactionResponse" - }, - "RunQueryResponse": { - "id": "RunQueryResponse", - "description": "The response for Datastore.RunQuery.", - "type": "object", - "properties": { - "query": { - "$ref": "Query", - "description": "The parsed form of the `GqlQuery` from the request, if it was set." - }, - "batch": { - "$ref": "QueryResultBatch", - "description": "A batch of query results (always present)." - } - } - }, - "AllocateIdsRequest": { - "type": "object", - "properties": { - "keys": { - "description": "A list of keys with incomplete key paths for which to allocate IDs.\nNo key may be reserved/read-only.", - "items": { - "$ref": "Key" - }, - "type": "array" - } - }, - "id": "AllocateIdsRequest", - "description": "The request for Datastore.AllocateIds." - }, - "LookupResponse": { - "id": "LookupResponse", - "description": "The response for Datastore.Lookup.", - "type": "object", - "properties": { - "deferred": { - "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.", - "items": { - "$ref": "Key" - }, - "type": "array" - }, - "missing": { - "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.", - "items": { - "$ref": "EntityResult" - }, - "type": "array" - }, - "found": { - "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.", - "items": { - "$ref": "EntityResult" - }, - "type": "array" - } - } - }, - "CommitRequest": { - "description": "The request for Datastore.Commit.", - "type": "object", - "properties": { - "transaction": { - "type": "string", - "format": "byte", - "description": "The identifier of the transaction associated with the commit. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction." - }, - "mode": { - "enumDescriptions": [ - "Unspecified. This value must not be used.", - "Transactional: The mutations are either all applied, or none are applied.\nLearn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).", - "Non-transactional: The mutations may not apply as all or none." - ], - "enum": [ - "MODE_UNSPECIFIED", - "TRANSACTIONAL", - "NON_TRANSACTIONAL" - ], - "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`.", - "type": "string" - }, - "mutations": { - "description": "The mutations to perform.\n\nWhen mode is `TRANSACTIONAL`, mutations affecting a single entity are\napplied in order. The following sequences of mutations affecting a single\nentity are not permitted in a single `Commit` request:\n\n- `insert` followed by `insert`\n- `update` followed by `insert`\n- `upsert` followed by `insert`\n- `delete` followed by `update`\n\nWhen mode is `NON_TRANSACTIONAL`, no two mutations may affect a single\nentity.", - "items": { - "$ref": "Mutation" - }, - "type": "array" - } - }, - "id": "CommitRequest" - }, - "BeginTransactionRequest": { - "properties": { - "transactionOptions": { - "$ref": "TransactionOptions", - "description": "Options for a new transaction." - } - }, - "id": "BeginTransactionRequest", - "description": "The request for Datastore.BeginTransaction.", - "type": "object" - }, - "PropertyOrder": { - "id": "PropertyOrder", - "description": "The desired order for a specific property.", - "type": "object", - "properties": { - "direction": { - "enum": [ - "DIRECTION_UNSPECIFIED", - "ASCENDING", - "DESCENDING" - ], - "description": "The direction to order by. Defaults to `ASCENDING`.", - "type": "string", - "enumDescriptions": [ - "Unspecified. This value must not be used.", - "Ascending.", - "Descending." - ] - }, - "property": { - "description": "The property to order by.", - "$ref": "PropertyReference" - } - } - }, "KindExpression": { - "type": "object", "properties": { "name": { "description": "The name of the kind.", @@ -546,29 +403,27 @@ } }, "id": "KindExpression", - "description": "A representation of a kind." + "description": "A representation of a kind.", + "type": "object" }, "LatLng": { - "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", - "type": "object", "properties": { - "longitude": { - "format": "double", - "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", - "type": "number" - }, "latitude": { "format": "double", "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", "type": "number" + }, + "longitude": { + "format": "double", + "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", + "type": "number" } }, - "id": "LatLng" + "id": "LatLng", + "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", + "type": "object" }, "Key": { - "id": "Key", - "description": "A unique identifier for an entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.", - "type": "object", "properties": { "path": { "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nAn entity path is always fully complete: *all* of the entity's ancestors\nare required to be in the path along with the entity identifier itself.\nThe only exception is that in some documented cases, the identifier in the\nlast path element (for the entity) itself may be omitted. For example,\nthe last path element of the key of `Mutation.insert` may have no\nidentifier.\n\nA path can never be empty, and a path can have at most 100 elements.", @@ -578,10 +433,13 @@ "type": "array" }, "partitionId": { - "$ref": "PartitionId", - "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition." + "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition.", + "$ref": "PartitionId" } - } + }, + "id": "Key", + "description": "A unique identifier for an entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.", + "type": "object" }, "PropertyReference": { "description": "A reference to a property relative to the kind expressions.", @@ -616,16 +474,15 @@ "type": "object" }, "GoogleDatastoreAdminV1beta1CommonMetadata": { - "id": "GoogleDatastoreAdminV1beta1CommonMetadata", "description": "Metadata common to all Datastore Admin operations.", "type": "object", "properties": { "labels": { - "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.", + "type": "object" }, "endTime": { "format": "google-datetime", @@ -633,8 +490,6 @@ "type": "string" }, "state": { - "description": "The current state of the Operation.", - "type": "string", "enumDescriptions": [ "Unspecified.", "Request is being prepared for processing.", @@ -654,7 +509,9 @@ "SUCCESSFUL", "FAILED", "CANCELLED" - ] + ], + "description": "The current state of the Operation.", + "type": "string" }, "operationType": { "enum": [ @@ -679,45 +536,47 @@ "description": "The time that work began on the operation.", "type": "string" } - } + }, + "id": "GoogleDatastoreAdminV1beta1CommonMetadata" }, "Projection": { - "description": "A representation of a property in a projection.", - "type": "object", "properties": { "property": { - "$ref": "PropertyReference", - "description": "The property to project." + "description": "The property to project.", + "$ref": "PropertyReference" } }, - "id": "Projection" + "id": "Projection", + "description": "A representation of a property in a projection.", + "type": "object" }, "ArrayValue": { "description": "An array value.", "type": "object", "properties": { "values": { + "description": "Values in the array.\nThe order of this array may not be preserved if it contains a mix of\nindexed and unindexed values.", "items": { "$ref": "Value" }, - "type": "array", - "description": "Values in the array.\nThe order of this array may not be preserved if it contains a mix of\nindexed and unindexed values." + "type": "array" } }, "id": "ArrayValue" }, "Mutation": { - "id": "Mutation", - "description": "A mutation to apply to an entity.", - "type": "object", "properties": { + "update": { + "$ref": "Entity", + "description": "The entity to update. The entity must already exist.\nMust have a complete key path." + }, "upsert": { "$ref": "Entity", "description": "The entity to upsert. The entity may or may not already exist.\nThe entity key's final path element may be incomplete." }, "delete": { - "$ref": "Key", - "description": "The key of the entity to delete. The entity may or may not already exist.\nMust have a complete key path and must not be reserved/read-only." + "description": "The key of the entity to delete. The entity may or may not already exist.\nMust have a complete key path and must not be reserved/read-only.", + "$ref": "Key" }, "baseVersion": { "format": "int64", @@ -725,23 +584,22 @@ "type": "string" }, "insert": { - "$ref": "Entity", - "description": "The entity to insert. The entity must not already exist.\nThe entity key's final path element may be incomplete." - }, - "update": { - "description": "The entity to update. The entity must already exist.\nMust have a complete key path.", + "description": "The entity to insert. The entity must not already exist.\nThe entity key's final path element may be incomplete.", "$ref": "Entity" } - } + }, + "id": "Mutation", + "description": "A mutation to apply to an entity.", + "type": "object" }, "ReadOptions": { "description": "The options shared by read requests.", "type": "object", "properties": { "transaction": { - "type": "string", "format": "byte", - "description": "The identifier of the transaction in which to read. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction." + "description": "The identifier of the transaction in which to read. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction.", + "type": "string" }, "readConsistency": { "enum": [ @@ -761,18 +619,18 @@ "id": "ReadOptions" }, "RollbackResponse": { - "description": "The response for Datastore.Rollback.\n(an empty message).", - "type": "object", "properties": {}, - "id": "RollbackResponse" + "id": "RollbackResponse", + "description": "The response for Datastore.Rollback.\n(an empty message).", + "type": "object" }, "GoogleDatastoreAdminV1beta1ExportEntitiesResponse": { "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.", "type": "object", "properties": { "outputUrl": { - "type": "string", - "description": "Location of the output metadata file. This can be used to begin an import\ninto Cloud Datastore (this project or another project). See\ngoogle.datastore.admin.v1beta1.ImportEntitiesRequest.input_url.\nOnly present if the operation completed successfully." + "description": "Location of the output metadata file. This can be used to begin an import\ninto Cloud Datastore (this project or another project). See\ngoogle.datastore.admin.v1beta1.ImportEntitiesRequest.input_url.\nOnly present if the operation completed successfully.", + "type": "string" } }, "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse" @@ -813,11 +671,11 @@ "type": "array" }, "namedBindings": { - "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`.", - "type": "object", "additionalProperties": { "$ref": "GqlQueryParameter" - } + }, + "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`.", + "type": "object" }, "allowLiterals": { "description": "When false, the query string must not contain any literals and instead must\nbind all values. For example,\n`SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while\n`SELECT * FROM Kind WHERE a = @value` is.", @@ -827,19 +685,48 @@ "id": "GqlQuery" }, "Filter": { - "description": "A holder for any type of filter.", - "type": "object", "properties": { - "compositeFilter": { - "$ref": "CompositeFilter", - "description": "A composite filter." - }, "propertyFilter": { "$ref": "PropertyFilter", "description": "A filter on a property." + }, + "compositeFilter": { + "description": "A composite filter.", + "$ref": "CompositeFilter" } }, - "id": "Filter" + "id": "Filter", + "description": "A holder for any type of filter.", + "type": "object" + }, + "RunQueryRequest": { + "description": "The request for Datastore.RunQuery.", + "type": "object", + "properties": { + "readOptions": { + "description": "The options for this query.", + "$ref": "ReadOptions" + }, + "query": { + "description": "The query to run.", + "$ref": "Query" + }, + "gqlQuery": { + "description": "The GQL query to run.", + "$ref": "GqlQuery" + }, + "partitionId": { + "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID.", + "$ref": "PartitionId" + } + }, + "id": "RunQueryRequest" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" }, "RollbackRequest": { "description": "The request for Datastore.Rollback.", @@ -853,41 +740,11 @@ }, "id": "RollbackRequest" }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "RunQueryRequest": { - "id": "RunQueryRequest", - "description": "The request for Datastore.RunQuery.", - "type": "object", - "properties": { - "readOptions": { - "$ref": "ReadOptions", - "description": "The options for this query." - }, - "query": { - "description": "The query to run.", - "$ref": "Query" - }, - "gqlQuery": { - "$ref": "GqlQuery", - "description": "The GQL query to run." - }, - "partitionId": { - "$ref": "PartitionId", - "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID." - } - } - }, "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata": { - "type": "object", "properties": { "common": { - "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata", - "description": "Metadata common to all Datastore Admin operations." + "description": "Metadata common to all Datastore Admin operations.", + "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" }, "progressBytes": { "description": "An estimate of the number of bytes processed.", @@ -902,16 +759,15 @@ "description": "Description of which entities are being exported." }, "progressEntities": { - "description": "An estimate of the number of entities processed.", - "$ref": "GoogleDatastoreAdminV1beta1Progress" + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of entities processed." } }, "id": "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata", - "description": "Metadata for ExportEntities operations." + "description": "Metadata for ExportEntities operations.", + "type": "object" }, "TransactionOptions": { - "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.", - "type": "object", "properties": { "readOnly": { "$ref": "ReadOnly", @@ -922,13 +778,22 @@ "$ref": "ReadWrite" } }, - "id": "TransactionOptions" + "id": "TransactionOptions", + "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.", + "type": "object" }, "CompositeFilter": { + "description": "A filter that merges multiple other filters using the given operator.", + "type": "object", "properties": { + "filters": { + "description": "The list of filters to combine.\nMust contain at least one filter.", + "items": { + "$ref": "Filter" + }, + "type": "array" + }, "op": { - "description": "The operator for combining multiple filters.", - "type": "string", "enumDescriptions": [ "Unspecified. This value must not be used.", "The results are required to satisfy each of the combined filters." @@ -936,28 +801,17 @@ "enum": [ "OPERATOR_UNSPECIFIED", "AND" - ] - }, - "filters": { - "description": "The list of filters to combine.\nMust contain at least one filter.", - "items": { - "$ref": "Filter" - }, - "type": "array" + ], + "description": "The operator for combining multiple filters.", + "type": "string" } }, - "id": "CompositeFilter", - "description": "A filter that merges multiple other filters using the given operator.", - "type": "object" + "id": "CompositeFilter" }, "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": { "description": "Metadata for ImportEntities operations.", "type": "object", "properties": { - "progressEntities": { - "$ref": "GoogleDatastoreAdminV1beta1Progress", - "description": "An estimate of the number of entities processed." - }, "common": { "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata", "description": "Metadata common to all Datastore Admin operations." @@ -967,17 +821,22 @@ "type": "string" }, "progressBytes": { - "$ref": "GoogleDatastoreAdminV1beta1Progress", - "description": "An estimate of the number of bytes processed." + "description": "An estimate of the number of bytes processed.", + "$ref": "GoogleDatastoreAdminV1beta1Progress" }, "entityFilter": { "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", "description": "Description of which entities are being imported." + }, + "progressEntities": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of entities processed." } }, "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata" }, "AllocateIdsResponse": { + "description": "The response for Datastore.AllocateIds.", "type": "object", "properties": { "keys": { @@ -988,32 +847,26 @@ "type": "array" } }, - "id": "AllocateIdsResponse", - "description": "The response for Datastore.AllocateIds." + "id": "AllocateIdsResponse" }, "Query": { + "description": "A query for entities.", + "type": "object", "properties": { - "projection": { - "items": { - "$ref": "Projection" - }, - "type": "array", - "description": "The projection to return. Defaults to returning all properties." - }, "endCursor": { "format": "byte", "description": "An ending point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).", "type": "string" }, - "filter": { - "description": "The filter to apply.", - "$ref": "Filter" - }, "limit": { "format": "int32", "description": "The maximum number of results to return. Applies after all other\nconstraints. Optional.\nUnspecified is interpreted as no limit.\nMust be \u003e= 0 if specified.", "type": "integer" }, + "filter": { + "description": "The filter to apply.", + "$ref": "Filter" + }, "startCursor": { "format": "byte", "description": "A starting point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).", @@ -1044,15 +897,35 @@ "$ref": "PropertyOrder" }, "type": "array" + }, + "projection": { + "description": "The projection to return. Defaults to returning all properties.", + "items": { + "$ref": "Projection" + }, + "type": "array" } }, - "id": "Query", - "description": "A query for entities.", - "type": "object" + "id": "Query" }, "GoogleLongrunningOperation": { - "type": "object", "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, "error": { "description": "The error result of the operation in case of failure or cancellation.", "$ref": "Status" @@ -1064,40 +937,25 @@ }, "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", "type": "object" - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" } }, "id": "GoogleLongrunningOperation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object" }, "ReadOnly": { + "description": "Options specific to read-only transactions.", "type": "object", "properties": {}, - "id": "ReadOnly", - "description": "Options specific to read-only transactions." + "id": "ReadOnly" }, "PropertyFilter": { "description": "A filter on a specific property.", "type": "object", "properties": { "value": { - "$ref": "Value", - "description": "The value to compare the property to." + "description": "The value to compare the property to.", + "$ref": "Value" }, "property": { "$ref": "PropertyReference", @@ -1129,6 +987,7 @@ "id": "PropertyFilter" }, "EntityResult": { + "description": "The result of fetching an entity from Datastore.", "type": "object", "properties": { "cursor": { @@ -1146,51 +1005,59 @@ "description": "The resulting entity." } }, - "id": "EntityResult", - "description": "The result of fetching an entity from Datastore." - }, - "CommitResponse": { - "properties": { - "mutationResults": { - "description": "The result of performing the mutations.\nThe i-th mutation result corresponds to the i-th mutation in the request.", - "items": { - "$ref": "MutationResult" - }, - "type": "array" - }, - "indexUpdates": { - "format": "int32", - "description": "The number of index entries updated during the commit, or zero if none were\nupdated.", - "type": "integer" - } - }, - "id": "CommitResponse", - "description": "The response for Datastore.Commit.", - "type": "object" + "id": "EntityResult" }, "Value": { - "description": "A message that can hold any of the supported value types and associated\nmetadata.", - "type": "object", "properties": { + "entityValue": { + "$ref": "Entity", + "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key." + }, + "geoPointValue": { + "$ref": "LatLng", + "description": "A geo point value representing a point on the surface of Earth." + }, + "integerValue": { + "format": "int64", + "description": "An integer value.", + "type": "string" + }, + "keyValue": { + "$ref": "Key", + "description": "A key value." + }, + "stringValue": { + "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.", + "type": "string" + }, + "excludeFromIndexes": { + "description": "If the value should be excluded from all indexes including those defined\nexplicitly.", + "type": "boolean" + }, + "doubleValue": { + "format": "double", + "description": "A double value.", + "type": "number" + }, "timestampValue": { "format": "google-datetime", "description": "A timestamp value.\nWhen stored in the Datastore, precise only to microseconds;\nany additional precision is rounded down.", "type": "string" }, + "booleanValue": { + "description": "A boolean value.", + "type": "boolean" + }, "nullValue": { + "enum": [ + "NULL_VALUE" + ], "description": "A null value.", "type": "string", "enumDescriptions": [ "Null value." - ], - "enum": [ - "NULL_VALUE" ] }, - "booleanValue": { - "description": "A boolean value.", - "type": "boolean" - }, "blobValue": { "format": "byte", "description": "A blob value.\nMay have at most 1,000,000 bytes.\nWhen `exclude_from_indexes` is false, may have at most 1500 bytes.\nIn JSON requests, must be base64-encoded.", @@ -1202,43 +1069,35 @@ "type": "integer" }, "arrayValue": { - "$ref": "ArrayValue", - "description": "An array value.\nCannot contain another array value.\nA `Value` instance that sets field `array_value` must not set fields\n`meaning` or `exclude_from_indexes`." - }, - "entityValue": { - "$ref": "Entity", - "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key." - }, - "geoPointValue": { - "description": "A geo point value representing a point on the surface of Earth.", - "$ref": "LatLng" - }, - "keyValue": { - "description": "A key value.", - "$ref": "Key" - }, - "integerValue": { - "format": "int64", - "description": "An integer value.", - "type": "string" - }, - "stringValue": { - "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.", - "type": "string" - }, - "excludeFromIndexes": { - "description": "If the value should be excluded from all indexes including those defined\nexplicitly.", - "type": "boolean" - }, - "doubleValue": { - "type": "number", - "format": "double", - "description": "A double value." + "description": "An array value.\nCannot contain another array value.\nA `Value` instance that sets field `array_value` must not set fields\n`meaning` or `exclude_from_indexes`.", + "$ref": "ArrayValue" } }, - "id": "Value" + "id": "Value", + "description": "A message that can hold any of the supported value types and associated\nmetadata.", + "type": "object" + }, + "CommitResponse": { + "description": "The response for Datastore.Commit.", + "type": "object", + "properties": { + "indexUpdates": { + "format": "int32", + "description": "The number of index entries updated during the commit, or zero if none were\nupdated.", + "type": "integer" + }, + "mutationResults": { + "description": "The result of performing the mutations.\nThe i-th mutation result corresponds to the i-th mutation in the request.", + "items": { + "$ref": "MutationResult" + }, + "type": "array" + } + }, + "id": "CommitResponse" }, "PartitionId": { + "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty.\n\nA partition ID contains several dimensions:\nproject ID and namespace ID.\n\nPartition dimensions:\n\n- May be `\"\"`.\n- Must be valid UTF-8 bytes.\n- Must have values that match regex `[A-Za-z\\d\\.\\-_]{1,100}`\nIf the value of any dimension matches regex `__.*__`, the partition is\nreserved/read-only.\nA reserved/read-only partition ID is forbidden in certain documented\ncontexts.\n\nForeign partition IDs (in which the project ID does\nnot match the context project ID ) are discouraged.\nReads and writes of foreign partition IDs may fail if the project is not in an active state.", "type": "object", "properties": { "namespaceId": { @@ -1250,23 +1109,22 @@ "type": "string" } }, - "id": "PartitionId", - "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty.\n\nA partition ID contains several dimensions:\nproject ID and namespace ID.\n\nPartition dimensions:\n\n- May be `\"\"`.\n- Must be valid UTF-8 bytes.\n- Must have values that match regex `[A-Za-z\\d\\.\\-_]{1,100}`\nIf the value of any dimension matches regex `__.*__`, the partition is\nreserved/read-only.\nA reserved/read-only partition ID is forbidden in certain documented\ncontexts.\n\nForeign partition IDs (in which the project ID does\nnot match the context project ID ) are discouraged.\nReads and writes of foreign partition IDs may fail if the project is not in an active state." + "id": "PartitionId" }, "Entity": { "description": "A Datastore data object.\n\nAn entity is limited to 1 megabyte when stored. That _roughly_\ncorresponds to a limit of 1 megabyte for the serialized form of this\nmessage.", "type": "object", "properties": { + "key": { + "$ref": "Key", + "description": "The entity's key.\n\nAn entity must have a key, unless otherwise documented (for example,\nan entity in `Value.entity_value` may have no key).\nAn entity's kind is its key path's last element's kind,\nor null if it has no key." + }, "properties": { "additionalProperties": { "$ref": "Value" }, "description": "The entity's properties.\nThe map's keys are property names.\nA property name matching regex `__.*__` is reserved.\nA reserved property name is forbidden in certain documented contexts.\nThe name must not contain more than 500 characters.\nThe name cannot be `\"\"`.", "type": "object" - }, - "key": { - "$ref": "Key", - "description": "The entity's key.\n\nAn entity must have a key, unless otherwise documented (for example,\nan entity in `Value.entity_value` may have no key).\nAn entity's kind is its key path's last element's kind,\nor null if it has no key." } }, "id": "Entity" @@ -1276,34 +1134,32 @@ "type": "object", "properties": { "previousTransaction": { - "type": "string", "format": "byte", - "description": "The transaction identifier of the transaction being retried." + "description": "The transaction identifier of the transaction being retried.", + "type": "string" } }, "id": "ReadWrite" }, "LookupRequest": { - "description": "The request for Datastore.Lookup.", - "type": "object", "properties": { + "readOptions": { + "description": "The options for this lookup request.", + "$ref": "ReadOptions" + }, "keys": { "description": "Keys of entities to look up.", "items": { "$ref": "Key" }, "type": "array" - }, - "readOptions": { - "description": "The options for this lookup request.", - "$ref": "ReadOptions" } }, - "id": "LookupRequest" + "id": "LookupRequest", + "description": "The request for Datastore.Lookup.", + "type": "object" }, "QueryResultBatch": { - "description": "A batch of results produced by a query.", - "type": "object", "properties": { "skippedCursor": { "format": "byte", @@ -1316,8 +1172,6 @@ "type": "integer" }, "entityResultType": { - "description": "The result type for every entity in `entity_results`.", - "type": "string", "enumDescriptions": [ "Unspecified. This value is never used.", "The key and properties.", @@ -1329,7 +1183,9 @@ "FULL", "PROJECTION", "KEY_ONLY" - ] + ], + "description": "The result type for every entity in `entity_results`.", + "type": "string" }, "entityResults": { "description": "The results for this batch.", @@ -1338,9 +1194,12 @@ }, "type": "array" }, + "endCursor": { + "format": "byte", + "description": "A cursor that points to the position after the last result in the batch.", + "type": "string" + }, "moreResults": { - "description": "The state of the query after the current batch.", - "type": "string", "enumDescriptions": [ "Unspecified. This value is never used.", "There may be additional batches to fetch from this query.", @@ -1354,11 +1213,8 @@ "MORE_RESULTS_AFTER_LIMIT", "MORE_RESULTS_AFTER_CURSOR", "NO_MORE_RESULTS" - ] - }, - "endCursor": { - "format": "byte", - "description": "A cursor that points to the position after the last result in the batch.", + ], + "description": "The state of the query after the current batch.", "type": "string" }, "snapshotVersion": { @@ -1367,7 +1223,9 @@ "type": "string" } }, - "id": "QueryResultBatch" + "id": "QueryResultBatch", + "description": "A batch of results produced by a query.", + "type": "object" }, "GoogleDatastoreAdminV1beta1Progress": { "properties": { @@ -1387,6 +1245,7 @@ "type": "object" }, "PathElement": { + "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.", "type": "object", "properties": { "name": { @@ -1394,8 +1253,8 @@ "type": "string" }, "kind": { - "type": "string", - "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`." + "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.", + "type": "string" }, "id": { "format": "int64", @@ -1403,28 +1262,9 @@ "type": "string" } }, - "id": "PathElement", - "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete." - }, - "GqlQueryParameter": { - "description": "A binding parameter for a GQL query.", - "type": "object", - "properties": { - "cursor": { - "format": "byte", - "description": "A query cursor. Query cursors are returned in query\nresult batches.", - "type": "string" - }, - "value": { - "$ref": "Value", - "description": "A value parameter." - } - }, - "id": "GqlQueryParameter" + "id": "PathElement" }, "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", "properties": { "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", @@ -1447,15 +1287,33 @@ "type": "string" } }, - "id": "Status" + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object" + }, + "GqlQueryParameter": { + "properties": { + "cursor": { + "format": "byte", + "description": "A query cursor. Query cursors are returned in query\nresult batches.", + "type": "string" + }, + "value": { + "$ref": "Value", + "description": "A value parameter." + } + }, + "id": "GqlQueryParameter", + "description": "A binding parameter for a GQL query.", + "type": "object" }, "GoogleLongrunningListOperationsResponse": { "description": "The response message for Operations.ListOperations.", "type": "object", "properties": { "nextPageToken": { - "type": "string", - "description": "The standard List next-page token." + "description": "The standard List next-page token.", + "type": "string" }, "operations": { "description": "A list of operations that matches the specified filter in the request.", @@ -1466,11 +1324,149 @@ } }, "id": "GoogleLongrunningListOperationsResponse" + }, + "BeginTransactionResponse": { + "properties": { + "transaction": { + "format": "byte", + "description": "The transaction identifier (always present).", + "type": "string" + } + }, + "id": "BeginTransactionResponse", + "description": "The response for Datastore.BeginTransaction.", + "type": "object" + }, + "AllocateIdsRequest": { + "properties": { + "keys": { + "description": "A list of keys with incomplete key paths for which to allocate IDs.\nNo key may be reserved/read-only.", + "items": { + "$ref": "Key" + }, + "type": "array" + } + }, + "id": "AllocateIdsRequest", + "description": "The request for Datastore.AllocateIds.", + "type": "object" + }, + "RunQueryResponse": { + "description": "The response for Datastore.RunQuery.", + "type": "object", + "properties": { + "query": { + "$ref": "Query", + "description": "The parsed form of the `GqlQuery` from the request, if it was set." + }, + "batch": { + "$ref": "QueryResultBatch", + "description": "A batch of query results (always present)." + } + }, + "id": "RunQueryResponse" + }, + "LookupResponse": { + "description": "The response for Datastore.Lookup.", + "type": "object", + "properties": { + "deferred": { + "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.", + "items": { + "$ref": "Key" + }, + "type": "array" + }, + "missing": { + "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.", + "items": { + "$ref": "EntityResult" + }, + "type": "array" + }, + "found": { + "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.", + "items": { + "$ref": "EntityResult" + }, + "type": "array" + } + }, + "id": "LookupResponse" + }, + "CommitRequest": { + "properties": { + "transaction": { + "format": "byte", + "description": "The identifier of the transaction associated with the commit. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction.", + "type": "string" + }, + "mode": { + "enum": [ + "MODE_UNSPECIFIED", + "TRANSACTIONAL", + "NON_TRANSACTIONAL" + ], + "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`.", + "type": "string", + "enumDescriptions": [ + "Unspecified. This value must not be used.", + "Transactional: The mutations are either all applied, or none are applied.\nLearn about transactions [here](https://cloud.google.com/datastore/docs/concepts/transactions).", + "Non-transactional: The mutations may not apply as all or none." + ] + }, + "mutations": { + "description": "The mutations to perform.\n\nWhen mode is `TRANSACTIONAL`, mutations affecting a single entity are\napplied in order. The following sequences of mutations affecting a single\nentity are not permitted in a single `Commit` request:\n\n- `insert` followed by `insert`\n- `update` followed by `insert`\n- `upsert` followed by `insert`\n- `delete` followed by `update`\n\nWhen mode is `NON_TRANSACTIONAL`, no two mutations may affect a single\nentity.", + "items": { + "$ref": "Mutation" + }, + "type": "array" + } + }, + "id": "CommitRequest", + "description": "The request for Datastore.Commit.", + "type": "object" + }, + "BeginTransactionRequest": { + "description": "The request for Datastore.BeginTransaction.", + "type": "object", + "properties": { + "transactionOptions": { + "description": "Options for a new transaction.", + "$ref": "TransactionOptions" + } + }, + "id": "BeginTransactionRequest" + }, + "PropertyOrder": { + "description": "The desired order for a specific property.", + "type": "object", + "properties": { + "direction": { + "enumDescriptions": [ + "Unspecified. This value must not be used.", + "Ascending.", + "Descending." + ], + "enum": [ + "DIRECTION_UNSPECIFIED", + "ASCENDING", + "DESCENDING" + ], + "description": "The direction to order by. Defaults to `ASCENDING`.", + "type": "string" + }, + "property": { + "$ref": "PropertyReference", + "description": "The property to order by." + } + }, + "id": "PropertyOrder" } }, "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "protocol": "rest", "version": "v1", @@ -1478,17 +1474,21 @@ "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/datastore": { "description": "View and manage your Google Cloud Datastore data" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" } } } }, - "servicePath": "", - "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n", "kind": "discovery#restDescription", - "rootUrl": "https://datastore.googleapis.com/" + "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n", + "servicePath": "", + "rootUrl": "https://datastore.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "datastore", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/datastore/v1beta1/datastore-api.json b/vendor/google.golang.org/api/datastore/v1beta1/datastore-api.json new file mode 100644 index 0000000..e9f8aa5 --- /dev/null +++ b/vendor/google.golang.org/api/datastore/v1beta1/datastore-api.json @@ -0,0 +1,463 @@ +{ + "ownerDomain": "google.com", + "name": "datastore", + "batchPath": "batch", + "documentationLink": "https://cloud.google.com/datastore/", + "id": "datastore:v1beta1", + "revision": "20170821", + "title": "Google Cloud Datastore API", + "discoveryVersion": "v1", + "ownerName": "Google", + "version_module": true, + "resources": { + "projects": { + "methods": { + "export": { + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "parameters": { + "projectId": { + "description": "Project ID against which to make the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}:export", + "id": "datastore.projects.export", + "path": "v1beta1/projects/{projectId}:export", + "request": { + "$ref": "GoogleDatastoreAdminV1beta1ExportEntitiesRequest" + }, + "description": "Exports a copy of all or a subset of entities from Google Cloud Datastore\nto another storage system, such as Google Cloud Storage. Recent updates to\nentities may not be reflected in the export. The export occurs in the\nbackground and its progress can be monitored and managed via the\nOperation resource that is created. The output of an export may only be\nused once the associated operation is done. If an export operation is\ncancelled before completion it may leave partial data behind in Google\nCloud Storage." + }, + "import": { + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "parameters": { + "projectId": { + "description": "Project ID against which to make the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectId}:import", + "id": "datastore.projects.import", + "path": "v1beta1/projects/{projectId}:import", + "request": { + "$ref": "GoogleDatastoreAdminV1beta1ImportEntitiesRequest" + }, + "description": "Imports entities into Google Cloud Datastore. Existing entities with the\nsame key are overwritten. The import occurs in the background and its\nprogress can be monitored and managed via the Operation resource that is\ncreated. If an ImportEntities operation is cancelled, it is possible\nthat a subset of the data has already been imported to Cloud Datastore." + } + } + } + }, + "parameters": { + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + } + }, + "schemas": { + "GoogleDatastoreAdminV1beta1CommonMetadata": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.", + "type": "object" + }, + "endTime": { + "format": "google-datetime", + "description": "The time the operation ended, either successfully or otherwise.", + "type": "string" + }, + "state": { + "enum": [ + "STATE_UNSPECIFIED", + "INITIALIZING", + "PROCESSING", + "CANCELLING", + "FINALIZING", + "SUCCESSFUL", + "FAILED", + "CANCELLED" + ], + "description": "The current state of the Operation.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "Request is being prepared for processing.", + "Request is actively being processed.", + "Request is in the process of being cancelled after user called\nlongrunning.Operations.CancelOperation on the operation.", + "Request has been processed and is in its finalization stage.", + "Request has completed successfully.", + "Request has finished being processed, but encountered an error.", + "Request has finished being cancelled after user called\nlongrunning.Operations.CancelOperation." + ] + }, + "operationType": { + "enum": [ + "OPERATION_TYPE_UNSPECIFIED", + "EXPORT_ENTITIES", + "IMPORT_ENTITIES", + "BUILD_INDEX", + "CLEAR_INDEX" + ], + "description": "The type of the operation. Can be used as a filter in\nListOperationsRequest.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "ExportEntities.", + "ImportEntities.", + "Build an index.", + "Clear an index." + ] + }, + "startTime": { + "format": "google-datetime", + "description": "The time that work began on the operation.", + "type": "string" + } + }, + "id": "GoogleDatastoreAdminV1beta1CommonMetadata", + "description": "Metadata common to all Datastore Admin operations.", + "type": "object" + }, + "Status": { + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1ExportEntitiesRequest": { + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Client-assigned labels.", + "type": "object" + }, + "outputUrlPrefix": { + "description": "Location for the export metadata and data files.\n\nThe full resource URL of the external storage location. Currently, only\nGoogle Cloud Storage is supported. So output_url_prefix should be of the\nform: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is the\nname of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional Cloud\nStorage namespace path (this is not a Cloud Datastore namespace). For more\ninformation about Cloud Storage namespace paths, see\n[Object name\nconsiderations](https://cloud.google.com/storage/docs/naming#object-considerations).\n\nThe resulting files will be nested deeper than the specified URL prefix.\nThe final output URL will be provided in the\ngoogle.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield. That value should be used for subsequent ImportEntities operations.\n\nBy nesting the data files deeper, the same Cloud Storage bucket can be used\nin multiple ExportEntities operations without conflict.", + "type": "string" + }, + "entityFilter": { + "description": "Description of what data from the project is included in the export.", + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter" + } + }, + "id": "GoogleDatastoreAdminV1beta1ExportEntitiesRequest", + "description": "The request for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata": { + "properties": { + "common": { + "description": "Metadata common to all Datastore Admin operations.", + "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" + }, + "progressBytes": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of bytes processed." + }, + "outputUrlPrefix": { + "description": "Location for the export metadata and data files. This will be the same\nvalue as the\ngoogle.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix\nfield. The final output location is provided in\ngoogle.datastore.admin.v1beta1.ExportEntitiesResponse.output_url.", + "type": "string" + }, + "entityFilter": { + "description": "Description of which entities are being exported.", + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter" + }, + "progressEntities": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of entities processed." + } + }, + "id": "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata", + "description": "Metadata for ExportEntities operations.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1ExportEntitiesResponse": { + "properties": { + "outputUrl": { + "description": "Location of the output metadata file. This can be used to begin an import\ninto Cloud Datastore (this project or another project). See\ngoogle.datastore.admin.v1beta1.ImportEntitiesRequest.input_url.\nOnly present if the operation completed successfully.", + "type": "string" + } + }, + "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse", + "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": { + "description": "Metadata for ImportEntities operations.", + "type": "object", + "properties": { + "progressEntities": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of entities processed." + }, + "common": { + "description": "Metadata common to all Datastore Admin operations.", + "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" + }, + "inputUrl": { + "description": "The location of the import metadata file. This will be the same value as\nthe google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield.", + "type": "string" + }, + "progressBytes": { + "description": "An estimate of the number of bytes processed.", + "$ref": "GoogleDatastoreAdminV1beta1Progress" + }, + "entityFilter": { + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Description of which entities are being imported." + } + }, + "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata" + }, + "GoogleDatastoreAdminV1beta1ImportEntitiesRequest": { + "description": "The request for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ImportEntities.", + "type": "object", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Client-assigned labels.", + "type": "object" + }, + "inputUrl": { + "description": "The full resource URL of the external storage location. Currently, only\nGoogle Cloud Storage is supported. So input_url should be of the form:\n`gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE`, where\n`BUCKET_NAME` is the name of the Cloud Storage bucket, `NAMESPACE_PATH` is\nan optional Cloud Storage namespace path (this is not a Cloud Datastore\nnamespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file written\nby the ExportEntities operation. For more information about Cloud Storage\nnamespace paths, see\n[Object name\nconsiderations](https://cloud.google.com/storage/docs/naming#object-considerations).\n\nFor more information, see\ngoogle.datastore.admin.v1beta1.ExportEntitiesResponse.output_url.", + "type": "string" + }, + "entityFilter": { + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Optionally specify which kinds/namespaces are to be imported. If provided,\nthe list must be a subset of the EntityFilter used in creating the export,\notherwise a FAILED_PRECONDITION error will be returned. If no filter is\nspecified then all entities from the export are imported." + } + }, + "id": "GoogleDatastoreAdminV1beta1ImportEntitiesRequest" + }, + "GoogleDatastoreAdminV1beta1Progress": { + "description": "Measures the progress of a particular metric.", + "type": "object", + "properties": { + "workEstimated": { + "format": "int64", + "description": "An estimate of how much work needs to be performed. May be zero if the\nwork estimate is unavailable.", + "type": "string" + }, + "workCompleted": { + "format": "int64", + "description": "Note that this may be greater than work_estimated.", + "type": "string" + } + }, + "id": "GoogleDatastoreAdminV1beta1Progress" + }, + "GoogleLongrunningOperation": { + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" + } + }, + "id": "GoogleLongrunningOperation", + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1EntityFilter": { + "properties": { + "kinds": { + "description": "If empty, then this represents all kinds.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespaceIds": { + "description": "An empty list represents all namespaces. This is the preferred\nusage for projects that don't use namespaces.\n\nAn empty string element represents the default namespace. This should be\nused if the project has data in non-default namespaces, but doesn't want to\ninclude them.\nEach namespace in this list must be unique.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Identifies a subset of entities in a project. This is specified as\ncombinations of kind + namespace (either or both of which may be all, as\ndescribed in the following examples).\nExample usage:\n\nEntire project:\n kinds=[], namespace_ids=[]\n\nKinds Foo and Bar in all namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=[]\n\nKinds Foo and Bar only in the default namespace:\n kinds=['Foo', 'Bar'], namespace_ids=['']\n\nKinds Foo and Bar in both the default and Baz namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz']\n\nThe entire Baz namespace:\n kinds=[], namespace_ids=['Baz']", + "type": "object" + } + }, + "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "version": "v1beta1", + "baseUrl": "https://datastore.googleapis.com/", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/datastore": { + "description": "View and manage your Google Cloud Datastore data" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "servicePath": "", + "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n", + "kind": "discovery#restDescription", + "rootUrl": "https://datastore.googleapis.com/", + "basePath": "" +} diff --git a/vendor/google.golang.org/api/datastore/v1beta1/datastore-gen.go b/vendor/google.golang.org/api/datastore/v1beta1/datastore-gen.go new file mode 100644 index 0000000..9110c87 --- /dev/null +++ b/vendor/google.golang.org/api/datastore/v1beta1/datastore-gen.go @@ -0,0 +1,1000 @@ +// Package datastore provides access to the Google Cloud Datastore API. +// +// See https://cloud.google.com/datastore/ +// +// Usage example: +// +// import "google.golang.org/api/datastore/v1beta1" +// ... +// datastoreService, err := datastore.New(oauthHttpClient) +package datastore // import "google.golang.org/api/datastore/v1beta1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "datastore:v1beta1" +const apiName = "datastore" +const apiVersion = "v1beta1" +const basePath = "https://datastore.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // View and manage your data across Google Cloud Platform services + CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" + + // View and manage your Google Cloud Datastore data + DatastoreScope = "https://www.googleapis.com/auth/datastore" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Projects = NewProjectsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Projects *ProjectsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewProjectsService(s *Service) *ProjectsService { + rs := &ProjectsService{s: s} + return rs +} + +type ProjectsService struct { + s *Service +} + +// GoogleDatastoreAdminV1beta1CommonMetadata: Metadata common to all +// Datastore Admin operations. +type GoogleDatastoreAdminV1beta1CommonMetadata struct { + // EndTime: The time the operation ended, either successfully or + // otherwise. + EndTime string `json:"endTime,omitempty"` + + // Labels: The client-assigned labels which were provided when the + // operation was + // created. May also include additional labels. + Labels map[string]string `json:"labels,omitempty"` + + // OperationType: The type of the operation. Can be used as a filter + // in + // ListOperationsRequest. + // + // Possible values: + // "OPERATION_TYPE_UNSPECIFIED" - Unspecified. + // "EXPORT_ENTITIES" - ExportEntities. + // "IMPORT_ENTITIES" - ImportEntities. + // "BUILD_INDEX" - Build an index. + // "CLEAR_INDEX" - Clear an index. + OperationType string `json:"operationType,omitempty"` + + // StartTime: The time that work began on the operation. + StartTime string `json:"startTime,omitempty"` + + // State: The current state of the Operation. + // + // Possible values: + // "STATE_UNSPECIFIED" - Unspecified. + // "INITIALIZING" - Request is being prepared for processing. + // "PROCESSING" - Request is actively being processed. + // "CANCELLING" - Request is in the process of being cancelled after + // user called + // longrunning.Operations.CancelOperation on the operation. + // "FINALIZING" - Request has been processed and is in its + // finalization stage. + // "SUCCESSFUL" - Request has completed successfully. + // "FAILED" - Request has finished being processed, but encountered an + // error. + // "CANCELLED" - Request has finished being cancelled after user + // called + // longrunning.Operations.CancelOperation. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1CommonMetadata) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1CommonMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1EntityFilter: Identifies a subset of +// entities in a project. This is specified as +// combinations of kind + namespace (either or both of which may be all, +// as +// described in the following examples). +// Example usage: +// +// Entire project: +// kinds=[], namespace_ids=[] +// +// Kinds Foo and Bar in all namespaces: +// kinds=['Foo', 'Bar'], namespace_ids=[] +// +// Kinds Foo and Bar only in the default namespace: +// kinds=['Foo', 'Bar'], namespace_ids=[''] +// +// Kinds Foo and Bar in both the default and Baz namespaces: +// kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz'] +// +// The entire Baz namespace: +// kinds=[], namespace_ids=['Baz'] +type GoogleDatastoreAdminV1beta1EntityFilter struct { + // Kinds: If empty, then this represents all kinds. + Kinds []string `json:"kinds,omitempty"` + + // NamespaceIds: An empty list represents all namespaces. This is the + // preferred + // usage for projects that don't use namespaces. + // + // An empty string element represents the default namespace. This + // should be + // used if the project has data in non-default namespaces, but doesn't + // want to + // include them. + // Each namespace in this list must be unique. + NamespaceIds []string `json:"namespaceIds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Kinds") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Kinds") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1EntityFilter) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1EntityFilter + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1ExportEntitiesMetadata: Metadata for +// ExportEntities operations. +type GoogleDatastoreAdminV1beta1ExportEntitiesMetadata struct { + // Common: Metadata common to all Datastore Admin operations. + Common *GoogleDatastoreAdminV1beta1CommonMetadata `json:"common,omitempty"` + + // EntityFilter: Description of which entities are being exported. + EntityFilter *GoogleDatastoreAdminV1beta1EntityFilter `json:"entityFilter,omitempty"` + + // OutputUrlPrefix: Location for the export metadata and data files. + // This will be the same + // value as + // the + // google.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_pr + // efix + // field. The final output location is provided + // in + // google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url. + OutputUrlPrefix string `json:"outputUrlPrefix,omitempty"` + + // ProgressBytes: An estimate of the number of bytes processed. + ProgressBytes *GoogleDatastoreAdminV1beta1Progress `json:"progressBytes,omitempty"` + + // ProgressEntities: An estimate of the number of entities processed. + ProgressEntities *GoogleDatastoreAdminV1beta1Progress `json:"progressEntities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Common") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Common") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1ExportEntitiesMetadata) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1ExportEntitiesMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1ExportEntitiesRequest: The request +// for +// google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities. +type GoogleDatastoreAdminV1beta1ExportEntitiesRequest struct { + // EntityFilter: Description of what data from the project is included + // in the export. + EntityFilter *GoogleDatastoreAdminV1beta1EntityFilter `json:"entityFilter,omitempty"` + + // Labels: Client-assigned labels. + Labels map[string]string `json:"labels,omitempty"` + + // OutputUrlPrefix: Location for the export metadata and data + // files. + // + // The full resource URL of the external storage location. Currently, + // only + // Google Cloud Storage is supported. So output_url_prefix should be of + // the + // form: `gs://BUCKET_NAME[/NAMESPACE_PATH]`, where `BUCKET_NAME` is + // the + // name of the Cloud Storage bucket and `NAMESPACE_PATH` is an optional + // Cloud + // Storage namespace path (this is not a Cloud Datastore namespace). For + // more + // information about Cloud Storage namespace paths, see + // [Object + // name + // considerations](https://cloud.google.com/storage/docs/naming#obje + // ct-considerations). + // + // The resulting files will be nested deeper than the specified URL + // prefix. + // The final output URL will be provided in + // the + // google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url + // f + // ield. That value should be used for subsequent ImportEntities + // operations. + // + // By nesting the data files deeper, the same Cloud Storage bucket can + // be used + // in multiple ExportEntities operations without conflict. + OutputUrlPrefix string `json:"outputUrlPrefix,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EntityFilter") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EntityFilter") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1ExportEntitiesRequest) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1ExportEntitiesRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1ExportEntitiesResponse: The response +// for +// google.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities. +type GoogleDatastoreAdminV1beta1ExportEntitiesResponse struct { + // OutputUrl: Location of the output metadata file. This can be used to + // begin an import + // into Cloud Datastore (this project or another project). + // See + // google.datastore.admin.v1beta1.ImportEntitiesRequest.input_url. + // On + // ly present if the operation completed successfully. + OutputUrl string `json:"outputUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OutputUrl") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OutputUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1ExportEntitiesResponse) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1ExportEntitiesResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1ImportEntitiesMetadata: Metadata for +// ImportEntities operations. +type GoogleDatastoreAdminV1beta1ImportEntitiesMetadata struct { + // Common: Metadata common to all Datastore Admin operations. + Common *GoogleDatastoreAdminV1beta1CommonMetadata `json:"common,omitempty"` + + // EntityFilter: Description of which entities are being imported. + EntityFilter *GoogleDatastoreAdminV1beta1EntityFilter `json:"entityFilter,omitempty"` + + // InputUrl: The location of the import metadata file. This will be the + // same value as + // the + // google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url + // field + // . + InputUrl string `json:"inputUrl,omitempty"` + + // ProgressBytes: An estimate of the number of bytes processed. + ProgressBytes *GoogleDatastoreAdminV1beta1Progress `json:"progressBytes,omitempty"` + + // ProgressEntities: An estimate of the number of entities processed. + ProgressEntities *GoogleDatastoreAdminV1beta1Progress `json:"progressEntities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Common") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Common") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1ImportEntitiesMetadata) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1ImportEntitiesMetadata + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1ImportEntitiesRequest: The request +// for +// google.datastore.admin.v1beta1.DatastoreAdmin.ImportEntities. +type GoogleDatastoreAdminV1beta1ImportEntitiesRequest struct { + // EntityFilter: Optionally specify which kinds/namespaces are to be + // imported. If provided, + // the list must be a subset of the EntityFilter used in creating the + // export, + // otherwise a FAILED_PRECONDITION error will be returned. If no filter + // is + // specified then all entities from the export are imported. + EntityFilter *GoogleDatastoreAdminV1beta1EntityFilter `json:"entityFilter,omitempty"` + + // InputUrl: The full resource URL of the external storage location. + // Currently, only + // Google Cloud Storage is supported. So input_url should be of the + // form: + // `gs://BUCKET_NAME[/NAMESPACE_PATH]/OVERALL_EXPORT_METADATA_FILE` + // , where + // `BUCKET_NAME` is the name of the Cloud Storage bucket, + // `NAMESPACE_PATH` is + // an optional Cloud Storage namespace path (this is not a Cloud + // Datastore + // namespace), and `OVERALL_EXPORT_METADATA_FILE` is the metadata file + // written + // by the ExportEntities operation. For more information about Cloud + // Storage + // namespace paths, see + // [Object + // name + // considerations](https://cloud.google.com/storage/docs/naming#obje + // ct-considerations). + // + // For more information, + // see + // google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url. + InputUrl string `json:"inputUrl,omitempty"` + + // Labels: Client-assigned labels. + Labels map[string]string `json:"labels,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EntityFilter") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EntityFilter") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1ImportEntitiesRequest) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1ImportEntitiesRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleDatastoreAdminV1beta1Progress: Measures the progress of a +// particular metric. +type GoogleDatastoreAdminV1beta1Progress struct { + // WorkCompleted: Note that this may be greater than work_estimated. + WorkCompleted int64 `json:"workCompleted,omitempty,string"` + + // WorkEstimated: An estimate of how much work needs to be performed. + // May be zero if the + // work estimate is unavailable. + WorkEstimated int64 `json:"workEstimated,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "WorkCompleted") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "WorkCompleted") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleDatastoreAdminV1beta1Progress) MarshalJSON() ([]byte, error) { + type noMethod GoogleDatastoreAdminV1beta1Progress + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleLongrunningOperation: This resource represents a long-running +// operation that is the result of a +// network API call. +type GoogleLongrunningOperation struct { + // Done: If the value is `false`, it means the operation is still in + // progress. + // If true, the operation is completed, and either `error` or `response` + // is + // available. + Done bool `json:"done,omitempty"` + + // Error: The error result of the operation in case of failure or + // cancellation. + Error *Status `json:"error,omitempty"` + + // Metadata: Service-specific metadata associated with the operation. + // It typically + // contains progress information and common metadata such as create + // time. + // Some services might not provide such metadata. Any method that + // returns a + // long-running operation should document the metadata type, if any. + Metadata googleapi.RawMessage `json:"metadata,omitempty"` + + // Name: The server-assigned name, which is only unique within the same + // service that + // originally returns it. If you use the default HTTP mapping, + // the + // `name` should have the format of `operations/some/unique/name`. + Name string `json:"name,omitempty"` + + // Response: The normal response of the operation in case of success. + // If the original + // method returns no data on success, such as `Delete`, the response + // is + // `google.protobuf.Empty`. If the original method is + // standard + // `Get`/`Create`/`Update`, the response should be the resource. For + // other + // methods, the response should have the type `XxxResponse`, where + // `Xxx` + // is the original method name. For example, if the original method + // name + // is `TakeSnapshot()`, the inferred response type + // is + // `TakeSnapshotResponse`. + Response googleapi.RawMessage `json:"response,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Done") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Done") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) { + type noMethod GoogleLongrunningOperation + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Status: The `Status` type defines a logical error model that is +// suitable for different +// programming environments, including REST APIs and RPC APIs. It is +// used by +// [gRPC](https://github.com/grpc). The error model is designed to +// be: +// +// - Simple to use and understand for most users +// - Flexible enough to meet unexpected needs +// +// # Overview +// +// The `Status` message contains three pieces of data: error code, error +// message, +// and error details. The error code should be an enum value +// of +// google.rpc.Code, but it may accept additional error codes if needed. +// The +// error message should be a developer-facing English message that +// helps +// developers *understand* and *resolve* the error. If a localized +// user-facing +// error message is needed, put the localized message in the error +// details or +// localize it in the client. The optional error details may contain +// arbitrary +// information about the error. There is a predefined set of error +// detail types +// in the package `google.rpc` that can be used for common error +// conditions. +// +// # Language mapping +// +// The `Status` message is the logical representation of the error +// model, but it +// is not necessarily the actual wire format. When the `Status` message +// is +// exposed in different client libraries and different wire protocols, +// it can be +// mapped differently. For example, it will likely be mapped to some +// exceptions +// in Java, but more likely mapped to some error codes in C. +// +// # Other uses +// +// The error model and the `Status` message can be used in a variety +// of +// environments, either with or without APIs, to provide a +// consistent developer experience across different +// environments. +// +// Example uses of this error model include: +// +// - Partial errors. If a service needs to return partial errors to the +// client, +// it may embed the `Status` in the normal response to indicate the +// partial +// errors. +// +// - Workflow errors. A typical workflow has multiple steps. Each step +// may +// have a `Status` message for error reporting. +// +// - Batch operations. If a client uses batch request and batch +// response, the +// `Status` message should be used directly inside batch response, +// one for +// each error sub-response. +// +// - Asynchronous operations. If an API call embeds asynchronous +// operation +// results in its response, the status of those operations should +// be +// represented directly using the `Status` message. +// +// - Logging. If some API errors are stored in logs, the message +// `Status` could +// be used directly after any stripping needed for security/privacy +// reasons. +type Status struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of + // message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any + // user-facing error message should be localized and sent in + // the + // google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Status) MarshalJSON() ([]byte, error) { + type noMethod Status + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "datastore.projects.export": + +type ProjectsExportCall struct { + s *Service + projectId string + googledatastoreadminv1beta1exportentitiesrequest *GoogleDatastoreAdminV1beta1ExportEntitiesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Export: Exports a copy of all or a subset of entities from Google +// Cloud Datastore +// to another storage system, such as Google Cloud Storage. Recent +// updates to +// entities may not be reflected in the export. The export occurs in +// the +// background and its progress can be monitored and managed via +// the +// Operation resource that is created. The output of an export may only +// be +// used once the associated operation is done. If an export operation +// is +// cancelled before completion it may leave partial data behind in +// Google +// Cloud Storage. +func (r *ProjectsService) Export(projectId string, googledatastoreadminv1beta1exportentitiesrequest *GoogleDatastoreAdminV1beta1ExportEntitiesRequest) *ProjectsExportCall { + c := &ProjectsExportCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.googledatastoreadminv1beta1exportentitiesrequest = googledatastoreadminv1beta1exportentitiesrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsExportCall) Fields(s ...googleapi.Field) *ProjectsExportCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsExportCall) Context(ctx context.Context) *ProjectsExportCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsExportCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsExportCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googledatastoreadminv1beta1exportentitiesrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}:export") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "datastore.projects.export" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsExportCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Exports a copy of all or a subset of entities from Google Cloud Datastore\nto another storage system, such as Google Cloud Storage. Recent updates to\nentities may not be reflected in the export. The export occurs in the\nbackground and its progress can be monitored and managed via the\nOperation resource that is created. The output of an export may only be\nused once the associated operation is done. If an export operation is\ncancelled before completion it may leave partial data behind in Google\nCloud Storage.", + // "flatPath": "v1beta1/projects/{projectId}:export", + // "httpMethod": "POST", + // "id": "datastore.projects.export", + // "parameterOrder": [ + // "projectId" + // ], + // "parameters": { + // "projectId": { + // "description": "Project ID against which to make the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}:export", + // "request": { + // "$ref": "GoogleDatastoreAdminV1beta1ExportEntitiesRequest" + // }, + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/datastore" + // ] + // } + +} + +// method id "datastore.projects.import": + +type ProjectsImportCall struct { + s *Service + projectId string + googledatastoreadminv1beta1importentitiesrequest *GoogleDatastoreAdminV1beta1ImportEntitiesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Import: Imports entities into Google Cloud Datastore. Existing +// entities with the +// same key are overwritten. The import occurs in the background and +// its +// progress can be monitored and managed via the Operation resource that +// is +// created. If an ImportEntities operation is cancelled, it is +// possible +// that a subset of the data has already been imported to Cloud +// Datastore. +func (r *ProjectsService) Import(projectId string, googledatastoreadminv1beta1importentitiesrequest *GoogleDatastoreAdminV1beta1ImportEntitiesRequest) *ProjectsImportCall { + c := &ProjectsImportCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.googledatastoreadminv1beta1importentitiesrequest = googledatastoreadminv1beta1importentitiesrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsImportCall) Fields(s ...googleapi.Field) *ProjectsImportCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsImportCall) Context(ctx context.Context) *ProjectsImportCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsImportCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsImportCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googledatastoreadminv1beta1importentitiesrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/projects/{projectId}:import") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "datastore.projects.import" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsImportCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Imports entities into Google Cloud Datastore. Existing entities with the\nsame key are overwritten. The import occurs in the background and its\nprogress can be monitored and managed via the Operation resource that is\ncreated. If an ImportEntities operation is cancelled, it is possible\nthat a subset of the data has already been imported to Cloud Datastore.", + // "flatPath": "v1beta1/projects/{projectId}:import", + // "httpMethod": "POST", + // "id": "datastore.projects.import", + // "parameterOrder": [ + // "projectId" + // ], + // "parameters": { + // "projectId": { + // "description": "Project ID against which to make the request.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/projects/{projectId}:import", + // "request": { + // "$ref": "GoogleDatastoreAdminV1beta1ImportEntitiesRequest" + // }, + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform", + // "https://www.googleapis.com/auth/datastore" + // ] + // } + +} diff --git a/vendor/google.golang.org/api/datastore/v1beta3/datastore-api.json b/vendor/google.golang.org/api/datastore/v1beta3/datastore-api.json index 22950c8..78f988c 100644 --- a/vendor/google.golang.org/api/datastore/v1beta3/datastore-api.json +++ b/vendor/google.golang.org/api/datastore/v1beta3/datastore-api.json @@ -1,14 +1,186 @@ { + "title": "Google Cloud Datastore API", + "discoveryVersion": "v1", + "ownerName": "Google", + "version_module": true, + "resources": { + "projects": { + "methods": { + "allocateIds": { + "description": "Allocates IDs for the given keys, which is useful for referencing an entity\nbefore it is inserted.", + "request": { + "$ref": "AllocateIdsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "projectId" + ], + "response": { + "$ref": "AllocateIdsResponse" + }, + "parameters": { + "projectId": { + "location": "path", + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1beta3/projects/{projectId}:allocateIds", + "path": "v1beta3/projects/{projectId}:allocateIds", + "id": "datastore.projects.allocateIds" + }, + "commit": { + "request": { + "$ref": "CommitRequest" + }, + "description": "Commits a transaction, optionally creating, deleting or modifying some\nentities.", + "response": { + "$ref": "CommitResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "parameters": { + "projectId": { + "location": "path", + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta3/projects/{projectId}:commit", + "id": "datastore.projects.commit", + "path": "v1beta3/projects/{projectId}:commit" + }, + "beginTransaction": { + "id": "datastore.projects.beginTransaction", + "path": "v1beta3/projects/{projectId}:beginTransaction", + "description": "Begins a new transaction.", + "request": { + "$ref": "BeginTransactionRequest" + }, + "response": { + "$ref": "BeginTransactionResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "location": "path", + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1beta3/projects/{projectId}:beginTransaction" + }, + "runQuery": { + "description": "Queries for entities.", + "request": { + "$ref": "RunQueryRequest" + }, + "response": { + "$ref": "RunQueryResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "type": "string", + "required": true, + "location": "path", + "description": "The ID of the project against which to make the request." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1beta3/projects/{projectId}:runQuery", + "id": "datastore.projects.runQuery", + "path": "v1beta3/projects/{projectId}:runQuery" + }, + "rollback": { + "response": { + "$ref": "RollbackResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST", + "parameters": { + "projectId": { + "location": "path", + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1beta3/projects/{projectId}:rollback", + "id": "datastore.projects.rollback", + "path": "v1beta3/projects/{projectId}:rollback", + "description": "Rolls back a transaction.", + "request": { + "$ref": "RollbackRequest" + } + }, + "lookup": { + "parameters": { + "projectId": { + "description": "The ID of the project against which to make the request.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/datastore" + ], + "flatPath": "v1beta3/projects/{projectId}:lookup", + "id": "datastore.projects.lookup", + "path": "v1beta3/projects/{projectId}:lookup", + "description": "Looks up entities by key.", + "request": { + "$ref": "LookupRequest" + }, + "response": { + "$ref": "LookupResponse" + }, + "parameterOrder": [ + "projectId" + ], + "httpMethod": "POST" + } + } + } + }, "parameters": { - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", "location": "query" }, "uploadType": { @@ -16,36 +188,25 @@ "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "callback": { - "type": "string", - "location": "query", - "description": "JSONP" - }, "$.xgafv": { + "enum": [ + "1", + "2" + ], "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], + "location": "query" + }, + "callback": { "location": "query", - "enum": [ - "1", - "2" - ] + "description": "JSONP", + "type": "string" }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -53,7 +214,13 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" }, "access_token": { "description": "OAuth access token.", @@ -61,9 +228,9 @@ "location": "query" }, "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", - "location": "query" + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." }, "quotaUser": { "location": "query", @@ -76,36 +243,182 @@ "default": "true", "type": "boolean" }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, "oauth_token": { + "location": "query", "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", "location": "query" } }, "schemas": { + "RollbackRequest": { + "type": "object", + "properties": { + "transaction": { + "format": "byte", + "description": "The transaction identifier, returned by a call to\nDatastore.BeginTransaction.", + "type": "string" + } + }, + "id": "RollbackRequest", + "description": "The request for Datastore.Rollback." + }, + "RunQueryRequest": { + "properties": { + "gqlQuery": { + "$ref": "GqlQuery", + "description": "The GQL query to run." + }, + "partitionId": { + "$ref": "PartitionId", + "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID." + }, + "readOptions": { + "$ref": "ReadOptions", + "description": "The options for this query." + }, + "query": { + "$ref": "Query", + "description": "The query to run." + } + }, + "id": "RunQueryRequest", + "description": "The request for Datastore.RunQuery.", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata": { + "description": "Metadata for ExportEntities operations.", + "type": "object", + "properties": { + "common": { + "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata", + "description": "Metadata common to all Datastore Admin operations." + }, + "progressBytes": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of bytes processed." + }, + "outputUrlPrefix": { + "description": "Location for the export metadata and data files. This will be the same\nvalue as the\ngoogle.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix\nfield. The final output location is provided in\ngoogle.datastore.admin.v1beta1.ExportEntitiesResponse.output_url.", + "type": "string" + }, + "entityFilter": { + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Description of which entities are being exported." + }, + "progressEntities": { + "$ref": "GoogleDatastoreAdminV1beta1Progress", + "description": "An estimate of the number of entities processed." + } + }, + "id": "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata" + }, + "TransactionOptions": { + "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.", + "type": "object", + "properties": { + "readOnly": { + "$ref": "ReadOnly", + "description": "The transaction should only allow reads." + }, + "readWrite": { + "$ref": "ReadWrite", + "description": "The transaction should allow both reads and writes." + } + }, + "id": "TransactionOptions" + }, + "CompositeFilter": { + "description": "A filter that merges multiple other filters using the given operator.", + "type": "object", + "properties": { + "filters": { + "description": "The list of filters to combine.\nMust contain at least one filter.", + "items": { + "$ref": "Filter" + }, + "type": "array" + }, + "op": { + "enumDescriptions": [ + "Unspecified. This value must not be used.", + "The results are required to satisfy each of the combined filters." + ], + "enum": [ + "OPERATOR_UNSPECIFIED", + "AND" + ], + "description": "The operator for combining multiple filters.", + "type": "string" + } + }, + "id": "CompositeFilter" + }, + "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": { + "description": "Metadata for ImportEntities operations.", + "type": "object", + "properties": { + "common": { + "description": "Metadata common to all Datastore Admin operations.", + "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" + }, + "inputUrl": { + "description": "The location of the import metadata file. This will be the same value as\nthe google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield.", + "type": "string" + }, + "progressBytes": { + "description": "An estimate of the number of bytes processed.", + "$ref": "GoogleDatastoreAdminV1beta1Progress" + }, + "entityFilter": { + "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Description of which entities are being imported." + }, + "progressEntities": { + "description": "An estimate of the number of entities processed.", + "$ref": "GoogleDatastoreAdminV1beta1Progress" + } + }, + "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata" + }, "AllocateIdsResponse": { "type": "object", "properties": { "keys": { - "description": "The keys specified in the request (in the same order), each with\nits key path completed with a newly allocated ID.", "items": { "$ref": "Key" }, - "type": "array" + "type": "array", + "description": "The keys specified in the request (in the same order), each with\nits key path completed with a newly allocated ID." } }, "id": "AllocateIdsResponse", "description": "The response for Datastore.AllocateIds." }, "Query": { - "description": "A query for entities.", - "type": "object", "properties": { + "order": { + "items": { + "$ref": "PropertyOrder" + }, + "type": "array", + "description": "The order to apply to the query results (if empty, order is unspecified)." + }, "projection": { "description": "The projection to return. Defaults to returning all properties.", "items": { @@ -118,25 +431,25 @@ "description": "An ending point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to limit the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).", "type": "string" }, + "filter": { + "description": "The filter to apply.", + "$ref": "Filter" + }, "limit": { "format": "int32", "description": "The maximum number of results to return. Applies after all other\nconstraints. Optional.\nUnspecified is interpreted as no limit.\nMust be \u003e= 0 if specified.", "type": "integer" }, - "filter": { - "$ref": "Filter", - "description": "The filter to apply." + "offset": { + "format": "int32", + "description": "The number of results to skip. Applies before limit, but after all other\nconstraints. Optional. Must be \u003e= 0 if specified.", + "type": "integer" }, "startCursor": { "format": "byte", "description": "A starting point for the query results. Query cursors are\nreturned in query result batches and\n[can only be used to continue the same query](https://cloud.google.com/datastore/docs/concepts/queries#cursors_limits_and_offsets).", "type": "string" }, - "offset": { - "format": "int32", - "description": "The number of results to skip. Applies before limit, but after all other\nconstraints. Optional. Must be \u003e= 0 if specified.", - "type": "integer" - }, "kind": { "description": "The kinds to query (if empty, returns entities of all kinds).\nCurrently at most 1 kind may be specified.", "items": { @@ -145,27 +458,22 @@ "type": "array" }, "distinctOn": { - "description": "The properties to make distinct. The query results will contain the first\nresult for each distinct combination of values for the given properties\n(if empty, all results are returned).", "items": { "$ref": "PropertyReference" }, - "type": "array" - }, - "order": { - "description": "The order to apply to the query results (if empty, order is unspecified).", - "items": { - "$ref": "PropertyOrder" - }, - "type": "array" + "type": "array", + "description": "The properties to make distinct. The query results will contain the first\nresult for each distinct combination of values for the given properties\n(if empty, all results are returned)." } }, - "id": "Query" + "id": "Query", + "description": "A query for entities.", + "type": "object" }, "ReadOnly": { - "id": "ReadOnly", "description": "Options specific to read-only transactions.", "type": "object", - "properties": {} + "properties": {}, + "id": "ReadOnly" }, "PropertyFilter": { "properties": { @@ -178,15 +486,6 @@ "description": "The property to filter by." }, "op": { - "enumDescriptions": [ - "Unspecified. This value must not be used.", - "Less than.", - "Less than or equal.", - "Greater than.", - "Greater than or equal.", - "Equal.", - "Has ancestor." - ], "enum": [ "OPERATOR_UNSPECIFIED", "LESS_THAN", @@ -197,7 +496,16 @@ "HAS_ANCESTOR" ], "description": "The operator to filter by.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unspecified. This value must not be used.", + "Less than.", + "Less than or equal.", + "Greater than.", + "Greater than or equal.", + "Equal.", + "Has ancestor." + ] } }, "id": "PropertyFilter", @@ -219,20 +527,64 @@ "type": "string" }, "entity": { - "description": "The resulting entity.", - "$ref": "Entity" + "$ref": "Entity", + "description": "The resulting entity." } }, "id": "EntityResult" }, + "CommitResponse": { + "description": "The response for Datastore.Commit.", + "type": "object", + "properties": { + "indexUpdates": { + "format": "int32", + "description": "The number of index entries updated during the commit, or zero if none were\nupdated.", + "type": "integer" + }, + "mutationResults": { + "description": "The result of performing the mutations.\nThe i-th mutation result corresponds to the i-th mutation in the request.", + "items": { + "$ref": "MutationResult" + }, + "type": "array" + } + }, + "id": "CommitResponse" + }, "Value": { "description": "A message that can hold any of the supported value types and associated\nmetadata.", "type": "object", "properties": { + "entityValue": { + "$ref": "Entity", + "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key." + }, + "geoPointValue": { + "description": "A geo point value representing a point on the surface of Earth.", + "$ref": "LatLng" + }, + "integerValue": { + "type": "string", + "format": "int64", + "description": "An integer value." + }, + "keyValue": { + "$ref": "Key", + "description": "A key value." + }, + "stringValue": { + "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.", + "type": "string" + }, + "excludeFromIndexes": { + "description": "If the value should be excluded from all indexes including those defined\nexplicitly.", + "type": "boolean" + }, "doubleValue": { - "type": "number", "format": "double", - "description": "A double value." + "description": "A double value.", + "type": "number" }, "timestampValue": { "format": "google-datetime", @@ -244,14 +596,14 @@ "type": "boolean" }, "nullValue": { - "type": "string", "enumDescriptions": [ "Null value." ], "enum": [ "NULL_VALUE" ], - "description": "A null value." + "description": "A null value.", + "type": "string" }, "blobValue": { "format": "byte", @@ -266,128 +618,120 @@ "arrayValue": { "$ref": "ArrayValue", "description": "An array value.\nCannot contain another array value.\nA `Value` instance that sets field `array_value` must not set fields\n`meaning` or `exclude_from_indexes`." - }, - "entityValue": { - "description": "An entity value.\n\n- May have no key.\n- May have a key with an incomplete key path.\n- May have a reserved/read-only key.", - "$ref": "Entity" - }, - "geoPointValue": { - "$ref": "LatLng", - "description": "A geo point value representing a point on the surface of Earth." - }, - "integerValue": { - "format": "int64", - "description": "An integer value.", - "type": "string" - }, - "keyValue": { - "description": "A key value.", - "$ref": "Key" - }, - "stringValue": { - "description": "A UTF-8 encoded string value.\nWhen `exclude_from_indexes` is false (it is indexed) , may have at most 1500 bytes.\nOtherwise, may be set to at least 1,000,000 bytes.", - "type": "string" - }, - "excludeFromIndexes": { - "type": "boolean", - "description": "If the value should be excluded from all indexes including those defined\nexplicitly." } }, "id": "Value" }, - "CommitResponse": { - "description": "The response for Datastore.Commit.", - "type": "object", - "properties": { - "mutationResults": { - "description": "The result of performing the mutations.\nThe i-th mutation result corresponds to the i-th mutation in the request.", - "items": { - "$ref": "MutationResult" - }, - "type": "array" - }, - "indexUpdates": { - "format": "int32", - "description": "The number of index entries updated during the commit, or zero if none were\nupdated.", - "type": "integer" - } - }, - "id": "CommitResponse" - }, "PartitionId": { "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty.\n\nA partition ID contains several dimensions:\nproject ID and namespace ID.\n\nPartition dimensions:\n\n- May be `\"\"`.\n- Must be valid UTF-8 bytes.\n- Must have values that match regex `[A-Za-z\\d\\.\\-_]{1,100}`\nIf the value of any dimension matches regex `__.*__`, the partition is\nreserved/read-only.\nA reserved/read-only partition ID is forbidden in certain documented\ncontexts.\n\nForeign partition IDs (in which the project ID does\nnot match the context project ID ) are discouraged.\nReads and writes of foreign partition IDs may fail if the project is not in an active state.", "type": "object", "properties": { + "namespaceId": { + "type": "string", + "description": "If not empty, the ID of the namespace to which the entities belong." + }, "projectId": { "description": "The ID of the project to which the entities belong.", "type": "string" - }, - "namespaceId": { - "description": "If not empty, the ID of the namespace to which the entities belong.", - "type": "string" } }, "id": "PartitionId" }, - "Entity": { - "properties": { - "key": { - "$ref": "Key", - "description": "The entity's key.\n\nAn entity must have a key, unless otherwise documented (for example,\nan entity in `Value.entity_value` may have no key).\nAn entity's kind is its key path's last element's kind,\nor null if it has no key." - }, - "properties": { - "additionalProperties": { - "$ref": "Value" - }, - "description": "The entity's properties.\nThe map's keys are property names.\nA property name matching regex `__.*__` is reserved.\nA reserved property name is forbidden in certain documented contexts.\nThe name must not contain more than 500 characters.\nThe name cannot be `\"\"`.", - "type": "object" - } - }, - "id": "Entity", - "description": "A Datastore data object.\n\nAn entity is limited to 1 megabyte when stored. That _roughly_\ncorresponds to a limit of 1 megabyte for the serialized form of this\nmessage.", - "type": "object" - }, "ReadWrite": { "description": "Options specific to read / write transactions.", "type": "object", "properties": { "previousTransaction": { + "type": "string", "format": "byte", - "description": "The transaction identifier of the transaction being retried.", - "type": "string" + "description": "The transaction identifier of the transaction being retried." } }, "id": "ReadWrite" }, - "LookupRequest": { - "description": "The request for Datastore.Lookup.", + "Entity": { + "description": "A Datastore data object.\n\nAn entity is limited to 1 megabyte when stored. That _roughly_\ncorresponds to a limit of 1 megabyte for the serialized form of this\nmessage.", "type": "object", "properties": { - "keys": { - "description": "Keys of entities to look up.", + "properties": { + "additionalProperties": { + "$ref": "Value" + }, + "description": "The entity's properties.\nThe map's keys are property names.\nA property name matching regex `__.*__` is reserved.\nA reserved property name is forbidden in certain documented contexts.\nThe name must not contain more than 500 characters.\nThe name cannot be `\"\"`.", + "type": "object" + }, + "key": { + "$ref": "Key", + "description": "The entity's key.\n\nAn entity must have a key, unless otherwise documented (for example,\nan entity in `Value.entity_value` may have no key).\nAn entity's kind is its key path's last element's kind,\nor null if it has no key." + } + }, + "id": "Entity" + }, + "GoogleDatastoreAdminV1beta1Progress": { + "description": "Measures the progress of a particular metric.", + "type": "object", + "properties": { + "workEstimated": { + "format": "int64", + "description": "An estimate of how much work needs to be performed. May be zero if the\nwork estimate is unavailable.", + "type": "string" + }, + "workCompleted": { + "format": "int64", + "description": "Note that this may be greater than work_estimated.", + "type": "string" + } + }, + "id": "GoogleDatastoreAdminV1beta1Progress" + }, + "QueryResultBatch": { + "description": "A batch of results produced by a query.", + "type": "object", + "properties": { + "entityResults": { + "description": "The results for this batch.", "items": { - "$ref": "Key" + "$ref": "EntityResult" }, "type": "array" }, - "readOptions": { - "$ref": "ReadOptions", - "description": "The options for this lookup request." - } - }, - "id": "LookupRequest" - }, - "QueryResultBatch": { - "properties": { + "endCursor": { + "format": "byte", + "description": "A cursor that points to the position after the last result in the batch.", + "type": "string" + }, + "moreResults": { + "description": "The state of the query after the current batch.", + "type": "string", + "enumDescriptions": [ + "Unspecified. This value is never used.", + "There may be additional batches to fetch from this query.", + "The query is finished, but there may be more results after the limit.", + "The query is finished, but there may be more results after the end\ncursor.", + "The query is finished, and there are no more results." + ], + "enum": [ + "MORE_RESULTS_TYPE_UNSPECIFIED", + "NOT_FINISHED", + "MORE_RESULTS_AFTER_LIMIT", + "MORE_RESULTS_AFTER_CURSOR", + "NO_MORE_RESULTS" + ] + }, + "snapshotVersion": { + "format": "int64", + "description": "The version number of the snapshot this batch was returned from.\nThis applies to the range of results from the query's `start_cursor` (or\nthe beginning of the query if no cursor was given) to this batch's\n`end_cursor` (not the query's `end_cursor`).\n\nIn a single transaction, subsequent query result batches for the same query\ncan have a greater snapshot version number. Each batch's snapshot version\nis valid for all preceding batches.\nThe value will be zero for eventually consistent queries.", + "type": "string" + }, "skippedCursor": { "format": "byte", "description": "A cursor that points to the position after the last skipped result.\nWill be set when `skipped_results` != 0.", "type": "string" }, "skippedResults": { - "type": "integer", "format": "int32", - "description": "The number of results skipped, typically because of an offset." + "description": "The number of results skipped, typically because of an offset.", + "type": "integer" }, "entityResultType": { "enumDescriptions": [ @@ -404,65 +748,30 @@ ], "description": "The result type for every entity in `entity_results`.", "type": "string" - }, - "entityResults": { - "description": "The results for this batch.", - "items": { - "$ref": "EntityResult" - }, - "type": "array" - }, - "endCursor": { - "format": "byte", - "description": "A cursor that points to the position after the last result in the batch.", - "type": "string" - }, - "moreResults": { - "enum": [ - "MORE_RESULTS_TYPE_UNSPECIFIED", - "NOT_FINISHED", - "MORE_RESULTS_AFTER_LIMIT", - "MORE_RESULTS_AFTER_CURSOR", - "NO_MORE_RESULTS" - ], - "description": "The state of the query after the current batch.", - "type": "string", - "enumDescriptions": [ - "Unspecified. This value is never used.", - "There may be additional batches to fetch from this query.", - "The query is finished, but there may be more results after the limit.", - "The query is finished, but there may be more results after the end\ncursor.", - "The query is finished, and there are no more results." - ] - }, - "snapshotVersion": { - "format": "int64", - "description": "The version number of the snapshot this batch was returned from.\nThis applies to the range of results from the query's `start_cursor` (or\nthe beginning of the query if no cursor was given) to this batch's\n`end_cursor` (not the query's `end_cursor`).\n\nIn a single transaction, subsequent query result batches for the same query\ncan have a greater snapshot version number. Each batch's snapshot version\nis valid for all preceding batches.\nThe value will be zero for eventually consistent queries.", - "type": "string" } }, - "id": "QueryResultBatch", - "description": "A batch of results produced by a query.", - "type": "object" + "id": "QueryResultBatch" }, - "GoogleDatastoreAdminV1beta1Progress": { - "description": "Measures the progress of a particular metric.", + "LookupRequest": { + "id": "LookupRequest", + "description": "The request for Datastore.Lookup.", "type": "object", "properties": { - "workEstimated": { - "type": "string", - "format": "int64", - "description": "An estimate of how much work needs to be performed. May be zero if the\nwork estimate is unavailable." + "readOptions": { + "$ref": "ReadOptions", + "description": "The options for this lookup request." }, - "workCompleted": { - "format": "int64", - "description": "Note that this may be greater than work_estimated.", - "type": "string" + "keys": { + "description": "Keys of entities to look up.", + "items": { + "$ref": "Key" + }, + "type": "array" } - }, - "id": "GoogleDatastoreAdminV1beta1Progress" + } }, "PathElement": { + "id": "PathElement", "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.", "type": "object", "properties": { @@ -479,24 +788,23 @@ "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.", "type": "string" } - }, - "id": "PathElement" + } }, "GqlQueryParameter": { - "id": "GqlQueryParameter", "description": "A binding parameter for a GQL query.", "type": "object", "properties": { - "value": { - "description": "A value parameter.", - "$ref": "Value" - }, "cursor": { "format": "byte", "description": "A query cursor. Query cursors are returned in query\nresult batches.", "type": "string" + }, + "value": { + "description": "A value parameter.", + "$ref": "Value" } - } + }, + "id": "GqlQueryParameter" }, "BeginTransactionResponse": { "type": "object", @@ -510,6 +818,49 @@ "id": "BeginTransactionResponse", "description": "The response for Datastore.BeginTransaction." }, + "RunQueryResponse": { + "description": "The response for Datastore.RunQuery.", + "type": "object", + "properties": { + "query": { + "$ref": "Query", + "description": "The parsed form of the `GqlQuery` from the request, if it was set." + }, + "batch": { + "description": "A batch of query results (always present).", + "$ref": "QueryResultBatch" + } + }, + "id": "RunQueryResponse" + }, + "LookupResponse": { + "description": "The response for Datastore.Lookup.", + "type": "object", + "properties": { + "deferred": { + "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.", + "items": { + "$ref": "Key" + }, + "type": "array" + }, + "missing": { + "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.", + "items": { + "$ref": "EntityResult" + }, + "type": "array" + }, + "found": { + "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.", + "items": { + "$ref": "EntityResult" + }, + "type": "array" + } + }, + "id": "LookupResponse" + }, "AllocateIdsRequest": { "description": "The request for Datastore.AllocateIds.", "type": "object", @@ -524,56 +875,47 @@ }, "id": "AllocateIdsRequest" }, - "LookupResponse": { - "description": "The response for Datastore.Lookup.", + "PropertyOrder": { + "description": "The desired order for a specific property.", "type": "object", "properties": { - "missing": { - "description": "Entities not found as `ResultType.KEY_ONLY` entities. The order of results\nin this field is undefined and has no relation to the order of the keys\nin the input.", - "items": { - "$ref": "EntityResult" - }, - "type": "array" + "direction": { + "type": "string", + "enumDescriptions": [ + "Unspecified. This value must not be used.", + "Ascending.", + "Descending." + ], + "enum": [ + "DIRECTION_UNSPECIFIED", + "ASCENDING", + "DESCENDING" + ], + "description": "The direction to order by. Defaults to `ASCENDING`." }, - "found": { - "description": "Entities found as `ResultType.FULL` entities. The order of results in this\nfield is undefined and has no relation to the order of the keys in the\ninput.", - "items": { - "$ref": "EntityResult" - }, - "type": "array" - }, - "deferred": { - "description": "A list of keys that were not looked up due to resource constraints. The\norder of results in this field is undefined and has no relation to the\norder of the keys in the input.", - "items": { - "$ref": "Key" - }, - "type": "array" + "property": { + "$ref": "PropertyReference", + "description": "The property to order by." } }, - "id": "LookupResponse" + "id": "PropertyOrder" }, - "RunQueryResponse": { - "description": "The response for Datastore.RunQuery.", + "BeginTransactionRequest": { + "description": "The request for Datastore.BeginTransaction.", "type": "object", "properties": { - "query": { - "$ref": "Query", - "description": "The parsed form of the `GqlQuery` from the request, if it was set." - }, - "batch": { - "$ref": "QueryResultBatch", - "description": "A batch of query results (always present)." + "transactionOptions": { + "$ref": "TransactionOptions", + "description": "Options for a new transaction." } }, - "id": "RunQueryResponse" + "id": "BeginTransactionRequest" }, "CommitRequest": { - "id": "CommitRequest", "description": "The request for Datastore.Commit.", "type": "object", "properties": { "mode": { - "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`.", "type": "string", "enumDescriptions": [ "Unspecified. This value must not be used.", @@ -584,7 +926,8 @@ "MODE_UNSPECIFIED", "TRANSACTIONAL", "NON_TRANSACTIONAL" - ] + ], + "description": "The type of commit to perform. Defaults to `TRANSACTIONAL`." }, "mutations": { "description": "The mutations to perform.\n\nWhen mode is `TRANSACTIONAL`, mutations affecting a single entity are\napplied in order. The following sequences of mutations affecting a single\nentity are not permitted in a single `Commit` request:\n\n- `insert` followed by `insert`\n- `update` followed by `insert`\n- `upsert` followed by `insert`\n- `delete` followed by `update`\n\nWhen mode is `NON_TRANSACTIONAL`, no two mutations may affect a single\nentity.", @@ -598,136 +941,97 @@ "format": "byte", "description": "The identifier of the transaction associated with the commit. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction." } - } - }, - "BeginTransactionRequest": { - "description": "The request for Datastore.BeginTransaction.", - "type": "object", - "properties": { - "transactionOptions": { - "$ref": "TransactionOptions", - "description": "Options for a new transaction." - } }, - "id": "BeginTransactionRequest" - }, - "PropertyOrder": { - "description": "The desired order for a specific property.", - "type": "object", - "properties": { - "direction": { - "enumDescriptions": [ - "Unspecified. This value must not be used.", - "Ascending.", - "Descending." - ], - "enum": [ - "DIRECTION_UNSPECIFIED", - "ASCENDING", - "DESCENDING" - ], - "description": "The direction to order by. Defaults to `ASCENDING`.", - "type": "string" - }, - "property": { - "$ref": "PropertyReference", - "description": "The property to order by." - } - }, - "id": "PropertyOrder" + "id": "CommitRequest" }, "KindExpression": { - "id": "KindExpression", - "description": "A representation of a kind.", "type": "object", "properties": { "name": { "description": "The name of the kind.", "type": "string" } - } - }, - "LatLng": { - "properties": { - "longitude": { - "format": "double", - "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", - "type": "number" - }, - "latitude": { - "format": "double", - "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", - "type": "number" - } }, - "id": "LatLng", - "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", - "type": "object" + "id": "KindExpression", + "description": "A representation of a kind." }, "Key": { "description": "A unique identifier for an entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.", "type": "object", "properties": { - "partitionId": { - "$ref": "PartitionId", - "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition." - }, "path": { "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nAn entity path is always fully complete: *all* of the entity's ancestors\nare required to be in the path along with the entity identifier itself.\nThe only exception is that in some documented cases, the identifier in the\nlast path element (for the entity) itself may be omitted. For example,\nthe last path element of the key of `Mutation.insert` may have no\nidentifier.\n\nA path can never be empty, and a path can have at most 100 elements.", "items": { "$ref": "PathElement" }, "type": "array" + }, + "partitionId": { + "$ref": "PartitionId", + "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition." } }, "id": "Key" }, + "LatLng": { + "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", + "type": "object", + "properties": { + "latitude": { + "format": "double", + "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", + "type": "number" + }, + "longitude": { + "format": "double", + "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", + "type": "number" + } + }, + "id": "LatLng" + }, "PropertyReference": { + "description": "A reference to a property relative to the kind expressions.", "type": "object", "properties": { "name": { - "type": "string", - "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path." + "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path.", + "type": "string" } }, - "id": "PropertyReference", - "description": "A reference to a property relative to the kind expressions." + "id": "PropertyReference" }, "GoogleDatastoreAdminV1beta1EntityFilter": { - "description": "Identifies a subset of entities in a project. This is specified as\ncombinations of kind + namespace (either or both of which may be all, as\ndescribed in the following examples).\nExample usage:\n\nEntire project:\n kinds=[], namespace_ids=[]\n\nKinds Foo and Bar in all namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=[]\n\nKinds Foo and Bar only in the default namespace:\n kinds=['Foo', 'Bar'], namespace_ids=['']\n\nKinds Foo and Bar in both the default and Baz namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz']\n\nThe entire Baz namespace:\n kinds=[], namespace_ids=['Baz']", - "type": "object", "properties": { "kinds": { - "description": "If empty, then this represents all kinds.", - "items": { - "type": "string" - }, - "type": "array" - }, - "namespaceIds": { "items": { "type": "string" }, "type": "array", - "description": "An empty list represents all namespaces. This is the preferred\nusage for projects that don't use namespaces.\n\nAn empty string element represents the default namespace. This should be\nused if the project has data in non-default namespaces, but doesn't want to\ninclude them.\nEach namespace in this list must be unique." - } - }, - "id": "GoogleDatastoreAdminV1beta1EntityFilter" - }, - "GoogleDatastoreAdminV1beta1CommonMetadata": { - "type": "object", - "properties": { - "startTime": { - "format": "google-datetime", - "description": "The time that work began on the operation.", - "type": "string" + "description": "If empty, then this represents all kinds." }, - "labels": { - "additionalProperties": { + "namespaceIds": { + "description": "An empty list represents all namespaces. This is the preferred\nusage for projects that don't use namespaces.\n\nAn empty string element represents the default namespace. This should be\nused if the project has data in non-default namespaces, but doesn't want to\ninclude them.\nEach namespace in this list must be unique.", + "items": { "type": "string" }, + "type": "array" + } + }, + "id": "GoogleDatastoreAdminV1beta1EntityFilter", + "description": "Identifies a subset of entities in a project. This is specified as\ncombinations of kind + namespace (either or both of which may be all, as\ndescribed in the following examples).\nExample usage:\n\nEntire project:\n kinds=[], namespace_ids=[]\n\nKinds Foo and Bar in all namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=[]\n\nKinds Foo and Bar only in the default namespace:\n kinds=['Foo', 'Bar'], namespace_ids=['']\n\nKinds Foo and Bar in both the default and Baz namespaces:\n kinds=['Foo', 'Bar'], namespace_ids=['', 'Baz']\n\nThe entire Baz namespace:\n kinds=[], namespace_ids=['Baz']", + "type": "object" + }, + "GoogleDatastoreAdminV1beta1CommonMetadata": { + "description": "Metadata common to all Datastore Admin operations.", + "type": "object", + "properties": { + "labels": { "description": "The client-assigned labels which were provided when the operation was\ncreated. May also include additional labels.", - "type": "object" + "type": "object", + "additionalProperties": { + "type": "string" + } }, "endTime": { "format": "google-datetime", @@ -735,6 +1039,7 @@ "type": "string" }, "state": { + "description": "The current state of the Operation.", "type": "string", "enumDescriptions": [ "Unspecified.", @@ -755,17 +1060,9 @@ "SUCCESSFUL", "FAILED", "CANCELLED" - ], - "description": "The current state of the Operation." + ] }, "operationType": { - "enum": [ - "OPERATION_TYPE_UNSPECIFIED", - "EXPORT_ENTITIES", - "IMPORT_ENTITIES", - "BUILD_INDEX", - "CLEAR_INDEX" - ], "description": "The type of the operation. Can be used as a filter in\nListOperationsRequest.", "type": "string", "enumDescriptions": [ @@ -774,11 +1071,22 @@ "ImportEntities.", "Build an index.", "Clear an index." + ], + "enum": [ + "OPERATION_TYPE_UNSPECIFIED", + "EXPORT_ENTITIES", + "IMPORT_ENTITIES", + "BUILD_INDEX", + "CLEAR_INDEX" ] + }, + "startTime": { + "format": "google-datetime", + "description": "The time that work began on the operation.", + "type": "string" } }, - "id": "GoogleDatastoreAdminV1beta1CommonMetadata", - "description": "Metadata common to all Datastore Admin operations." + "id": "GoogleDatastoreAdminV1beta1CommonMetadata" }, "Projection": { "description": "A representation of a property in a projection.", @@ -792,6 +1100,7 @@ "id": "Projection" }, "ArrayValue": { + "id": "ArrayValue", "description": "An array value.", "type": "object", "properties": { @@ -802,13 +1111,20 @@ }, "type": "array" } - }, - "id": "ArrayValue" + } }, "Mutation": { "description": "A mutation to apply to an entity.", "type": "object", "properties": { + "update": { + "$ref": "Entity", + "description": "The entity to update. The entity must already exist.\nMust have a complete key path." + }, + "upsert": { + "$ref": "Entity", + "description": "The entity to upsert. The entity may or may not already exist.\nThe entity key's final path element may be incomplete." + }, "delete": { "$ref": "Key", "description": "The key of the entity to delete. The entity may or may not already exist.\nMust have a complete key path and must not be reserved/read-only." @@ -821,14 +1137,6 @@ "insert": { "description": "The entity to insert. The entity must not already exist.\nThe entity key's final path element may be incomplete.", "$ref": "Entity" - }, - "update": { - "$ref": "Entity", - "description": "The entity to update. The entity must already exist.\nMust have a complete key path." - }, - "upsert": { - "$ref": "Entity", - "description": "The entity to upsert. The entity may or may not already exist.\nThe entity key's final path element may be incomplete." } }, "id": "Mutation" @@ -838,9 +1146,9 @@ "type": "object", "properties": { "transaction": { - "type": "string", "format": "byte", - "description": "The identifier of the transaction in which to read. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction." + "description": "The identifier of the transaction in which to read. A\ntransaction identifier is returned by a call to\nDatastore.BeginTransaction.", + "type": "string" }, "readConsistency": { "enumDescriptions": [ @@ -860,6 +1168,7 @@ "id": "ReadOptions" }, "GoogleDatastoreAdminV1beta1ExportEntitiesResponse": { + "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities.", "type": "object", "properties": { "outputUrl": { @@ -867,23 +1176,18 @@ "type": "string" } }, - "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse", - "description": "The response for\ngoogle.datastore.admin.v1beta1.DatastoreAdmin.ExportEntities." + "id": "GoogleDatastoreAdminV1beta1ExportEntitiesResponse" }, "RollbackResponse": { - "description": "The response for Datastore.Rollback.\n(an empty message).", "type": "object", "properties": {}, - "id": "RollbackResponse" + "id": "RollbackResponse", + "description": "The response for Datastore.Rollback.\n(an empty message)." }, "MutationResult": { "description": "The result of applying a mutation.", "type": "object", "properties": { - "key": { - "$ref": "Key", - "description": "The automatically allocated key.\nSet only when the mutation allocated a key." - }, "version": { "format": "int64", "description": "The version of the entity on the server after processing the mutation. If\nthe mutation doesn't change anything on the server, then the version will\nbe the version of the current entity or, if no entity is present, a version\nthat is strictly greater than the version of any previous entity and less\nthan the version of any possible future entity.", @@ -892,17 +1196,20 @@ "conflictDetected": { "description": "Whether a conflict was detected for this mutation. Always false when a\nconflict detection strategy field is not set in the mutation.", "type": "boolean" + }, + "key": { + "$ref": "Key", + "description": "The automatically allocated key.\nSet only when the mutation allocated a key." } }, "id": "MutationResult" }, "GqlQuery": { - "description": "A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).", "type": "object", "properties": { "queryString": { - "description": "A string of the format described\n[here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference).", - "type": "string" + "type": "string", + "description": "A string of the format described\n[here](https://cloud.google.com/datastore/docs/apis/gql/gql_reference)." }, "positionalBindings": { "description": "Numbered binding site @1 references the first numbered parameter,\neffectively using 1-based indexing, rather than the usual 0.\n\nFor each binding site numbered i in `query_string`, there must be an i-th\nnumbered parameter. The inverse must also be true.", @@ -912,371 +1219,64 @@ "type": "array" }, "namedBindings": { + "type": "object", "additionalProperties": { "$ref": "GqlQueryParameter" }, - "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`.", - "type": "object" + "description": "For each non-reserved named binding site in the query string, there must be\na named parameter with that name, but not necessarily the inverse.\n\nKey must match regex `A-Za-z_$*`, must not match regex\n`__.*__`, and must not be `\"\"`." }, "allowLiterals": { "description": "When false, the query string must not contain any literals and instead must\nbind all values. For example,\n`SELECT * FROM Kind WHERE a = 'string literal'` is not allowed, while\n`SELECT * FROM Kind WHERE a = @value` is.", "type": "boolean" } }, - "id": "GqlQuery" + "id": "GqlQuery", + "description": "A [GQL query](https://cloud.google.com/datastore/docs/apis/gql/gql_reference)." }, "Filter": { - "description": "A holder for any type of filter.", - "type": "object", "properties": { + "compositeFilter": { + "$ref": "CompositeFilter", + "description": "A composite filter." + }, "propertyFilter": { "description": "A filter on a property.", "$ref": "PropertyFilter" - }, - "compositeFilter": { - "description": "A composite filter.", - "$ref": "CompositeFilter" } }, - "id": "Filter" - }, - "RollbackRequest": { - "properties": { - "transaction": { - "format": "byte", - "description": "The transaction identifier, returned by a call to\nDatastore.BeginTransaction.", - "type": "string" - } - }, - "id": "RollbackRequest", - "description": "The request for Datastore.Rollback.", + "id": "Filter", + "description": "A holder for any type of filter.", "type": "object" - }, - "RunQueryRequest": { - "description": "The request for Datastore.RunQuery.", - "type": "object", - "properties": { - "readOptions": { - "$ref": "ReadOptions", - "description": "The options for this query." - }, - "query": { - "$ref": "Query", - "description": "The query to run." - }, - "gqlQuery": { - "$ref": "GqlQuery", - "description": "The GQL query to run." - }, - "partitionId": { - "$ref": "PartitionId", - "description": "Entities are partitioned into subsets, identified by a partition ID.\nQueries are scoped to a single partition.\nThis partition ID is normalized with the standard default context\npartition ID." - } - }, - "id": "RunQueryRequest" - }, - "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata": { - "description": "Metadata for ExportEntities operations.", - "type": "object", - "properties": { - "progressBytes": { - "$ref": "GoogleDatastoreAdminV1beta1Progress", - "description": "An estimate of the number of bytes processed." - }, - "outputUrlPrefix": { - "description": "Location for the export metadata and data files. This will be the same\nvalue as the\ngoogle.datastore.admin.v1beta1.ExportEntitiesRequest.output_url_prefix\nfield. The final output location is provided in\ngoogle.datastore.admin.v1beta1.ExportEntitiesResponse.output_url.", - "type": "string" - }, - "entityFilter": { - "$ref": "GoogleDatastoreAdminV1beta1EntityFilter", - "description": "Description of which entities are being exported." - }, - "progressEntities": { - "$ref": "GoogleDatastoreAdminV1beta1Progress", - "description": "An estimate of the number of entities processed." - }, - "common": { - "description": "Metadata common to all Datastore Admin operations.", - "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" - } - }, - "id": "GoogleDatastoreAdminV1beta1ExportEntitiesMetadata" - }, - "TransactionOptions": { - "properties": { - "readOnly": { - "$ref": "ReadOnly", - "description": "The transaction should only allow reads." - }, - "readWrite": { - "$ref": "ReadWrite", - "description": "The transaction should allow both reads and writes." - } - }, - "id": "TransactionOptions", - "description": "Options for beginning a new transaction.\n\nTransactions can be created explicitly with calls to\nDatastore.BeginTransaction or implicitly by setting\nReadOptions.new_transaction in read requests.", - "type": "object" - }, - "CompositeFilter": { - "description": "A filter that merges multiple other filters using the given operator.", - "type": "object", - "properties": { - "filters": { - "description": "The list of filters to combine.\nMust contain at least one filter.", - "items": { - "$ref": "Filter" - }, - "type": "array" - }, - "op": { - "description": "The operator for combining multiple filters.", - "type": "string", - "enumDescriptions": [ - "Unspecified. This value must not be used.", - "The results are required to satisfy each of the combined filters." - ], - "enum": [ - "OPERATOR_UNSPECIFIED", - "AND" - ] - } - }, - "id": "CompositeFilter" - }, - "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata": { - "description": "Metadata for ImportEntities operations.", - "type": "object", - "properties": { - "inputUrl": { - "description": "The location of the import metadata file. This will be the same value as\nthe google.datastore.admin.v1beta1.ExportEntitiesResponse.output_url\nfield.", - "type": "string" - }, - "progressBytes": { - "description": "An estimate of the number of bytes processed.", - "$ref": "GoogleDatastoreAdminV1beta1Progress" - }, - "entityFilter": { - "description": "Description of which entities are being imported.", - "$ref": "GoogleDatastoreAdminV1beta1EntityFilter" - }, - "progressEntities": { - "description": "An estimate of the number of entities processed.", - "$ref": "GoogleDatastoreAdminV1beta1Progress" - }, - "common": { - "description": "Metadata common to all Datastore Admin operations.", - "$ref": "GoogleDatastoreAdminV1beta1CommonMetadata" - } - }, - "id": "GoogleDatastoreAdminV1beta1ImportEntitiesMetadata" } }, "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "version": "v1beta3", "baseUrl": "https://datastore.googleapis.com/", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/datastore": { - "description": "View and manage your Google Cloud Datastore data" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/datastore": { + "description": "View and manage your Google Cloud Datastore data" } } } }, - "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n", "kind": "discovery#restDescription", + "description": "Accesses the schemaless NoSQL database to provide fully managed, robust, scalable storage for your application.\n", "servicePath": "", "rootUrl": "https://datastore.googleapis.com/", "basePath": "", "ownerDomain": "google.com", "name": "datastore", "batchPath": "batch", - "id": "datastore:v1beta3", - "documentationLink": "https://cloud.google.com/datastore/", "revision": "20170821", - "title": "Google Cloud Datastore API", - "discoveryVersion": "v1", - "ownerName": "Google", - "version_module": true, - "resources": { - "projects": { - "methods": { - "allocateIds": { - "flatPath": "v1beta3/projects/{projectId}:allocateIds", - "id": "datastore.projects.allocateIds", - "path": "v1beta3/projects/{projectId}:allocateIds", - "request": { - "$ref": "AllocateIdsRequest" - }, - "description": "Allocates IDs for the given keys, which is useful for referencing an entity\nbefore it is inserted.", - "response": { - "$ref": "AllocateIdsResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "parameters": { - "projectId": { - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true, - "location": "path" - } - } - }, - "beginTransaction": { - "response": { - "$ref": "BeginTransactionResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "parameters": { - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "The ID of the project against which to make the request." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1beta3/projects/{projectId}:beginTransaction", - "id": "datastore.projects.beginTransaction", - "path": "v1beta3/projects/{projectId}:beginTransaction", - "description": "Begins a new transaction.", - "request": { - "$ref": "BeginTransactionRequest" - } - }, - "commit": { - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "CommitResponse" - }, - "parameters": { - "projectId": { - "location": "path", - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1beta3/projects/{projectId}:commit", - "path": "v1beta3/projects/{projectId}:commit", - "id": "datastore.projects.commit", - "description": "Commits a transaction, optionally creating, deleting or modifying some\nentities.", - "request": { - "$ref": "CommitRequest" - } - }, - "runQuery": { - "response": { - "$ref": "RunQueryResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "parameters": { - "projectId": { - "location": "path", - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true - } - }, - "flatPath": "v1beta3/projects/{projectId}:runQuery", - "id": "datastore.projects.runQuery", - "path": "v1beta3/projects/{projectId}:runQuery", - "request": { - "$ref": "RunQueryRequest" - }, - "description": "Queries for entities." - }, - "rollback": { - "response": { - "$ref": "RollbackResponse" - }, - "parameterOrder": [ - "projectId" - ], - "httpMethod": "POST", - "parameters": { - "projectId": { - "description": "The ID of the project against which to make the request.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1beta3/projects/{projectId}:rollback", - "id": "datastore.projects.rollback", - "path": "v1beta3/projects/{projectId}:rollback", - "description": "Rolls back a transaction.", - "request": { - "$ref": "RollbackRequest" - } - }, - "lookup": { - "parameters": { - "projectId": { - "type": "string", - "required": true, - "location": "path", - "description": "The ID of the project against which to make the request." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/datastore" - ], - "flatPath": "v1beta3/projects/{projectId}:lookup", - "path": "v1beta3/projects/{projectId}:lookup", - "id": "datastore.projects.lookup", - "description": "Looks up entities by key.", - "request": { - "$ref": "LookupRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "projectId" - ], - "response": { - "$ref": "LookupResponse" - } - } - } - } - } + "documentationLink": "https://cloud.google.com/datastore/", + "id": "datastore:v1beta3" } diff --git a/vendor/google.golang.org/api/dlp/v2beta1/dlp-api.json b/vendor/google.golang.org/api/dlp/v2beta1/dlp-api.json index 0dc563c..08ff736 100644 --- a/vendor/google.golang.org/api/dlp/v2beta1/dlp-api.json +++ b/vendor/google.golang.org/api/dlp/v2beta1/dlp-api.json @@ -1,408 +1,371 @@ { - "ownerDomain": "google.com", - "name": "dlp", - "batchPath": "batch", - "title": "DLP API", - "ownerName": "Google", - "resources": { - "inspect": { - "resources": { - "results": { - "resources": { - "findings": { - "methods": { - "list": { - "response": { - "$ref": "GooglePrivacyDlpV2beta1ListInspectFindingsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "The value returned by the last `ListInspectFindingsResponse`; indicates\nthat this is a continuation of a prior `ListInspectFindings` call, and that\nthe system should return the next page of data.", - "type": "string", - "location": "query" - }, - "name": { - "location": "path", - "description": "Identifier of the results set returned as metadata of\nthe longrunning operation created by a call to CreateInspectOperation.\nShould be in the format of `inspect/results/{id}`.", - "type": "string", - "required": true, - "pattern": "^inspect/results/[^/]+$" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of results to return.\nIf 0, the implementation selects a reasonable value.", - "type": "integer" - }, - "filter": { - "description": "Restricts findings to items that match. Supports info_type and likelihood.\n\u003cp\u003eExamples:\u003cbr/\u003e\n\u003cli\u003einfo_type=EMAIL_ADDRESS\n\u003cli\u003einfo_type=PHONE_NUMBER,EMAIL_ADDRESS\n\u003cli\u003elikelihood=VERY_LIKELY\n\u003cli\u003elikelihood=VERY_LIKELY,LIKELY\n\u003cli\u003einfo_type=EMAIL_ADDRESS,likelihood=VERY_LIKELY,LIKELY", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v2beta1/inspect/results/{resultsId}/findings", - "id": "dlp.inspect.results.findings.list", - "path": "v2beta1/{+name}/findings", - "description": "Returns list of results for given inspect operation result set id." - } - } - } - } - }, - "operations": { - "methods": { - "cancel": { - "response": { - "$ref": "GoogleProtobufEmpty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true, - "pattern": "^inspect/operations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2beta1/inspect/operations/{operationsId}:cancel", - "id": "dlp.inspect.operations.cancel", - "path": "v2beta1/{+name}:cancel", - "request": { - "$ref": "GoogleLongrunningCancelOperationRequest" - }, - "description": "Cancels an operation. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation." - }, - "delete": { - "flatPath": "v2beta1/inspect/operations/{operationsId}", - "path": "v2beta1/{+name}", - "id": "dlp.inspect.operations.delete", - "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", - "httpMethod": "DELETE", - "response": { - "$ref": "GoogleProtobufEmpty" - }, - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true, - "pattern": "^inspect/operations/[^/]+$", - "location": "path" - } - } - }, - "get": { - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "response": { - "$ref": "GoogleLongrunningOperation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^inspect/operations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2beta1/inspect/operations/{operationsId}", - "id": "dlp.inspect.operations.get", - "path": "v2beta1/{+name}" - }, - "list": { - "id": "dlp.inspect.operations.list", - "path": "v2beta1/{+name}", - "description": "Fetch the list of long running operations.", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "GoogleLongrunningListOperationsResponse" - }, - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "The list page size. The max allowed value is 256 and default is 100.", - "type": "integer", - "location": "query" - }, - "filter": { - "location": "query", - "description": "This parameter supports filtering by done, ie done=true or done=false.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "pattern": "^inspect/operations$", - "location": "path", - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/inspect/operations" - }, - "create": { - "response": { - "$ref": "GoogleLongrunningOperation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v2beta1/inspect/operations", - "id": "dlp.inspect.operations.create", - "path": "v2beta1/inspect/operations", - "request": { - "$ref": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest" - }, - "description": "Schedules a job scanning content in a Google Cloud Platform data\nrepository." - } - } - } - } - }, - "rootCategories": { - "methods": { - "list": { - "httpMethod": "GET", - "parameterOrder": [], - "response": { - "$ref": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse" - }, - "parameters": { - "languageCode": { - "location": "query", - "description": "Optional language code for localized friendly category names.\nIf omitted or if localized strings are not available,\nen-US strings will be returned.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v2beta1/rootCategories", - "path": "v2beta1/rootCategories", - "id": "dlp.rootCategories.list", - "description": "Returns the list of root categories of sensitive information." - } - }, - "resources": { - "infoTypes": { - "methods": { - "list": { - "response": { - "$ref": "GooglePrivacyDlpV2beta1ListInfoTypesResponse" - }, - "parameterOrder": [ - "category" - ], - "httpMethod": "GET", - "parameters": { - "languageCode": { - "location": "query", - "description": "Optional BCP-47 language code for localized info type friendly\nnames. If omitted, or if localized strings are not available,\nen-US strings will be returned.", - "type": "string" - }, - "category": { - "pattern": "^[^/]+$", - "location": "path", - "description": "Category name as returned by ListRootCategories.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v2beta1/rootCategories/{rootCategoriesId}/infoTypes", - "id": "dlp.rootCategories.infoTypes.list", - "path": "v2beta1/rootCategories/{+category}/infoTypes", - "description": "Returns sensitive information types for given category." - } - } - } - } - }, - "content": { - "methods": { - "inspect": { - "response": { - "$ref": "GooglePrivacyDlpV2beta1InspectContentResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v2beta1/content:inspect", - "id": "dlp.content.inspect", - "path": "v2beta1/content:inspect", - "request": { - "$ref": "GooglePrivacyDlpV2beta1InspectContentRequest" - }, - "description": "Finds potentially sensitive info in a list of strings.\nThis method has limits on input size, processing time, and output size." - }, - "redact": { - "request": { - "$ref": "GooglePrivacyDlpV2beta1RedactContentRequest" - }, - "description": "Redacts potentially sensitive info from a list of strings.\nThis method has limits on input size, processing time, and output size.", - "response": { - "$ref": "GooglePrivacyDlpV2beta1RedactContentResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v2beta1/content:redact", - "id": "dlp.content.redact", - "path": "v2beta1/content:redact" - } - } - } - }, - "parameters": { - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - } - }, - "version": "v2beta1", "baseUrl": "https://dlp.googleapis.com/", "kind": "discovery#restDescription", "description": "The Google Data Loss Prevention API provides methods for detection of privacy-sensitive fragments in text, images, and Google Cloud Platform storage repositories.", "servicePath": "", "basePath": "", - "revision": "20170822", - "documentationLink": "https://cloud.google.com/dlp/docs/", "id": "dlp:v2beta1", + "revision": "20170829", + "documentationLink": "https://cloud.google.com/dlp/docs/", "discoveryVersion": "v1", "version_module": true, "schemas": { + "GoogleRpcStatus": { + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "type": "array", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + } + }, + "code": { + "description": "The status code, which should be an enum value of google.rpc.Code.", + "format": "int32", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "GoogleRpcStatus", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons." + }, + "GoogleLongrunningOperation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "GoogleRpcStatus" + }, + "metadata": { + "description": "This field will contain an InspectOperationMetadata object. This will always be returned with the Operation.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "description": "This field will contain an InspectOperationResult object.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "name": { + "description": "The server-assigned name, The `name` should have the format of `inspect/operations/\u003cidentifier\u003e`.", + "type": "string" + } + }, + "id": "GoogleLongrunningOperation" + }, + "GooglePrivacyDlpV2beta1InspectOperationMetadata": { + "description": "Metadata returned within GetOperation for an inspect request.", + "type": "object", + "properties": { + "requestOutputConfig": { + "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig", + "description": "Optional location to store findings." + }, + "createTime": { + "description": "The time which this request was started.", + "format": "google-datetime", + "type": "string" + }, + "requestStorageConfig": { + "description": "The storage config used to create the Operation.", + "$ref": "GooglePrivacyDlpV2beta1StorageConfig" + }, + "processedBytes": { + "description": "Total size in bytes that were processed.", + "format": "int64", + "type": "string" + }, + "totalEstimatedBytes": { + "type": "string", + "description": "Estimate of the number of bytes to process.", + "format": "int64" + }, + "infoTypeStats": { + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1InfoTypeStatistics" + } + }, + "requestInspectConfig": { + "$ref": "GooglePrivacyDlpV2beta1InspectConfig", + "description": "The inspect config used to create the Operation." + } + }, + "id": "GooglePrivacyDlpV2beta1InspectOperationMetadata" + }, + "GooglePrivacyDlpV2beta1InfoType": { + "description": "Type of information detected by the API.", + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the information type." + } + }, + "id": "GooglePrivacyDlpV2beta1InfoType" + }, + "GooglePrivacyDlpV2beta1PathElement": { + "id": "GooglePrivacyDlpV2beta1PathElement", + "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.", + "type": "object", + "properties": { + "kind": { + "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.", + "type": "string" + }, + "id": { + "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.", + "format": "int64", + "type": "string" + }, + "name": { + "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.", + "type": "string" + } + } + }, + "GooglePrivacyDlpV2beta1CategoryDescription": { + "description": "Info Type Category description.", + "type": "object", + "properties": { + "displayName": { + "description": "Human readable form of the category name.", + "type": "string" + }, + "name": { + "description": "Internal name of the category.", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1CategoryDescription" + }, + "GooglePrivacyDlpV2beta1BigQueryTable": { + "description": "Message defining the location of a BigQuery table. A table is uniquely\nidentified by its project_id, dataset_id, and table_name. Within a query\na table is often referenced with a string in the format of:\n`\u003cproject_id\u003e:\u003cdataset_id\u003e.\u003ctable_id\u003e` or\n`\u003cproject_id\u003e.\u003cdataset_id\u003e.\u003ctable_id\u003e`.", + "type": "object", + "properties": { + "datasetId": { + "description": "Dataset ID of the table.", + "type": "string" + }, + "tableId": { + "description": "Name of the table.", + "type": "string" + }, + "projectId": { + "description": "The Google Cloud Platform project ID of the project containing the table.\nIf omitted, project ID is inferred from the API call.", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1BigQueryTable" + }, + "GooglePrivacyDlpV2beta1ListRootCategoriesResponse": { + "description": "Response for ListRootCategories request.", + "type": "object", + "properties": { + "categories": { + "description": "List of all into type categories supported by the API.", + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1CategoryDescription" + } + } + }, + "id": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse" + }, + "GooglePrivacyDlpV2beta1Finding": { + "description": "Container structure describing a single finding within a string or image.", + "type": "object", + "properties": { + "infoType": { + "description": "The specific type of info the string might be.", + "$ref": "GooglePrivacyDlpV2beta1InfoType" + }, + "createTime": { + "description": "Timestamp when finding was detected.", + "format": "google-datetime", + "type": "string" + }, + "quote": { + "type": "string", + "description": "The specific string that may be potentially sensitive info." + }, + "location": { + "description": "Location of the info found.", + "$ref": "GooglePrivacyDlpV2beta1Location" + }, + "likelihood": { + "enum": [ + "LIKELIHOOD_UNSPECIFIED", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], + "description": "Estimate of how likely it is that the info_type is correct.", + "type": "string", + "enumDescriptions": [ + "Default value; information with all likelihoods is included.", + "Few matching elements.", + "", + "Some matching elements.", + "", + "Many matching elements." + ] + } + }, + "id": "GooglePrivacyDlpV2beta1Finding" + }, + "GooglePrivacyDlpV2beta1KindExpression": { + "type": "object", + "properties": { + "name": { + "description": "The name of the kind.", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1KindExpression", + "description": "A representation of a Datastore kind." + }, + "GoogleLongrunningListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "type": "array", + "items": { + "$ref": "GoogleLongrunningOperation" + } + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "GoogleLongrunningListOperationsResponse" + }, + "GooglePrivacyDlpV2beta1Row": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1Value" + } + } + }, + "id": "GooglePrivacyDlpV2beta1Row" + }, + "GooglePrivacyDlpV2beta1FileSet": { + "type": "object", + "properties": { + "url": { + "description": "The url, in the format `gs://\u003cbucket\u003e/\u003cpath\u003e`. Trailing wildcard in the\npath is allowed.", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1FileSet", + "description": "Set of files to scan." + }, + "GooglePrivacyDlpV2beta1ListInspectFindingsResponse": { + "description": "Response to the ListInspectFindings request.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If not empty, indicates that there may be more results that match the\nrequest; this value should be passed in a new `ListInspectFindingsRequest`.", + "type": "string" + }, + "result": { + "description": "The results.", + "$ref": "GooglePrivacyDlpV2beta1InspectResult" + } + }, + "id": "GooglePrivacyDlpV2beta1ListInspectFindingsResponse" + }, + "GoogleProtobufEmpty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "GoogleProtobufEmpty" + }, + "GooglePrivacyDlpV2beta1TableLocation": { + "description": "Location of a finding within a `ContentItem.Table`.", + "type": "object", + "properties": { + "rowIndex": { + "description": "The zero-based index of the row where the finding is located.", + "format": "int64", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1TableLocation" + }, + "GooglePrivacyDlpV2beta1DatastoreKey": { + "type": "object", + "properties": { + "entityKey": { + "description": "Datastore entity key.", + "$ref": "GooglePrivacyDlpV2beta1Key" + } + }, + "id": "GooglePrivacyDlpV2beta1DatastoreKey", + "description": "Record key for a finding in Cloud Datastore." + }, + "GooglePrivacyDlpV2beta1CloudStorageOptions": { + "properties": { + "fileSet": { + "$ref": "GooglePrivacyDlpV2beta1FileSet" + } + }, + "id": "GooglePrivacyDlpV2beta1CloudStorageOptions", + "description": "Options defining a file or a set of files (path ending with *) within\na Google Cloud Storage bucket.", + "type": "object" + }, + "GooglePrivacyDlpV2beta1RecordKey": { + "type": "object", + "properties": { + "cloudStorageKey": { + "$ref": "GooglePrivacyDlpV2beta1CloudStorageKey" + }, + "datastoreKey": { + "$ref": "GooglePrivacyDlpV2beta1DatastoreKey" + } + }, + "id": "GooglePrivacyDlpV2beta1RecordKey", + "description": "Message for a unique key indicating a record that contains a finding." + }, + "GooglePrivacyDlpV2beta1CloudStoragePath": { + "description": "A location in Cloud Storage.", + "type": "object", + "properties": { + "path": { + "description": "The url, in the format of `gs://bucket/\u003cpath\u003e`.", + "type": "string" + } + }, + "id": "GooglePrivacyDlpV2beta1CloudStoragePath" + }, "GooglePrivacyDlpV2beta1InspectOperationResult": { - "description": "The operational data.", "type": "object", "properties": { "name": { @@ -410,53 +373,56 @@ "type": "string" } }, - "id": "GooglePrivacyDlpV2beta1InspectOperationResult" + "id": "GooglePrivacyDlpV2beta1InspectOperationResult", + "description": "The operational data." }, "GooglePrivacyDlpV2beta1Range": { + "description": "Generic half-open interval [start, end)", + "type": "object", "properties": { - "start": { + "end": { + "description": "Index of the last character of the range (exclusive).", "format": "int64", - "description": "Index of the first character of the range (inclusive).", "type": "string" }, - "end": { + "start": { + "description": "Index of the first character of the range (inclusive).", "format": "int64", - "description": "Index of the last character of the range (exclusive).", "type": "string" } }, - "id": "GooglePrivacyDlpV2beta1Range", - "description": "Generic half-open interval [start, end)", - "type": "object" + "id": "GooglePrivacyDlpV2beta1Range" }, "GoogleTypeTimeOfDay": { "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.", "type": "object", "properties": { - "nanos": { + "hours": { + "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.", "format": "int32", - "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.", "type": "integer" }, + "nanos": { + "type": "integer", + "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.", + "format": "int32" + }, "seconds": { - "format": "int32", "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.", + "format": "int32", "type": "integer" }, "minutes": { - "format": "int32", "description": "Minutes of hour of day. Must be from 0 to 59.", - "type": "integer" - }, - "hours": { "format": "int32", - "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.", "type": "integer" } }, "id": "GoogleTypeTimeOfDay" }, "GooglePrivacyDlpV2beta1InspectResult": { + "description": "All the findings for a single scanned item.", + "type": "object", "properties": { "findingsTruncated": { "description": "If true, then this item might have more findings than were returned,\nand the findings returned are an arbitrary subset of all findings.\nThe findings list might be truncated because the input items were too\nlarge, or because the server reached the maximum amount of resources\nallowed for a single API call. For best results, divide the input into\nsmaller batches.", @@ -464,38 +430,36 @@ }, "findings": { "description": "List of findings for an item.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1Finding" - }, - "type": "array" + } } }, - "id": "GooglePrivacyDlpV2beta1InspectResult", - "description": "All the findings for a single scanned item.", - "type": "object" + "id": "GooglePrivacyDlpV2beta1InspectResult" }, "GooglePrivacyDlpV2beta1ImageLocation": { "description": "Bounding box encompassing detected text within an image.", "type": "object", "properties": { "height": { - "format": "int32", "description": "Height of the bounding box in pixels.", + "format": "int32", "type": "integer" }, "top": { - "format": "int32", "description": "Top coordinate of the bounding box. (0,0) is upper left.", + "format": "int32", "type": "integer" }, "left": { - "format": "int32", "description": "Left coordinate of the bounding box. (0,0) is upper left.", + "format": "int32", "type": "integer" }, "width": { - "format": "int32", "description": "Width of the bounding box in pixels.", + "format": "int32", "type": "integer" } }, @@ -506,12 +470,12 @@ "type": "object", "properties": { "cloudStorageOptions": { - "$ref": "GooglePrivacyDlpV2beta1CloudStorageOptions", - "description": "Google Cloud Storage options specification." + "description": "Google Cloud Storage options specification.", + "$ref": "GooglePrivacyDlpV2beta1CloudStorageOptions" }, "datastoreOptions": { - "description": "Google Cloud Datastore options specification.", - "$ref": "GooglePrivacyDlpV2beta1DatastoreOptions" + "$ref": "GooglePrivacyDlpV2beta1DatastoreOptions", + "description": "Google Cloud Datastore options specification." }, "bigQueryOptions": { "$ref": "GooglePrivacyDlpV2beta1BigQueryOptions", @@ -524,66 +488,66 @@ "description": "Container structure for the content to inspect.", "type": "object", "properties": { + "value": { + "description": "String data to inspect or redact.", + "type": "string" + }, "table": { - "description": "Structured content for inspection.", - "$ref": "GooglePrivacyDlpV2beta1Table" + "$ref": "GooglePrivacyDlpV2beta1Table", + "description": "Structured content for inspection." }, "data": { - "format": "byte", "description": "Content data to inspect or redact.", + "format": "byte", "type": "string" }, "type": { "description": "Type of the content, as defined in Content-Type HTTP header.\nSupported types are: all \"text\" types, octet streams, PNG images,\nJPEG images.", "type": "string" - }, - "value": { - "description": "String data to inspect or redact.", - "type": "string" } }, "id": "GooglePrivacyDlpV2beta1ContentItem" }, + "GooglePrivacyDlpV2beta1BigQueryOptions": { + "type": "object", + "properties": { + "tableReference": { + "description": "Complete BigQuery table reference.", + "$ref": "GooglePrivacyDlpV2beta1BigQueryTable" + }, + "identifyingFields": { + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1FieldId" + }, + "description": "References to fields uniquely identifying rows within the table.\nNested fields in the format, like `person.birthdate.year`, are allowed." + } + }, + "id": "GooglePrivacyDlpV2beta1BigQueryOptions", + "description": "Options defining BigQuery table and row identifiers." + }, "GooglePrivacyDlpV2beta1OperationConfig": { + "type": "object", "properties": { "maxItemFindings": { - "format": "int64", "description": "Max number of findings per file, Datastore entity, or database row.", + "format": "int64", "type": "string" } }, "id": "GooglePrivacyDlpV2beta1OperationConfig", - "description": "Additional configuration for inspect long running operations.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1BigQueryOptions": { - "description": "Options defining BigQuery table and row identifiers.", - "type": "object", - "properties": { - "identifyingFields": { - "description": "References to fields uniquely identifying rows within the table.\nNested fields in the format, like `person.birthdate.year`, are allowed.", - "items": { - "$ref": "GooglePrivacyDlpV2beta1FieldId" - }, - "type": "array" - }, - "tableReference": { - "description": "Complete BigQuery table reference.", - "$ref": "GooglePrivacyDlpV2beta1BigQueryTable" - } - }, - "id": "GooglePrivacyDlpV2beta1BigQueryOptions" + "description": "Additional configuration for inspect long running operations." }, "GooglePrivacyDlpV2beta1ReplaceConfig": { "type": "object", "properties": { - "replaceWith": { - "description": "Content replacing sensitive information of given type. Max 256 chars.", - "type": "string" - }, "infoType": { "$ref": "GooglePrivacyDlpV2beta1InfoType", "description": "Type of information to replace. Only one ReplaceConfig per info_type\nshould be provided. If ReplaceConfig does not have an info_type, the DLP\nAPI matches it against all info_types that are found but not specified in\nanother ReplaceConfig." + }, + "replaceWith": { + "description": "Content replacing sensitive information of given type. Max 256 chars.", + "type": "string" } }, "id": "GooglePrivacyDlpV2beta1ReplaceConfig" @@ -593,18 +557,18 @@ "type": "object", "properties": { "red": { - "format": "float", + "type": "number", "description": "The amount of red in the color as a value in the interval [0, 1].", + "format": "float" + }, + "green": { + "description": "The amount of green in the color as a value in the interval [0, 1].", + "format": "float", "type": "number" }, "blue": { - "format": "float", "description": "The amount of blue in the color as a value in the interval [0, 1].", - "type": "number" - }, - "green": { "format": "float", - "description": "The amount of green in the color as a value in the interval [0, 1].", "type": "number" } }, @@ -614,17 +578,17 @@ "description": "Structured content to inspect. Up to 50,000 `Value`s per request allowed.", "type": "object", "properties": { - "rows": { - "items": { - "$ref": "GooglePrivacyDlpV2beta1Row" - }, - "type": "array" - }, "headers": { + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1FieldId" - }, - "type": "array" + } + }, + "rows": { + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1Row" + } } }, "id": "GooglePrivacyDlpV2beta1Table" @@ -638,15 +602,14 @@ "description": "Type of information the findings limit applies to. Only one limit per\ninfo_type should be provided. If InfoTypeLimit does not have an\ninfo_type, the DLP API applies the limit against all info_types that are\nfound but not specified in another InfoTypeLimit." }, "maxFindings": { - "format": "int32", "description": "Max findings limit for the given infoType.", + "format": "int32", "type": "integer" } }, "id": "GooglePrivacyDlpV2beta1InfoTypeLimit" }, "GooglePrivacyDlpV2beta1Value": { - "description": "Set of primitive values supported by the system.", "type": "object", "properties": { "timeValue": { @@ -674,21 +637,22 @@ "type": "number" } }, - "id": "GooglePrivacyDlpV2beta1Value" + "id": "GooglePrivacyDlpV2beta1Value", + "description": "Set of primitive values supported by the system." }, "GooglePrivacyDlpV2beta1ListInfoTypesResponse": { + "description": "Response to the ListInfoTypes request.", + "type": "object", "properties": { "infoTypes": { "description": "Set of sensitive info types belonging to a category.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1InfoTypeDescription" - }, - "type": "array" + } } }, - "id": "GooglePrivacyDlpV2beta1ListInfoTypesResponse", - "description": "Response to the ListInfoTypes request.", - "type": "object" + "id": "GooglePrivacyDlpV2beta1ListInfoTypesResponse" }, "GooglePrivacyDlpV2beta1CloudStorageKey": { "description": "Record key for a finding in a Cloud Storage file.", @@ -699,81 +663,81 @@ "type": "string" }, "startOffset": { - "format": "int64", "description": "Byte offset of the referenced data in the file.", + "format": "int64", "type": "string" } }, "id": "GooglePrivacyDlpV2beta1CloudStorageKey" }, "GooglePrivacyDlpV2beta1PartitionId": { + "id": "GooglePrivacyDlpV2beta1PartitionId", "description": "Datastore partition ID.\nA partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty.\n\nA partition ID contains several dimensions:\nproject ID and namespace ID.", "type": "object", "properties": { - "projectId": { - "description": "The ID of the project to which the entities belong.", - "type": "string" - }, "namespaceId": { "description": "If not empty, the ID of the namespace to which the entities belong.", "type": "string" + }, + "projectId": { + "description": "The ID of the project to which the entities belong.", + "type": "string" } - }, - "id": "GooglePrivacyDlpV2beta1PartitionId" + } }, "GooglePrivacyDlpV2beta1InspectContentResponse": { + "id": "GooglePrivacyDlpV2beta1InspectContentResponse", "description": "Results of inspecting a list of items.", "type": "object", "properties": { "results": { "description": "Each content_item from the request has a result in this list, in the\nsame order as the request.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1InspectResult" - }, - "type": "array" + } } - }, - "id": "GooglePrivacyDlpV2beta1InspectContentResponse" + } }, "GooglePrivacyDlpV2beta1RedactContentRequest": { - "description": "Request to search for potentially sensitive info in a list of items\nand replace it with a default or provided content.", "type": "object", "properties": { "replaceConfigs": { - "description": "The strings to replace findings text findings with. Must specify at least\none of these or one ImageRedactionConfig if redacting images.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1ReplaceConfig" }, - "type": "array" + "description": "The strings to replace findings text findings with. Must specify at least\none of these or one ImageRedactionConfig if redacting images." }, "imageRedactionConfigs": { "description": "The configuration for specifying what content to redact from images.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1ImageRedactionConfig" - }, - "type": "array" + } }, "inspectConfig": { "$ref": "GooglePrivacyDlpV2beta1InspectConfig", "description": "Configuration for the inspector." }, "items": { - "description": "The list of items to inspect. Up to 100 are allowed per request.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1ContentItem" }, - "type": "array" + "description": "The list of items to inspect. Up to 100 are allowed per request." } }, - "id": "GooglePrivacyDlpV2beta1RedactContentRequest" + "id": "GooglePrivacyDlpV2beta1RedactContentRequest", + "description": "Request to search for potentially sensitive info in a list of items\nand replace it with a default or provided content." }, "GooglePrivacyDlpV2beta1FieldId": { "description": "General identifier of a data field in a storage service.", "type": "object", "properties": { "columnName": { - "description": "Name describing the field.", - "type": "string" + "type": "string", + "description": "Name describing the field." } }, "id": "GooglePrivacyDlpV2beta1FieldId" @@ -783,19 +747,19 @@ "type": "object", "properties": { "partitionId": { - "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty.", - "$ref": "GooglePrivacyDlpV2beta1PartitionId" - }, - "projection": { - "description": "Properties to scan. If none are specified, all properties will be scanned\nby default.", - "items": { - "$ref": "GooglePrivacyDlpV2beta1Projection" - }, - "type": "array" + "$ref": "GooglePrivacyDlpV2beta1PartitionId", + "description": "A partition ID identifies a grouping of entities. The grouping is always\nby project and namespace, however the namespace ID may be empty." }, "kind": { "description": "The kind to process.", "$ref": "GooglePrivacyDlpV2beta1KindExpression" + }, + "projection": { + "description": "Properties to scan. If none are specified, all properties will be scanned\nby default.", + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1Projection" + } } }, "id": "GooglePrivacyDlpV2beta1DatastoreOptions" @@ -810,7 +774,12 @@ "description": "Configuration description of the scanning process.\nWhen used with redactContent only info_types and min_likelihood are currently\nused.", "type": "object", "properties": { + "excludeTypes": { + "description": "When true, excludes type information of the findings.", + "type": "boolean" + }, "minLikelihood": { + "type": "string", "enumDescriptions": [ "Default value; information with all likelihoods is included.", "Few matching elements.", @@ -827,35 +796,30 @@ "LIKELY", "VERY_LIKELY" ], - "description": "Only returns findings equal or above this threshold.", - "type": "string" + "description": "Only returns findings equal or above this threshold." + }, + "maxFindings": { + "description": "Limits the number of findings per content item or long running operation.", + "format": "int32", + "type": "integer" }, "infoTypeLimits": { "description": "Configuration of findings limit given for specified info types.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1InfoTypeLimit" - }, - "type": "array" - }, - "maxFindings": { - "format": "int32", - "description": "Limits the number of findings per content item or long running operation.", - "type": "integer" + } }, "infoTypes": { "description": "Restricts what info_types to look for. The values must correspond to\nInfoType values returned by ListInfoTypes or found in documentation.\nEmpty info_types runs all enabled detectors.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1InfoType" - }, - "type": "array" + } }, "includeQuote": { "description": "When true, a contextual quote from the data that triggered a finding is\nincluded in the response; see Finding.quote.", "type": "boolean" - }, - "excludeTypes": { - "description": "When true, excludes type information of the findings.", - "type": "boolean" } }, "id": "GooglePrivacyDlpV2beta1InspectConfig" @@ -876,117 +840,83 @@ "type": "object", "properties": { "operationConfig": { - "$ref": "GooglePrivacyDlpV2beta1OperationConfig", - "description": "Additional configuration settings for long running operations." + "description": "Additional configuration settings for long running operations.", + "$ref": "GooglePrivacyDlpV2beta1OperationConfig" }, "inspectConfig": { - "description": "Configuration for the inspector.", - "$ref": "GooglePrivacyDlpV2beta1InspectConfig" + "$ref": "GooglePrivacyDlpV2beta1InspectConfig", + "description": "Configuration for the inspector." }, "storageConfig": { "$ref": "GooglePrivacyDlpV2beta1StorageConfig", "description": "Specification of the data set to process." }, "outputConfig": { - "description": "Optional location to store findings. The bucket must already exist and\nthe Google APIs service account for DLP must have write permission to\nwrite to the given bucket.\n\u003cp\u003eResults are split over multiple csv files with each file name matching\nthe pattern \"[operation_id]_[count].csv\", for example\n`3094877188788974909_1.csv`. The `operation_id` matches the\nidentifier for the Operation, and the `count` is a counter used for\ntracking the number of files written. \u003cp\u003eThe CSV file(s) contain the\nfollowing columns regardless of storage type scanned: \u003cli\u003eid \u003cli\u003einfo_type\n\u003cli\u003elikelihood \u003cli\u003ebyte size of finding \u003cli\u003equote \u003cli\u003etimestamp\u003cbr/\u003e\n\u003cp\u003eFor Cloud Storage the next columns are: \u003cli\u003efile_path\n\u003cli\u003estart_offset\u003cbr/\u003e\n\u003cp\u003eFor Cloud Datastore the next columns are: \u003cli\u003eproject_id\n\u003cli\u003enamespace_id \u003cli\u003epath \u003cli\u003ecolumn_name \u003cli\u003eoffset\u003cbr/\u003e\n\u003cp\u003eFor BigQuery the next columns are: \u003cli\u003erow_number \u003cli\u003eproject_id\n\u003cli\u003edataset_id \u003cli\u003etable_id", - "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig" + "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig", + "description": "Optional location to store findings. The bucket must already exist and\nthe Google APIs service account for DLP must have write permission to\nwrite to the given bucket.\n\u003cp\u003eResults are split over multiple csv files with each file name matching\nthe pattern \"[operation_id]_[count].csv\", for example\n`3094877188788974909_1.csv`. The `operation_id` matches the\nidentifier for the Operation, and the `count` is a counter used for\ntracking the number of files written. \u003cp\u003eThe CSV file(s) contain the\nfollowing columns regardless of storage type scanned: \u003cli\u003eid \u003cli\u003einfo_type\n\u003cli\u003elikelihood \u003cli\u003ebyte size of finding \u003cli\u003equote \u003cli\u003etimestamp\u003cbr/\u003e\n\u003cp\u003eFor Cloud Storage the next columns are: \u003cli\u003efile_path\n\u003cli\u003estart_offset\u003cbr/\u003e\n\u003cp\u003eFor Cloud Datastore the next columns are: \u003cli\u003eproject_id\n\u003cli\u003enamespace_id \u003cli\u003epath \u003cli\u003ecolumn_name \u003cli\u003eoffset\u003cbr/\u003e\n\u003cp\u003eFor BigQuery the next columns are: \u003cli\u003erow_number \u003cli\u003eproject_id\n\u003cli\u003edataset_id \u003cli\u003etable_id" } }, "id": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest" }, "GooglePrivacyDlpV2beta1Key": { - "description": "A unique identifier for a Datastore entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.", - "type": "object", "properties": { - "partitionId": { - "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition.", - "$ref": "GooglePrivacyDlpV2beta1PartitionId" - }, "path": { - "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nA path can never be empty, and a path can have at most 100 elements.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1PathElement" }, - "type": "array" + "description": "The entity path.\nAn entity path consists of one or more elements composed of a kind and a\nstring or numerical identifier, which identify entities. The first\nelement identifies a _root entity_, the second element identifies\na _child_ of the root entity, the third element identifies a child of the\nsecond entity, and so forth. The entities identified by all prefixes of\nthe path are called the element's _ancestors_.\n\nA path can never be empty, and a path can have at most 100 elements." + }, + "partitionId": { + "description": "Entities are partitioned into subsets, currently identified by a project\nID and namespace ID.\nQueries are scoped to a single partition.", + "$ref": "GooglePrivacyDlpV2beta1PartitionId" } }, - "id": "GooglePrivacyDlpV2beta1Key" + "id": "GooglePrivacyDlpV2beta1Key", + "description": "A unique identifier for a Datastore entity.\nIf a key's partition ID or any of its path kinds or names are\nreserved/read-only, the key is reserved/read-only.\nA reserved/read-only key is forbidden in certain documented contexts.", + "type": "object" }, "GooglePrivacyDlpV2beta1InspectContentRequest": { + "type": "object", "properties": { "inspectConfig": { - "description": "Configuration for the inspector.", - "$ref": "GooglePrivacyDlpV2beta1InspectConfig" + "$ref": "GooglePrivacyDlpV2beta1InspectConfig", + "description": "Configuration for the inspector." }, "items": { "description": "The list of items to inspect. Items in a single request are\nconsidered \"related\" unless inspect_config.independent_inputs is true.\nUp to 100 are allowed per request.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1ContentItem" - }, - "type": "array" + } } }, "id": "GooglePrivacyDlpV2beta1InspectContentRequest", - "description": "Request to search for potentially sensitive info in a list of items.", - "type": "object" + "description": "Request to search for potentially sensitive info in a list of items." }, "GoogleTypeDate": { "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", "type": "object", "properties": { - "day": { + "year": { + "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", "format": "int32", - "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", "type": "integer" }, - "year": { + "day": { + "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", "format": "int32", - "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", "type": "integer" }, "month": { - "format": "int32", "description": "Month of year. Must be from 1 to 12.", + "format": "int32", "type": "integer" } }, "id": "GoogleTypeDate" }, - "GooglePrivacyDlpV2beta1RedactContentResponse": { - "properties": { - "items": { - "description": "The redacted content.", - "items": { - "$ref": "GooglePrivacyDlpV2beta1ContentItem" - }, - "type": "array" - } - }, - "id": "GooglePrivacyDlpV2beta1RedactContentResponse", - "description": "Results of redacting a list of items.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1ImageRedactionConfig": { - "description": "Configuration for determing how redaction of images should occur.", - "type": "object", - "properties": { - "infoType": { - "description": "Only one per info_type should be provided per request. If not\nspecified, and redact_all_text is false, the DLP API will redact all\ntext that it matches against all info_types that are found, but not\nspecified in another ImageRedactionConfig.", - "$ref": "GooglePrivacyDlpV2beta1InfoType" - }, - "redactionColor": { - "$ref": "GooglePrivacyDlpV2beta1Color", - "description": "The color to use when redacting content from an image. If not specified,\nthe default is black." - }, - "redactAllText": { - "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted.", - "type": "boolean" - } - }, - "id": "GooglePrivacyDlpV2beta1ImageRedactionConfig" - }, "GooglePrivacyDlpV2beta1InfoTypeStatistics": { - "description": "Statistics regarding a specific InfoType.", "type": "object", "properties": { "infoType": { @@ -994,20 +924,54 @@ "$ref": "GooglePrivacyDlpV2beta1InfoType" }, "count": { - "format": "int64", + "type": "string", "description": "Number of findings for this info type.", - "type": "string" + "format": "int64" } }, - "id": "GooglePrivacyDlpV2beta1InfoTypeStatistics" + "id": "GooglePrivacyDlpV2beta1InfoTypeStatistics", + "description": "Statistics regarding a specific InfoType." + }, + "GooglePrivacyDlpV2beta1ImageRedactionConfig": { + "description": "Configuration for determing how redaction of images should occur.", + "type": "object", + "properties": { + "redactAllText": { + "description": "If true, all text found in the image, regardless whether it matches an\ninfo_type, is redacted.", + "type": "boolean" + }, + "infoType": { + "description": "Only one per info_type should be provided per request. If not\nspecified, and redact_all_text is false, the DLP API will redact all\ntext that it matches against all info_types that are found, but not\nspecified in another ImageRedactionConfig.", + "$ref": "GooglePrivacyDlpV2beta1InfoType" + }, + "redactionColor": { + "$ref": "GooglePrivacyDlpV2beta1Color", + "description": "The color to use when redacting content from an image. If not specified,\nthe default is black." + } + }, + "id": "GooglePrivacyDlpV2beta1ImageRedactionConfig" + }, + "GooglePrivacyDlpV2beta1RedactContentResponse": { + "type": "object", + "properties": { + "items": { + "description": "The redacted content.", + "type": "array", + "items": { + "$ref": "GooglePrivacyDlpV2beta1ContentItem" + } + } + }, + "id": "GooglePrivacyDlpV2beta1RedactContentResponse", + "description": "Results of redacting a list of items." }, "GooglePrivacyDlpV2beta1PropertyReference": { "description": "A reference to a property relative to the Datastore kind expressions.", "type": "object", "properties": { "name": { - "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path.", - "type": "string" + "type": "string", + "description": "The name of the property.\nIf name includes \".\"s, it may be interpreted as a property name path." } }, "id": "GooglePrivacyDlpV2beta1PropertyReference" @@ -1016,32 +980,32 @@ "description": "Specifies the location of a finding within its source item.", "type": "object", "properties": { - "recordKey": { - "description": "Key of the finding.", - "$ref": "GooglePrivacyDlpV2beta1RecordKey" - }, "tableLocation": { - "description": "Location within a `ContentItem.Table`.", - "$ref": "GooglePrivacyDlpV2beta1TableLocation" + "$ref": "GooglePrivacyDlpV2beta1TableLocation", + "description": "Location within a `ContentItem.Table`." }, "codepointRange": { "description": "Character offsets within a content item, included when content type\nis a text. Default charset assumed to be UTF-8.", "$ref": "GooglePrivacyDlpV2beta1Range" }, "fieldId": { - "$ref": "GooglePrivacyDlpV2beta1FieldId", - "description": "Field id of the field containing the finding." + "description": "Field id of the field containing the finding.", + "$ref": "GooglePrivacyDlpV2beta1FieldId" }, "imageBoxes": { "description": "Location within an image's pixels.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1ImageLocation" - }, - "type": "array" + } }, "byteRange": { "$ref": "GooglePrivacyDlpV2beta1Range", "description": "Zero-based byte offsets within a content item." + }, + "recordKey": { + "$ref": "GooglePrivacyDlpV2beta1RecordKey", + "description": "Key of the finding." } }, "id": "GooglePrivacyDlpV2beta1Location" @@ -1052,10 +1016,10 @@ "properties": { "categories": { "description": "List of categories this info type belongs to.", + "type": "array", "items": { "$ref": "GooglePrivacyDlpV2beta1CategoryDescription" - }, - "type": "array" + } }, "name": { "description": "Internal name of the info type.", @@ -1069,379 +1033,24 @@ "id": "GooglePrivacyDlpV2beta1InfoTypeDescription" }, "GooglePrivacyDlpV2beta1OutputStorageConfig": { + "description": "Cloud repository for storing output.", + "type": "object", "properties": { - "table": { - "description": "Store findings in a new table in the dataset.", - "$ref": "GooglePrivacyDlpV2beta1BigQueryTable" - }, "storagePath": { "description": "The path to a Google Cloud Storage location to store output.", "$ref": "GooglePrivacyDlpV2beta1CloudStoragePath" + }, + "table": { + "description": "Store findings in a new table in the dataset.", + "$ref": "GooglePrivacyDlpV2beta1BigQueryTable" } }, - "id": "GooglePrivacyDlpV2beta1OutputStorageConfig", - "description": "Cloud repository for storing output.", - "type": "object" - }, - "GoogleRpcStatus": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - } - }, - "id": "GoogleRpcStatus" - }, - "GoogleLongrunningOperation": { - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object", - "properties": { - "error": { - "$ref": "GoogleRpcStatus", - "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "This field will contain an InspectOperationMetadata object. This will always be returned with the Operation.", - "type": "object" - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "description": "This field will contain an InspectOperationResult object.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "name": { - "description": "The server-assigned name, The `name` should have the format of `inspect/operations/\u003cidentifier\u003e`.", - "type": "string" - } - }, - "id": "GoogleLongrunningOperation" - }, - "GooglePrivacyDlpV2beta1InspectOperationMetadata": { - "description": "Metadata returned within GetOperation for an inspect request.", - "type": "object", - "properties": { - "requestOutputConfig": { - "description": "Optional location to store findings.", - "$ref": "GooglePrivacyDlpV2beta1OutputStorageConfig" - }, - "createTime": { - "format": "google-datetime", - "description": "The time which this request was started.", - "type": "string" - }, - "requestStorageConfig": { - "description": "The storage config used to create the Operation.", - "$ref": "GooglePrivacyDlpV2beta1StorageConfig" - }, - "processedBytes": { - "format": "int64", - "description": "Total size in bytes that were processed.", - "type": "string" - }, - "infoTypeStats": { - "items": { - "$ref": "GooglePrivacyDlpV2beta1InfoTypeStatistics" - }, - "type": "array" - }, - "totalEstimatedBytes": { - "format": "int64", - "description": "Estimate of the number of bytes to process.", - "type": "string" - }, - "requestInspectConfig": { - "$ref": "GooglePrivacyDlpV2beta1InspectConfig", - "description": "The inspect config used to create the Operation." - } - }, - "id": "GooglePrivacyDlpV2beta1InspectOperationMetadata" - }, - "GooglePrivacyDlpV2beta1InfoType": { - "properties": { - "name": { - "description": "Name of the information type.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1InfoType", - "description": "Type of information detected by the API.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1PathElement": { - "properties": { - "name": { - "description": "The name of the entity.\nA name matching regex `__.*__` is reserved/read-only.\nA name must not be more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.", - "type": "string" - }, - "kind": { - "description": "The kind of the entity.\nA kind matching regex `__.*__` is reserved/read-only.\nA kind must not contain more than 1500 bytes when UTF-8 encoded.\nCannot be `\"\"`.", - "type": "string" - }, - "id": { - "format": "int64", - "description": "The auto-allocated ID of the entity.\nNever equal to zero. Values less than zero are discouraged and may not\nbe supported in the future.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1PathElement", - "description": "A (kind, ID/name) pair used to construct a key path.\n\nIf either name or ID is set, the element is complete.\nIf neither is set, the element is incomplete.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1CategoryDescription": { - "description": "Info Type Category description.", - "type": "object", - "properties": { - "name": { - "description": "Internal name of the category.", - "type": "string" - }, - "displayName": { - "description": "Human readable form of the category name.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1CategoryDescription" - }, - "GooglePrivacyDlpV2beta1BigQueryTable": { - "description": "Message defining the location of a BigQuery table. A table is uniquely\nidentified by its project_id, dataset_id, and table_name. Within a query\na table is often referenced with a string in the format of:\n`\u003cproject_id\u003e:\u003cdataset_id\u003e.\u003ctable_id\u003e` or\n`\u003cproject_id\u003e.\u003cdataset_id\u003e.\u003ctable_id\u003e`.", - "type": "object", - "properties": { - "tableId": { - "description": "Name of the table.", - "type": "string" - }, - "projectId": { - "description": "The Google Cloud Platform project ID of the project containing the table.\nIf omitted, project ID is inferred from the API call.", - "type": "string" - }, - "datasetId": { - "description": "Dataset ID of the table.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1BigQueryTable" - }, - "GooglePrivacyDlpV2beta1ListRootCategoriesResponse": { - "properties": { - "categories": { - "description": "List of all into type categories supported by the API.", - "items": { - "$ref": "GooglePrivacyDlpV2beta1CategoryDescription" - }, - "type": "array" - } - }, - "id": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse", - "description": "Response for ListRootCategories request.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1Finding": { - "properties": { - "createTime": { - "format": "google-datetime", - "description": "Timestamp when finding was detected.", - "type": "string" - }, - "infoType": { - "$ref": "GooglePrivacyDlpV2beta1InfoType", - "description": "The specific type of info the string might be." - }, - "location": { - "description": "Location of the info found.", - "$ref": "GooglePrivacyDlpV2beta1Location" - }, - "quote": { - "description": "The specific string that may be potentially sensitive info.", - "type": "string" - }, - "likelihood": { - "enum": [ - "LIKELIHOOD_UNSPECIFIED", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Estimate of how likely it is that the info_type is correct.", - "type": "string", - "enumDescriptions": [ - "Default value; information with all likelihoods is included.", - "Few matching elements.", - "", - "Some matching elements.", - "", - "Many matching elements." - ] - } - }, - "id": "GooglePrivacyDlpV2beta1Finding", - "description": "Container structure describing a single finding within a string or image.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1KindExpression": { - "properties": { - "name": { - "description": "The name of the kind.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1KindExpression", - "description": "A representation of a Datastore kind.", - "type": "object" - }, - "GoogleLongrunningListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "GoogleLongrunningOperation" - }, - "type": "array" - } - }, - "id": "GoogleLongrunningListOperationsResponse" - }, - "GooglePrivacyDlpV2beta1Row": { - "type": "object", - "properties": { - "values": { - "items": { - "$ref": "GooglePrivacyDlpV2beta1Value" - }, - "type": "array" - } - }, - "id": "GooglePrivacyDlpV2beta1Row" - }, - "GooglePrivacyDlpV2beta1FileSet": { - "description": "Set of files to scan.", - "type": "object", - "properties": { - "url": { - "description": "The url, in the format `gs://\u003cbucket\u003e/\u003cpath\u003e`. Trailing wildcard in the\npath is allowed.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1FileSet" - }, - "GooglePrivacyDlpV2beta1ListInspectFindingsResponse": { - "properties": { - "nextPageToken": { - "description": "If not empty, indicates that there may be more results that match the\nrequest; this value should be passed in a new `ListInspectFindingsRequest`.", - "type": "string" - }, - "result": { - "$ref": "GooglePrivacyDlpV2beta1InspectResult", - "description": "The results." - } - }, - "id": "GooglePrivacyDlpV2beta1ListInspectFindingsResponse", - "description": "Response to the ListInspectFindings request.", - "type": "object" - }, - "GoogleProtobufEmpty": { - "properties": {}, - "id": "GoogleProtobufEmpty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object" - }, - "GooglePrivacyDlpV2beta1TableLocation": { - "description": "Location of a finding within a `ContentItem.Table`.", - "type": "object", - "properties": { - "rowIndex": { - "format": "int64", - "description": "The zero-based index of the row where the finding is located.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1TableLocation" - }, - "GooglePrivacyDlpV2beta1DatastoreKey": { - "description": "Record key for a finding in Cloud Datastore.", - "type": "object", - "properties": { - "entityKey": { - "$ref": "GooglePrivacyDlpV2beta1Key", - "description": "Datastore entity key." - } - }, - "id": "GooglePrivacyDlpV2beta1DatastoreKey" - }, - "GooglePrivacyDlpV2beta1CloudStorageOptions": { - "description": "Options defining a file or a set of files (path ending with *) within\na Google Cloud Storage bucket.", - "type": "object", - "properties": { - "fileSet": { - "$ref": "GooglePrivacyDlpV2beta1FileSet" - } - }, - "id": "GooglePrivacyDlpV2beta1CloudStorageOptions" - }, - "GooglePrivacyDlpV2beta1RecordKey": { - "description": "Message for a unique key indicating a record that contains a finding.", - "type": "object", - "properties": { - "cloudStorageKey": { - "$ref": "GooglePrivacyDlpV2beta1CloudStorageKey" - }, - "datastoreKey": { - "$ref": "GooglePrivacyDlpV2beta1DatastoreKey" - } - }, - "id": "GooglePrivacyDlpV2beta1RecordKey" - }, - "GooglePrivacyDlpV2beta1CloudStoragePath": { - "description": "A location in Cloud Storage.", - "type": "object", - "properties": { - "path": { - "description": "The url, in the format of `gs://bucket/\u003cpath\u003e`.", - "type": "string" - } - }, - "id": "GooglePrivacyDlpV2beta1CloudStoragePath" + "id": "GooglePrivacyDlpV2beta1OutputStorageConfig" } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "canonicalName": "DLP", @@ -1454,5 +1063,523 @@ } } }, - "rootUrl": "https://dlp.googleapis.com/" + "rootUrl": "https://dlp.googleapis.com/", + "ownerDomain": "google.com", + "name": "dlp", + "batchPath": "batch", + "title": "DLP API", + "ownerName": "Google", + "resources": { + "inspect": { + "resources": { + "results": { + "resources": { + "findings": { + "methods": { + "list": { + "description": "Returns list of results for given inspect operation result set id.", + "response": { + "$ref": "GooglePrivacyDlpV2beta1ListInspectFindingsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "pattern": "^inspect/results/[^/]+$", + "location": "path", + "description": "Identifier of the results set returned as metadata of\nthe longrunning operation created by a call to CreateInspectOperation.\nShould be in the format of `inspect/results/{id}`.", + "required": true, + "type": "string" + }, + "pageToken": { + "description": "The value returned by the last `ListInspectFindingsResponse`; indicates\nthat this is a continuation of a prior `ListInspectFindings` call, and that\nthe system should return the next page of data.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "description": "Maximum number of results to return.\nIf 0, the implementation selects a reasonable value.", + "format": "int32", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "Restricts findings to items that match. Supports info_type and likelihood.\n\u003cp\u003eExamples:\u003cbr/\u003e\n\u003cli\u003einfo_type=EMAIL_ADDRESS\n\u003cli\u003einfo_type=PHONE_NUMBER,EMAIL_ADDRESS\n\u003cli\u003elikelihood=VERY_LIKELY\n\u003cli\u003elikelihood=VERY_LIKELY,LIKELY\n\u003cli\u003einfo_type=EMAIL_ADDRESS,likelihood=VERY_LIKELY,LIKELY", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/inspect/results/{resultsId}/findings", + "path": "v2beta1/{+name}/findings", + "id": "dlp.inspect.results.findings.list" + } + } + } + } + }, + "operations": { + "methods": { + "cancel": { + "path": "v2beta1/{+name}:cancel", + "id": "dlp.inspect.operations.cancel", + "request": { + "$ref": "GoogleLongrunningCancelOperationRequest" + }, + "description": "Cancels an operation. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation.", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be cancelled.", + "required": true, + "type": "string", + "pattern": "^inspect/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/inspect/operations/{operationsId}:cancel" + }, + "delete": { + "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", + "httpMethod": "DELETE", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "pattern": "^inspect/operations/[^/]+$", + "location": "path", + "description": "The name of the operation resource to be deleted.", + "required": true, + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/inspect/operations/{operationsId}", + "id": "dlp.inspect.operations.delete", + "path": "v2beta1/{+name}" + }, + "list": { + "response": { + "$ref": "GoogleLongrunningListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "filter": { + "description": "This parameter supports filtering by done, ie done=true or done=false.", + "type": "string", + "location": "query" + }, + "name": { + "pattern": "^inspect/operations$", + "location": "path", + "description": "The name of the operation's parent resource.", + "required": true, + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "pageSize": { + "description": "The list page size. The max allowed value is 256 and default is 100.", + "format": "int32", + "type": "integer", + "location": "query" + } + }, + "flatPath": "v2beta1/inspect/operations", + "path": "v2beta1/{+name}", + "id": "dlp.inspect.operations.list", + "description": "Fetch the list of long running operations." + }, + "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The name of the operation resource.", + "required": true, + "type": "string", + "pattern": "^inspect/operations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/inspect/operations/{operationsId}", + "path": "v2beta1/{+name}", + "id": "dlp.inspect.operations.get" + }, + "create": { + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/inspect/operations", + "path": "v2beta1/inspect/operations", + "id": "dlp.inspect.operations.create", + "request": { + "$ref": "GooglePrivacyDlpV2beta1CreateInspectOperationRequest" + }, + "description": "Schedules a job scanning content in a Google Cloud Platform data\nrepository." + } + } + } + } + }, + "content": { + "methods": { + "inspect": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "GooglePrivacyDlpV2beta1InspectContentResponse" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/content:inspect", + "id": "dlp.content.inspect", + "path": "v2beta1/content:inspect", + "request": { + "$ref": "GooglePrivacyDlpV2beta1InspectContentRequest" + }, + "description": "Finds potentially sensitive info in a list of strings.\nThis method has limits on input size, processing time, and output size." + }, + "redact": { + "response": { + "$ref": "GooglePrivacyDlpV2beta1RedactContentResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/content:redact", + "path": "v2beta1/content:redact", + "id": "dlp.content.redact", + "request": { + "$ref": "GooglePrivacyDlpV2beta1RedactContentRequest" + }, + "description": "Redacts potentially sensitive info from a list of strings.\nThis method has limits on input size, processing time, and output size." + } + } + }, + "rootCategories": { + "methods": { + "list": { + "response": { + "$ref": "GooglePrivacyDlpV2beta1ListRootCategoriesResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "languageCode": { + "description": "Optional language code for localized friendly category names.\nIf omitted or if localized strings are not available,\nen-US strings will be returned.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/rootCategories", + "path": "v2beta1/rootCategories", + "id": "dlp.rootCategories.list", + "description": "Returns the list of root categories of sensitive information." + } + }, + "resources": { + "infoTypes": { + "methods": { + "list": { + "description": "Returns sensitive information types for given category.", + "httpMethod": "GET", + "parameterOrder": [ + "category" + ], + "response": { + "$ref": "GooglePrivacyDlpV2beta1ListInfoTypesResponse" + }, + "parameters": { + "category": { + "location": "path", + "description": "Category name as returned by ListRootCategories.", + "required": true, + "type": "string", + "pattern": "^[^/]+$" + }, + "languageCode": { + "location": "query", + "description": "Optional BCP-47 language code for localized info type friendly\nnames. If omitted, or if localized strings are not available,\nen-US strings will be returned.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/rootCategories/{rootCategoriesId}/infoTypes", + "id": "dlp.rootCategories.infoTypes.list", + "path": "v2beta1/rootCategories/{+category}/infoTypes" + } + } + } + } + }, + "riskAnalysis": { + "resources": { + "operations": { + "methods": { + "cancel": { + "request": { + "$ref": "GoogleLongrunningCancelOperationRequest" + }, + "description": "Cancels an operation. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be cancelled.", + "required": true, + "type": "string", + "pattern": "^riskAnalysis/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}:cancel", + "id": "dlp.riskAnalysis.operations.cancel", + "path": "v2beta1/{+name}:cancel" + }, + "delete": { + "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}", + "id": "dlp.riskAnalysis.operations.delete", + "path": "v2beta1/{+name}", + "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "parameters": { + "name": { + "description": "The name of the operation resource to be deleted.", + "required": true, + "type": "string", + "pattern": "^riskAnalysis/operations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "httpMethod": "GET", + "response": { + "$ref": "GoogleLongrunningListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "filter": { + "location": "query", + "description": "This parameter supports filtering by done, ie done=true or done=false.", + "type": "string" + }, + "name": { + "description": "The name of the operation's parent resource.", + "required": true, + "type": "string", + "pattern": "^riskAnalysis/operations$", + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "The standard list page token.", + "type": "string" + }, + "pageSize": { + "description": "The list page size. The max allowed value is 256 and default is 100.", + "format": "int32", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/riskAnalysis/operations", + "id": "dlp.riskAnalysis.operations.list", + "path": "v2beta1/{+name}", + "description": "Fetch the list of long running operations." + }, + "get": { + "id": "dlp.riskAnalysis.operations.get", + "path": "v2beta1/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "httpMethod": "GET", + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "The name of the operation resource.", + "required": true, + "type": "string", + "pattern": "^riskAnalysis/operations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}" + } + } + } + } + } + }, + "parameters": { + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "type": "boolean", + "default": "true", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "type": "boolean", + "default": "true", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + } + }, + "version": "v2beta1" } diff --git a/vendor/google.golang.org/api/dlp/v2beta1/dlp-gen.go b/vendor/google.golang.org/api/dlp/v2beta1/dlp-gen.go index c0e7c4d..2ef7bcb 100644 --- a/vendor/google.golang.org/api/dlp/v2beta1/dlp-gen.go +++ b/vendor/google.golang.org/api/dlp/v2beta1/dlp-gen.go @@ -58,6 +58,7 @@ func New(client *http.Client) (*Service, error) { s := &Service{client: client, BasePath: basePath} s.Content = NewContentService(s) s.Inspect = NewInspectService(s) + s.RiskAnalysis = NewRiskAnalysisService(s) s.RootCategories = NewRootCategoriesService(s) return s, nil } @@ -71,6 +72,8 @@ type Service struct { Inspect *InspectService + RiskAnalysis *RiskAnalysisService + RootCategories *RootCategoriesService } @@ -135,6 +138,27 @@ type InspectResultsFindingsService struct { s *Service } +func NewRiskAnalysisService(s *Service) *RiskAnalysisService { + rs := &RiskAnalysisService{s: s} + rs.Operations = NewRiskAnalysisOperationsService(s) + return rs +} + +type RiskAnalysisService struct { + s *Service + + Operations *RiskAnalysisOperationsService +} + +func NewRiskAnalysisOperationsService(s *Service) *RiskAnalysisOperationsService { + rs := &RiskAnalysisOperationsService{s: s} + return rs +} + +type RiskAnalysisOperationsService struct { + s *Service +} + func NewRootCategoriesService(s *Service) *RootCategoriesService { rs := &RootCategoriesService{s: s} rs.InfoTypes = NewRootCategoriesInfoTypesService(s) @@ -204,8 +228,8 @@ func (s *GoogleLongrunningListOperationsResponse) MarshalJSON() ([]byte, error) type GoogleLongrunningOperation struct { // Done: If the value is `false`, it means the operation is still in // progress. - // If true, the operation is completed, and either `error` or `response` - // is + // If `true`, the operation is completed, and either `error` or + // `response` is // available. Done bool `json:"done,omitempty"` @@ -3486,6 +3510,610 @@ func (c *InspectResultsFindingsListCall) Pages(ctx context.Context, f func(*Goog } } +// method id "dlp.riskAnalysis.operations.cancel": + +type RiskAnalysisOperationsCancelCall struct { + s *Service + name string + googlelongrunningcanceloperationrequest *GoogleLongrunningCancelOperationRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Cancel: Cancels an operation. Use the get method to check whether the +// cancellation succeeded or whether the operation completed despite +// cancellation. +func (r *RiskAnalysisOperationsService) Cancel(name string, googlelongrunningcanceloperationrequest *GoogleLongrunningCancelOperationRequest) *RiskAnalysisOperationsCancelCall { + c := &RiskAnalysisOperationsCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.googlelongrunningcanceloperationrequest = googlelongrunningcanceloperationrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *RiskAnalysisOperationsCancelCall) Fields(s ...googleapi.Field) *RiskAnalysisOperationsCancelCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *RiskAnalysisOperationsCancelCall) Context(ctx context.Context) *RiskAnalysisOperationsCancelCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *RiskAnalysisOperationsCancelCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RiskAnalysisOperationsCancelCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlelongrunningcanceloperationrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/{+name}:cancel") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dlp.riskAnalysis.operations.cancel" call. +// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *RiskAnalysisOperationsCancelCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleProtobufEmpty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Cancels an operation. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation.", + // "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}:cancel", + // "httpMethod": "POST", + // "id": "dlp.riskAnalysis.operations.cancel", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be cancelled.", + // "location": "path", + // "pattern": "^riskAnalysis/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v2beta1/{+name}:cancel", + // "request": { + // "$ref": "GoogleLongrunningCancelOperationRequest" + // }, + // "response": { + // "$ref": "GoogleProtobufEmpty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dlp.riskAnalysis.operations.delete": + +type RiskAnalysisOperationsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: This method is not supported and the server returns +// `UNIMPLEMENTED`. +func (r *RiskAnalysisOperationsService) Delete(name string) *RiskAnalysisOperationsDeleteCall { + c := &RiskAnalysisOperationsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *RiskAnalysisOperationsDeleteCall) Fields(s ...googleapi.Field) *RiskAnalysisOperationsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *RiskAnalysisOperationsDeleteCall) Context(ctx context.Context) *RiskAnalysisOperationsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *RiskAnalysisOperationsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RiskAnalysisOperationsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dlp.riskAnalysis.operations.delete" call. +// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *RiskAnalysisOperationsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleProtobufEmpty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", + // "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}", + // "httpMethod": "DELETE", + // "id": "dlp.riskAnalysis.operations.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource to be deleted.", + // "location": "path", + // "pattern": "^riskAnalysis/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v2beta1/{+name}", + // "response": { + // "$ref": "GoogleProtobufEmpty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dlp.riskAnalysis.operations.get": + +type RiskAnalysisOperationsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the latest state of a long-running operation. Clients can +// use this +// method to poll the operation result at intervals as recommended by +// the API +// service. +func (r *RiskAnalysisOperationsService) Get(name string) *RiskAnalysisOperationsGetCall { + c := &RiskAnalysisOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *RiskAnalysisOperationsGetCall) Fields(s ...googleapi.Field) *RiskAnalysisOperationsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *RiskAnalysisOperationsGetCall) IfNoneMatch(entityTag string) *RiskAnalysisOperationsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *RiskAnalysisOperationsGetCall) Context(ctx context.Context) *RiskAnalysisOperationsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *RiskAnalysisOperationsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RiskAnalysisOperationsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dlp.riskAnalysis.operations.get" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *RiskAnalysisOperationsGetCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + // "flatPath": "v2beta1/riskAnalysis/operations/{operationsId}", + // "httpMethod": "GET", + // "id": "dlp.riskAnalysis.operations.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "The name of the operation resource.", + // "location": "path", + // "pattern": "^riskAnalysis/operations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v2beta1/{+name}", + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "dlp.riskAnalysis.operations.list": + +type RiskAnalysisOperationsListCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Fetch the list of long running operations. +func (r *RiskAnalysisOperationsService) List(name string) *RiskAnalysisOperationsListCall { + c := &RiskAnalysisOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Filter sets the optional parameter "filter": This parameter supports +// filtering by done, ie done=true or done=false. +func (c *RiskAnalysisOperationsListCall) Filter(filter string) *RiskAnalysisOperationsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The list page size. +// The max allowed value is 256 and default is 100. +func (c *RiskAnalysisOperationsListCall) PageSize(pageSize int64) *RiskAnalysisOperationsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The standard list +// page token. +func (c *RiskAnalysisOperationsListCall) PageToken(pageToken string) *RiskAnalysisOperationsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *RiskAnalysisOperationsListCall) Fields(s ...googleapi.Field) *RiskAnalysisOperationsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *RiskAnalysisOperationsListCall) IfNoneMatch(entityTag string) *RiskAnalysisOperationsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *RiskAnalysisOperationsListCall) Context(ctx context.Context) *RiskAnalysisOperationsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *RiskAnalysisOperationsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *RiskAnalysisOperationsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v2beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "dlp.riskAnalysis.operations.list" call. +// Exactly one of *GoogleLongrunningListOperationsResponse or error will +// be non-nil. Any non-2xx status code is an error. Response headers are +// in either +// *GoogleLongrunningListOperationsResponse.ServerResponse.Header or (if +// a response was returned at all) in error.(*googleapi.Error).Header. +// Use googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *RiskAnalysisOperationsListCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningListOperationsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningListOperationsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Fetch the list of long running operations.", + // "flatPath": "v2beta1/riskAnalysis/operations", + // "httpMethod": "GET", + // "id": "dlp.riskAnalysis.operations.list", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "filter": { + // "description": "This parameter supports filtering by done, ie done=true or done=false.", + // "location": "query", + // "type": "string" + // }, + // "name": { + // "description": "The name of the operation's parent resource.", + // "location": "path", + // "pattern": "^riskAnalysis/operations$", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "The list page size. The max allowed value is 256 and default is 100.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The standard list page token.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v2beta1/{+name}", + // "response": { + // "$ref": "GoogleLongrunningListOperationsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *RiskAnalysisOperationsListCall) Pages(ctx context.Context, f func(*GoogleLongrunningListOperationsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + // method id "dlp.rootCategories.list": type RootCategoriesListCall struct { diff --git a/vendor/google.golang.org/api/drive/v2/drive-api.json b/vendor/google.golang.org/api/drive/v2/drive-api.json index 32a2949..4c14ad7 100644 --- a/vendor/google.golang.org/api/drive/v2/drive-api.json +++ b/vendor/google.golang.org/api/drive/v2/drive-api.json @@ -1,11 +1,11 @@ { "kind": "discovery#restDescription", - "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/GZBaoIT2JIa-WG47c56OJgYWjRw\"", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/qmWmGL8KMF_u3tBIUB8jIslHffs\"", "discoveryVersion": "v1", "id": "drive:v2", "name": "drive", "version": "v2", - "revision": "20170623", + "revision": "20170811", "title": "Drive API", "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.", "ownerDomain": "google.com", @@ -20,7 +20,7 @@ "basePath": "/drive/v2/", "rootUrl": "https://www.googleapis.com/", "servicePath": "drive/v2/", - "batchPath": "batch", + "batchPath": "batch/drive/v2", "parameters": { "alt": { "type": "string", diff --git a/vendor/google.golang.org/api/drive/v3/drive-api.json b/vendor/google.golang.org/api/drive/v3/drive-api.json index 68f30fc..6ba8a38 100644 --- a/vendor/google.golang.org/api/drive/v3/drive-api.json +++ b/vendor/google.golang.org/api/drive/v3/drive-api.json @@ -1,11 +1,11 @@ { "kind": "discovery#restDescription", - "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/UFnN-1uMaWxq-BESPylMBj6ravQ\"", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/54w9sW_MBOG7UQrKw2OpvPrAYNI\"", "discoveryVersion": "v1", "id": "drive:v3", "name": "drive", "version": "v3", - "revision": "20170623", + "revision": "20170811", "title": "Drive API", "description": "Manages files in Drive including uploading, downloading, searching, detecting changes, and updating sharing permissions.", "ownerDomain": "google.com", @@ -20,7 +20,7 @@ "basePath": "/drive/v3/", "rootUrl": "https://www.googleapis.com/", "servicePath": "drive/v3/", - "batchPath": "batch", + "batchPath": "batch/drive/v3", "parameters": { "alt": { "type": "string", diff --git a/vendor/google.golang.org/api/firebasedynamiclinks/v1/firebasedynamiclinks-api.json b/vendor/google.golang.org/api/firebasedynamiclinks/v1/firebasedynamiclinks-api.json index 5f625a6..9314a9f 100644 --- a/vendor/google.golang.org/api/firebasedynamiclinks/v1/firebasedynamiclinks-api.json +++ b/vendor/google.golang.org/api/firebasedynamiclinks/v1/firebasedynamiclinks-api.json @@ -1,18 +1,4 @@ { - "canonicalName": "Firebase Dynamic Links", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/firebase": { - "description": "View and administer all your Firebase data and settings" - } - } - } - }, - "rootUrl": "https://firebasedynamiclinks-ipv6.googleapis.com/", - "ownerDomain": "google.com", - "name": "firebasedynamiclinks", - "batchPath": "batch", "title": "Firebase Dynamic Links API", "ownerName": "Google", "resources": { @@ -24,24 +10,23 @@ }, "parameterOrder": [], "httpMethod": "POST", + "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/firebase" ], - "parameters": {}, "flatPath": "v1/shortLinks", "path": "v1/shortLinks", "id": "firebasedynamiclinks.shortLinks.create", - "description": "Creates a short Dynamic Link given either a valid long Dynamic Link or\ndetails such as Dynamic Link domain, Android and iOS app information.\nThe created short Dynamic Link will not expire.\n\nRepeated calls with the same long Dynamic Link or Dynamic Link information\nwill produce the same short Dynamic Link.\n\nThe Dynamic Link domain in the request must be owned by requester's\nFirebase project.", "request": { "$ref": "CreateShortDynamicLinkRequest" - } + }, + "description": "Creates a short Dynamic Link given either a valid long Dynamic Link or\ndetails such as Dynamic Link domain, Android and iOS app information.\nThe created short Dynamic Link will not expire.\n\nRepeated calls with the same long Dynamic Link or Dynamic Link information\nwill produce the same short Dynamic Link.\n\nThe Dynamic Link domain in the request must be owned by requester's\nFirebase project." } } }, "v1": { "methods": { "getLinkStats": { - "description": "Fetches analytics stats of a short Dynamic Link for a given\nduration. Metrics include number of clicks, redirects, installs,\napp first opens, and app reopens.", "response": { "$ref": "DynamicLinkStats" }, @@ -60,28 +45,29 @@ "location": "query" }, "dynamicLink": { + "location": "path", "description": "Dynamic Link URL. e.g. https://abcd.app.goo.gl/wxyz", "required": true, - "type": "string", - "location": "path" + "type": "string" } }, "flatPath": "v1/{dynamicLink}/linkStats", "path": "v1/{dynamicLink}/linkStats", - "id": "firebasedynamiclinks.getLinkStats" + "id": "firebasedynamiclinks.getLinkStats", + "description": "Fetches analytics stats of a short Dynamic Link for a given\nduration. Metrics include number of clicks, redirects, installs,\napp first opens, and app reopens." } } } }, "parameters": { - "access_token": { - "description": "OAuth access token.", + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, - "key": { + "access_token": { "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "description": "OAuth access token.", "type": "string" }, "quotaUser": { @@ -95,26 +81,26 @@ "default": "true", "location": "query" }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, "oauth_token": { "location": "query", "description": "OAuth 2.0 token for the current user.", "type": "string" }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "type": "boolean", - "default": "true" + "default": "true", + "location": "query" }, "uploadType": { "location": "query", @@ -126,9 +112,12 @@ "type": "string", "location": "query" }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, "$.xgafv": { - "description": "V1 error format.", - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -137,12 +126,9 @@ "enum": [ "1", "2" - ] - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + ], + "description": "V1 error format.", + "type": "string" }, "alt": { "type": "string", @@ -173,270 +159,10 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "NavigationInfo": { - "description": "Information of navigation behavior.", - "type": "object", - "properties": { - "enableForcedRedirect": { - "description": "If this option is on, FDL click will be forced to redirect rather than\nshow an interstitial page.", - "type": "boolean" - } - }, - "id": "NavigationInfo" - }, - "IosInfo": { - "description": "iOS related attributes to the Dynamic Link..", - "type": "object", - "properties": { - "iosFallbackLink": { - "description": "Link to open on iOS if the app is not installed.", - "type": "string" - }, - "iosAppStoreId": { - "description": "iOS App Store ID.", - "type": "string" - }, - "iosIpadFallbackLink": { - "description": "If specified, this overrides the ios_fallback_link value on iPads.", - "type": "string" - }, - "iosIpadBundleId": { - "description": "iPad bundle ID of the app.", - "type": "string" - }, - "iosCustomScheme": { - "description": "Custom (destination) scheme to use for iOS. By default, we’ll use the\nbundle ID as the custom scheme. Developer can override this behavior using\nthis param.", - "type": "string" - }, - "iosBundleId": { - "description": "iOS bundle ID of the app.", - "type": "string" - } - }, - "id": "IosInfo" - }, - "AnalyticsInfo": { - "description": "Tracking parameters supported by Dynamic Link.", - "type": "object", - "properties": { - "itunesConnectAnalytics": { - "description": "iTunes Connect App Analytics.", - "$ref": "ITunesConnectAnalytics" - }, - "googlePlayAnalytics": { - "description": "Google Play Campaign Measurements.", - "$ref": "GooglePlayAnalytics" - } - }, - "id": "AnalyticsInfo" - }, - "CreateShortDynamicLinkRequest": { - "description": "Request to create a short Dynamic Link.", - "type": "object", - "properties": { - "suffix": { - "description": "Short Dynamic Link suffix. Optional.", - "$ref": "Suffix" - }, - "dynamicLinkInfo": { - "description": "Information about the Dynamic Link to be shortened.\n[Learn more](https://firebase.google.com/docs/dynamic-links/android#create-a-dynamic-link-programmatically).", - "$ref": "DynamicLinkInfo" - }, - "longDynamicLink": { - "description": "Full long Dynamic Link URL with desired query parameters specified.\nFor example,\n\"https://sample.app.goo.gl/?link=http://www.google.com&apn=com.sample\",\n[Learn more](https://firebase.google.com/docs/dynamic-links/android#create-a-dynamic-link-programmatically).", - "type": "string" - } - }, - "id": "CreateShortDynamicLinkRequest" - }, - "DynamicLinkEventStat": { - "description": "Dynamic Link event stat.", - "type": "object", - "properties": { - "count": { - "description": "The number of times this event occurred.", - "format": "int64", - "type": "string" - }, - "event": { - "enumDescriptions": [ - "Unspecified type.", - "Indicates that an FDL is clicked by users.", - "Indicates that an FDL redirects users to fallback link.", - "Indicates that an FDL triggers an app install from Play store, currently\nit's impossible to get stats from App store.", - "Indicates that the app is opened for the first time after an install\ntriggered by FDLs", - "Indicates that the app is opened via an FDL for non-first time." - ], - "enum": [ - "DYNAMIC_LINK_EVENT_UNSPECIFIED", - "CLICK", - "REDIRECT", - "APP_INSTALL", - "APP_FIRST_OPEN", - "APP_RE_OPEN" - ], - "description": "Link event.", - "type": "string" - }, - "platform": { - "enumDescriptions": [ - "Unspecified platform.", - "Represents Android platform.\nAll apps and browsers on Android are classfied in this category.", - "Represents iOS platform.\nAll apps and browsers on iOS are classfied in this category.", - "Represents desktop.\nNote: other platforms like Windows, Blackberry, Amazon fall into this\ncategory." - ], - "enum": [ - "DYNAMIC_LINK_PLATFORM_UNSPECIFIED", - "ANDROID", - "IOS", - "DESKTOP" - ], - "description": "Requested platform.", - "type": "string" - } - }, - "id": "DynamicLinkEventStat" - }, - "CreateShortDynamicLinkResponse": { - "description": "Response to create a short Dynamic Link.", - "type": "object", - "properties": { - "warning": { - "description": "Information about potential warnings on link creation.", - "type": "array", - "items": { - "$ref": "DynamicLinkWarning" - } - }, - "shortLink": { - "description": "Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz", - "type": "string" - }, - "previewLink": { - "description": "Preivew link to show the link flow chart.", - "type": "string" - } - }, - "id": "CreateShortDynamicLinkResponse" - }, - "Suffix": { - "description": "Short Dynamic Link suffix.", - "type": "object", - "properties": { - "option": { - "enumDescriptions": [ - "The suffix option is not specified, performs as NOT_GUESSABLE .", - "Short Dynamic Link suffix is a base62 [0-9A-Za-z] encoded string of\na random generated 96 bit random number, which has a length of 17 chars.\nFor example, \"nlAR8U4SlKRZw1cb2\".\nIt prevents other people from guessing and crawling short Dynamic Links\nthat contain personal identifiable information.", - "Short Dynamic Link suffix is a base62 [0-9A-Za-z] string starting with a\nlength of 4 chars. the length will increase when all the space is\noccupied." - ], - "enum": [ - "OPTION_UNSPECIFIED", - "UNGUESSABLE", - "SHORT" - ], - "description": "Suffix option.", - "type": "string" - } - }, - "id": "Suffix" - }, - "GooglePlayAnalytics": { - "description": "Parameters for Google Play Campaign Measurements.\n[Learn more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params)", - "type": "object", - "properties": { - "gclid": { - "description": "[AdWords autotagging parameter](https://support.google.com/analytics/answer/1033981?hl=en);\nused to measure Google AdWords ads. This value is generated dynamically\nand should never be modified.", - "type": "string" - }, - "utmCampaign": { - "description": "Campaign name; used for keyword analysis to identify a specific product\npromotion or strategic campaign.", - "type": "string" - }, - "utmContent": { - "description": "Campaign content; used for A/B testing and content-targeted ads to\ndifferentiate ads or links that point to the same URL.", - "type": "string" - }, - "utmMedium": { - "description": "Campaign medium; used to identify a medium such as email or cost-per-click.", - "type": "string" - }, - "utmTerm": { - "description": "Campaign term; used with paid search to supply the keywords for ads.", - "type": "string" - }, - "utmSource": { - "description": "Campaign source; used to identify a search engine, newsletter, or other\nsource.", - "type": "string" - } - }, - "id": "GooglePlayAnalytics" - }, - "DynamicLinkInfo": { - "description": "Information about a Dynamic Link.", - "type": "object", - "properties": { - "analyticsInfo": { - "$ref": "AnalyticsInfo", - "description": "Parameters used for tracking. See all tracking parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)." - }, - "dynamicLinkDomain": { - "description": "Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl\n[Learn more](https://firebase.google.com/docs/dynamic-links/android/receive)\non how to set up Dynamic Link domain associated with your Firebase project.\n\nRequired.", - "type": "string" - }, - "link": { - "description": "The link your app will open, You can specify any URL your app can handle.\nThis link must be a well-formatted URL, be properly URL-encoded, and use\nthe HTTP or HTTPS scheme. See 'link' parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).\n\nRequired.", - "type": "string" - }, - "iosInfo": { - "description": "iOS related information. See iOS related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).", - "$ref": "IosInfo" - }, - "socialMetaTagInfo": { - "description": "Parameters for social meta tag params.\nUsed to set meta tag data for link previews on social sites.", - "$ref": "SocialMetaTagInfo" - }, - "androidInfo": { - "description": "Android related information. See Android related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).", - "$ref": "AndroidInfo" - }, - "navigationInfo": { - "$ref": "NavigationInfo", - "description": "Information of navigation behavior of a Firebase Dynamic Links." - } - }, - "id": "DynamicLinkInfo" - }, - "ITunesConnectAnalytics": { - "description": "Parameters for iTunes Connect App Analytics.", - "type": "object", - "properties": { - "at": { - "description": "Affiliate token used to create affiliate-coded links.", - "type": "string" - }, - "ct": { - "description": "Campaign text that developers can optionally add to any link in order to\ntrack sales from a specific marketing campaign.", - "type": "string" - }, - "mt": { - "description": "iTune media types, including music, podcasts, audiobooks and so on.", - "type": "string" - }, - "pt": { - "description": "Provider token that enables analytics for Dynamic Links from within iTunes\nConnect.", - "type": "string" - } - }, - "id": "ITunesConnectAnalytics" - }, "SocialMetaTagInfo": { "description": "Parameters for social meta tag params.\nUsed to set meta tag data for link previews on social sites.", "type": "object", "properties": { - "socialDescription": { - "description": "A short description of the link. Optional.", - "type": "string" - }, "socialTitle": { "description": "Title to be displayed. Optional.", "type": "string" @@ -444,6 +170,10 @@ "socialImageLink": { "description": "An image url string. Optional.", "type": "string" + }, + "socialDescription": { + "description": "A short description of the link. Optional.", + "type": "string" } }, "id": "SocialMetaTagInfo" @@ -471,50 +201,25 @@ }, "id": "AndroidInfo" }, + "DynamicLinkStats": { + "description": "Analytics stats of a Dynamic Link for a given timeframe.", + "type": "object", + "properties": { + "linkEventStats": { + "description": "Dynamic Link event stats.", + "type": "array", + "items": { + "$ref": "DynamicLinkEventStat" + } + } + }, + "id": "DynamicLinkStats" + }, "DynamicLinkWarning": { "description": "Dynamic Links warning messages.", "type": "object", "properties": { - "warningMessage": { - "description": "The warning message to help developers improve their requests.", - "type": "string" - }, - "warningDocumentLink": { - "description": "The document describing the warning, and helps resolve.", - "type": "string" - }, "warningCode": { - "enumDescriptions": [ - "Unknown code.", - "The Android package does not match any in developer's DevConsole project.", - "The Android minimum version code has to be a valid integer.", - "Android package min version param is not needed, e.g. when\n'apn' is missing.", - "Android link is not a valid URI.", - "Android link param is not needed, e.g. when param 'al' and 'link' have\nthe same value..", - "Android fallback link is not a valid URI.", - "Android fallback link has an invalid (non http/https) URI scheme.", - "The iOS bundle ID does not match any in developer's DevConsole project.", - "The iPad bundle ID does not match any in developer's DevConsole project.", - "iOS URL scheme is not needed, e.g. when 'ibi' are 'ipbi' are all missing.", - "iOS app store ID format is incorrect, e.g. not numeric.", - "iOS app store ID is not needed.", - "iOS fallback link is not a valid URI.", - "iOS fallback link has an invalid (non http/https) URI scheme.", - "iPad fallback link is not a valid URI.", - "iPad fallback link has an invalid (non http/https) URI scheme.", - "Debug param format is incorrect.", - "isAd param format is incorrect.", - "Indicates a certain param is deprecated.", - "Indicates certain paramater is not recognized.", - "Indicates certain paramater is too long.", - "Social meta tag image link is not a valid URI.", - "Social meta tag image link has an invalid (non http/https) URI scheme.", - "", - "", - "Dynamic Link URL length is too long.", - "Dynamic Link URL contains fragments.", - "The iOS bundle ID does not match with the given iOS store ID." - ], "enum": [ "CODE_UNSPECIFIED", "NOT_IN_PROJECT_ANDROID_PACKAGE_NAME", @@ -547,29 +252,324 @@ "NOT_MATCHING_IOS_BUNDLE_ID_AND_STORE_ID" ], "description": "The warning code.", + "type": "string", + "enumDescriptions": [ + "Unknown code.", + "The Android package does not match any in developer's DevConsole project.", + "The Android minimum version code has to be a valid integer.", + "Android package min version param is not needed, e.g. when\n'apn' is missing.", + "Android link is not a valid URI.", + "Android link param is not needed, e.g. when param 'al' and 'link' have\nthe same value..", + "Android fallback link is not a valid URI.", + "Android fallback link has an invalid (non http/https) URI scheme.", + "The iOS bundle ID does not match any in developer's DevConsole project.", + "The iPad bundle ID does not match any in developer's DevConsole project.", + "iOS URL scheme is not needed, e.g. when 'ibi' are 'ipbi' are all missing.", + "iOS app store ID format is incorrect, e.g. not numeric.", + "iOS app store ID is not needed.", + "iOS fallback link is not a valid URI.", + "iOS fallback link has an invalid (non http/https) URI scheme.", + "iPad fallback link is not a valid URI.", + "iPad fallback link has an invalid (non http/https) URI scheme.", + "Debug param format is incorrect.", + "isAd param format is incorrect.", + "Indicates a certain param is deprecated.", + "Indicates certain paramater is not recognized.", + "Indicates certain paramater is too long.", + "Social meta tag image link is not a valid URI.", + "Social meta tag image link has an invalid (non http/https) URI scheme.", + "", + "", + "Dynamic Link URL length is too long.", + "Dynamic Link URL contains fragments.", + "The iOS bundle ID does not match with the given iOS store ID." + ] + }, + "warningMessage": { + "description": "The warning message to help developers improve their requests.", + "type": "string" + }, + "warningDocumentLink": { + "description": "The document describing the warning, and helps resolve.", "type": "string" } }, "id": "DynamicLinkWarning" }, - "DynamicLinkStats": { - "description": "Analytics stats of a Dynamic Link for a given timeframe.", + "NavigationInfo": { + "description": "Information of navigation behavior.", "type": "object", "properties": { - "linkEventStats": { - "description": "Dynamic Link event stats.", + "enableForcedRedirect": { + "description": "If this option is on, FDL click will be forced to redirect rather than\nshow an interstitial page.", + "type": "boolean" + } + }, + "id": "NavigationInfo" + }, + "IosInfo": { + "properties": { + "iosIpadBundleId": { + "description": "iPad bundle ID of the app.", + "type": "string" + }, + "iosCustomScheme": { + "description": "Custom (destination) scheme to use for iOS. By default, we’ll use the\nbundle ID as the custom scheme. Developer can override this behavior using\nthis param.", + "type": "string" + }, + "iosBundleId": { + "description": "iOS bundle ID of the app.", + "type": "string" + }, + "iosFallbackLink": { + "description": "Link to open on iOS if the app is not installed.", + "type": "string" + }, + "iosAppStoreId": { + "description": "iOS App Store ID.", + "type": "string" + }, + "iosIpadFallbackLink": { + "description": "If specified, this overrides the ios_fallback_link value on iPads.", + "type": "string" + } + }, + "id": "IosInfo", + "description": "iOS related attributes to the Dynamic Link..", + "type": "object" + }, + "AnalyticsInfo": { + "properties": { + "itunesConnectAnalytics": { + "$ref": "ITunesConnectAnalytics", + "description": "iTunes Connect App Analytics." + }, + "googlePlayAnalytics": { + "description": "Google Play Campaign Measurements.", + "$ref": "GooglePlayAnalytics" + } + }, + "id": "AnalyticsInfo", + "description": "Tracking parameters supported by Dynamic Link.", + "type": "object" + }, + "CreateShortDynamicLinkRequest": { + "properties": { + "suffix": { + "description": "Short Dynamic Link suffix. Optional.", + "$ref": "Suffix" + }, + "dynamicLinkInfo": { + "description": "Information about the Dynamic Link to be shortened.\n[Learn more](https://firebase.google.com/docs/dynamic-links/android#create-a-dynamic-link-programmatically).", + "$ref": "DynamicLinkInfo" + }, + "longDynamicLink": { + "description": "Full long Dynamic Link URL with desired query parameters specified.\nFor example,\n\"https://sample.app.goo.gl/?link=http://www.google.com&apn=com.sample\",\n[Learn more](https://firebase.google.com/docs/dynamic-links/android#create-a-dynamic-link-programmatically).", + "type": "string" + } + }, + "id": "CreateShortDynamicLinkRequest", + "description": "Request to create a short Dynamic Link.", + "type": "object" + }, + "DynamicLinkEventStat": { + "description": "Dynamic Link event stat.", + "type": "object", + "properties": { + "platform": { + "enum": [ + "DYNAMIC_LINK_PLATFORM_UNSPECIFIED", + "ANDROID", + "IOS", + "DESKTOP" + ], + "description": "Requested platform.", + "type": "string", + "enumDescriptions": [ + "Unspecified platform.", + "Represents Android platform.\nAll apps and browsers on Android are classfied in this category.", + "Represents iOS platform.\nAll apps and browsers on iOS are classfied in this category.", + "Represents desktop.\nNote: other platforms like Windows, Blackberry, Amazon fall into this\ncategory." + ] + }, + "count": { + "description": "The number of times this event occurred.", + "format": "int64", + "type": "string" + }, + "event": { + "enumDescriptions": [ + "Unspecified type.", + "Indicates that an FDL is clicked by users.", + "Indicates that an FDL redirects users to fallback link.", + "Indicates that an FDL triggers an app install from Play store, currently\nit's impossible to get stats from App store.", + "Indicates that the app is opened for the first time after an install\ntriggered by FDLs", + "Indicates that the app is opened via an FDL for non-first time." + ], + "enum": [ + "DYNAMIC_LINK_EVENT_UNSPECIFIED", + "CLICK", + "REDIRECT", + "APP_INSTALL", + "APP_FIRST_OPEN", + "APP_RE_OPEN" + ], + "description": "Link event.", + "type": "string" + } + }, + "id": "DynamicLinkEventStat" + }, + "CreateShortDynamicLinkResponse": { + "description": "Response to create a short Dynamic Link.", + "type": "object", + "properties": { + "shortLink": { + "description": "Short Dynamic Link value. e.g. https://abcd.app.goo.gl/wxyz", + "type": "string" + }, + "previewLink": { + "description": "Preivew link to show the link flow chart.", + "type": "string" + }, + "warning": { + "description": "Information about potential warnings on link creation.", "type": "array", "items": { - "$ref": "DynamicLinkEventStat" + "$ref": "DynamicLinkWarning" } } }, - "id": "DynamicLinkStats" + "id": "CreateShortDynamicLinkResponse" + }, + "Suffix": { + "description": "Short Dynamic Link suffix.", + "type": "object", + "properties": { + "option": { + "description": "Suffix option.", + "type": "string", + "enumDescriptions": [ + "The suffix option is not specified, performs as NOT_GUESSABLE .", + "Short Dynamic Link suffix is a base62 [0-9A-Za-z] encoded string of\na random generated 96 bit random number, which has a length of 17 chars.\nFor example, \"nlAR8U4SlKRZw1cb2\".\nIt prevents other people from guessing and crawling short Dynamic Links\nthat contain personal identifiable information.", + "Short Dynamic Link suffix is a base62 [0-9A-Za-z] string starting with a\nlength of 4 chars. the length will increase when all the space is\noccupied." + ], + "enum": [ + "OPTION_UNSPECIFIED", + "UNGUESSABLE", + "SHORT" + ] + } + }, + "id": "Suffix" + }, + "GooglePlayAnalytics": { + "description": "Parameters for Google Play Campaign Measurements.\n[Learn more](https://developers.google.com/analytics/devguides/collection/android/v4/campaigns#campaign-params)", + "type": "object", + "properties": { + "utmMedium": { + "description": "Campaign medium; used to identify a medium such as email or cost-per-click.", + "type": "string" + }, + "utmTerm": { + "description": "Campaign term; used with paid search to supply the keywords for ads.", + "type": "string" + }, + "utmSource": { + "description": "Campaign source; used to identify a search engine, newsletter, or other\nsource.", + "type": "string" + }, + "gclid": { + "description": "[AdWords autotagging parameter](https://support.google.com/analytics/answer/1033981?hl=en);\nused to measure Google AdWords ads. This value is generated dynamically\nand should never be modified.", + "type": "string" + }, + "utmCampaign": { + "description": "Campaign name; used for keyword analysis to identify a specific product\npromotion or strategic campaign.", + "type": "string" + }, + "utmContent": { + "description": "Campaign content; used for A/B testing and content-targeted ads to\ndifferentiate ads or links that point to the same URL.", + "type": "string" + } + }, + "id": "GooglePlayAnalytics" + }, + "DynamicLinkInfo": { + "description": "Information about a Dynamic Link.", + "type": "object", + "properties": { + "dynamicLinkDomain": { + "description": "Dynamic Links domain that the project owns, e.g. abcd.app.goo.gl\n[Learn more](https://firebase.google.com/docs/dynamic-links/android/receive)\non how to set up Dynamic Link domain associated with your Firebase project.\n\nRequired.", + "type": "string" + }, + "link": { + "description": "The link your app will open, You can specify any URL your app can handle.\nThis link must be a well-formatted URL, be properly URL-encoded, and use\nthe HTTP or HTTPS scheme. See 'link' parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).\n\nRequired.", + "type": "string" + }, + "iosInfo": { + "description": "iOS related information. See iOS related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).", + "$ref": "IosInfo" + }, + "socialMetaTagInfo": { + "$ref": "SocialMetaTagInfo", + "description": "Parameters for social meta tag params.\nUsed to set meta tag data for link previews on social sites." + }, + "androidInfo": { + "description": "Android related information. See Android related parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually).", + "$ref": "AndroidInfo" + }, + "navigationInfo": { + "description": "Information of navigation behavior of a Firebase Dynamic Links.", + "$ref": "NavigationInfo" + }, + "analyticsInfo": { + "$ref": "AnalyticsInfo", + "description": "Parameters used for tracking. See all tracking parameters in the\n[documentation](https://firebase.google.com/docs/dynamic-links/create-manually)." + } + }, + "id": "DynamicLinkInfo" + }, + "ITunesConnectAnalytics": { + "properties": { + "at": { + "description": "Affiliate token used to create affiliate-coded links.", + "type": "string" + }, + "ct": { + "description": "Campaign text that developers can optionally add to any link in order to\ntrack sales from a specific marketing campaign.", + "type": "string" + }, + "mt": { + "description": "iTune media types, including music, podcasts, audiobooks and so on.", + "type": "string" + }, + "pt": { + "description": "Provider token that enables analytics for Dynamic Links from within iTunes\nConnect.", + "type": "string" + } + }, + "id": "ITunesConnectAnalytics", + "description": "Parameters for iTunes Connect App Analytics.", + "type": "object" } }, "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - } + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "canonicalName": "Firebase Dynamic Links", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/firebase": { + "description": "View and administer all your Firebase data and settings" + } + } + } + }, + "rootUrl": "https://firebasedynamiclinks-ipv6.googleapis.com/", + "ownerDomain": "google.com", + "name": "firebasedynamiclinks", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/firebaserules/v1/firebaserules-api.json b/vendor/google.golang.org/api/firebaserules/v1/firebaserules-api.json index 3b049f8..c82d92d 100644 --- a/vendor/google.golang.org/api/firebaserules/v1/firebaserules-api.json +++ b/vendor/google.golang.org/api/firebaserules/v1/firebaserules-api.json @@ -1,23 +1,512 @@ { + "rootUrl": "https://firebaserules.googleapis.com/", + "ownerDomain": "google.com", + "name": "firebaserules", + "batchPath": "batch", + "title": "Firebase Rules API", + "ownerName": "Google", + "resources": { + "projects": { + "methods": { + "test": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "TestRulesetResponse" + }, + "parameters": { + "name": { + "pattern": "^projects/.+$", + "location": "path", + "description": "Tests may either provide `source` or a `Ruleset` resource name.\n\nFor tests against `source`, the resource name must refer to the project:\nFormat: `projects/{project_id}`\n\nFor tests against a `Ruleset`, this must be the `Ruleset` resource name:\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase", + "https://www.googleapis.com/auth/firebase.readonly" + ], + "flatPath": "v1/projects/{projectsId}:test", + "path": "v1/{+name}:test", + "id": "firebaserules.projects.test", + "description": "Test `Source` for syntactic and semantic correctness. Issues present, if\nany, will be returned to the caller with a description, severity, and\nsource location.\n\nThe test method may be executed with `Source` or a `Ruleset` name.\nPassing `Source` is useful for unit testing new rules. Passing a `Ruleset`\nname is useful for regression testing an existing rule.\n\nThe following is an example of `Source` that permits users to upload images\nto a bucket bearing their user id and matching the correct metadata:\n\n_*Example*_\n\n // Users are allowed to subscribe and unsubscribe to the blog.\n service firebase.storage {\n match /users/{userId}/images/{imageName} {\n allow write: if userId == request.auth.uid\n && (imageName.matches('*.png$')\n || imageName.matches('*.jpg$'))\n && resource.mimeType.matches('^image/')\n }\n }", + "request": { + "$ref": "TestRulesetRequest" + } + } + }, + "resources": { + "rulesets": { + "methods": { + "delete": { + "path": "v1/{+name}", + "id": "firebaserules.projects.rulesets.delete", + "description": "Delete a `Ruleset` by resource name.\n\nIf the `Ruleset` is referenced by a `Release` the operation will fail.", + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Resource name for the ruleset to delete.\n\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/rulesets/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase" + ], + "flatPath": "v1/projects/{projectsId}/rulesets/{rulesetsId}" + }, + "list": { + "path": "v1/{+name}/rulesets", + "id": "firebaserules.projects.rulesets.list", + "description": "List `Ruleset` metadata only and optionally filter the results by `Ruleset`\nname.\n\nThe full `Source` contents of a `Ruleset` may be retrieved with\nGetRuleset.", + "httpMethod": "GET", + "response": { + "$ref": "ListRulesetsResponse" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "pageToken": { + "description": "Next page token for loading the next batch of `Ruleset` instances.", + "type": "string", + "location": "query" + }, + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Resource name for the project.\n\nFormat: `projects/{project_id}`", + "type": "string", + "required": true + }, + "pageSize": { + "format": "int32", + "description": "Page size to load. Maximum of 100. Defaults to 10.\nNote: `page_size` is just a hint and the service may choose to load less\nthan `page_size` due to the size of the output. To traverse all of the\nreleases, caller should iterate until the `page_token` is empty.", + "type": "integer", + "location": "query" + }, + "filter": { + "location": "query", + "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01\") AND name=UUID-*`", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase", + "https://www.googleapis.com/auth/firebase.readonly" + ], + "flatPath": "v1/projects/{projectsId}/rulesets" + }, + "get": { + "response": { + "$ref": "Ruleset" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase", + "https://www.googleapis.com/auth/firebase.readonly" + ], + "parameters": { + "name": { + "description": "Resource name for the ruleset to get.\n\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/rulesets/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/rulesets/{rulesetsId}", + "id": "firebaserules.projects.rulesets.get", + "path": "v1/{+name}", + "description": "Get a `Ruleset` by name including the full `Source` contents." + }, + "create": { + "path": "v1/{+name}/rulesets", + "id": "firebaserules.projects.rulesets.create", + "description": "Create a `Ruleset` from `Source`.\n\nThe `Ruleset` is given a unique generated name which is returned to the\ncaller. `Source` containing syntactic or semantics errors will result in an\nerror response indicating the first error encountered. For a detailed view\nof `Source` issues, use TestRuleset.", + "request": { + "$ref": "Ruleset" + }, + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Ruleset" + }, + "parameters": { + "name": { + "description": "Resource name for Project which owns this `Ruleset`.\n\nFormat: `projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase" + ], + "flatPath": "v1/projects/{projectsId}/rulesets" + } + } + }, + "releases": { + "methods": { + "update": { + "response": { + "$ref": "Release" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/releases/.+$", + "location": "path", + "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case | Flat Name | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa | releases/qa\nApps | releases/app1_qa | releases/app1/qa\nVersions | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase" + ], + "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", + "id": "firebaserules.projects.releases.update", + "path": "v1/{+name}", + "description": "Update a `Release`.\n\nOnly updates to the `ruleset_name` and `test_suite_name` fields will be\nhonored. `Release` rename is not supported. To create a `Release` use the\nCreateRelease method.", + "request": { + "$ref": "Release" + } + }, + "create": { + "response": { + "$ref": "Release" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase" + ], + "parameters": { + "name": { + "description": "Resource name for the project which owns this `Release`.\n\nFormat: `projects/{project_id}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/releases", + "id": "firebaserules.projects.releases.create", + "path": "v1/{+name}/releases", + "request": { + "$ref": "Release" + }, + "description": "Create a `Release`.\n\nRelease names should reflect the developer's deployment practices. For\nexample, the release name may include the environment name, application\nname, application version, or any other name meaningful to the developer.\nOnce a `Release` refers to a `Ruleset`, the rules can be enforced by\nFirebase Rules-enabled services.\n\nMore than one `Release` may be 'live' concurrently. Consider the following\nthree `Release` names for `projects/foo` and the `Ruleset` to which they\nrefer.\n\nRelease Name | Ruleset Name\n--------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/uuid123\nprojects/foo/releases/prod/beta | projects/foo/rulesets/uuid123\nprojects/foo/releases/prod/v23 | projects/foo/rulesets/uuid456\n\nThe table reflects the `Ruleset` rollout in progress. The `prod` and\n`prod/beta` releases refer to the same `Ruleset`. However, `prod/v23`\nrefers to a new `Ruleset`. The `Ruleset` reference for a `Release` may be\nupdated using the UpdateRelease method." + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/releases/.+$", + "location": "path", + "description": "Resource name for the `Release` to delete.\n\nFormat: `projects/{project_id}/releases/{release_id}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase" + ], + "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", + "id": "firebaserules.projects.releases.delete", + "path": "v1/{+name}", + "description": "Delete a `Release` by resource name." + }, + "list": { + "description": "List the `Release` values for a project. This list may optionally be\nfiltered by `Release` name, `Ruleset` name, `TestSuite` name, or any\ncombination thereof.", + "response": { + "$ref": "ListReleasesResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "Next page token for the next batch of `Release` instances.", + "type": "string" + }, + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Resource name for the project.\n\nFormat: `projects/{project_id}`", + "type": "string", + "required": true + }, + "pageSize": { + "format": "int32", + "description": "Page size to load. Maximum of 100. Defaults to 10.\nNote: `page_size` is just a hint and the service may choose to load fewer\nthan `page_size` results due to the size of the output. To traverse all of\nthe releases, the caller should iterate until the `page_token` on the\nresponse is empty.", + "type": "integer", + "location": "query" + }, + "filter": { + "description": "`Release` filter. The list method supports filters with restrictions on the\n`Release.name`, `Release.ruleset_name`, and `Release.test_suite_name`.\n\nExample 1: A filter of 'name=prod*' might return `Release`s with names\nwithin 'projects/foo' prefixed with 'prod':\n\nName | Ruleset Name\n------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/uuid1234\nprojects/foo/releases/prod/v1 | projects/foo/rulesets/uuid1234\nprojects/foo/releases/prod/v2 | projects/foo/rulesets/uuid8888\n\nExample 2: A filter of `name=prod* ruleset_name=uuid1234` would return only\n`Release` instances for 'projects/foo' with names prefixed with 'prod'\nreferring to the same `Ruleset` name of 'uuid1234':\n\nName | Ruleset Name\n------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/1234\nprojects/foo/releases/prod/v1 | projects/foo/rulesets/1234\n\nIn the examples, the filter parameters refer to the search filters are\nrelative to the project. Fully qualified prefixed may also be used. e.g.\n`test_suite_name=projects/foo/testsuites/uuid1`", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase", + "https://www.googleapis.com/auth/firebase.readonly" + ], + "flatPath": "v1/projects/{projectsId}/releases", + "id": "firebaserules.projects.releases.list", + "path": "v1/{+name}/releases" + }, + "get": { + "response": { + "$ref": "Release" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/firebase", + "https://www.googleapis.com/auth/firebase.readonly" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/releases/.+$", + "location": "path", + "description": "Resource name of the `Release`.\n\nFormat: `projects/{project_id}/releases/{release_id}`", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", + "id": "firebaserules.projects.releases.get", + "path": "v1/{+name}", + "description": "Get a `Release` by name." + } + } + } + } + } + }, + "parameters": { + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + } + }, + "version": "v1", + "baseUrl": "https://firebaserules.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.\n", + "servicePath": "", + "basePath": "", + "revision": "20170807", + "documentationLink": "https://firebase.google.com/docs/storage/security", + "id": "firebaserules:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "TestCase": { + "FunctionMock": { + "description": "Mock function definition.\n\nMocks must refer to a function declared by the target service. The type of\nthe function args and result will be inferred at test time. If either the\narg or result values are not compatible with function type declaration, the\nrequest will be considered invalid.\n\nMore than one `FunctionMock` may be provided for a given function name so\nlong as the `Arg` matchers are distinct. There may be only one function\nfor a given overload where all `Arg` values are `Arg.any_value`.", "type": "object", "properties": { - "functionMocks": { + "function": { + "description": "The name of the function.\n\nThe function name must match one provided by a service declaration.", + "type": "string" + }, + "result": { + "description": "The mock result of the function call.", + "$ref": "Result" + }, + "args": { + "description": "The list of `Arg` values to match. The order in which the arguments are\nprovided is the order in which they must appear in the function\ninvocation.", "items": { - "$ref": "FunctionMock" + "$ref": "Arg" }, - "type": "array", - "description": "Optional function mocks for service-defined functions. If not set, any\nservice defined function is expected to return an error, which may or may\nnot influence the test outcome." + "type": "array" + } + }, + "id": "FunctionMock" + }, + "Source": { + "description": "`Source` is one or more `File` messages comprising a logical set of rules.", + "type": "object", + "properties": { + "files": { + "description": "`File` set constituting the `Source` bundle.", + "items": { + "$ref": "File" + }, + "type": "array" + } + }, + "id": "Source" + }, + "Result": { + "description": "Possible result values from the function mock invocation.", + "type": "object", + "properties": { + "undefined": { + "$ref": "Empty", + "description": "The result is undefined, meaning the result could not be computed." }, - "resource": { - "description": "Optional resource value as it appears in persistent storage before the\nrequest is fulfilled.\n\nThe resource type depends on the `request.path` value.", + "value": { + "description": "The result is an actual value. The type of the value must match that\nof the type declared by the service.", "type": "any" + } + }, + "id": "Result" + }, + "SourcePosition": { + "properties": { + "column": { + "format": "int32", + "description": "First column on the source line associated with the source fragment.", + "type": "integer" }, + "fileName": { + "description": "Name of the `File`.", + "type": "string" + }, + "line": { + "format": "int32", + "description": "Line number of the source fragment. 1-based.", + "type": "integer" + } + }, + "id": "SourcePosition", + "description": "Position in the `Source` content including its line, column number, and an\nindex of the `File` in the `Source` message. Used for debug purposes.", + "type": "object" + }, + "TestCase": { + "description": "`TestCase` messages provide the request context and an expectation as to\nwhether the given context will be allowed or denied. Test cases may specify\nthe `request`, `resource`, and `function_mocks` to mock a function call to\na service-provided function.\n\nThe `request` object represents context present at request-time.\n\nThe `resource` is the value of the target resource as it appears in\npersistent storage before the request is executed.", + "type": "object", + "properties": { "expectation": { - "type": "string", "enumDescriptions": [ "Unspecified expectation.", "Expect an allowed result.", @@ -28,25 +517,71 @@ "ALLOW", "DENY" ], - "description": "Test expectation." + "description": "Test expectation.", + "type": "string" }, "request": { "description": "Request context.\n\nThe exact format of the request context is service-dependent. See the\nappropriate service documentation for information about the supported\nfields and types on the request. Minimally, all services support the\nfollowing fields and types:\n\nRequest field | Type\n---------------|-----------------\nauth.uid | `string`\nauth.token | `map\u003cstring, string\u003e`\nheaders | `map\u003cstring, string\u003e`\nmethod | `string`\nparams | `map\u003cstring, string\u003e`\npath | `string`\ntime | `google.protobuf.Timestamp`\n\nIf the request value is not well-formed for the service, the request will\nbe rejected as an invalid argument.", "type": "any" + }, + "functionMocks": { + "description": "Optional function mocks for service-defined functions. If not set, any\nservice defined function is expected to return an error, which may or may\nnot influence the test outcome.", + "items": { + "$ref": "FunctionMock" + }, + "type": "array" + }, + "resource": { + "description": "Optional resource value as it appears in persistent storage before the\nrequest is fulfilled.\n\nThe resource type depends on the `request.path` value.", + "type": "any" } }, - "id": "TestCase", - "description": "`TestCase` messages provide the request context and an expectation as to\nwhether the given context will be allowed or denied. Test cases may specify\nthe `request`, `resource`, and `function_mocks` to mock a function call to\na service-provided function.\n\nThe `request` object represents context present at request-time.\n\nThe `resource` is the value of the target resource as it appears in\npersistent storage before the request is executed." + "id": "TestCase" + }, + "Ruleset": { + "description": "`Ruleset` is an immutable copy of `Source` with a globally unique identifier\nand a creation time.", + "type": "object", + "properties": { + "name": { + "description": "Name of the `Ruleset`. The ruleset_id is auto generated by the service.\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`\nOutput only.", + "type": "string" + }, + "source": { + "$ref": "Source", + "description": "`Source` for the `Ruleset`." + }, + "createTime": { + "format": "google-datetime", + "description": "Time the `Ruleset` was created.\nOutput only.", + "type": "string" + } + }, + "id": "Ruleset" + }, + "TestRulesetRequest": { + "description": "The request for FirebaseRulesService.TestRuleset.", + "type": "object", + "properties": { + "testSuite": { + "$ref": "TestSuite", + "description": "Inline `TestSuite` to run." + }, + "source": { + "description": "Optional `Source` to be checked for correctness.\n\nThis field must not be set when the resource name refers to a `Ruleset`.", + "$ref": "Source" + } + }, + "id": "TestRulesetRequest" }, "Issue": { + "description": "Issues include warnings, errors, and deprecation notices.", "type": "object", "properties": { "sourcePosition": { - "description": "Position of the issue in the `Source`.", - "$ref": "SourcePosition" + "$ref": "SourcePosition", + "description": "Position of the issue in the `Source`." }, "severity": { - "type": "string", "enumDescriptions": [ "An unspecified severity.", "Deprecation issue for statements and method that may no longer be\nsupported or maintained.", @@ -59,119 +594,76 @@ "WARNING", "ERROR" ], - "description": "The severity of the issue." + "description": "The severity of the issue.", + "type": "string" }, "description": { "description": "Short error description.", "type": "string" } }, - "id": "Issue", - "description": "Issues include warnings, errors, and deprecation notices." - }, - "TestRulesetRequest": { - "type": "object", - "properties": { - "testSuite": { - "$ref": "TestSuite", - "description": "Inline `TestSuite` to run." - }, - "source": { - "$ref": "Source", - "description": "Optional `Source` to be checked for correctness.\n\nThis field must not be set when the resource name refers to a `Ruleset`." - } - }, - "id": "TestRulesetRequest", - "description": "The request for FirebaseRulesService.TestRuleset." - }, - "Ruleset": { - "properties": { - "source": { - "description": "`Source` for the `Ruleset`.", - "$ref": "Source" - }, - "createTime": { - "format": "google-datetime", - "description": "Time the `Ruleset` was created.\nOutput only.", - "type": "string" - }, - "name": { - "description": "Name of the `Ruleset`. The ruleset_id is auto generated by the service.\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`\nOutput only.", - "type": "string" - } - }, - "id": "Ruleset", - "description": "`Ruleset` is an immutable copy of `Source` with a globally unique identifier\nand a creation time.", - "type": "object" + "id": "Issue" }, "ListReleasesResponse": { - "description": "The response for FirebaseRulesService.ListReleases.", - "type": "object", "properties": { - "releases": { - "items": { - "$ref": "Release" - }, - "type": "array", - "description": "List of `Release` instances." - }, "nextPageToken": { "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.", "type": "string" + }, + "releases": { + "description": "List of `Release` instances.", + "items": { + "$ref": "Release" + }, + "type": "array" } }, - "id": "ListReleasesResponse" + "id": "ListReleasesResponse", + "description": "The response for FirebaseRulesService.ListReleases.", + "type": "object" }, "FunctionCall": { - "description": "Represents a service-defined function call that was invoked during test\nexecution.", - "type": "object", "properties": { + "function": { + "description": "Name of the function invoked.", + "type": "string" + }, "args": { "description": "The arguments that were provided to the function.", "items": { "type": "any" }, "type": "array" - }, - "function": { - "description": "Name of the function invoked.", - "type": "string" } }, - "id": "FunctionCall" + "id": "FunctionCall", + "description": "Represents a service-defined function call that was invoked during test\nexecution.", + "type": "object" }, "File": { - "id": "File", - "description": "`File` containing source content.", - "type": "object", "properties": { "name": { "description": "File name.", "type": "string" }, "content": { - "type": "string", - "description": "Textual Content." + "description": "Textual Content.", + "type": "string" }, "fingerprint": { "format": "byte", "description": "Fingerprint (e.g. github sha) associated with the `File`.", "type": "string" } - } + }, + "id": "File", + "description": "`File` containing source content.", + "type": "object" }, "Release": { "description": "`Release` is a named reference to a `Ruleset`. Once a `Release` refers to a\n`Ruleset`, rules-enabled services will be able to enforce the `Ruleset`.", "type": "object", "properties": { - "rulesetName": { - "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must\nexist the `Release` to be created.", - "type": "string" - }, - "name": { - "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case | Flat Name | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa | releases/qa\nApps | releases/app1_qa | releases/app1/qa\nVersions | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`", - "type": "string" - }, "createTime": { "format": "google-datetime", "description": "Time the release was created.\nOutput only.", @@ -181,61 +673,61 @@ "format": "google-datetime", "description": "Time the release was updated.\nOutput only.", "type": "string" + }, + "rulesetName": { + "description": "Name of the `Ruleset` referred to by this `Release`. The `Ruleset` must\nexist the `Release` to be created.", + "type": "string" + }, + "name": { + "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case | Flat Name | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa | releases/qa\nApps | releases/app1_qa | releases/app1/qa\nVersions | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`", + "type": "string" } }, "id": "Release" }, "TestRulesetResponse": { - "description": "The response for FirebaseRulesService.TestRuleset.", - "type": "object", "properties": { - "issues": { - "description": "Syntactic and semantic `Source` issues of varying severity. Issues of\n`ERROR` severity will prevent tests from executing.", - "items": { - "$ref": "Issue" - }, - "type": "array" - }, "testResults": { "description": "The set of test results given the test cases in the `TestSuite`.\nThe results will appear in the same order as the test cases appear in the\n`TestSuite`.", "items": { "$ref": "TestResult" }, "type": "array" + }, + "issues": { + "description": "Syntactic and semantic `Source` issues of varying severity. Issues of\n`ERROR` severity will prevent tests from executing.", + "items": { + "$ref": "Issue" + }, + "type": "array" } }, - "id": "TestRulesetResponse" + "id": "TestRulesetResponse", + "description": "The response for FirebaseRulesService.TestRuleset.", + "type": "object" }, "ListRulesetsResponse": { "description": "The response for FirebaseRulesService.ListRulesets.", "type": "object", "properties": { - "nextPageToken": { - "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.", - "type": "string" - }, "rulesets": { "description": "List of `Ruleset` instances.", "items": { "$ref": "Ruleset" }, "type": "array" + }, + "nextPageToken": { + "description": "The pagination token to retrieve the next page of results. If the value is\nempty, no further results remain.", + "type": "string" } }, "id": "ListRulesetsResponse" }, "TestResult": { - "id": "TestResult", "description": "Test result message containing the state of the test as well as a\ndescription and source position for test failures.", "type": "object", "properties": { - "functionCalls": { - "items": { - "$ref": "FunctionCall" - }, - "type": "array", - "description": "The set of function calls made to service-defined methods.\n\nFunction calls are included in the order in which they are encountered\nduring evaluation, are provided for both mocked and unmocked functions,\nand included on the response regardless of the test `state`." - }, "debugMessages": { "description": "Debug messages related to test execution issues encountered during\nevaluation.\n\nDebug messages may be related to too many or too few invocations of\nfunction mocks or to runtime errors that occur during evaluation.\n\nFor example: ```Unable to read variable [name: \"resource\"]```", "items": { @@ -244,41 +736,51 @@ "type": "array" }, "state": { + "enumDescriptions": [ + "Test state is not set.", + "Test is a success.", + "Test is a failure." + ], "enum": [ "STATE_UNSPECIFIED", "SUCCESS", "FAILURE" ], "description": "State of the test.", - "type": "string", - "enumDescriptions": [ - "Test state is not set.", - "Test is a success.", - "Test is a failure." - ] + "type": "string" }, "errorPosition": { "description": "Position in the `Source` or `Ruleset` where the principle runtime error\noccurs.\n\nEvaluation of an expression may result in an error. Rules are deny by\ndefault, so a `DENY` expectation when an error is generated is valid.\nWhen there is a `DENY` with an error, the `SourcePosition` is returned.\n\nE.g. `error_position { line: 19 column: 37 }`", "$ref": "SourcePosition" - } - } - }, - "Arg": { - "description": "Arg matchers for the mock function.", - "type": "object", - "properties": { - "anyValue": { - "description": "Argument matches any value provided.", - "$ref": "Empty" }, - "exactValue": { - "type": "any", - "description": "Argument exactly matches value provided." + "functionCalls": { + "description": "The set of function calls made to service-defined methods.\n\nFunction calls are included in the order in which they are encountered\nduring evaluation, are provided for both mocked and unmocked functions,\nand included on the response regardless of the test `state`.", + "items": { + "$ref": "FunctionCall" + }, + "type": "array" } }, - "id": "Arg" + "id": "TestResult" + }, + "Arg": { + "properties": { + "anyValue": { + "$ref": "Empty", + "description": "Argument matches any value provided." + }, + "exactValue": { + "description": "Argument exactly matches value provided.", + "type": "any" + } + }, + "id": "Arg", + "description": "Arg matchers for the mock function.", + "type": "object" }, "TestSuite": { + "description": "`TestSuite` is a collection of `TestCase` instances that validate the logical\ncorrectness of a `Ruleset`. The `TestSuite` may be referenced in-line within\na `TestRuleset` invocation or as part of a `Release` object as a pre-release\ncheck.", + "type": "object", "properties": { "testCases": { "description": "Collection of test cases associated with the `TestSuite`.", @@ -288,94 +790,20 @@ "type": "array" } }, - "id": "TestSuite", - "description": "`TestSuite` is a collection of `TestCase` instances that validate the logical\ncorrectness of a `Ruleset`. The `TestSuite` may be referenced in-line within\na `TestRuleset` invocation or as part of a `Release` object as a pre-release\ncheck.", - "type": "object" + "id": "TestSuite" }, "Empty": { "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", "type": "object", "properties": {}, "id": "Empty" - }, - "FunctionMock": { - "description": "Mock function definition.\n\nMocks must refer to a function declared by the target service. The type of\nthe function args and result will be inferred at test time. If either the\narg or result values are not compatible with function type declaration, the\nrequest will be considered invalid.\n\nMore than one `FunctionMock` may be provided for a given function name so\nlong as the `Arg` matchers are distinct. There may be only one function\nfor a given overload where all `Arg` values are `Arg.any_value`.", - "type": "object", - "properties": { - "result": { - "$ref": "Result", - "description": "The mock result of the function call." - }, - "args": { - "items": { - "$ref": "Arg" - }, - "type": "array", - "description": "The list of `Arg` values to match. The order in which the arguments are\nprovided is the order in which they must appear in the function\ninvocation." - }, - "function": { - "description": "The name of the function.\n\nThe function name must match one provided by a service declaration.", - "type": "string" - } - }, - "id": "FunctionMock" - }, - "Source": { - "properties": { - "files": { - "items": { - "$ref": "File" - }, - "type": "array", - "description": "`File` set constituting the `Source` bundle." - } - }, - "id": "Source", - "description": "`Source` is one or more `File` messages comprising a logical set of rules.", - "type": "object" - }, - "Result": { - "properties": { - "undefined": { - "$ref": "Empty", - "description": "The result is undefined, meaning the result could not be computed." - }, - "value": { - "description": "The result is an actual value. The type of the value must match that\nof the type declared by the service.", - "type": "any" - } - }, - "id": "Result", - "description": "Possible result values from the function mock invocation.", - "type": "object" - }, - "SourcePosition": { - "id": "SourcePosition", - "description": "Position in the `Source` content including its line, column number, and an\nindex of the `File` in the `Source` message. Used for debug purposes.", - "type": "object", - "properties": { - "line": { - "type": "integer", - "format": "int32", - "description": "Line number of the source fragment. 1-based." - }, - "column": { - "type": "integer", - "format": "int32", - "description": "First column on the source line associated with the source fragment." - }, - "fileName": { - "description": "Name of the `File`.", - "type": "string" - } - } } }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, "canonicalName": "Firebase Rules", "auth": { "oauth2": { @@ -391,433 +819,5 @@ } } } - }, - "rootUrl": "https://firebaserules.googleapis.com/", - "ownerDomain": "google.com", - "name": "firebaserules", - "batchPath": "batch", - "title": "Firebase Rules API", - "ownerName": "Google", - "resources": { - "projects": { - "methods": { - "test": { - "path": "v1/{+name}:test", - "id": "firebaserules.projects.test", - "request": { - "$ref": "TestRulesetRequest" - }, - "description": "Test `Source` for syntactic and semantic correctness. Issues present, if\nany, will be returned to the caller with a description, severity, and\nsource location.\n\nThe test method may be executed with `Source` or a `Ruleset` name.\nPassing `Source` is useful for unit testing new rules. Passing a `Ruleset`\nname is useful for regression testing an existing rule.\n\nThe following is an example of `Source` that permits users to upload images\nto a bucket bearing their user id and matching the correct metadata:\n\n_*Example*_\n\n // Users are allowed to subscribe and unsubscribe to the blog.\n service firebase.storage {\n match /users/{userId}/images/{imageName} {\n allow write: if userId == request.auth.uid\n && (imageName.matches('*.png$')\n || imageName.matches('*.jpg$'))\n && resource.mimeType.matches('^image/')\n }\n }", - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "TestRulesetResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase", - "https://www.googleapis.com/auth/firebase.readonly" - ], - "parameters": { - "name": { - "location": "path", - "description": "Tests may either provide `source` or a `Ruleset` resource name.\n\nFor tests against `source`, the resource name must refer to the project:\nFormat: `projects/{project_id}`\n\nFor tests against a `Ruleset`, this must be the `Ruleset` resource name:\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", - "type": "string", - "required": true, - "pattern": "^projects/.+$" - } - }, - "flatPath": "v1/projects/{projectsId}:test" - } - }, - "resources": { - "rulesets": { - "methods": { - "delete": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase" - ], - "parameters": { - "name": { - "location": "path", - "description": "Resource name for the ruleset to delete.\n\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/rulesets/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/rulesets/{rulesetsId}", - "id": "firebaserules.projects.rulesets.delete", - "path": "v1/{+name}", - "description": "Delete a `Ruleset` by resource name.\n\nIf the `Ruleset` is referenced by a `Release` the operation will fail.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE" - }, - "list": { - "response": { - "$ref": "ListRulesetsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase", - "https://www.googleapis.com/auth/firebase.readonly" - ], - "parameters": { - "filter": { - "description": "`Ruleset` filter. The list method supports filters with restrictions on\n`Ruleset.name`.\n\nFilters on `Ruleset.create_time` should use the `date` function which\nparses strings that conform to the RFC 3339 date/time specifications.\n\nExample: `create_time \u003e date(\"2017-01-01\") AND name=UUID-*`", - "type": "string", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "Next page token for loading the next batch of `Ruleset` instances.", - "type": "string" - }, - "name": { - "location": "path", - "description": "Resource name for the project.\n\nFormat: `projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size to load. Maximum of 100. Defaults to 10.\nNote: `page_size` is just a hint and the service may choose to load less\nthan `page_size` due to the size of the output. To traverse all of the\nreleases, caller should iterate until the `page_token` is empty.", - "type": "integer" - } - }, - "flatPath": "v1/projects/{projectsId}/rulesets", - "id": "firebaserules.projects.rulesets.list", - "path": "v1/{+name}/rulesets", - "description": "List `Ruleset` metadata only and optionally filter the results by `Ruleset`\nname.\n\nThe full `Source` contents of a `Ruleset` may be retrieved with\nGetRuleset." - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Ruleset" - }, - "parameters": { - "name": { - "description": "Resource name for the ruleset to get.\n\nFormat: `projects/{project_id}/rulesets/{ruleset_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/rulesets/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase", - "https://www.googleapis.com/auth/firebase.readonly" - ], - "flatPath": "v1/projects/{projectsId}/rulesets/{rulesetsId}", - "path": "v1/{+name}", - "id": "firebaserules.projects.rulesets.get", - "description": "Get a `Ruleset` by name including the full `Source` contents." - }, - "create": { - "response": { - "$ref": "Ruleset" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Resource name for Project which owns this `Ruleset`.\n\nFormat: `projects/{project_id}`" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase" - ], - "flatPath": "v1/projects/{projectsId}/rulesets", - "id": "firebaserules.projects.rulesets.create", - "path": "v1/{+name}/rulesets", - "description": "Create a `Ruleset` from `Source`.\n\nThe `Ruleset` is given a unique generated name which is returned to the\ncaller. `Source` containing syntactic or semantics errors will result in an\nerror response indicating the first error encountered. For a detailed view\nof `Source` issues, use TestRuleset.", - "request": { - "$ref": "Ruleset" - } - } - } - }, - "releases": { - "methods": { - "list": { - "flatPath": "v1/projects/{projectsId}/releases", - "id": "firebaserules.projects.releases.list", - "path": "v1/{+name}/releases", - "description": "List the `Release` values for a project. This list may optionally be\nfiltered by `Release` name, `Ruleset` name, `TestSuite` name, or any\ncombination thereof.", - "response": { - "$ref": "ListReleasesResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "filter": { - "location": "query", - "description": "`Release` filter. The list method supports filters with restrictions on the\n`Release.name`, `Release.ruleset_name`, and `Release.test_suite_name`.\n\nExample 1: A filter of 'name=prod*' might return `Release`s with names\nwithin 'projects/foo' prefixed with 'prod':\n\nName | Ruleset Name\n------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/uuid1234\nprojects/foo/releases/prod/v1 | projects/foo/rulesets/uuid1234\nprojects/foo/releases/prod/v2 | projects/foo/rulesets/uuid8888\n\nExample 2: A filter of `name=prod* ruleset_name=uuid1234` would return only\n`Release` instances for 'projects/foo' with names prefixed with 'prod'\nreferring to the same `Ruleset` name of 'uuid1234':\n\nName | Ruleset Name\n------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/1234\nprojects/foo/releases/prod/v1 | projects/foo/rulesets/1234\n\nIn the examples, the filter parameters refer to the search filters are\nrelative to the project. Fully qualified prefixed may also be used. e.g.\n`test_suite_name=projects/foo/testsuites/uuid1`", - "type": "string" - }, - "pageToken": { - "description": "Next page token for the next batch of `Release` instances.", - "type": "string", - "location": "query" - }, - "name": { - "description": "Resource name for the project.\n\nFormat: `projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Page size to load. Maximum of 100. Defaults to 10.\nNote: `page_size` is just a hint and the service may choose to load fewer\nthan `page_size` results due to the size of the output. To traverse all of\nthe releases, the caller should iterate until the `page_token` on the\nresponse is empty.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase", - "https://www.googleapis.com/auth/firebase.readonly" - ] - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Release" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase", - "https://www.googleapis.com/auth/firebase.readonly" - ], - "parameters": { - "name": { - "description": "Resource name of the `Release`.\n\nFormat: `projects/{project_id}/releases/{release_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/releases/.+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", - "path": "v1/{+name}", - "id": "firebaserules.projects.releases.get", - "description": "Get a `Release` by name." - }, - "update": { - "description": "Update a `Release`.\n\nOnly updates to the `ruleset_name` and `test_suite_name` fields will be\nhonored. `Release` rename is not supported. To create a `Release` use the\nCreateRelease method.", - "request": { - "$ref": "Release" - }, - "httpMethod": "PUT", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Release" - }, - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/releases/.+$", - "location": "path", - "description": "Resource name for the `Release`.\n\n`Release` names may be structured `app1/prod/v2` or flat `app1_prod_v2`\nwhich affords developers a great deal of flexibility in mapping the name\nto the style that best fits their existing development practices. For\nexample, a name could refer to an environment, an app, a version, or some\ncombination of three.\n\nIn the table below, for the project name `projects/foo`, the following\nrelative release paths show how flat and structured names might be chosen\nto match a desired development / deployment strategy.\n\nUse Case | Flat Name | Structured Name\n-------------|---------------------|----------------\nEnvironments | releases/qa | releases/qa\nApps | releases/app1_qa | releases/app1/qa\nVersions | releases/app1_v2_qa | releases/app1/v2/qa\n\nThe delimiter between the release name path elements can be almost anything\nand it should work equally well with the release name list filter, but in\nmany ways the structured paths provide a clearer picture of the\nrelationship between `Release` instances.\n\nFormat: `projects/{project_id}/releases/{release_id}`" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase" - ], - "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", - "path": "v1/{+name}", - "id": "firebaserules.projects.releases.update" - }, - "create": { - "description": "Create a `Release`.\n\nRelease names should reflect the developer's deployment practices. For\nexample, the release name may include the environment name, application\nname, application version, or any other name meaningful to the developer.\nOnce a `Release` refers to a `Ruleset`, the rules can be enforced by\nFirebase Rules-enabled services.\n\nMore than one `Release` may be 'live' concurrently. Consider the following\nthree `Release` names for `projects/foo` and the `Ruleset` to which they\nrefer.\n\nRelease Name | Ruleset Name\n--------------------------------|-------------\nprojects/foo/releases/prod | projects/foo/rulesets/uuid123\nprojects/foo/releases/prod/beta | projects/foo/rulesets/uuid123\nprojects/foo/releases/prod/v23 | projects/foo/rulesets/uuid456\n\nThe table reflects the `Ruleset` rollout in progress. The `prod` and\n`prod/beta` releases refer to the same `Ruleset`. However, `prod/v23`\nrefers to a new `Ruleset`. The `Ruleset` reference for a `Release` may be\nupdated using the UpdateRelease method.", - "request": { - "$ref": "Release" - }, - "response": { - "$ref": "Release" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "description": "Resource name for the project which owns this `Release`.\n\nFormat: `projects/{project_id}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase" - ], - "flatPath": "v1/projects/{projectsId}/releases", - "id": "firebaserules.projects.releases.create", - "path": "v1/{+name}/releases" - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/firebase" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/releases/.+$", - "location": "path", - "description": "Resource name for the `Release` to delete.\n\nFormat: `projects/{project_id}/releases/{release_id}`", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/releases/{releasesId}", - "id": "firebaserules.projects.releases.delete", - "path": "v1/{+name}", - "description": "Delete a `Release` by resource name." - } - } - } - } - } - }, - "parameters": { - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - } - }, - "version": "v1", - "baseUrl": "https://firebaserules.googleapis.com/", - "servicePath": "", - "description": "Creates and manages rules that determine when a Firebase Rules-enabled service should permit a request.\n", - "kind": "discovery#restDescription", - "basePath": "", - "id": "firebaserules:v1", - "documentationLink": "https://firebase.google.com/docs/storage/security", - "revision": "20170807" + } } diff --git a/vendor/google.golang.org/api/genomics/v1/genomics-api.json b/vendor/google.golang.org/api/genomics/v1/genomics-api.json index b1da934..20070bf 100644 --- a/vendor/google.golang.org/api/genomics/v1/genomics-api.json +++ b/vendor/google.golang.org/api/genomics/v1/genomics-api.json @@ -1,8 +1,1095 @@ { "schemas": { + "ClinicalCondition": { + "type": "object", + "properties": { + "conceptId": { + "description": "The MedGen concept id associated with this gene.\nSearch for these IDs at http://www.ncbi.nlm.nih.gov/medgen/", + "type": "string" + }, + "names": { + "description": "A set of names for the condition.", + "items": { + "type": "string" + }, + "type": "array" + }, + "omimId": { + "description": "The OMIM id for this condition.\nSearch for these IDs at http://omim.org/", + "type": "string" + }, + "externalIds": { + "description": "The set of external IDs for this condition.", + "items": { + "$ref": "ExternalId" + }, + "type": "array" + } + }, + "id": "ClinicalCondition" + }, + "SearchReadsResponse": { + "description": "The read search response.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" + }, + "alignments": { + "description": "The list of matching alignments sorted by mapped genomic coordinate,\nif any, ascending in position within the same reference. Unmapped reads,\nwhich have no position, are returned contiguously and are sorted in\nascending lexicographic order by fragment name.", + "items": { + "$ref": "Read" + }, + "type": "array" + } + }, + "id": "SearchReadsResponse" + }, + "Program": { + "type": "object", + "properties": { + "name": { + "description": "The display name of the program. This is typically the colloquial name of\nthe tool used, for example 'bwa' or 'picard'.", + "type": "string" + }, + "prevProgramId": { + "description": "The ID of the program run before this one.", + "type": "string" + }, + "commandLine": { + "description": "The command line used to run this program.", + "type": "string" + }, + "version": { + "description": "The version of the program run.", + "type": "string" + }, + "id": { + "description": "The user specified locally unique ID of the program. Used along with\n`prevProgramId` to define an ordering between programs.", + "type": "string" + } + }, + "id": "Program" + }, + "ComputeEngine": { + "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.", + "type": "object", + "properties": { + "instanceName": { + "description": "The instance on which the operation is running.", + "type": "string" + }, + "zone": { + "description": "The availability zone in which the instance resides.", + "type": "string" + }, + "diskNames": { + "description": "The names of the disks that were created for this pipeline.", + "items": { + "type": "string" + }, + "type": "array" + }, + "machineType": { + "description": "The machine type of the instance.", + "type": "string" + } + }, + "id": "ComputeEngine" + }, + "CoverageBucket": { + "description": "A bucket over which read coverage has been precomputed. A bucket corresponds\nto a specific range of the reference sequence.", + "type": "object", + "properties": { + "range": { + "$ref": "Range", + "description": "The genomic coordinate range spanned by this bucket." + }, + "meanCoverage": { + "format": "float", + "description": "The average number of reads which are aligned to each individual\nreference base in this bucket.", + "type": "number" + } + }, + "id": "CoverageBucket" + }, + "ExternalId": { + "type": "object", + "properties": { + "sourceName": { + "description": "The name of the source of this data.", + "type": "string" + }, + "id": { + "description": "The id used by the source of this data.", + "type": "string" + } + }, + "id": "ExternalId" + }, + "SearchVariantSetsRequest": { + "description": "The search variant sets request.", + "type": "object", + "properties": { + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.", + "type": "integer" + }, + "datasetIds": { + "description": "Exactly one dataset ID must be provided here. Only variant sets which\nbelong to this dataset will be returned.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" + } + }, + "id": "SearchVariantSetsRequest" + }, + "VariantSetMetadata": { + "description": "Metadata describes a single piece of variant call metadata.\nThese data include a top level key and either a single value string (value)\nor a list of key-value pairs (info.)\nValue and info are mutually exclusive.", + "type": "object", + "properties": { + "key": { + "description": "The top-level key.", + "type": "string" + }, + "description": { + "description": "A textual description of this metadata.", + "type": "string" + }, + "info": { + "additionalProperties": { + "items": { + "type": "any" + }, + "type": "array" + }, + "description": "Remaining structured metadata key-value pairs. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object" + }, + "type": { + "description": "The type of data. Possible types include: Integer, Float,\nFlag, Character, and String.", + "type": "string", + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "enum": [ + "TYPE_UNSPECIFIED", + "INTEGER", + "FLOAT", + "FLAG", + "CHARACTER", + "STRING" + ] + }, + "value": { + "description": "The value field for simple metadata", + "type": "string" + }, + "id": { + "description": "User-provided ID field, not enforced by this API.\nTwo or more pieces of structured metadata with identical\nid and key fields are considered equivalent.", + "type": "string" + }, + "number": { + "description": "The number of values that can be included in a field described by this\nmetadata.", + "type": "string" + } + }, + "id": "VariantSetMetadata" + }, + "Reference": { + "description": "A reference is a canonical assembled DNA sequence, intended to act as a\nreference coordinate space for other genomic annotations. A single reference\nmight represent the human chromosome 1 or mitochandrial DNA, for instance. A\nreference belongs to one or more reference sets.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "type": "object", + "properties": { + "name": { + "description": "The name of this reference, for example `22`.", + "type": "string" + }, + "md5checksum": { + "description": "MD5 of the upper-case sequence excluding all whitespace characters (this\nis equivalent to SQ:M5 in SAM). This value is represented in lower case\nhexadecimal format.", + "type": "string" + }, + "id": { + "description": "The server-generated reference ID, unique across all references.", + "type": "string" + }, + "length": { + "format": "int64", + "description": "The length of this reference's sequence.", + "type": "string" + }, + "sourceAccessions": { + "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `GCF_000001405.26`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ncbiTaxonId": { + "format": "int32", + "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.", + "type": "integer" + }, + "sourceUri": { + "description": "The URI from which the sequence was obtained. Typically specifies a FASTA\nformat file.", + "type": "string" + } + }, + "id": "Reference" + }, + "SearchReferenceSetsRequest": { + "type": "object", + "properties": { + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.", + "type": "integer" + }, + "assemblyId": { + "description": "If present, return reference sets for which a substring of their\n`assemblyId` matches this string (case insensitive).", + "type": "string" + }, + "md5checksums": { + "description": "If present, return reference sets for which the\nmd5checksum matches exactly.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" + }, + "accessions": { + "description": "If present, return reference sets for which a prefix of any of\nsourceAccessions\nmatch any of these strings. Accession numbers typically have a main number\nand a version, for example `NC_000001.11`.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "SearchReferenceSetsRequest" + }, + "SetIamPolicyRequest": { + "description": "Request message for `SetIamPolicy` method.", + "type": "object", + "properties": { + "policy": { + "$ref": "Policy", + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." + } + }, + "id": "SetIamPolicyRequest" + }, + "MergeVariantsRequest": { + "type": "object", + "properties": { + "infoMergeConfig": { + "additionalProperties": { + "type": "string", + "enum": [ + "INFO_MERGE_OPERATION_UNSPECIFIED", + "IGNORE_NEW", + "MOVE_TO_CALLS" + ] + }, + "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them.", + "type": "object" + }, + "variantSetId": { + "description": "The destination variant set.", + "type": "string" + }, + "variants": { + "description": "The variants to be merged with existing variants.", + "items": { + "$ref": "Variant" + }, + "type": "array" + } + }, + "id": "MergeVariantsRequest" + }, + "BatchCreateAnnotationsRequest": { + "type": "object", + "properties": { + "annotations": { + "description": "The annotations to be created. At most 4096 can be specified in a single\nrequest.", + "items": { + "$ref": "Annotation" + }, + "type": "array" + }, + "requestId": { + "description": "A unique request ID which enables the server to detect duplicated requests.\nIf provided, duplicated requests will result in the same response; if not\nprovided, duplicated requests may result in duplicated data. For a given\nannotation set, callers should not reuse `request_id`s when writing\ndifferent batches of annotations - behavior in this case is undefined.\nA common approach is to use a UUID. For batch jobs where worker crashes are\na possibility, consider using some unique variant of a worker or run ID.", + "type": "string" + } + }, + "id": "BatchCreateAnnotationsRequest" + }, + "Read": { + "description": "A read alignment describes a linear alignment of a string of DNA to a\nreference sequence, in addition to metadata\nabout the fragment (the molecule of DNA sequenced) and the read (the bases\nwhich were read by the sequencer). A read is equivalent to a line in a SAM\nfile. A read belongs to exactly one read group and exactly one\nread group set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\n### Reverse-stranded reads\n\nMapped reads (reads having a non-null `alignment`) can be aligned to either\nthe forward or the reverse strand of their associated reference. Strandedness\nof a mapped read is encoded by `alignment.position.reverseStrand`.\n\nIf we consider the reference to be a forward-stranded coordinate space of\n`[0, reference.length)` with `0` as the left-most position and\n`reference.length` as the right-most position, reads are always aligned left\nto right. That is, `alignment.position.position` always refers to the\nleft-most reference coordinate and `alignment.cigar` describes the alignment\nof this read to the reference from left to right. All per-base fields such as\n`alignedSequence` and `alignedQuality` share this same left-to-right\norientation; this is true of reads which are aligned to either strand. For\nreverse-stranded reads, this means that `alignedSequence` is the reverse\ncomplement of the bases that were originally reported by the sequencing\nmachine.\n\n### Generating a reference-aligned sequence string\n\nWhen interacting with mapped reads, it's often useful to produce a string\nrepresenting the local alignment of the read to reference. The following\npseudocode demonstrates one way of doing this:\n\n out = \"\"\n offset = 0\n for c in read.alignment.cigar {\n switch c.operation {\n case \"ALIGNMENT_MATCH\", \"SEQUENCE_MATCH\", \"SEQUENCE_MISMATCH\":\n out += read.alignedSequence[offset:offset+c.operationLength]\n offset += c.operationLength\n break\n case \"CLIP_SOFT\", \"INSERT\":\n offset += c.operationLength\n break\n case \"PAD\":\n out += repeat(\"*\", c.operationLength)\n break\n case \"DELETE\":\n out += repeat(\"-\", c.operationLength)\n break\n case \"SKIP\":\n out += repeat(\" \", c.operationLength)\n break\n case \"CLIP_HARD\":\n break\n }\n }\n return out\n\n### Converting to SAM's CIGAR string\n\nThe following pseudocode generates a SAM CIGAR string from the\n`cigar` field. Note that this is a lossy conversion\n(`cigar.referenceSequence` is lost).\n\n cigarMap = {\n \"ALIGNMENT_MATCH\": \"M\",\n \"INSERT\": \"I\",\n \"DELETE\": \"D\",\n \"SKIP\": \"N\",\n \"CLIP_SOFT\": \"S\",\n \"CLIP_HARD\": \"H\",\n \"PAD\": \"P\",\n \"SEQUENCE_MATCH\": \"=\",\n \"SEQUENCE_MISMATCH\": \"X\",\n }\n cigarStr = \"\"\n for c in read.alignment.cigar {\n cigarStr += c.operationLength + cigarMap[c.operation]\n }\n return cigarStr", + "type": "object", + "properties": { + "supplementaryAlignment": { + "description": "Whether this alignment is supplementary. Equivalent to SAM flag 0x800.\nSupplementary alignments are used in the representation of a chimeric\nalignment. In a chimeric alignment, a read is split into multiple\nlinear alignments that map to different reference contigs. The first\nlinear alignment in the read will be designated as the representative\nalignment; the remaining linear alignments will be designated as\nsupplementary alignments. These alignments may have different mapping\nquality scores. In each linear alignment in a chimeric alignment, the read\nwill be hard clipped. The `alignedSequence` and\n`alignedQuality` fields in the alignment record will only\nrepresent the bases for its respective linear alignment.", + "type": "boolean" + }, + "properPlacement": { + "description": "The orientation and the distance between reads from the fragment are\nconsistent with the sequencing protocol (SAM flag 0x2).", + "type": "boolean" + }, + "fragmentLength": { + "format": "int32", + "description": "The observed length of the fragment, equivalent to TLEN in SAM.", + "type": "integer" + }, + "failedVendorQualityChecks": { + "description": "Whether this read did not pass filters, such as platform or vendor quality\ncontrols (SAM flag 0x200).", + "type": "boolean" + }, + "alignedQuality": { + "description": "The quality of the read sequence contained in this alignment record\n(equivalent to QUAL in SAM).\n`alignedSequence` and `alignedQuality` may be shorter than the full read\nsequence and quality. This will occur if the alignment is part of a\nchimeric alignment, or if the read was trimmed. When this occurs, the CIGAR\nfor this read will begin/end with a hard clip operator that will indicate\nthe length of the excised sequence.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "alignment": { + "$ref": "LinearAlignment", + "description": "The linear alignment for this alignment record. This field is null for\nunmapped reads." + }, + "numberReads": { + "format": "int32", + "description": "The number of reads in the fragment (extension to SAM flag 0x1).", + "type": "integer" + }, + "id": { + "description": "The server-generated read ID, unique across all reads. This is different\nfrom the `fragmentName`.", + "type": "string" + }, + "secondaryAlignment": { + "description": "Whether this alignment is secondary. Equivalent to SAM flag 0x100.\nA secondary alignment represents an alternative to the primary alignment\nfor this read. Aligners may return secondary alignments if a read can map\nambiguously to multiple coordinates in the genome. By convention, each read\nhas one and only one alignment where both `secondaryAlignment`\nand `supplementaryAlignment` are false.", + "type": "boolean" + }, + "fragmentName": { + "description": "The fragment name. Equivalent to QNAME (query template name) in SAM.", + "type": "string" + }, + "readGroupSetId": { + "description": "The ID of the read group set this read belongs to. A read belongs to\nexactly one read group set.", + "type": "string" + }, + "duplicateFragment": { + "description": "The fragment is a PCR or optical duplicate (SAM flag 0x400).", + "type": "boolean" + }, + "readNumber": { + "format": "int32", + "description": "The read number in sequencing. 0-based and less than numberReads. This\nfield replaces SAM flag 0x40 and 0x80.", + "type": "integer" + }, + "alignedSequence": { + "description": "The bases of the read sequence contained in this alignment record,\n**without CIGAR operations applied** (equivalent to SEQ in SAM).\n`alignedSequence` and `alignedQuality` may be\nshorter than the full read sequence and quality. This will occur if the\nalignment is part of a chimeric alignment, or if the read was trimmed. When\nthis occurs, the CIGAR for this read will begin/end with a hard clip\noperator that will indicate the length of the excised sequence.", + "type": "string" + }, + "readGroupId": { + "description": "The ID of the read group this read belongs to. A read belongs to exactly\none read group. This is a server-generated ID which is distinct from SAM's\nRG tag (for that value, see\nReadGroup.name).", + "type": "string" + }, + "info": { + "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object", + "additionalProperties": { + "items": { + "type": "any" + }, + "type": "array" + } + }, + "nextMatePosition": { + "description": "The mapping of the primary alignment of the\n`(readNumber+1)%numberReads` read in the fragment. It replaces\nmate position and mate strand in SAM.", + "$ref": "Position" + } + }, + "id": "Read" + }, + "ReferenceSet": { + "description": "A reference set is a set of references which typically comprise a reference\nassembly for a species, such as `GRCh38` which is representative\nof the human genome. A reference set defines a common coordinate space for\ncomparing reference-aligned experimental data. A reference set contains 1 or\nmore references.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "type": "object", + "properties": { + "sourceAccessions": { + "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `NC_000001.11`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Free text description of this reference set.", + "type": "string" + }, + "sourceUri": { + "description": "The URI from which the references were obtained.", + "type": "string" + }, + "ncbiTaxonId": { + "format": "int32", + "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human)\nindicating the species which this reference set is intended to model. Note\nthat contained references may specify a different `ncbiTaxonId`, as\nassemblies may contain reference sequences which do not belong to the\nmodeled species, for example EBV in a human reference genome.", + "type": "integer" + }, + "referenceIds": { + "description": "The IDs of the reference objects that are part of this set.\n`Reference.md5checksum` must be unique within this set.", + "items": { + "type": "string" + }, + "type": "array" + }, + "assemblyId": { + "description": "Public id of this reference set, such as `GRCh37`.", + "type": "string" + }, + "md5checksum": { + "description": "Order-independent MD5 checksum which identifies this reference set. The\nchecksum is computed by sorting all lower case hexidecimal string\n`reference.md5checksum` (for all reference in this set) in\nascending lexicographic order, concatenating, and taking the MD5 of that\nvalue. The resulting value is represented in lower case hexadecimal format.", + "type": "string" + }, + "id": { + "description": "The server-generated reference set ID, unique across all reference sets.", + "type": "string" + } + }, + "id": "ReferenceSet" + }, + "CigarUnit": { + "description": "A single CIGAR operation.", + "type": "object", + "properties": { + "referenceSequence": { + "description": "`referenceSequence` is only used at mismatches\n(`SEQUENCE_MISMATCH`) and deletions (`DELETE`).\nFilling this field replaces SAM's MD tag. If the relevant information is\nnot available, this field is unset.", + "type": "string" + }, + "operationLength": { + "format": "int64", + "description": "The number of genomic bases that the operation runs for. Required.", + "type": "string" + }, + "operation": { + "enumDescriptions": [ + "", + "An alignment match indicates that a sequence can be aligned to the\nreference without evidence of an INDEL. Unlike the\n`SEQUENCE_MATCH` and `SEQUENCE_MISMATCH` operators,\nthe `ALIGNMENT_MATCH` operator does not indicate whether the\nreference and read sequences are an exact match. This operator is\nequivalent to SAM's `M`.", + "The insert operator indicates that the read contains evidence of bases\nbeing inserted into the reference. This operator is equivalent to SAM's\n`I`.", + "The delete operator indicates that the read contains evidence of bases\nbeing deleted from the reference. This operator is equivalent to SAM's\n`D`.", + "The skip operator indicates that this read skips a long segment of the\nreference, but the bases have not been deleted. This operator is commonly\nused when working with RNA-seq data, where reads may skip long segments\nof the reference between exons. This operator is equivalent to SAM's\n`N`.", + "The soft clip operator indicates that bases at the start/end of a read\nhave not been considered during alignment. This may occur if the majority\nof a read maps, except for low quality bases at the start/end of a read.\nThis operator is equivalent to SAM's `S`. Bases that are soft\nclipped will still be stored in the read.", + "The hard clip operator indicates that bases at the start/end of a read\nhave been omitted from this alignment. This may occur if this linear\nalignment is part of a chimeric alignment, or if the read has been\ntrimmed (for example, during error correction or to trim poly-A tails for\nRNA-seq). This operator is equivalent to SAM's `H`.", + "The pad operator indicates that there is padding in an alignment. This\noperator is equivalent to SAM's `P`.", + "This operator indicates that this portion of the aligned sequence exactly\nmatches the reference. This operator is equivalent to SAM's `=`.", + "This operator indicates that this portion of the aligned sequence is an\nalignment match to the reference, but a sequence mismatch. This can\nindicate a SNP or a read error. This operator is equivalent to SAM's\n`X`." + ], + "enum": [ + "OPERATION_UNSPECIFIED", + "ALIGNMENT_MATCH", + "INSERT", + "DELETE", + "SKIP", + "CLIP_SOFT", + "CLIP_HARD", + "PAD", + "SEQUENCE_MATCH", + "SEQUENCE_MISMATCH" + ], + "type": "string" + } + }, + "id": "CigarUnit" + }, + "Transcript": { + "description": "A transcript represents the assertion that a particular region of the\nreference genome may be transcribed as RNA.", + "type": "object", + "properties": { + "geneId": { + "description": "The annotation ID of the gene from which this transcript is transcribed.", + "type": "string" + }, + "exons": { + "description": "The \u003ca href=\"http://en.wikipedia.org/wiki/Exon\"\u003eexons\u003c/a\u003e that compose\nthis transcript. This field should be unset for genomes where transcript\nsplicing does not occur, for example prokaryotes.\n\nIntrons are regions of the transcript that are not included in the\nspliced RNA product. Though not explicitly modeled here, intron ranges can\nbe deduced; all regions of this transcript that are not exons are introns.\n\nExonic sequences do not necessarily code for a translational product\n(amino acids). Only the regions of exons bounded by the\ncodingSequence correspond\nto coding DNA sequence.\n\nExons are ordered by start position and may not overlap.", + "items": { + "$ref": "Exon" + }, + "type": "array" + }, + "codingSequence": { + "$ref": "CodingSequence", + "description": "The range of the coding sequence for this transcript, if any. To determine\nthe exact ranges of coding sequence, intersect this range with those of the\nexons, if any. If there are any\nexons, the\ncodingSequence must start\nand end within them.\n\nNote that in some cases, the reference genome will not exactly match the\nobserved mRNA transcript e.g. due to variance in the source genome from\nreference. In these cases,\nexon.frame will not necessarily\nmatch the expected reference reading frame and coding exon reference bases\ncannot necessarily be concatenated to produce the original transcript mRNA." + } + }, + "id": "Transcript" + }, + "AnnotationSet": { + "description": "An annotation set is a logical grouping of annotations that share consistent\ntype information and provenance. Examples of annotation sets include 'all\ngenes from refseq', and 'all variant annotations from ClinVar'.", + "type": "object", + "properties": { + "referenceSetId": { + "description": "The ID of the reference set that defines the coordinate space for this\nset's annotations.", + "type": "string" + }, + "type": { + "enumDescriptions": [ + "", + "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", + "A `VARIANT` annotation type.", + "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", + "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." + ], + "enum": [ + "ANNOTATION_TYPE_UNSPECIFIED", + "GENERIC", + "VARIANT", + "GENE", + "TRANSCRIPT" + ], + "description": "The type of annotations contained within this set.", + "type": "string" + }, + "info": { + "additionalProperties": { + "items": { + "type": "any" + }, + "type": "array" + }, + "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object" + }, + "id": { + "description": "The server-generated annotation set ID, unique across all annotation sets.", + "type": "string" + }, + "sourceUri": { + "description": "The source URI describing the file from which this annotation set was\ngenerated, if any.", + "type": "string" + }, + "datasetId": { + "description": "The dataset to which this annotation set belongs.", + "type": "string" + }, + "name": { + "description": "The display name for this annotation set.", + "type": "string" + } + }, + "id": "AnnotationSet" + }, + "Experiment": { + "type": "object", + "properties": { + "platformUnit": { + "description": "The platform unit used as part of this experiment, for example\nflowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the\n@RG PU field in the SAM spec.", + "type": "string" + }, + "instrumentModel": { + "description": "The instrument model used as part of this experiment. This maps to\nsequencing technology in the SAM spec.", + "type": "string" + }, + "libraryId": { + "description": "A client-supplied library identifier; a library is a collection of DNA\nfragments which have been prepared for sequencing from a sample. This\nfield is important for quality control as error or bias can be introduced\nduring sample preparation.", + "type": "string" + }, + "sequencingCenter": { + "description": "The sequencing center used as part of this experiment.", + "type": "string" + } + }, + "id": "Experiment" + }, + "ListDatasetsResponse": { + "description": "The dataset list response.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" + }, + "datasets": { + "description": "The list of matching Datasets.", + "items": { + "$ref": "Dataset" + }, + "type": "array" + } + }, + "id": "ListDatasetsResponse" + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "REQUIRED: The set of permissions to check for the 'resource'.\nPermissions with wildcards (such as '*' or 'storage.*') are not allowed.\nAllowed permissions are:\n\n* `genomics.datasets.create`\n* `genomics.datasets.delete`\n* `genomics.datasets.get`\n* `genomics.datasets.list`\n* `genomics.datasets.update`\n* `genomics.datasets.getIamPolicy`\n* `genomics.datasets.setIamPolicy`", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" + }, + "ExportReadGroupSetRequest": { + "description": "The read group set export request.", + "type": "object", + "properties": { + "referenceNames": { + "description": "The reference names to export. If this is not specified, all reference\nsequences, including unmapped reads, are exported.\nUse `*` to export only unmapped reads.", + "items": { + "type": "string" + }, + "type": "array" + }, + "exportUri": { + "description": "Required. A Google Cloud Storage URI for the exported BAM file.\nThe currently authenticated user must have write access to the new file.\nAn error will be returned if the URI already contains data.", + "type": "string" + }, + "projectId": { + "description": "Required. The Google Cloud project ID that owns this\nexport. The caller must have WRITE access to this project.", + "type": "string" + } + }, + "id": "ExportReadGroupSetRequest" + }, + "Exon": { + "type": "object", + "properties": { + "frame": { + "format": "int32", + "description": "The frame of this exon. Contains a value of 0, 1, or 2, which indicates\nthe offset of the first coding base of the exon within the reading frame\nof the coding DNA sequence, if any. This field is dependent on the\nstrandedness of this annotation (see\nAnnotation.reverse_strand).\nFor forward stranded annotations, this offset is relative to the\nexon.start. For reverse\nstrand annotations, this offset is relative to the\nexon.end `- 1`.\n\nUnset if this exon does not intersect the coding sequence. Upon creation\nof a transcript, the frame must be populated for all or none of the\ncoding exons.", + "type": "integer" + }, + "end": { + "format": "int64", + "description": "The end position of the exon on this annotation's reference sequence,\n0-based exclusive. Note that this is relative to the reference start, and\n*not* the containing annotation start.", + "type": "string" + }, + "start": { + "format": "int64", + "description": "The start position of the exon on this annotation's reference sequence,\n0-based inclusive. Note that this is relative to the reference start, and\n**not** the containing annotation start.", + "type": "string" + } + }, + "id": "Exon" + }, + "CallSet": { + "description": "A call set is a collection of variant calls, typically for one sample. It\nbelongs to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "type": "object", + "properties": { + "created": { + "format": "int64", + "description": "The date this call set was created in milliseconds from the epoch.", + "type": "string" + }, + "sampleId": { + "description": "The sample ID this call set corresponds to.", + "type": "string" + }, + "name": { + "description": "The call set name.", + "type": "string" + }, + "info": { + "description": "A map of additional call set information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object", + "additionalProperties": { + "items": { + "type": "any" + }, + "type": "array" + } + }, + "variantSetIds": { + "description": "The IDs of the variant sets this call set belongs to. This field must\nhave exactly length one, as a call set belongs to a single variant set.\nThis field is repeated for compatibility with the\n[GA4GH 0.5.1\nAPI](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variants.avdl#L76).", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "The server-generated call set ID, unique across all call sets.", + "type": "string" + } + }, + "id": "CallSet" + }, + "SearchAnnotationSetsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" + }, + "annotationSets": { + "description": "The matching annotation sets.", + "items": { + "$ref": "AnnotationSet" + }, + "type": "array" + } + }, + "id": "SearchAnnotationSetsResponse" + }, + "ImportVariantsRequest": { + "description": "The variant data import request.", + "type": "object", + "properties": { + "infoMergeConfig": { + "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them. This is plumbed down to the MergeVariantRequests\ngenerated by the resulting import job.", + "type": "object", + "additionalProperties": { + "type": "string", + "enum": [ + "INFO_MERGE_OPERATION_UNSPECIFIED", + "IGNORE_NEW", + "MOVE_TO_CALLS" + ] + } + }, + "sourceUris": { + "description": "A list of URIs referencing variant files in Google Cloud Storage. URIs can\ninclude wildcards [as described\nhere](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames).\nNote that recursive wildcards ('**') are not supported.", + "items": { + "type": "string" + }, + "type": "array" + }, + "variantSetId": { + "description": "Required. The variant set to which variant data should be imported.", + "type": "string" + }, + "normalizeReferenceNames": { + "description": "Convert reference names to the canonical representation.\nhg19 haploytypes (those reference names containing \"_hap\")\nare not modified in any way.\nAll other reference names are modified according to the following rules:\nThe reference name is capitalized.\nThe \"chr\" prefix is dropped for all autosomes and sex chromsomes.\nFor example \"chr17\" becomes \"17\" and \"chrX\" becomes \"X\".\nAll mitochondrial chromosomes (\"chrM\", \"chrMT\", etc) become \"MT\".", + "type": "boolean" + }, + "format": { + "description": "The format of the variant data being imported. If unspecified, defaults to\nto `VCF`.", + "type": "string", + "enumDescriptions": [ + "", + "VCF (Variant Call Format). The VCF files may be gzip compressed. gVCF is\nalso supported. Disclaimer: gzip VCF imports are currently much slower\nthan equivalent uncompressed VCF imports. For this reason, uncompressed\nVCF is currently recommended for imports with more than 1GB combined\nuncompressed size, or for time sensitive imports.", + "Complete Genomics masterVarBeta format. The masterVarBeta files may\nbe bzip2 compressed." + ], + "enum": [ + "FORMAT_UNSPECIFIED", + "FORMAT_VCF", + "FORMAT_COMPLETE_GENOMICS" + ] + } + }, + "id": "ImportVariantsRequest" + }, + "VariantAnnotation": { + "type": "object", + "properties": { + "transcriptIds": { + "description": "Google annotation IDs of the transcripts affected by this variant. These\nshould be provided when the variant is created.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "enumDescriptions": [ + "", + "`TYPE_OTHER` should be used when no other Type will suffice.\nFurther explanation of the variant type may be included in the\ninfo field.", + "`INSERTION` indicates an insertion.", + "`DELETION` indicates a deletion.", + "`SUBSTITUTION` indicates a block substitution of\ntwo or more nucleotides.", + "`SNP` indicates a single nucleotide polymorphism.", + "`STRUCTURAL` indicates a large structural variant,\nincluding chromosomal fusions, inversions, etc.", + "`CNV` indicates a variation in copy number." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "TYPE_OTHER", + "INSERTION", + "DELETION", + "SUBSTITUTION", + "SNP", + "STRUCTURAL", + "CNV" + ], + "description": "Type has been adapted from ClinVar's list of variant types.", + "type": "string" + }, + "alternateBases": { + "description": "The alternate allele for this variant. If multiple alternate alleles\nexist at this location, create a separate variant for each one, as they\nmay represent distinct conditions.", + "type": "string" + }, + "geneId": { + "description": "Google annotation ID of the gene affected by this variant. This should\nbe provided when the variant is created.", + "type": "string" + }, + "clinicalSignificance": { + "description": "Describes the clinical significance of a variant.\nIt is adapted from the ClinVar controlled vocabulary for clinical\nsignificance described at:\nhttp://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/", + "type": "string", + "enumDescriptions": [ + "", + "`OTHER` should be used when no other clinical significance\nvalue will suffice.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "`MULTIPLE_REPORTED` should be used when multiple clinical\nsignficances are reported for a variant. The original clinical\nsignificance values may be provided in the `info` field." + ], + "enum": [ + "CLINICAL_SIGNIFICANCE_UNSPECIFIED", + "CLINICAL_SIGNIFICANCE_OTHER", + "UNCERTAIN", + "BENIGN", + "LIKELY_BENIGN", + "LIKELY_PATHOGENIC", + "PATHOGENIC", + "DRUG_RESPONSE", + "HISTOCOMPATIBILITY", + "CONFERS_SENSITIVITY", + "RISK_FACTOR", + "ASSOCIATION", + "PROTECTIVE", + "MULTIPLE_REPORTED" + ] + }, + "conditions": { + "description": "The set of conditions associated with this variant.\nA condition describes the way a variant influences human health.", + "items": { + "$ref": "ClinicalCondition" + }, + "type": "array" + }, + "effect": { + "enumDescriptions": [ + "", + "`EFFECT_OTHER` should be used when no other Effect\nwill suffice.", + "`FRAMESHIFT` indicates a mutation in which the insertion or\ndeletion of nucleotides resulted in a frameshift change.", + "`FRAME_PRESERVING_INDEL` indicates a mutation in which a\nmultiple of three nucleotides has been inserted or deleted, resulting\nin no change to the reading frame of the coding sequence.", + "`SYNONYMOUS_SNP` indicates a single nucleotide polymorphism\nmutation that results in no amino acid change.", + "`NONSYNONYMOUS_SNP` indicates a single nucleotide\npolymorphism mutation that results in an amino acid change.", + "`STOP_GAIN` indicates a mutation that leads to the creation\nof a stop codon at the variant site. Frameshift mutations creating\ndownstream stop codons do not count as `STOP_GAIN`.", + "`STOP_LOSS` indicates a mutation that eliminates a\nstop codon at the variant site.", + "`SPLICE_SITE_DISRUPTION` indicates that this variant is\nfound in a splice site for the associated transcript, and alters the\nnormal splicing pattern." + ], + "enum": [ + "EFFECT_UNSPECIFIED", + "EFFECT_OTHER", + "FRAMESHIFT", + "FRAME_PRESERVING_INDEL", + "SYNONYMOUS_SNP", + "NONSYNONYMOUS_SNP", + "STOP_GAIN", + "STOP_LOSS", + "SPLICE_SITE_DISRUPTION" + ], + "description": "Effect of the variant on the coding sequence.", + "type": "string" + } + }, + "id": "VariantAnnotation" + }, + "ListCoverageBucketsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" + }, + "bucketWidth": { + "format": "int64", + "description": "The length of each coverage bucket in base pairs. Note that buckets at the\nend of a reference sequence may be shorter. This value is omitted if the\nbucket width is infinity (the default behaviour, with no range or\n`targetBucketWidth`).", + "type": "string" + }, + "coverageBuckets": { + "description": "The coverage buckets. The list of buckets is sparse; a bucket with 0\noverlapping reads is not returned. A bucket never crosses more than one\nreference sequence. Each bucket has width `bucketWidth`, unless\nits end is the end of the reference sequence.", + "items": { + "$ref": "CoverageBucket" + }, + "type": "array" + } + }, + "id": "ListCoverageBucketsResponse" + }, + "ExportVariantSetRequest": { + "description": "The variant data export request.", + "type": "object", + "properties": { + "bigqueryTable": { + "description": "Required. The BigQuery table to export data to.\nIf the table doesn't exist, it will be created. If it already exists, it\nwill be overwritten.", + "type": "string" + }, + "bigqueryDataset": { + "description": "Required. The BigQuery dataset to export data to. This dataset must already\nexist. Note that this is distinct from the Genomics concept of \"dataset\".", + "type": "string" + }, + "format": { + "enumDescriptions": [ + "", + "Export the data to Google BigQuery." + ], + "enum": [ + "FORMAT_UNSPECIFIED", + "FORMAT_BIGQUERY" + ], + "description": "The format for the exported data.", + "type": "string" + }, + "projectId": { + "description": "Required. The Google Cloud project ID that owns the destination\nBigQuery dataset. The caller must have WRITE access to this project. This\nproject will also own the resulting export job.", + "type": "string" + }, + "callSetIds": { + "description": "If provided, only variant call information from the specified call sets\nwill be exported. By default all variant calls are exported.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ExportVariantSetRequest" + }, + "SearchAnnotationsRequest": { + "type": "object", + "properties": { + "end": { + "format": "int64", + "description": "The end position of the range on the reference, 0-based exclusive. If\nreferenceId or\nreferenceName\nmust be specified, Defaults to the length of the reference.", + "type": "string" + }, + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048.", + "type": "integer" + }, + "start": { + "format": "int64", + "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified,\nreferenceId or\nreferenceName\nmust be specified. Defaults to 0.", + "type": "string" + }, + "annotationSetIds": { + "description": "Required. The annotation sets to search within. The caller must have\n`READ` access to these annotation sets.\nAll queried annotation sets must have the same type.", + "items": { + "type": "string" + }, + "type": "array" + }, + "referenceName": { + "description": "The name of the reference to query, within the reference set associated\nwith this query.", + "type": "string" + }, + "referenceId": { + "description": "The ID of the reference to query.", + "type": "string" + } + }, + "id": "SearchAnnotationsRequest" + }, + "OperationEvent": { + "description": "An event that occurred during an Operation.", + "type": "object", + "properties": { + "description": { + "description": "Required description of event.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Optional time of when event started.", + "type": "string" + } + }, + "id": "OperationEvent" + }, + "CodingSequence": { + "type": "object", + "properties": { + "end": { + "format": "int64", + "description": "The end of the coding sequence on this annotation's reference sequence,\n0-based exclusive. Note that this position is relative to the reference\nstart, and *not* the containing annotation start.", + "type": "string" + }, + "start": { + "format": "int64", + "description": "The start of the coding sequence on this annotation's reference sequence,\n0-based inclusive. Note that this position is relative to the reference\nstart, and *not* the containing annotation start.", + "type": "string" + } + }, + "id": "CodingSequence" + }, + "TestIamPermissionsResponse": { + "description": "Response message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse" + }, + "GetIamPolicyRequest": { + "description": "Request message for `GetIamPolicy` method.", + "type": "object", + "properties": {}, + "id": "GetIamPolicyRequest" + }, + "SearchReferencesResponse": { + "type": "object", + "properties": { + "references": { + "description": "The matching references.", + "items": { + "$ref": "Reference" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" + } + }, + "id": "SearchReferencesResponse" + }, "SearchAnnotationSetsRequest": { "type": "object", "properties": { + "referenceSetId": { + "description": "If specified, only annotation sets associated with the given reference set\nare returned.", + "type": "string" + }, "pageToken": { "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", "type": "string" @@ -20,39 +1107,34 @@ "type": "array" }, "types": { - "enumDescriptions": [ - "", - "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", - "A `VARIANT` annotation type.", - "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", - "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." - ], "description": "If specified, only annotation sets that have any of these types are\nreturned.", "items": { - "type": "string", "enum": [ "ANNOTATION_TYPE_UNSPECIFIED", "GENERIC", "VARIANT", "GENE", "TRANSCRIPT" - ] + ], + "type": "string" }, - "type": "array" + "type": "array", + "enumDescriptions": [ + "", + "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", + "A `VARIANT` annotation type.", + "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", + "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." + ] }, "name": { "description": "Only return annotations sets for which a substring of the name matches this\nstring (case insensitive).", "type": "string" - }, - "referenceSetId": { - "description": "If specified, only annotation sets associated with the given reference set\nare returned.", - "type": "string" } }, "id": "SearchAnnotationSetsRequest" }, "SearchReadGroupSetsResponse": { - "id": "SearchReadGroupSetsResponse", "description": "The read group set search response.", "type": "object", "properties": { @@ -67,17 +1149,13 @@ }, "type": "array" } - } + }, + "id": "SearchReadGroupSetsResponse" }, "LinearAlignment": { "description": "A linear alignment can be represented by one CIGAR string. Describes the\nmapped position and local alignment of the read to the reference.", "type": "object", "properties": { - "mappingQuality": { - "format": "int32", - "description": "The mapping quality of this alignment. Represents how likely\nthe read maps to this position as opposed to other locations.\n\nSpecifically, this is -10 log10 Pr(mapping position is wrong), rounded to\nthe nearest integer.", - "type": "integer" - }, "cigar": { "description": "Represents the local alignment of this sequence (alignment matches, indels,\netc) against the reference.", "items": { @@ -88,6 +1166,11 @@ "position": { "$ref": "Position", "description": "The position of this alignment." + }, + "mappingQuality": { + "format": "int32", + "description": "The mapping quality of this alignment. Represents how likely\nthe read maps to this position as opposed to other locations.\n\nSpecifically, this is -10 log10 Pr(mapping position is wrong), rounded to\nthe nearest integer.", + "type": "integer" } }, "id": "LinearAlignment" @@ -95,15 +1178,6 @@ "SearchReferencesRequest": { "type": "object", "properties": { - "pageSize": { - "type": "integer", - "format": "int32", - "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096." - }, - "referenceSetId": { - "description": "If present, return only references which belong to this reference set.", - "type": "string" - }, "md5checksums": { "description": "If present, return references for which the\nmd5checksum matches exactly.", "items": { @@ -112,8 +1186,8 @@ "type": "array" }, "pageToken": { - "type": "string", - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response." + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" }, "accessions": { "description": "If present, return references for which a prefix of any of\nsourceAccessions match\nany of these strings. Accession numbers typically have a main number and a\nversion, for example `GCF_000001405.26`.", @@ -121,6 +1195,15 @@ "type": "string" }, "type": "array" + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.", + "type": "integer" + }, + "referenceSetId": { + "description": "If present, return only references which belong to this reference set.", + "type": "string" } }, "id": "SearchReferencesRequest" @@ -129,10 +1212,6 @@ "description": "A Dataset is a collection of genomic data.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "type": "object", "properties": { - "id": { - "description": "The server-generated dataset ID, unique across all datasets.", - "type": "string" - }, "createTime": { "format": "google-datetime", "description": "The time this dataset was created, in seconds from the epoch.", @@ -145,6 +1224,10 @@ "projectId": { "description": "The Google Cloud project ID that this dataset belongs to.", "type": "string" + }, + "id": { + "description": "The server-generated dataset ID, unique across all datasets.", + "type": "string" } }, "id": "Dataset" @@ -167,13 +1250,33 @@ "description": "A read group is all the data that's processed the same way by the sequencer.", "type": "object", "properties": { + "programs": { + "description": "The programs used to generate this read group. Programs are always\nidentical for all read groups within a read group set. For this reason,\nonly the first read group in a returned set will have this field\npopulated.", + "items": { + "$ref": "Program" + }, + "type": "array" + }, + "predictedInsertSize": { + "format": "int32", + "description": "The predicted insert size of this read group. The insert size is the length\nthe sequenced DNA fragment from end-to-end, not including the adapters.", + "type": "integer" + }, + "description": { + "description": "A free-form text description of this read group.", + "type": "string" + }, + "sampleId": { + "description": "A client-supplied sample identifier for the reads in this read group.", + "type": "string" + }, "datasetId": { - "type": "string", - "description": "The dataset to which this read group belongs." + "description": "The dataset to which this read group belongs.", + "type": "string" }, "experiment": { - "$ref": "Experiment", - "description": "The experiment used to generate this read group." + "description": "The experiment used to generate this read group.", + "$ref": "Experiment" }, "name": { "description": "The read group name. This corresponds to the @RG ID field in the SAM spec.", @@ -184,60 +1287,39 @@ "type": "string" }, "info": { + "description": "A map of additional read group information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", "type": "object", "additionalProperties": { "items": { "type": "any" }, "type": "array" - }, - "description": "A map of additional read group information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values)." + } }, "id": { "description": "The server-generated read group ID, unique for all read groups.\nNote: This is different than the @RG ID field in the SAM spec. For that\nvalue, see name.", "type": "string" - }, - "predictedInsertSize": { - "format": "int32", - "description": "The predicted insert size of this read group. The insert size is the length\nthe sequenced DNA fragment from end-to-end, not including the adapters.", - "type": "integer" - }, - "programs": { - "description": "The programs used to generate this read group. Programs are always\nidentical for all read groups within a read group set. For this reason,\nonly the first read group in a returned set will have this field\npopulated.", - "items": { - "$ref": "Program" - }, - "type": "array" - }, - "description": { - "type": "string", - "description": "A free-form text description of this read group." - }, - "sampleId": { - "type": "string", - "description": "A client-supplied sample identifier for the reads in this read group." } }, "id": "ReadGroup" }, "ReadGroupSet": { - "id": "ReadGroupSet", "description": "A read group set is a logical collection of read groups, which are\ncollections of reads produced by a sequencer. A read group set typically\nmodels reads corresponding to one sample, sequenced one way, and aligned one\nway.\n\n* A read group set belongs to one dataset.\n* A read group belongs to one read group set.\n* A read belongs to one read group.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "type": "object", "properties": { "referenceSetId": { - "type": "string", - "description": "The reference set to which the reads in this read group set are aligned." + "description": "The reference set to which the reads in this read group set are aligned.", + "type": "string" }, "info": { + "description": "A map of additional read group set information.", "type": "object", "additionalProperties": { "items": { "type": "any" }, "type": "array" - }, - "description": "A map of additional read group set information." + } }, "id": { "description": "The server-generated read group set ID, unique for all read group sets.", @@ -247,6 +1329,10 @@ "description": "The dataset to which this read group set belongs.", "type": "string" }, + "filename": { + "description": "The filename of the original source file for this read group set, if any.", + "type": "string" + }, "readGroups": { "description": "The read groups in this set. There are typically 1-10 read groups in a read\ngroup set.", "items": { @@ -254,17 +1340,15 @@ }, "type": "array" }, - "filename": { - "description": "The filename of the original source file for this read group set, if any.", - "type": "string" - }, "name": { "description": "The read group set name. By default this will be initialized to the sample\nname of the sequenced data contained in this set.", "type": "string" } - } + }, + "id": "ReadGroupSet" }, "SearchVariantSetsResponse": { + "description": "The search variant sets response.", "type": "object", "properties": { "variantSets": { @@ -275,29 +1359,28 @@ "type": "array" }, "nextPageToken": { - "type": "string", - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results." + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" } }, - "id": "SearchVariantSetsResponse", - "description": "The search variant sets response." + "id": "SearchVariantSetsResponse" }, "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", "type": "object", "properties": {}, - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." + "id": "Empty" }, "Entry": { "type": "object", "properties": { "annotation": { - "$ref": "Annotation", - "description": "The created annotation, if creation was successful." + "description": "The created annotation, if creation was successful.", + "$ref": "Annotation" }, "status": { - "$ref": "Status", - "description": "The creation status." + "description": "The creation status.", + "$ref": "Status" } }, "id": "Entry" @@ -343,13 +1426,6 @@ "description": "The call set search request.", "type": "object", "properties": { - "variantSetIds": { - "description": "Restrict the query to call sets within the given variant sets. At least one\nID must be provided.", - "items": { - "type": "string" - }, - "type": "array" - }, "pageToken": { "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", "type": "string" @@ -362,55 +1438,57 @@ "format": "int32", "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.", "type": "integer" + }, + "variantSetIds": { + "description": "Restrict the query to call sets within the given variant sets. At least one\nID must be provided.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "SearchCallSetsRequest" }, "ImportReadGroupSetsRequest": { - "id": "ImportReadGroupSetsRequest", "description": "The read group set import request.", "type": "object", "properties": { - "sourceUris": { - "description": "A list of URIs pointing at [BAM\nfiles](https://samtools.github.io/hts-specs/SAMv1.pdf)\nin Google Cloud Storage.\nThose URIs can include wildcards (*), but do not add or remove\nmatching files before import has completed.\n\nNote that Google Cloud Storage object listing is only eventually\nconsistent: files added may be not be immediately visible to\neveryone. Thus, if using a wildcard it is preferable not to start\nthe import immediately after the files are created.", - "items": { - "type": "string" - }, - "type": "array" - }, "referenceSetId": { "description": "The reference set to which the imported read group sets are aligned to, if\nany. The reference names of this reference set must be a superset of those\nfound in the imported file headers. If no reference set id is provided, a\nbest effort is made to associate with a matching reference set.", "type": "string" }, "partitionStrategy": { - "enum": [ - "PARTITION_STRATEGY_UNSPECIFIED", - "PER_FILE_PER_SAMPLE", - "MERGE_ALL" - ], "description": "The partition strategy describes how read groups are partitioned into read\ngroup sets.", "type": "string", "enumDescriptions": [ "", "In most cases, this strategy yields one read group set per file. This is\nthe default behavior.\n\nAllocate one read group set per file per sample. For BAM files, read\ngroups are considered to share a sample if they have identical sample\nnames. Furthermore, all reads for each file which do not belong to a read\ngroup, if any, will be grouped into a single read group set per-file.", "Includes all read groups in all imported files into a single read group\nset. Requires that the headers for all imported files are equivalent. All\nreads which do not belong to a read group, if any, will be grouped into a\nseparate read group set." + ], + "enum": [ + "PARTITION_STRATEGY_UNSPECIFIED", + "PER_FILE_PER_SAMPLE", + "MERGE_ALL" ] }, "datasetId": { "description": "Required. The ID of the dataset these read group sets will belong to. The\ncaller must have WRITE permissions to this dataset.", "type": "string" + }, + "sourceUris": { + "description": "A list of URIs pointing at [BAM\nfiles](https://samtools.github.io/hts-specs/SAMv1.pdf)\nin Google Cloud Storage.\nThose URIs can include wildcards (*), but do not add or remove\nmatching files before import has completed.\n\nNote that Google Cloud Storage object listing is only eventually\nconsistent: files added may be not be immediately visible to\neveryone. Thus, if using a wildcard it is preferable not to start\nthe import immediately after the files are created.", + "items": { + "type": "string" + }, + "type": "array" } - } + }, + "id": "ImportReadGroupSetsRequest" }, "Policy": { "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", "type": "object", "properties": { - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, "bindings": { "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", "items": { @@ -422,22 +1500,102 @@ "format": "byte", "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", "type": "string" + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" } }, "id": "Policy" }, - "SearchReadsRequest": { + "Annotation": { + "description": "An annotation describes a region of reference genome. The value of an\nannotation may be one of several canonical types, supplemented by arbitrary\ninfo tags. An annotation is not inherently associated with a specific\nsample or individual (though a client could choose to use annotations in\nthis way). Example canonical annotation types are `GENE` and\n`VARIANT`.", + "type": "object", "properties": { - "pageSize": { - "format": "int32", - "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048.", - "type": "integer" - }, "start": { "format": "int64", - "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified, `referenceName` must also be specified.", + "description": "The start position of the range on the reference, 0-based inclusive.", "type": "string" }, + "annotationSetId": { + "description": "The annotation set to which this annotation belongs.", + "type": "string" + }, + "name": { + "description": "The display name of this annotation.", + "type": "string" + }, + "variant": { + "description": "A variant annotation, which describes the effect of a variant on the\ngenome, the coding sequence, and/or higher level consequences at the\norganism level e.g. pathogenicity. This field is only set for annotations\nof type `VARIANT`.", + "$ref": "VariantAnnotation" + }, + "referenceId": { + "description": "The ID of the Google Genomics reference associated with this range.", + "type": "string" + }, + "id": { + "description": "The server-generated annotation ID, unique across all annotations.", + "type": "string" + }, + "reverseStrand": { + "description": "Whether this range refers to the reverse strand, as opposed to the forward\nstrand. Note that regardless of this field, the start/end position of the\nrange always refer to the forward strand.", + "type": "boolean" + }, + "referenceName": { + "description": "The display name corresponding to the reference specified by\n`referenceId`, for example `chr1`, `1`, or `chrX`.", + "type": "string" + }, + "type": { + "description": "The data type for this annotation. Must match the containing annotation\nset's type.", + "type": "string", + "enumDescriptions": [ + "", + "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", + "A `VARIANT` annotation type.", + "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", + "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." + ], + "enum": [ + "ANNOTATION_TYPE_UNSPECIFIED", + "GENERIC", + "VARIANT", + "GENE", + "TRANSCRIPT" + ] + }, + "info": { + "additionalProperties": { + "items": { + "type": "any" + }, + "type": "array" + }, + "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object" + }, + "end": { + "format": "int64", + "description": "The end position of the range on the reference, 0-based exclusive.", + "type": "string" + }, + "transcript": { + "$ref": "Transcript", + "description": "A transcript value represents the assertion that a particular region of\nthe reference genome may be transcribed as RNA. An alternative splicing\npattern would be represented as a separate transcript object. This field\nis only set for annotations of type `TRANSCRIPT`." + } + }, + "id": "Annotation" + }, + "CancelOperationRequest": { + "description": "The request message for Operations.CancelOperation.", + "type": "object", + "properties": {}, + "id": "CancelOperationRequest" + }, + "SearchReadsRequest": { + "description": "The read search request.", + "type": "object", + "properties": { "referenceName": { "description": "The reference sequence name, for example `chr1`, `1`, or `chrX`. If set to\n`*`, only unmapped reads are returned. If unspecified, all reads (mapped\nand unmapped) are returned.", "type": "string" @@ -464,132 +1622,21 @@ "pageToken": { "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", "type": "string" - } - }, - "id": "SearchReadsRequest", - "description": "The read search request.", - "type": "object" - }, - "CancelOperationRequest": { - "description": "The request message for Operations.CancelOperation.", - "type": "object", - "properties": {}, - "id": "CancelOperationRequest" - }, - "Annotation": { - "description": "An annotation describes a region of reference genome. The value of an\nannotation may be one of several canonical types, supplemented by arbitrary\ninfo tags. An annotation is not inherently associated with a specific\nsample or individual (though a client could choose to use annotations in\nthis way). Example canonical annotation types are `GENE` and\n`VARIANT`.", - "type": "object", - "properties": { - "transcript": { - "description": "A transcript value represents the assertion that a particular region of\nthe reference genome may be transcribed as RNA. An alternative splicing\npattern would be represented as a separate transcript object. This field\nis only set for annotations of type `TRANSCRIPT`.", - "$ref": "Transcript" + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048.", + "type": "integer" }, "start": { "format": "int64", - "description": "The start position of the range on the reference, 0-based inclusive.", - "type": "string" - }, - "annotationSetId": { - "description": "The annotation set to which this annotation belongs.", - "type": "string" - }, - "name": { - "type": "string", - "description": "The display name of this annotation." - }, - "variant": { - "$ref": "VariantAnnotation", - "description": "A variant annotation, which describes the effect of a variant on the\ngenome, the coding sequence, and/or higher level consequences at the\norganism level e.g. pathogenicity. This field is only set for annotations\nof type `VARIANT`." - }, - "id": { - "description": "The server-generated annotation ID, unique across all annotations.", - "type": "string" - }, - "referenceId": { - "type": "string", - "description": "The ID of the Google Genomics reference associated with this range." - }, - "reverseStrand": { - "description": "Whether this range refers to the reverse strand, as opposed to the forward\nstrand. Note that regardless of this field, the start/end position of the\nrange always refer to the forward strand.", - "type": "boolean" - }, - "referenceName": { - "description": "The display name corresponding to the reference specified by\n`referenceId`, for example `chr1`, `1`, or `chrX`.", - "type": "string" - }, - "type": { - "enumDescriptions": [ - "", - "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", - "A `VARIANT` annotation type.", - "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", - "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." - ], - "enum": [ - "ANNOTATION_TYPE_UNSPECIFIED", - "GENERIC", - "VARIANT", - "GENE", - "TRANSCRIPT" - ], - "description": "The data type for this annotation. Must match the containing annotation\nset's type.", - "type": "string" - }, - "info": { - "additionalProperties": { - "items": { - "type": "any" - }, - "type": "array" - }, - "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object" - }, - "end": { - "format": "int64", - "description": "The end position of the range on the reference, 0-based exclusive.", + "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified, `referenceName` must also be specified.", "type": "string" } }, - "id": "Annotation" - }, - "Operation": { - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object", - "properties": { - "response": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an empty response is returned." - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example: `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "type": "object", - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - }, - "description": "An OperationMetadata object. This will always be returned with the Operation." - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - } - }, - "id": "Operation" + "id": "SearchReadsRequest" }, "RuntimeMetadata": { - "id": "RuntimeMetadata", "description": "Runtime metadata that will be populated in the\nruntimeMetadata\nfield of the Operation associated with a RunPipeline execution.", "type": "object", "properties": { @@ -597,7 +1644,43 @@ "$ref": "ComputeEngine", "description": "Execution information specific to Google Compute Engine." } - } + }, + "id": "RuntimeMetadata" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "error": { + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "description": "An OperationMetadata object. This will always be returned with the Operation.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an empty response is returned.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example: `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`", + "type": "string" + } + }, + "id": "Operation" }, "ImportReadGroupSetsResponse": { "description": "The read group set import response.", @@ -617,19 +1700,15 @@ "description": "A call represents the determination of genotype with respect to a particular\nvariant. It may include associated information such as quality and phasing.\nFor example, a call might assign a probability of 0.32 to the occurrence of\na SNP named rs1234 in a call set with the name NA12345.", "type": "object", "properties": { - "phaseset": { - "description": "If this field is present, this variant call's genotype ordering implies\nthe phase of the bases and is consistent with any other variant calls in\nthe same reference sequence which have the same phaseset value.\nWhen importing data from VCF, if the genotype data was phased but no\nphase set was specified this field will be set to `*`.", - "type": "string" - }, "info": { + "description": "A map of additional variant call information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", + "type": "object", "additionalProperties": { "items": { "type": "any" }, "type": "array" - }, - "description": "A map of additional variant call information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object" + } }, "callSetName": { "description": "The name of the call set this variant call belongs to.", @@ -650,10 +1729,14 @@ "genotype": { "description": "The genotype of this variant call. Each value represents either the value\nof the `referenceBases` field or a 1-based index into\n`alternateBases`. If a variant had a `referenceBases`\nvalue of `T` and an `alternateBases`\nvalue of `[\"A\", \"C\"]`, and the `genotype` was\n`[2, 1]`, that would mean the call\nrepresented the heterozygous value `CA` for this variant.\nIf the `genotype` was instead `[0, 1]`, the\nrepresented value would be `TA`. Ordering of the\ngenotype values is important if the `phaseset` is present.\nIf a genotype is not called (that is, a `.` is present in the\nGT string) -1 is returned.", "items": { - "type": "integer", - "format": "int32" + "format": "int32", + "type": "integer" }, "type": "array" + }, + "phaseset": { + "description": "If this field is present, this variant call's genotype ordering implies\nthe phase of the bases and is consistent with any other variant calls in\nthe same reference sequence which have the same phaseset value.\nWhen importing data from VCF, if the genotype data was phased but no\nphase set was specified this field will be set to `*`.", + "type": "string" } }, "id": "VariantCall" @@ -662,16 +1745,16 @@ "description": "The variant search response.", "type": "object", "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, "variants": { "description": "The list of matching Variants.", "items": { "$ref": "Variant" }, "type": "array" + }, + "nextPageToken": { + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "type": "string" } }, "id": "SearchVariantsResponse" @@ -679,18 +1762,18 @@ "ListBasesResponse": { "type": "object", "properties": { - "sequence": { - "description": "A substring of the bases that make up this reference.", - "type": "string" - }, "offset": { - "type": "string", "format": "int64", - "description": "The offset position (0-based) of the given `sequence` from the\nstart of this `Reference`. This value will differ for each page\nin a paginated request." + "description": "The offset position (0-based) of the given `sequence` from the\nstart of this `Reference`. This value will differ for each page\nin a paginated request.", + "type": "string" }, "nextPageToken": { "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", "type": "string" + }, + "sequence": { + "description": "A substring of the bases that make up this reference.", + "type": "string" } }, "id": "ListBasesResponse" @@ -699,15 +1782,6 @@ "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { @@ -718,14 +1792,23 @@ "type": "object" }, "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" } }, "id": "Status" }, "UndeleteDatasetRequest": { - "id": "UndeleteDatasetRequest", "type": "object", - "properties": {} + "properties": {}, + "id": "UndeleteDatasetRequest" }, "Binding": { "description": "Associates `members` with a `role`.", @@ -749,6 +1832,11 @@ "description": "A 0-based half-open genomic coordinate range for search requests.", "type": "object", "properties": { + "end": { + "format": "int64", + "description": "The end position of the range on the reference, 0-based exclusive.", + "type": "string" + }, "referenceName": { "description": "The reference sequence name, for example `chr1`,\n`1`, or `chrX`.", "type": "string" @@ -757,11 +1845,6 @@ "format": "int64", "description": "The start position of the range on the reference, 0-based inclusive.", "type": "string" - }, - "end": { - "format": "int64", - "description": "The end position of the range on the reference, 0-based exclusive.", - "type": "string" } }, "id": "Range" @@ -770,6 +1853,10 @@ "description": "A variant set is a collection of call sets and variants. It contains summary\nstatistics of those contents. A variant set belongs to a dataset.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "type": "object", "properties": { + "description": { + "description": "A textual description of this variant set.", + "type": "string" + }, "datasetId": { "description": "The dataset to which this variant set belongs.", "type": "string" @@ -799,30 +1886,10 @@ "id": { "description": "The server-generated variant set ID, unique across all variant sets.", "type": "string" - }, - "description": { - "description": "A textual description of this variant set.", - "type": "string" } }, "id": "VariantSet" }, - "ReferenceBound": { - "id": "ReferenceBound", - "description": "ReferenceBound records an upper bound for the starting coordinate of\nvariants in a particular reference.", - "type": "object", - "properties": { - "referenceName": { - "description": "The name of the reference associated with this reference bound.", - "type": "string" - }, - "upperBound": { - "format": "int64", - "description": "An upper bound (inclusive) on the starting coordinate of any\nvariant in the reference sequence.", - "type": "string" - } - } - }, "BatchCreateAnnotationsResponse": { "type": "object", "properties": { @@ -836,23 +1903,39 @@ }, "id": "BatchCreateAnnotationsResponse" }, - "SearchCallSetsResponse": { - "description": "The call set search response.", + "ReferenceBound": { + "description": "ReferenceBound records an upper bound for the starting coordinate of\nvariants in a particular reference.", "type": "object", "properties": { - "callSets": { - "description": "The list of matching call sets.", - "items": { - "$ref": "CallSet" - }, - "type": "array" + "referenceName": { + "description": "The name of the reference associated with this reference bound.", + "type": "string" }, - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", + "upperBound": { + "format": "int64", + "description": "An upper bound (inclusive) on the starting coordinate of any\nvariant in the reference sequence.", "type": "string" } }, - "id": "SearchCallSetsResponse" + "id": "ReferenceBound" + }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + }, + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + } + }, + "id": "ListOperationsResponse" }, "Variant": { "description": "A variant represents a change in DNA sequence relative to a reference\nsequence. For example, a variant could represent a SNP or an insertion.\nVariants belong to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach of the calls on a variant represent a determination of genotype with\nrespect to that variant. For example, a call might assign probability of 0.32\nto the occurrence of a SNP named rs1234 in a sample named NA12345. A call\nbelongs to a call set, which contains related calls typically from one\nsample.", @@ -880,6 +1963,13 @@ "description": "The reference bases for this variant. They start at the given\nposition.", "type": "string" }, + "alternateBases": { + "description": "The bases that appear instead of the reference bases.", + "items": { + "type": "string" + }, + "type": "array" + }, "names": { "description": "Names for the variant, for example a RefSNP ID.", "items": { @@ -887,8 +1977,8 @@ }, "type": "array" }, - "alternateBases": { - "description": "The bases that appear instead of the reference bases.", + "filter": { + "description": "A list of filters (normally quality filters) this variant has failed.\n`PASS` indicates this variant has passed all filters.", "items": { "type": "string" }, @@ -899,19 +1989,12 @@ "description": "The end position (0-based) of this variant. This corresponds to the first\nbase after the last base in the reference allele. So, the length of\nthe reference allele is (end - start). This is useful for variants\nthat don't explicitly give alternate bases, for example large deletions.", "type": "string" }, - "filter": { - "description": "A list of filters (normally quality filters) this variant has failed.\n`PASS` indicates this variant has passed all filters.", - "items": { - "type": "string" - }, - "type": "array" - }, "calls": { + "description": "The variant calls for this particular variant. Each one represents the\ndetermination of genotype with respect to this variant.", "items": { "$ref": "VariantCall" }, - "type": "array", - "description": "The variant calls for this particular variant. Each one represents the\ndetermination of genotype with respect to this variant." + "type": "array" }, "created": { "format": "int64", @@ -935,28 +2018,61 @@ }, "id": "Variant" }, - "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", + "SearchCallSetsResponse": { + "description": "The call set search response.", "type": "object", "properties": { "nextPageToken": { - "description": "The standard List next-page token.", + "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", "type": "string" }, - "operations": { - "description": "A list of operations that matches the specified filter in the request.", + "callSets": { + "description": "The list of matching call sets.", "items": { - "$ref": "Operation" + "$ref": "CallSet" }, "type": "array" } }, - "id": "ListOperationsResponse" + "id": "SearchCallSetsResponse" }, "OperationMetadata": { "description": "Metadata describing an Operation.", "type": "object", "properties": { + "projectId": { + "description": "The Google Cloud Project in which the job is scoped.", + "type": "string" + }, + "clientId": { + "description": "This field is deprecated. Use `labels` instead. Optionally provided by the\ncaller when submitting the request that creates the operation.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "The time at which the job stopped running.", + "type": "string" + }, + "events": { + "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export.", + "items": { + "$ref": "OperationEvent" + }, + "type": "array" + }, + "startTime": { + "format": "google-datetime", + "description": "The time at which the job began to run.", + "type": "string" + }, + "request": { + "description": "The original request that started the operation. Note that this will be in\ncurrent version of the API. If the operation was started with v1beta2 API\nand a GetOperation is performed on v1 API, a v1 request will be returned.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, "runtimeMetadata": { "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", @@ -976,39 +2092,6 @@ }, "description": "Optionally provided by the caller when submitting the request that creates\nthe operation.", "type": "object" - }, - "projectId": { - "description": "The Google Cloud Project in which the job is scoped.", - "type": "string" - }, - "clientId": { - "type": "string", - "description": "This field is deprecated. Use `labels` instead. Optionally provided by the\ncaller when submitting the request that creates the operation." - }, - "endTime": { - "format": "google-datetime", - "description": "The time at which the job stopped running.", - "type": "string" - }, - "events": { - "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export.", - "items": { - "$ref": "OperationEvent" - }, - "type": "array" - }, - "startTime": { - "type": "string", - "format": "google-datetime", - "description": "The time at which the job began to run." - }, - "request": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The original request that started the operation. Note that this will be in\ncurrent version of the API. If the operation was started with v1beta2 API\nand a GetOperation is performed on v1 API, a v1 request will be returned.", - "type": "object" } }, "id": "OperationMetadata" @@ -1017,27 +2100,6 @@ "description": "The variant search request.", "type": "object", "properties": { - "variantSetIds": { - "items": { - "type": "string" - }, - "type": "array", - "description": "At most one variant set ID must be provided. Only variants from this\nvariant set will be returned. If omitted, a call set id must be included in\nthe request." - }, - "end": { - "format": "int64", - "description": "The end of the window, 0-based exclusive. If unspecified or 0, defaults to\nthe length of the reference.", - "type": "string" - }, - "maxCalls": { - "format": "int32", - "description": "The maximum number of calls to return in a single page. Note that this\nlimit may be exceeded in the event that a matching variant contains more\ncalls than the requested maximum. If unspecified, defaults to 5000. The\nmaximum value is 10000.", - "type": "integer" - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", - "type": "string" - }, "pageSize": { "format": "int32", "description": "The maximum number of variants to return in a single page. If unspecified,\ndefaults to 5000. The maximum value is 10000.", @@ -1060,15 +2122,45 @@ "type": "string" }, "referenceName": { - "type": "string", - "description": "Required. Only return variants in this reference sequence." + "description": "Required. Only return variants in this reference sequence.", + "type": "string" + }, + "variantSetIds": { + "description": "At most one variant set ID must be provided. Only variants from this\nvariant set will be returned. If omitted, a call set id must be included in\nthe request.", + "items": { + "type": "string" + }, + "type": "array" + }, + "end": { + "format": "int64", + "description": "The end of the window, 0-based exclusive. If unspecified or 0, defaults to\nthe length of the reference.", + "type": "string" + }, + "maxCalls": { + "format": "int32", + "description": "The maximum number of calls to return in a single page. Note that this\nlimit may be exceeded in the event that a matching variant contains more\ncalls than the requested maximum. If unspecified, defaults to 5000. The\nmaximum value is 10000.", + "type": "integer" + }, + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" } }, "id": "SearchVariantsRequest" }, "SearchReadGroupSetsRequest": { + "description": "The read group set search request.", "type": "object", "properties": { + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" + }, + "name": { + "description": "Only return read group sets for which a substring of the name matches this\nstring.", + "type": "string" + }, "pageSize": { "format": "int32", "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 1024.", @@ -1080,1123 +2172,31 @@ "type": "string" }, "type": "array" - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", - "type": "string" - }, - "name": { - "description": "Only return read group sets for which a substring of the name matches this\nstring.", - "type": "string" } }, - "id": "SearchReadGroupSetsRequest", - "description": "The read group set search request." + "id": "SearchReadGroupSetsRequest" }, "SearchAnnotationsResponse": { + "type": "object", "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, "annotations": { "description": "The matching annotations.", "items": { "$ref": "Annotation" }, "type": "array" - } - }, - "id": "SearchAnnotationsResponse", - "type": "object" - }, - "ClinicalCondition": { - "type": "object", - "properties": { - "omimId": { - "description": "The OMIM id for this condition.\nSearch for these IDs at http://omim.org/", - "type": "string" - }, - "externalIds": { - "description": "The set of external IDs for this condition.", - "items": { - "$ref": "ExternalId" - }, - "type": "array" - }, - "conceptId": { - "type": "string", - "description": "The MedGen concept id associated with this gene.\nSearch for these IDs at http://www.ncbi.nlm.nih.gov/medgen/" - }, - "names": { - "description": "A set of names for the condition.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ClinicalCondition" - }, - "SearchReadsResponse": { - "properties": { - "alignments": { - "description": "The list of matching alignments sorted by mapped genomic coordinate,\nif any, ascending in position within the same reference. Unmapped reads,\nwhich have no position, are returned contiguously and are sorted in\nascending lexicographic order by fragment name.", - "items": { - "$ref": "Read" - }, - "type": "array" }, "nextPageToken": { "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", "type": "string" } }, - "id": "SearchReadsResponse", - "description": "The read search response.", - "type": "object" - }, - "Program": { - "id": "Program", - "type": "object", - "properties": { - "name": { - "description": "The display name of the program. This is typically the colloquial name of\nthe tool used, for example 'bwa' or 'picard'.", - "type": "string" - }, - "prevProgramId": { - "description": "The ID of the program run before this one.", - "type": "string" - }, - "commandLine": { - "description": "The command line used to run this program.", - "type": "string" - }, - "version": { - "description": "The version of the program run.", - "type": "string" - }, - "id": { - "description": "The user specified locally unique ID of the program. Used along with\n`prevProgramId` to define an ordering between programs.", - "type": "string" - } - } - }, - "ComputeEngine": { - "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.", - "type": "object", - "properties": { - "instanceName": { - "description": "The instance on which the operation is running.", - "type": "string" - }, - "zone": { - "description": "The availability zone in which the instance resides.", - "type": "string" - }, - "diskNames": { - "description": "The names of the disks that were created for this pipeline.", - "items": { - "type": "string" - }, - "type": "array" - }, - "machineType": { - "description": "The machine type of the instance.", - "type": "string" - } - }, - "id": "ComputeEngine" - }, - "CoverageBucket": { - "description": "A bucket over which read coverage has been precomputed. A bucket corresponds\nto a specific range of the reference sequence.", - "type": "object", - "properties": { - "range": { - "description": "The genomic coordinate range spanned by this bucket.", - "$ref": "Range" - }, - "meanCoverage": { - "format": "float", - "description": "The average number of reads which are aligned to each individual\nreference base in this bucket.", - "type": "number" - } - }, - "id": "CoverageBucket" - }, - "ExternalId": { - "id": "ExternalId", - "type": "object", - "properties": { - "id": { - "description": "The id used by the source of this data.", - "type": "string" - }, - "sourceName": { - "description": "The name of the source of this data.", - "type": "string" - } - } - }, - "SearchVariantSetsRequest": { - "type": "object", - "properties": { - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024.", - "type": "integer" - }, - "datasetIds": { - "description": "Exactly one dataset ID must be provided here. Only variant sets which\nbelong to this dataset will be returned.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "SearchVariantSetsRequest", - "description": "The search variant sets request." - }, - "VariantSetMetadata": { - "properties": { - "key": { - "description": "The top-level key.", - "type": "string" - }, - "description": { - "type": "string", - "description": "A textual description of this metadata." - }, - "info": { - "additionalProperties": { - "items": { - "type": "any" - }, - "type": "array" - }, - "description": "Remaining structured metadata key-value pairs. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object" - }, - "type": { - "enum": [ - "TYPE_UNSPECIFIED", - "INTEGER", - "FLOAT", - "FLAG", - "CHARACTER", - "STRING" - ], - "description": "The type of data. Possible types include: Integer, Float,\nFlag, Character, and String.", - "type": "string", - "enumDescriptions": [ - "", - "", - "", - "", - "", - "" - ] - }, - "number": { - "description": "The number of values that can be included in a field described by this\nmetadata.", - "type": "string" - }, - "id": { - "description": "User-provided ID field, not enforced by this API.\nTwo or more pieces of structured metadata with identical\nid and key fields are considered equivalent.", - "type": "string" - }, - "value": { - "description": "The value field for simple metadata", - "type": "string" - } - }, - "id": "VariantSetMetadata", - "description": "Metadata describes a single piece of variant call metadata.\nThese data include a top level key and either a single value string (value)\nor a list of key-value pairs (info.)\nValue and info are mutually exclusive.", - "type": "object" - }, - "Reference": { - "type": "object", - "properties": { - "ncbiTaxonId": { - "format": "int32", - "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy. For example, 9606 for human.", - "type": "integer" - }, - "sourceUri": { - "description": "The URI from which the sequence was obtained. Typically specifies a FASTA\nformat file.", - "type": "string" - }, - "name": { - "description": "The name of this reference, for example `22`.", - "type": "string" - }, - "md5checksum": { - "description": "MD5 of the upper-case sequence excluding all whitespace characters (this\nis equivalent to SQ:M5 in SAM). This value is represented in lower case\nhexadecimal format.", - "type": "string" - }, - "id": { - "description": "The server-generated reference ID, unique across all references.", - "type": "string" - }, - "length": { - "format": "int64", - "description": "The length of this reference's sequence.", - "type": "string" - }, - "sourceAccessions": { - "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `GCF_000001405.26`.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "Reference", - "description": "A reference is a canonical assembled DNA sequence, intended to act as a\nreference coordinate space for other genomic annotations. A single reference\nmight represent the human chromosome 1 or mitochandrial DNA, for instance. A\nreference belongs to one or more reference sets.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" - }, - "SearchReferenceSetsRequest": { - "type": "object", - "properties": { - "md5checksums": { - "description": "If present, return reference sets for which the\nmd5checksum matches exactly.", - "items": { - "type": "string" - }, - "type": "array" - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", - "type": "string" - }, - "accessions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "If present, return reference sets for which a prefix of any of\nsourceAccessions\nmatch any of these strings. Accession numbers typically have a main number\nand a version, for example `NC_000001.11`." - }, - "pageSize": { - "format": "int32", - "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 1024. The maximum value is 4096.", - "type": "integer" - }, - "assemblyId": { - "description": "If present, return reference sets for which a substring of their\n`assemblyId` matches this string (case insensitive).", - "type": "string" - } - }, - "id": "SearchReferenceSetsRequest" - }, - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "policy": { - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", - "$ref": "Policy" - } - }, - "id": "SetIamPolicyRequest" - }, - "MergeVariantsRequest": { - "type": "object", - "properties": { - "variants": { - "description": "The variants to be merged with existing variants.", - "items": { - "$ref": "Variant" - }, - "type": "array" - }, - "infoMergeConfig": { - "additionalProperties": { - "enum": [ - "INFO_MERGE_OPERATION_UNSPECIFIED", - "IGNORE_NEW", - "MOVE_TO_CALLS" - ], - "type": "string" - }, - "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them.", - "type": "object" - }, - "variantSetId": { - "description": "The destination variant set.", - "type": "string" - } - }, - "id": "MergeVariantsRequest" - }, - "Read": { - "description": "A read alignment describes a linear alignment of a string of DNA to a\nreference sequence, in addition to metadata\nabout the fragment (the molecule of DNA sequenced) and the read (the bases\nwhich were read by the sequencer). A read is equivalent to a line in a SAM\nfile. A read belongs to exactly one read group and exactly one\nread group set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\n### Reverse-stranded reads\n\nMapped reads (reads having a non-null `alignment`) can be aligned to either\nthe forward or the reverse strand of their associated reference. Strandedness\nof a mapped read is encoded by `alignment.position.reverseStrand`.\n\nIf we consider the reference to be a forward-stranded coordinate space of\n`[0, reference.length)` with `0` as the left-most position and\n`reference.length` as the right-most position, reads are always aligned left\nto right. That is, `alignment.position.position` always refers to the\nleft-most reference coordinate and `alignment.cigar` describes the alignment\nof this read to the reference from left to right. All per-base fields such as\n`alignedSequence` and `alignedQuality` share this same left-to-right\norientation; this is true of reads which are aligned to either strand. For\nreverse-stranded reads, this means that `alignedSequence` is the reverse\ncomplement of the bases that were originally reported by the sequencing\nmachine.\n\n### Generating a reference-aligned sequence string\n\nWhen interacting with mapped reads, it's often useful to produce a string\nrepresenting the local alignment of the read to reference. The following\npseudocode demonstrates one way of doing this:\n\n out = \"\"\n offset = 0\n for c in read.alignment.cigar {\n switch c.operation {\n case \"ALIGNMENT_MATCH\", \"SEQUENCE_MATCH\", \"SEQUENCE_MISMATCH\":\n out += read.alignedSequence[offset:offset+c.operationLength]\n offset += c.operationLength\n break\n case \"CLIP_SOFT\", \"INSERT\":\n offset += c.operationLength\n break\n case \"PAD\":\n out += repeat(\"*\", c.operationLength)\n break\n case \"DELETE\":\n out += repeat(\"-\", c.operationLength)\n break\n case \"SKIP\":\n out += repeat(\" \", c.operationLength)\n break\n case \"CLIP_HARD\":\n break\n }\n }\n return out\n\n### Converting to SAM's CIGAR string\n\nThe following pseudocode generates a SAM CIGAR string from the\n`cigar` field. Note that this is a lossy conversion\n(`cigar.referenceSequence` is lost).\n\n cigarMap = {\n \"ALIGNMENT_MATCH\": \"M\",\n \"INSERT\": \"I\",\n \"DELETE\": \"D\",\n \"SKIP\": \"N\",\n \"CLIP_SOFT\": \"S\",\n \"CLIP_HARD\": \"H\",\n \"PAD\": \"P\",\n \"SEQUENCE_MATCH\": \"=\",\n \"SEQUENCE_MISMATCH\": \"X\",\n }\n cigarStr = \"\"\n for c in read.alignment.cigar {\n cigarStr += c.operationLength + cigarMap[c.operation]\n }\n return cigarStr", - "type": "object", - "properties": { - "duplicateFragment": { - "description": "The fragment is a PCR or optical duplicate (SAM flag 0x400).", - "type": "boolean" - }, - "readNumber": { - "format": "int32", - "description": "The read number in sequencing. 0-based and less than numberReads. This\nfield replaces SAM flag 0x40 and 0x80.", - "type": "integer" - }, - "alignedSequence": { - "description": "The bases of the read sequence contained in this alignment record,\n**without CIGAR operations applied** (equivalent to SEQ in SAM).\n`alignedSequence` and `alignedQuality` may be\nshorter than the full read sequence and quality. This will occur if the\nalignment is part of a chimeric alignment, or if the read was trimmed. When\nthis occurs, the CIGAR for this read will begin/end with a hard clip\noperator that will indicate the length of the excised sequence.", - "type": "string" - }, - "readGroupId": { - "description": "The ID of the read group this read belongs to. A read belongs to exactly\none read group. This is a server-generated ID which is distinct from SAM's\nRG tag (for that value, see\nReadGroup.name).", - "type": "string" - }, - "info": { - "additionalProperties": { - "items": { - "type": "any" - }, - "type": "array" - }, - "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object" - }, - "nextMatePosition": { - "$ref": "Position", - "description": "The mapping of the primary alignment of the\n`(readNumber+1)%numberReads` read in the fragment. It replaces\nmate position and mate strand in SAM." - }, - "supplementaryAlignment": { - "description": "Whether this alignment is supplementary. Equivalent to SAM flag 0x800.\nSupplementary alignments are used in the representation of a chimeric\nalignment. In a chimeric alignment, a read is split into multiple\nlinear alignments that map to different reference contigs. The first\nlinear alignment in the read will be designated as the representative\nalignment; the remaining linear alignments will be designated as\nsupplementary alignments. These alignments may have different mapping\nquality scores. In each linear alignment in a chimeric alignment, the read\nwill be hard clipped. The `alignedSequence` and\n`alignedQuality` fields in the alignment record will only\nrepresent the bases for its respective linear alignment.", - "type": "boolean" - }, - "properPlacement": { - "description": "The orientation and the distance between reads from the fragment are\nconsistent with the sequencing protocol (SAM flag 0x2).", - "type": "boolean" - }, - "fragmentLength": { - "format": "int32", - "description": "The observed length of the fragment, equivalent to TLEN in SAM.", - "type": "integer" - }, - "failedVendorQualityChecks": { - "description": "Whether this read did not pass filters, such as platform or vendor quality\ncontrols (SAM flag 0x200).", - "type": "boolean" - }, - "alignedQuality": { - "description": "The quality of the read sequence contained in this alignment record\n(equivalent to QUAL in SAM).\n`alignedSequence` and `alignedQuality` may be shorter than the full read\nsequence and quality. This will occur if the alignment is part of a\nchimeric alignment, or if the read was trimmed. When this occurs, the CIGAR\nfor this read will begin/end with a hard clip operator that will indicate\nthe length of the excised sequence.", - "items": { - "format": "int32", - "type": "integer" - }, - "type": "array" - }, - "alignment": { - "$ref": "LinearAlignment", - "description": "The linear alignment for this alignment record. This field is null for\nunmapped reads." - }, - "id": { - "description": "The server-generated read ID, unique across all reads. This is different\nfrom the `fragmentName`.", - "type": "string" - }, - "numberReads": { - "format": "int32", - "description": "The number of reads in the fragment (extension to SAM flag 0x1).", - "type": "integer" - }, - "secondaryAlignment": { - "description": "Whether this alignment is secondary. Equivalent to SAM flag 0x100.\nA secondary alignment represents an alternative to the primary alignment\nfor this read. Aligners may return secondary alignments if a read can map\nambiguously to multiple coordinates in the genome. By convention, each read\nhas one and only one alignment where both `secondaryAlignment`\nand `supplementaryAlignment` are false.", - "type": "boolean" - }, - "fragmentName": { - "description": "The fragment name. Equivalent to QNAME (query template name) in SAM.", - "type": "string" - }, - "readGroupSetId": { - "description": "The ID of the read group set this read belongs to. A read belongs to\nexactly one read group set.", - "type": "string" - } - }, - "id": "Read" - }, - "BatchCreateAnnotationsRequest": { - "type": "object", - "properties": { - "annotations": { - "description": "The annotations to be created. At most 4096 can be specified in a single\nrequest.", - "items": { - "$ref": "Annotation" - }, - "type": "array" - }, - "requestId": { - "description": "A unique request ID which enables the server to detect duplicated requests.\nIf provided, duplicated requests will result in the same response; if not\nprovided, duplicated requests may result in duplicated data. For a given\nannotation set, callers should not reuse `request_id`s when writing\ndifferent batches of annotations - behavior in this case is undefined.\nA common approach is to use a UUID. For batch jobs where worker crashes are\na possibility, consider using some unique variant of a worker or run ID.", - "type": "string" - } - }, - "id": "BatchCreateAnnotationsRequest" - }, - "CigarUnit": { - "description": "A single CIGAR operation.", - "type": "object", - "properties": { - "operation": { - "type": "string", - "enumDescriptions": [ - "", - "An alignment match indicates that a sequence can be aligned to the\nreference without evidence of an INDEL. Unlike the\n`SEQUENCE_MATCH` and `SEQUENCE_MISMATCH` operators,\nthe `ALIGNMENT_MATCH` operator does not indicate whether the\nreference and read sequences are an exact match. This operator is\nequivalent to SAM's `M`.", - "The insert operator indicates that the read contains evidence of bases\nbeing inserted into the reference. This operator is equivalent to SAM's\n`I`.", - "The delete operator indicates that the read contains evidence of bases\nbeing deleted from the reference. This operator is equivalent to SAM's\n`D`.", - "The skip operator indicates that this read skips a long segment of the\nreference, but the bases have not been deleted. This operator is commonly\nused when working with RNA-seq data, where reads may skip long segments\nof the reference between exons. This operator is equivalent to SAM's\n`N`.", - "The soft clip operator indicates that bases at the start/end of a read\nhave not been considered during alignment. This may occur if the majority\nof a read maps, except for low quality bases at the start/end of a read.\nThis operator is equivalent to SAM's `S`. Bases that are soft\nclipped will still be stored in the read.", - "The hard clip operator indicates that bases at the start/end of a read\nhave been omitted from this alignment. This may occur if this linear\nalignment is part of a chimeric alignment, or if the read has been\ntrimmed (for example, during error correction or to trim poly-A tails for\nRNA-seq). This operator is equivalent to SAM's `H`.", - "The pad operator indicates that there is padding in an alignment. This\noperator is equivalent to SAM's `P`.", - "This operator indicates that this portion of the aligned sequence exactly\nmatches the reference. This operator is equivalent to SAM's `=`.", - "This operator indicates that this portion of the aligned sequence is an\nalignment match to the reference, but a sequence mismatch. This can\nindicate a SNP or a read error. This operator is equivalent to SAM's\n`X`." - ], - "enum": [ - "OPERATION_UNSPECIFIED", - "ALIGNMENT_MATCH", - "INSERT", - "DELETE", - "SKIP", - "CLIP_SOFT", - "CLIP_HARD", - "PAD", - "SEQUENCE_MATCH", - "SEQUENCE_MISMATCH" - ] - }, - "referenceSequence": { - "description": "`referenceSequence` is only used at mismatches\n(`SEQUENCE_MISMATCH`) and deletions (`DELETE`).\nFilling this field replaces SAM's MD tag. If the relevant information is\nnot available, this field is unset.", - "type": "string" - }, - "operationLength": { - "format": "int64", - "description": "The number of genomic bases that the operation runs for. Required.", - "type": "string" - } - }, - "id": "CigarUnit" - }, - "ReferenceSet": { - "type": "object", - "properties": { - "referenceIds": { - "description": "The IDs of the reference objects that are part of this set.\n`Reference.md5checksum` must be unique within this set.", - "items": { - "type": "string" - }, - "type": "array" - }, - "assemblyId": { - "description": "Public id of this reference set, such as `GRCh37`.", - "type": "string" - }, - "md5checksum": { - "type": "string", - "description": "Order-independent MD5 checksum which identifies this reference set. The\nchecksum is computed by sorting all lower case hexidecimal string\n`reference.md5checksum` (for all reference in this set) in\nascending lexicographic order, concatenating, and taking the MD5 of that\nvalue. The resulting value is represented in lower case hexadecimal format." - }, - "id": { - "description": "The server-generated reference set ID, unique across all reference sets.", - "type": "string" - }, - "sourceAccessions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "All known corresponding accession IDs in INSDC (GenBank/ENA/DDBJ) ideally\nwith a version number, for example `NC_000001.11`." - }, - "description": { - "description": "Free text description of this reference set.", - "type": "string" - }, - "ncbiTaxonId": { - "format": "int32", - "description": "ID from http://www.ncbi.nlm.nih.gov/taxonomy (for example, 9606 for human)\nindicating the species which this reference set is intended to model. Note\nthat contained references may specify a different `ncbiTaxonId`, as\nassemblies may contain reference sequences which do not belong to the\nmodeled species, for example EBV in a human reference genome.", - "type": "integer" - }, - "sourceUri": { - "description": "The URI from which the references were obtained.", - "type": "string" - } - }, - "id": "ReferenceSet", - "description": "A reference set is a set of references which typically comprise a reference\nassembly for a species, such as `GRCh38` which is representative\nof the human genome. A reference set defines a common coordinate space for\ncomparing reference-aligned experimental data. A reference set contains 1 or\nmore references.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" - }, - "Transcript": { - "description": "A transcript represents the assertion that a particular region of the\nreference genome may be transcribed as RNA.", - "type": "object", - "properties": { - "exons": { - "description": "The \u003ca href=\"http://en.wikipedia.org/wiki/Exon\"\u003eexons\u003c/a\u003e that compose\nthis transcript. This field should be unset for genomes where transcript\nsplicing does not occur, for example prokaryotes.\n\nIntrons are regions of the transcript that are not included in the\nspliced RNA product. Though not explicitly modeled here, intron ranges can\nbe deduced; all regions of this transcript that are not exons are introns.\n\nExonic sequences do not necessarily code for a translational product\n(amino acids). Only the regions of exons bounded by the\ncodingSequence correspond\nto coding DNA sequence.\n\nExons are ordered by start position and may not overlap.", - "items": { - "$ref": "Exon" - }, - "type": "array" - }, - "codingSequence": { - "$ref": "CodingSequence", - "description": "The range of the coding sequence for this transcript, if any. To determine\nthe exact ranges of coding sequence, intersect this range with those of the\nexons, if any. If there are any\nexons, the\ncodingSequence must start\nand end within them.\n\nNote that in some cases, the reference genome will not exactly match the\nobserved mRNA transcript e.g. due to variance in the source genome from\nreference. In these cases,\nexon.frame will not necessarily\nmatch the expected reference reading frame and coding exon reference bases\ncannot necessarily be concatenated to produce the original transcript mRNA." - }, - "geneId": { - "description": "The annotation ID of the gene from which this transcript is transcribed.", - "type": "string" - } - }, - "id": "Transcript" - }, - "AnnotationSet": { - "description": "An annotation set is a logical grouping of annotations that share consistent\ntype information and provenance. Examples of annotation sets include 'all\ngenes from refseq', and 'all variant annotations from ClinVar'.", - "type": "object", - "properties": { - "name": { - "description": "The display name for this annotation set.", - "type": "string" - }, - "referenceSetId": { - "description": "The ID of the reference set that defines the coordinate space for this\nset's annotations.", - "type": "string" - }, - "type": { - "description": "The type of annotations contained within this set.", - "type": "string", - "enumDescriptions": [ - "", - "A `GENERIC` annotation type should be used when no other annotation\ntype will suffice. This represents an untyped annotation of the reference\ngenome.", - "A `VARIANT` annotation type.", - "A `GENE` annotation type represents the existence of a gene at the\nassociated reference coordinates. The start coordinate is typically the\ngene's transcription start site and the end is typically the end of the\ngene's last exon.", - "A `TRANSCRIPT` annotation type represents the assertion that a\nparticular region of the reference genome may be transcribed as RNA." - ], - "enum": [ - "ANNOTATION_TYPE_UNSPECIFIED", - "GENERIC", - "VARIANT", - "GENE", - "TRANSCRIPT" - ] - }, - "info": { - "description": "A map of additional read alignment information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object", - "additionalProperties": { - "items": { - "type": "any" - }, - "type": "array" - } - }, - "id": { - "description": "The server-generated annotation set ID, unique across all annotation sets.", - "type": "string" - }, - "datasetId": { - "description": "The dataset to which this annotation set belongs.", - "type": "string" - }, - "sourceUri": { - "description": "The source URI describing the file from which this annotation set was\ngenerated, if any.", - "type": "string" - } - }, - "id": "AnnotationSet" - }, - "Experiment": { - "type": "object", - "properties": { - "sequencingCenter": { - "type": "string", - "description": "The sequencing center used as part of this experiment." - }, - "platformUnit": { - "description": "The platform unit used as part of this experiment, for example\nflowcell-barcode.lane for Illumina or slide for SOLiD. Corresponds to the\n@RG PU field in the SAM spec.", - "type": "string" - }, - "instrumentModel": { - "description": "The instrument model used as part of this experiment. This maps to\nsequencing technology in the SAM spec.", - "type": "string" - }, - "libraryId": { - "description": "A client-supplied library identifier; a library is a collection of DNA\nfragments which have been prepared for sequencing from a sample. This\nfield is important for quality control as error or bias can be introduced\nduring sample preparation.", - "type": "string" - } - }, - "id": "Experiment" - }, - "ListDatasetsResponse": { - "description": "The dataset list response.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, - "datasets": { - "description": "The list of matching Datasets.", - "items": { - "$ref": "Dataset" - }, - "type": "array" - } - }, - "id": "ListDatasetsResponse" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "REQUIRED: The set of permissions to check for the 'resource'.\nPermissions with wildcards (such as '*' or 'storage.*') are not allowed.\nAllowed permissions are:\n\n* `genomics.datasets.create`\n* `genomics.datasets.delete`\n* `genomics.datasets.get`\n* `genomics.datasets.list`\n* `genomics.datasets.update`\n* `genomics.datasets.getIamPolicy`\n* `genomics.datasets.setIamPolicy`" - } - }, - "id": "TestIamPermissionsRequest" - }, - "ExportReadGroupSetRequest": { - "description": "The read group set export request.", - "type": "object", - "properties": { - "projectId": { - "description": "Required. The Google Cloud project ID that owns this\nexport. The caller must have WRITE access to this project.", - "type": "string" - }, - "referenceNames": { - "description": "The reference names to export. If this is not specified, all reference\nsequences, including unmapped reads, are exported.\nUse `*` to export only unmapped reads.", - "items": { - "type": "string" - }, - "type": "array" - }, - "exportUri": { - "type": "string", - "description": "Required. A Google Cloud Storage URI for the exported BAM file.\nThe currently authenticated user must have write access to the new file.\nAn error will be returned if the URI already contains data." - } - }, - "id": "ExportReadGroupSetRequest" - }, - "Exon": { - "type": "object", - "properties": { - "start": { - "format": "int64", - "description": "The start position of the exon on this annotation's reference sequence,\n0-based inclusive. Note that this is relative to the reference start, and\n**not** the containing annotation start.", - "type": "string" - }, - "frame": { - "format": "int32", - "description": "The frame of this exon. Contains a value of 0, 1, or 2, which indicates\nthe offset of the first coding base of the exon within the reading frame\nof the coding DNA sequence, if any. This field is dependent on the\nstrandedness of this annotation (see\nAnnotation.reverse_strand).\nFor forward stranded annotations, this offset is relative to the\nexon.start. For reverse\nstrand annotations, this offset is relative to the\nexon.end `- 1`.\n\nUnset if this exon does not intersect the coding sequence. Upon creation\nof a transcript, the frame must be populated for all or none of the\ncoding exons.", - "type": "integer" - }, - "end": { - "format": "int64", - "description": "The end position of the exon on this annotation's reference sequence,\n0-based exclusive. Note that this is relative to the reference start, and\n*not* the containing annotation start.", - "type": "string" - } - }, - "id": "Exon" - }, - "CallSet": { - "id": "CallSet", - "description": "A call set is a collection of variant calls, typically for one sample. It\nbelongs to a variant set.\n\nFor more genomics resource definitions, see [Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The call set name." - }, - "info": { - "additionalProperties": { - "items": { - "type": "any" - }, - "type": "array" - }, - "description": "A map of additional call set information. This must be of the form\nmap\u003cstring, string[]\u003e (string key mapping to a list of string values).", - "type": "object" - }, - "variantSetIds": { - "description": "The IDs of the variant sets this call set belongs to. This field must\nhave exactly length one, as a call set belongs to a single variant set.\nThis field is repeated for compatibility with the\n[GA4GH 0.5.1\nAPI](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variants.avdl#L76).", - "items": { - "type": "string" - }, - "type": "array" - }, - "id": { - "description": "The server-generated call set ID, unique across all call sets.", - "type": "string" - }, - "created": { - "type": "string", - "format": "int64", - "description": "The date this call set was created in milliseconds from the epoch." - }, - "sampleId": { - "description": "The sample ID this call set corresponds to.", - "type": "string" - } - } - }, - "SearchAnnotationSetsResponse": { - "type": "object", - "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, - "annotationSets": { - "description": "The matching annotation sets.", - "items": { - "$ref": "AnnotationSet" - }, - "type": "array" - } - }, - "id": "SearchAnnotationSetsResponse" - }, - "ImportVariantsRequest": { - "description": "The variant data import request.", - "type": "object", - "properties": { - "infoMergeConfig": { - "description": "A mapping between info field keys and the InfoMergeOperations to\nbe performed on them. This is plumbed down to the MergeVariantRequests\ngenerated by the resulting import job.", - "type": "object", - "additionalProperties": { - "enum": [ - "INFO_MERGE_OPERATION_UNSPECIFIED", - "IGNORE_NEW", - "MOVE_TO_CALLS" - ], - "type": "string" - } - }, - "sourceUris": { - "description": "A list of URIs referencing variant files in Google Cloud Storage. URIs can\ninclude wildcards [as described\nhere](https://cloud.google.com/storage/docs/gsutil/addlhelp/WildcardNames).\nNote that recursive wildcards ('**') are not supported.", - "items": { - "type": "string" - }, - "type": "array" - }, - "variantSetId": { - "description": "Required. The variant set to which variant data should be imported.", - "type": "string" - }, - "normalizeReferenceNames": { - "description": "Convert reference names to the canonical representation.\nhg19 haploytypes (those reference names containing \"_hap\")\nare not modified in any way.\nAll other reference names are modified according to the following rules:\nThe reference name is capitalized.\nThe \"chr\" prefix is dropped for all autosomes and sex chromsomes.\nFor example \"chr17\" becomes \"17\" and \"chrX\" becomes \"X\".\nAll mitochondrial chromosomes (\"chrM\", \"chrMT\", etc) become \"MT\".", - "type": "boolean" - }, - "format": { - "enumDescriptions": [ - "", - "VCF (Variant Call Format). The VCF files may be gzip compressed. gVCF is\nalso supported. Disclaimer: gzip VCF imports are currently much slower\nthan equivalent uncompressed VCF imports. For this reason, uncompressed\nVCF is currently recommended for imports with more than 1GB combined\nuncompressed size, or for time sensitive imports.", - "Complete Genomics masterVarBeta format. The masterVarBeta files may\nbe bzip2 compressed." - ], - "enum": [ - "FORMAT_UNSPECIFIED", - "FORMAT_VCF", - "FORMAT_COMPLETE_GENOMICS" - ], - "description": "The format of the variant data being imported. If unspecified, defaults to\nto `VCF`.", - "type": "string" - } - }, - "id": "ImportVariantsRequest" - }, - "ListCoverageBucketsResponse": { - "type": "object", - "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, - "bucketWidth": { - "format": "int64", - "description": "The length of each coverage bucket in base pairs. Note that buckets at the\nend of a reference sequence may be shorter. This value is omitted if the\nbucket width is infinity (the default behaviour, with no range or\n`targetBucketWidth`).", - "type": "string" - }, - "coverageBuckets": { - "description": "The coverage buckets. The list of buckets is sparse; a bucket with 0\noverlapping reads is not returned. A bucket never crosses more than one\nreference sequence. Each bucket has width `bucketWidth`, unless\nits end is the end of the reference sequence.", - "items": { - "$ref": "CoverageBucket" - }, - "type": "array" - } - }, - "id": "ListCoverageBucketsResponse" - }, - "VariantAnnotation": { - "type": "object", - "properties": { - "type": { - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_OTHER", - "INSERTION", - "DELETION", - "SUBSTITUTION", - "SNP", - "STRUCTURAL", - "CNV" - ], - "description": "Type has been adapted from ClinVar's list of variant types.", - "type": "string", - "enumDescriptions": [ - "", - "`TYPE_OTHER` should be used when no other Type will suffice.\nFurther explanation of the variant type may be included in the\ninfo field.", - "`INSERTION` indicates an insertion.", - "`DELETION` indicates a deletion.", - "`SUBSTITUTION` indicates a block substitution of\ntwo or more nucleotides.", - "`SNP` indicates a single nucleotide polymorphism.", - "`STRUCTURAL` indicates a large structural variant,\nincluding chromosomal fusions, inversions, etc.", - "`CNV` indicates a variation in copy number." - ] - }, - "alternateBases": { - "description": "The alternate allele for this variant. If multiple alternate alleles\nexist at this location, create a separate variant for each one, as they\nmay represent distinct conditions.", - "type": "string" - }, - "geneId": { - "description": "Google annotation ID of the gene affected by this variant. This should\nbe provided when the variant is created.", - "type": "string" - }, - "clinicalSignificance": { - "type": "string", - "enumDescriptions": [ - "", - "`OTHER` should be used when no other clinical significance\nvalue will suffice.", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "", - "`MULTIPLE_REPORTED` should be used when multiple clinical\nsignficances are reported for a variant. The original clinical\nsignificance values may be provided in the `info` field." - ], - "enum": [ - "CLINICAL_SIGNIFICANCE_UNSPECIFIED", - "CLINICAL_SIGNIFICANCE_OTHER", - "UNCERTAIN", - "BENIGN", - "LIKELY_BENIGN", - "LIKELY_PATHOGENIC", - "PATHOGENIC", - "DRUG_RESPONSE", - "HISTOCOMPATIBILITY", - "CONFERS_SENSITIVITY", - "RISK_FACTOR", - "ASSOCIATION", - "PROTECTIVE", - "MULTIPLE_REPORTED" - ], - "description": "Describes the clinical significance of a variant.\nIt is adapted from the ClinVar controlled vocabulary for clinical\nsignificance described at:\nhttp://www.ncbi.nlm.nih.gov/clinvar/docs/clinsig/" - }, - "conditions": { - "items": { - "$ref": "ClinicalCondition" - }, - "type": "array", - "description": "The set of conditions associated with this variant.\nA condition describes the way a variant influences human health." - }, - "effect": { - "type": "string", - "enumDescriptions": [ - "", - "`EFFECT_OTHER` should be used when no other Effect\nwill suffice.", - "`FRAMESHIFT` indicates a mutation in which the insertion or\ndeletion of nucleotides resulted in a frameshift change.", - "`FRAME_PRESERVING_INDEL` indicates a mutation in which a\nmultiple of three nucleotides has been inserted or deleted, resulting\nin no change to the reading frame of the coding sequence.", - "`SYNONYMOUS_SNP` indicates a single nucleotide polymorphism\nmutation that results in no amino acid change.", - "`NONSYNONYMOUS_SNP` indicates a single nucleotide\npolymorphism mutation that results in an amino acid change.", - "`STOP_GAIN` indicates a mutation that leads to the creation\nof a stop codon at the variant site. Frameshift mutations creating\ndownstream stop codons do not count as `STOP_GAIN`.", - "`STOP_LOSS` indicates a mutation that eliminates a\nstop codon at the variant site.", - "`SPLICE_SITE_DISRUPTION` indicates that this variant is\nfound in a splice site for the associated transcript, and alters the\nnormal splicing pattern." - ], - "enum": [ - "EFFECT_UNSPECIFIED", - "EFFECT_OTHER", - "FRAMESHIFT", - "FRAME_PRESERVING_INDEL", - "SYNONYMOUS_SNP", - "NONSYNONYMOUS_SNP", - "STOP_GAIN", - "STOP_LOSS", - "SPLICE_SITE_DISRUPTION" - ], - "description": "Effect of the variant on the coding sequence." - }, - "transcriptIds": { - "description": "Google annotation IDs of the transcripts affected by this variant. These\nshould be provided when the variant is created.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "VariantAnnotation" - }, - "ExportVariantSetRequest": { - "type": "object", - "properties": { - "bigqueryTable": { - "description": "Required. The BigQuery table to export data to.\nIf the table doesn't exist, it will be created. If it already exists, it\nwill be overwritten.", - "type": "string" - }, - "bigqueryDataset": { - "description": "Required. The BigQuery dataset to export data to. This dataset must already\nexist. Note that this is distinct from the Genomics concept of \"dataset\".", - "type": "string" - }, - "format": { - "description": "The format for the exported data.", - "type": "string", - "enumDescriptions": [ - "", - "Export the data to Google BigQuery." - ], - "enum": [ - "FORMAT_UNSPECIFIED", - "FORMAT_BIGQUERY" - ] - }, - "projectId": { - "description": "Required. The Google Cloud project ID that owns the destination\nBigQuery dataset. The caller must have WRITE access to this project. This\nproject will also own the resulting export job.", - "type": "string" - }, - "callSetIds": { - "description": "If provided, only variant call information from the specified call sets\nwill be exported. By default all variant calls are exported.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ExportVariantSetRequest", - "description": "The variant data export request." - }, - "SearchAnnotationsRequest": { - "type": "object", - "properties": { - "start": { - "format": "int64", - "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified,\nreferenceId or\nreferenceName\nmust be specified. Defaults to 0.", - "type": "string" - }, - "annotationSetIds": { - "description": "Required. The annotation sets to search within. The caller must have\n`READ` access to these annotation sets.\nAll queried annotation sets must have the same type.", - "items": { - "type": "string" - }, - "type": "array" - }, - "referenceName": { - "description": "The name of the reference to query, within the reference set associated\nwith this query.", - "type": "string" - }, - "referenceId": { - "type": "string", - "description": "The ID of the reference to query." - }, - "end": { - "format": "int64", - "description": "The end position of the range on the reference, 0-based exclusive. If\nreferenceId or\nreferenceName\nmust be specified, Defaults to the length of the reference.", - "type": "string" - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", - "type": "string" - }, - "pageSize": { - "type": "integer", - "format": "int32", - "description": "The maximum number of results to return in a single page. If unspecified,\ndefaults to 256. The maximum value is 2048." - } - }, - "id": "SearchAnnotationsRequest" - }, - "OperationEvent": { - "description": "An event that occurred during an Operation.", - "type": "object", - "properties": { - "endTime": { - "format": "google-datetime", - "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Optional time of when event started.", - "type": "string" - }, - "description": { - "description": "Required description of event.", - "type": "string" - } - }, - "id": "OperationEvent" - }, - "CodingSequence": { - "type": "object", - "properties": { - "start": { - "format": "int64", - "description": "The start of the coding sequence on this annotation's reference sequence,\n0-based inclusive. Note that this position is relative to the reference\nstart, and *not* the containing annotation start.", - "type": "string" - }, - "end": { - "format": "int64", - "description": "The end of the coding sequence on this annotation's reference sequence,\n0-based exclusive. Note that this position is relative to the reference\nstart, and *not* the containing annotation start.", - "type": "string" - } - }, - "id": "CodingSequence" - }, - "TestIamPermissionsResponse": { - "id": "TestIamPermissionsResponse", - "description": "Response message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed." - } - } - }, - "SearchReferencesResponse": { - "type": "object", - "properties": { - "nextPageToken": { - "description": "The continuation token, which is used to page through large result sets.\nProvide this value in a subsequent request to return the next page of\nresults. This field will be empty if there aren't any additional results.", - "type": "string" - }, - "references": { - "description": "The matching references.", - "items": { - "$ref": "Reference" - }, - "type": "array" - } - }, - "id": "SearchReferencesResponse" - }, - "GetIamPolicyRequest": { - "description": "Request message for `GetIamPolicy` method.", - "type": "object", - "properties": {}, - "id": "GetIamPolicyRequest" + "id": "SearchAnnotationsResponse" } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "version": "v1", @@ -2204,6 +2204,9 @@ "auth": { "oauth2": { "scopes": { + "https://www.googleapis.com/auth/genomics": { + "description": "View and manage Genomics data" + }, "https://www.googleapis.com/auth/devstorage.read_write": { "description": "Manage your data in Google Cloud Storage" }, @@ -2215,16 +2218,13 @@ }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/genomics": { - "description": "View and manage Genomics data" } } } }, - "kind": "discovery#restDescription", - "description": "Upload, process, query, and search Genomics data in the cloud.", "servicePath": "", + "description": "Upload, process, query, and search Genomics data in the cloud.", + "kind": "discovery#restDescription", "rootUrl": "https://genomics.googleapis.com/", "basePath": "", "ownerDomain": "google.com", @@ -2234,14 +2234,18 @@ "documentationLink": "https://cloud.google.com/genomics", "revision": "20170824", "title": "Genomics API", - "ownerName": "Google", "discoveryVersion": "v1", + "ownerName": "Google", "resources": { - "variantsets": { + "annotations": { "methods": { "search": { + "request": { + "$ref": "SearchAnnotationsRequest" + }, + "description": "Searches for annotations that match the given criteria. Results are\nordered by genomic coordinate (by reference sequence, then position).\nAnnotations with equivalent genomic coordinates are returned in an\nunspecified order. This order is consistent, such that two queries for the\nsame content (regardless of page size) yield annotations in the same order\nacross their respective streams of paginated responses. Caller must have\nREAD permission for the queried annotation sets.", "response": { - "$ref": "SearchVariantSetsResponse" + "$ref": "SearchAnnotationsResponse" }, "parameterOrder": [], "httpMethod": "POST", @@ -2251,38 +2255,58 @@ "https://www.googleapis.com/auth/genomics.readonly" ], "parameters": {}, - "flatPath": "v1/variantsets/search", - "id": "genomics.variantsets.search", - "path": "v1/variantsets/search", - "request": { - "$ref": "SearchVariantSetsRequest" - }, - "description": "Returns a list of all variant sets matching search criteria.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49)." + "flatPath": "v1/annotations/search", + "id": "genomics.annotations.search", + "path": "v1/annotations/search" }, - "patch": { - "id": "genomics.variantsets.patch", - "path": "v1/variantsets/{variantSetId}", - "description": "Updates a variant set using patch semantics.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "request": { - "$ref": "VariantSet" - }, - "response": { - "$ref": "VariantSet" - }, + "get": { + "flatPath": "v1/annotations/{annotationId}", + "id": "genomics.annotations.get", + "path": "v1/annotations/{annotationId}", + "description": "Gets an annotation. Caller must have READ permission\nfor the associated annotation set.", "parameterOrder": [ - "variantSetId" + "annotationId" ], - "httpMethod": "PATCH", + "response": { + "$ref": "Annotation" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "parameters": { + "annotationId": { + "description": "The ID of the annotation to be retrieved.", + "type": "string", + "required": true, + "location": "path" + } + } + }, + "update": { + "description": "Updates an annotation. Caller must have\nWRITE permission for the associated dataset.", + "request": { + "$ref": "Annotation" + }, + "httpMethod": "PUT", + "parameterOrder": [ + "annotationId" + ], + "response": { + "$ref": "Annotation" + }, "parameters": { "updateMask": { "location": "query", "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. Supported fields:\n\n* metadata.\n* name.\n* description.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.", + "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nvariant,\ntranscript, and\ninfo. If unspecified, all mutable\nfields will be updated.", "type": "string" }, - "variantSetId": { + "annotationId": { "location": "path", - "description": "The ID of the variant to be updated (must already exist).", + "description": "The ID of the annotation to be updated.", "type": "string", "required": true } @@ -2291,111 +2315,35 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "flatPath": "v1/variantsets/{variantSetId}" + "flatPath": "v1/annotations/{annotationId}", + "path": "v1/annotations/{annotationId}", + "id": "genomics.annotations.update" }, - "get": { - "httpMethod": "GET", + "delete": { + "description": "Deletes an annotation. Caller must have WRITE permission for\nthe associated annotation set.", "response": { - "$ref": "VariantSet" + "$ref": "Empty" }, "parameterOrder": [ - "variantSetId" + "annotationId" ], + "httpMethod": "DELETE", "parameters": { - "variantSetId": { - "description": "Required. The ID of the variant set.", + "annotationId": { + "description": "The ID of the annotation to be deleted.", "type": "string", "required": true, "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/variantsets/{variantSetId}", - "path": "v1/variantsets/{variantSetId}", - "id": "genomics.variantsets.get", - "description": "Gets a variant set by ID.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "variantSetId" - ], - "httpMethod": "DELETE", - "parameters": { - "variantSetId": { - "location": "path", - "description": "The ID of the variant set to be deleted.", - "type": "string", - "required": true - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "flatPath": "v1/variantsets/{variantSetId}", - "id": "genomics.variantsets.delete", - "path": "v1/variantsets/{variantSetId}", - "description": "Deletes a variant set including all variants, call sets, and calls within.\nThis is not reversible.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" + "flatPath": "v1/annotations/{annotationId}", + "id": "genomics.annotations.delete", + "path": "v1/annotations/{annotationId}" }, - "create": { - "flatPath": "v1/variantsets", - "path": "v1/variantsets", - "id": "genomics.variantsets.create", - "description": "Creates a new variant set.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe provided variant set must have a valid `datasetId` set - all other\nfields are optional. Note that the `id` field will be ignored, as this is\nassigned by the server.", - "request": { - "$ref": "VariantSet" - }, - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "VariantSet" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ] - }, - "export": { - "request": { - "$ref": "ExportVariantSetRequest" - }, - "description": "Exports variant set data to an external destination.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "httpMethod": "POST", - "parameterOrder": [ - "variantSetId" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/bigquery", - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "variantSetId": { - "location": "path", - "description": "Required. The ID of the variant set that contains variant data which\nshould be exported. The caller must have READ access to this variant set.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/variantsets/{variantSetId}:export", - "path": "v1/variantsets/{variantSetId}:export", - "id": "genomics.variantsets.export" - } - } - }, - "annotations": { - "methods": { "create": { "httpMethod": "POST", "parameterOrder": [], @@ -2416,6 +2364,10 @@ "description": "Creates a new annotation. Caller must have WRITE permission\nfor the associated annotation set.\n\nThe following fields are required:\n\n* annotationSetId\n* referenceName or\n referenceId\n\n### Transcripts\n\nFor annotations of type TRANSCRIPT, the following fields of\ntranscript must be provided:\n\n* exons.start\n* exons.end\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field). The annotated\nrange must be no longer than 100Mbp (mega base pairs). See the\nAnnotation resource\nfor additional restrictions on each field." }, "batchCreate": { + "description": "Creates one or more new annotations atomically. All annotations must\nbelong to the same annotation set. Caller must have WRITE\npermission for this annotation set. For optimal performance, batch\npositionally adjacent annotations together.\n\nIf the request has a systemic issue, such as an attempt to write to\nan inaccessible annotation set, the entire RPC will fail accordingly. For\nlesser data issues, when possible an error will be isolated to the\ncorresponding batch entry in the response; the remaining well formed\nannotations will be created normally.\n\nFor details on the requirements for each individual annotation resource,\nsee\nCreateAnnotation.", + "request": { + "$ref": "BatchCreateAnnotationsRequest" + }, "response": { "$ref": "BatchCreateAnnotationsResponse" }, @@ -2428,208 +2380,181 @@ ], "flatPath": "v1/annotations:batchCreate", "id": "genomics.annotations.batchCreate", - "path": "v1/annotations:batchCreate", - "description": "Creates one or more new annotations atomically. All annotations must\nbelong to the same annotation set. Caller must have WRITE\npermission for this annotation set. For optimal performance, batch\npositionally adjacent annotations together.\n\nIf the request has a systemic issue, such as an attempt to write to\nan inaccessible annotation set, the entire RPC will fail accordingly. For\nlesser data issues, when possible an error will be isolated to the\ncorresponding batch entry in the response; the remaining well formed\nannotations will be created normally.\n\nFor details on the requirements for each individual annotation resource,\nsee\nCreateAnnotation.", + "path": "v1/annotations:batchCreate" + } + } + }, + "variantsets": { + "methods": { + "export": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "variantSetId" + ], + "httpMethod": "POST", + "parameters": { + "variantSetId": { + "location": "path", + "description": "Required. The ID of the variant set that contains variant data which\nshould be exported. The caller must have READ access to this variant set.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/bigquery", + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/variantsets/{variantSetId}:export", + "id": "genomics.variantsets.export", + "path": "v1/variantsets/{variantSetId}:export", + "description": "Exports variant set data to an external destination.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "request": { - "$ref": "BatchCreateAnnotationsRequest" + "$ref": "ExportVariantSetRequest" } }, "search": { + "flatPath": "v1/variantsets/search", + "path": "v1/variantsets/search", + "id": "genomics.variantsets.search", + "description": "Returns a list of all variant sets matching search criteria.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariantSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L49).", + "request": { + "$ref": "SearchVariantSetsRequest" + }, "httpMethod": "POST", "parameterOrder": [], "response": { - "$ref": "SearchAnnotationsResponse" + "$ref": "SearchVariantSetsResponse" }, "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/annotations/search", - "path": "v1/annotations/search", - "id": "genomics.annotations.search", - "description": "Searches for annotations that match the given criteria. Results are\nordered by genomic coordinate (by reference sequence, then position).\nAnnotations with equivalent genomic coordinates are returned in an\nunspecified order. This order is consistent, such that two queries for the\nsame content (regardless of page size) yield annotations in the same order\nacross their respective streams of paginated responses. Caller must have\nREAD permission for the queried annotation sets.", - "request": { - "$ref": "SearchAnnotationsRequest" - } + ] }, "get": { - "description": "Gets an annotation. Caller must have READ permission\nfor the associated annotation set.", + "flatPath": "v1/variantsets/{variantSetId}", + "path": "v1/variantsets/{variantSetId}", + "id": "genomics.variantsets.get", + "description": "Gets a variant set by ID.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "httpMethod": "GET", "parameterOrder": [ - "annotationId" + "variantSetId" ], "response": { - "$ref": "Annotation" + "$ref": "VariantSet" }, "parameters": { - "annotationId": { - "description": "The ID of the annotation to be retrieved.", + "variantSetId": { + "location": "path", + "description": "Required. The ID of the variant set.", "type": "string", - "required": true, - "location": "path" + "required": true } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/annotations/{annotationId}", - "path": "v1/annotations/{annotationId}", - "id": "genomics.annotations.get" + ] }, - "update": { - "id": "genomics.annotations.update", - "path": "v1/annotations/{annotationId}", + "patch": { + "description": "Updates a variant set using patch semantics.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "request": { - "$ref": "Annotation" - }, - "description": "Updates an annotation. Caller must have\nWRITE permission for the associated dataset.", - "response": { - "$ref": "Annotation" + "$ref": "VariantSet" }, + "httpMethod": "PATCH", "parameterOrder": [ - "annotationId" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" + "variantSetId" ], + "response": { + "$ref": "VariantSet" + }, "parameters": { "updateMask": { + "location": "query", "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. Mutable fields are\nname,\nvariant,\ntranscript, and\ninfo. If unspecified, all mutable\nfields will be updated.", - "type": "string", - "location": "query" + "description": "An optional mask specifying which fields to update. Supported fields:\n\n* metadata.\n* name.\n* description.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.", + "type": "string" }, - "annotationId": { + "variantSetId": { "location": "path", - "description": "The ID of the annotation to be updated.", + "description": "The ID of the variant to be updated (must already exist).", "type": "string", "required": true } }, - "flatPath": "v1/annotations/{annotationId}" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/variantsets/{variantSetId}", + "path": "v1/variantsets/{variantSetId}", + "id": "genomics.variantsets.patch" }, "delete": { + "description": "Deletes a variant set including all variants, call sets, and calls within.\nThis is not reversible.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "httpMethod": "DELETE", + "parameterOrder": [ + "variantSetId" + ], "response": { "$ref": "Empty" }, - "parameterOrder": [ - "annotationId" - ], "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], "parameters": { - "annotationId": { - "description": "The ID of the annotation to be deleted.", + "variantSetId": { + "description": "The ID of the variant set to be deleted.", "type": "string", "required": true, "location": "path" } }, - "flatPath": "v1/annotations/{annotationId}", - "path": "v1/annotations/{annotationId}", - "id": "genomics.annotations.delete", - "description": "Deletes an annotation. Caller must have WRITE permission for\nthe associated annotation set." + "flatPath": "v1/variantsets/{variantSetId}", + "path": "v1/variantsets/{variantSetId}", + "id": "genomics.variantsets.delete" + }, + "create": { + "flatPath": "v1/variantsets", + "id": "genomics.variantsets.create", + "path": "v1/variantsets", + "request": { + "$ref": "VariantSet" + }, + "description": "Creates a new variant set.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe provided variant set must have a valid `datasetId` set - all other\nfields are optional. Note that the `id` field will be ignored, as this is\nassigned by the server.", + "response": { + "$ref": "VariantSet" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": {} } } }, "operations": { "methods": { - "get": { - "id": "genomics.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^operations/.+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/operations/{operationsId}" - }, - "list": { - "flatPath": "v1/operations", - "id": "genomics.operations.list", - "path": "v1/{+name}", - "description": "Lists operations that match the specified filter in the request.", - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.", - "type": "integer", - "location": "query" - }, - "filter": { - "location": "query", - "description": "A string for filtering Operations.\nThe following filter fields are supported:\n\n* projectId: Required. Corresponds to\n OperationMetadata.projectId.\n* createTime: The time this job was created, in seconds from the\n [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `\u003c=`\n operators.\n* status: Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n one status may be specified.\n* labels.key where key is a label key.\n\nExamples:\n\n* `projectId = my-project AND createTime \u003e= 1432140000`\n* `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true, - "pattern": "^operations$", - "location": "path" - } - } - }, "cancel": { - "flatPath": "v1/operations/{operationsId}:cancel", - "path": "v1/{+name}:cancel", - "id": "genomics.operations.cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.", "request": { "$ref": "CancelOperationRequest" }, - "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.", - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], "response": { "$ref": "Empty" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" + "parameterOrder": [ + "name" ], + "httpMethod": "POST", "parameters": { "name": { "description": "The name of the operation resource to be cancelled.", @@ -2638,7 +2563,82 @@ "pattern": "^operations/.+$", "location": "path" } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/operations/{operationsId}:cancel", + "id": "genomics.operations.cancel", + "path": "v1/{+name}:cancel" + }, + "get": { + "flatPath": "v1/operations/{operationsId}", + "path": "v1/{+name}", + "id": "genomics.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "httpMethod": "GET", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^operations/.+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ] + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ListOperationsResponse" + }, + "parameters": { + "filter": { + "description": "A string for filtering Operations.\nThe following filter fields are supported:\n\n* projectId: Required. Corresponds to\n OperationMetadata.projectId.\n* createTime: The time this job was created, in seconds from the\n [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `\u003c=`\n operators.\n* status: Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n one status may be specified.\n* labels.key where key is a label key.\n\nExamples:\n\n* `projectId = my-project AND createTime \u003e= 1432140000`\n* `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^operations$", + "location": "path" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/operations", + "path": "v1/{+name}", + "id": "genomics.operations.list", + "description": "Lists operations that match the specified filter in the request." } } }, @@ -2665,6 +2665,9 @@ "description": "Searches for reference sets which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferenceSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L71)" }, "get": { + "flatPath": "v1/referencesets/{referenceSetId}", + "id": "genomics.referencesets.get", + "path": "v1/referencesets/{referenceSetId}", "description": "Gets a reference set.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceSet](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L83).", "response": { "$ref": "ReferenceSet" @@ -2685,202 +2688,47 @@ "required": true, "location": "path" } - }, - "flatPath": "v1/referencesets/{referenceSetId}", - "id": "genomics.referencesets.get", - "path": "v1/referencesets/{referenceSetId}" - } - } - }, - "callsets": { - "methods": { - "get": { - "description": "Gets a call set by ID.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "response": { - "$ref": "CallSet" - }, - "parameterOrder": [ - "callSetId" - ], - "httpMethod": "GET", - "parameters": { - "callSetId": { - "description": "The ID of the call set.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/callsets/{callSetId}", - "id": "genomics.callsets.get", - "path": "v1/callsets/{callSetId}" - }, - "patch": { - "response": { - "$ref": "CallSet" - }, - "parameterOrder": [ - "callSetId" - ], - "httpMethod": "PATCH", - "parameters": { - "callSetId": { - "location": "path", - "description": "The ID of the call set to be updated.", - "type": "string", - "required": true - }, - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/callsets/{callSetId}", - "id": "genomics.callsets.patch", - "path": "v1/callsets/{callSetId}", - "description": "Updates a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.", - "request": { - "$ref": "CallSet" } - }, - "create": { - "response": { - "$ref": "CallSet" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/callsets", - "id": "genomics.callsets.create", - "path": "v1/callsets", - "description": "Creates a new call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "request": { - "$ref": "CallSet" - } - }, - "delete": { - "description": "Deletes a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "callSetId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "callSetId": { - "location": "path", - "description": "The ID of the call set to be deleted.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/callsets/{callSetId}", - "id": "genomics.callsets.delete", - "path": "v1/callsets/{callSetId}" - }, - "search": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "SearchCallSetsResponse" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/callsets/search", - "path": "v1/callsets/search", - "id": "genomics.callsets.search", - "description": "Gets a list of call sets matching the criteria.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchCallSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L178).", - "request": { - "$ref": "SearchCallSetsRequest" - } - } - } - }, - "reads": { - "methods": { - "search": { - "description": "Gets a list of reads for one or more read group sets.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nReads search operates over a genomic coordinate space of reference sequence\n& position defined over the reference sequences to which the requested\nread group sets are aligned.\n\nIf a target positional range is specified, search returns all reads whose\nalignment to the reference genome overlap the range. A query which\nspecifies only read group set IDs yields all reads in those read group\nsets, including unmapped reads.\n\nAll reads returned (including reads on subsequent pages) are ordered by\ngenomic coordinate (by reference sequence, then position). Reads with\nequivalent genomic coordinates are returned in an unspecified order. This\norder is consistent, such that two queries for the same content (regardless\nof page size) yield reads in the same order across their respective streams\nof paginated responses.\n\nImplements\n[GlobalAllianceApi.searchReads](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L85).", - "request": { - "$ref": "SearchReadsRequest" - }, - "response": { - "$ref": "SearchReadsResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/reads/search", - "id": "genomics.reads.search", - "path": "v1/reads/search" } } }, "readgroupsets": { "methods": { "export": { - "httpMethod": "POST", + "description": "Exports a read group set to a BAM file in Google Cloud Storage.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nNote that currently there may be some differences between exported BAM\nfiles and the original BAM file at the time of import. See\nImportReadGroupSets\nfor caveats.", + "request": { + "$ref": "ExportReadGroupSetRequest" + }, + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "readGroupSetId" ], - "response": { - "$ref": "Operation" + "httpMethod": "POST", + "parameters": { + "readGroupSetId": { + "location": "path", + "description": "Required. The ID of the read group set to export. The caller must have\nREAD access to this read group set.", + "type": "string", + "required": true + } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/devstorage.read_write", "https://www.googleapis.com/auth/genomics" ], - "parameters": { - "readGroupSetId": { - "type": "string", - "required": true, - "location": "path", - "description": "Required. The ID of the read group set to export. The caller must have\nREAD access to this read group set." - } - }, "flatPath": "v1/readgroupsets/{readGroupSetId}:export", - "path": "v1/readgroupsets/{readGroupSetId}:export", "id": "genomics.readgroupsets.export", - "request": { - "$ref": "ExportReadGroupSetRequest" - }, - "description": "Exports a read group set to a BAM file in Google Cloud Storage.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nNote that currently there may be some differences between exported BAM\nfiles and the original BAM file at the time of import. See\nImportReadGroupSets\nfor caveats." + "path": "v1/readgroupsets/{readGroupSetId}:export" }, "search": { + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "SearchReadGroupSetsResponse" }, - "parameterOrder": [], - "httpMethod": "POST", "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", @@ -2888,21 +2736,22 @@ "https://www.googleapis.com/auth/genomics.readonly" ], "flatPath": "v1/readgroupsets/search", - "id": "genomics.readgroupsets.search", "path": "v1/readgroupsets/search", + "id": "genomics.readgroupsets.search", "description": "Searches for read group sets matching the criteria.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReadGroupSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L135).", "request": { "$ref": "SearchReadGroupSetsRequest" } }, "get": { + "description": "Gets a read group set by ID.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "httpMethod": "GET", - "parameterOrder": [ - "readGroupSetId" - ], "response": { "$ref": "ReadGroupSet" }, + "parameterOrder": [ + "readGroupSetId" + ], "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", @@ -2918,16 +2767,9 @@ }, "flatPath": "v1/readgroupsets/{readGroupSetId}", "path": "v1/readgroupsets/{readGroupSetId}", - "id": "genomics.readgroupsets.get", - "description": "Gets a read group set by ID.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" + "id": "genomics.readgroupsets.get" }, "patch": { - "id": "genomics.readgroupsets.patch", - "path": "v1/readgroupsets/{readGroupSetId}", - "description": "Updates a read group set.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.", - "request": { - "$ref": "ReadGroupSet" - }, "response": { "$ref": "ReadGroupSet" }, @@ -2935,47 +2777,56 @@ "readGroupSetId" ], "httpMethod": "PATCH", - "parameters": { - "readGroupSetId": { - "type": "string", - "required": true, - "location": "path", - "description": "The ID of the read group set to be updated. The caller must have WRITE\npermissions to the dataset associated with this read group set." - }, - "updateMask": { - "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. Supported fields:\n\n* name.\n* referenceSetId.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.", - "type": "string", - "location": "query" - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "flatPath": "v1/readgroupsets/{readGroupSetId}" + "parameters": { + "readGroupSetId": { + "description": "The ID of the read group set to be updated. The caller must have WRITE\npermissions to the dataset associated with this read group set.", + "type": "string", + "required": true, + "location": "path" + }, + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "An optional mask specifying which fields to update. Supported fields:\n\n* name.\n* referenceSetId.\n\nLeaving `updateMask` unset is equivalent to specifying all mutable\nfields.", + "type": "string" + } + }, + "flatPath": "v1/readgroupsets/{readGroupSetId}", + "id": "genomics.readgroupsets.patch", + "path": "v1/readgroupsets/{readGroupSetId}", + "request": { + "$ref": "ReadGroupSet" + }, + "description": "Updates a read group set.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics." }, "import": { + "request": { + "$ref": "ImportReadGroupSetsRequest" + }, + "description": "Creates read group sets by asynchronously importing the provided\ninformation.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe caller must have WRITE permissions to the dataset.\n\n## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import\n\n- Tags will be converted to strings - tag types are not preserved\n- Comments (`@CO`) in the input file header will not be preserved\n- Original header order of references (`@SQ`) will not be preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and\ntheir qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed\n- Unmapped reads will be stripped of positional information (reference name\nand position)", "httpMethod": "POST", "parameterOrder": [], "response": { "$ref": "Operation" }, - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/devstorage.read_write", "https://www.googleapis.com/auth/genomics" ], + "parameters": {}, "flatPath": "v1/readgroupsets:import", "path": "v1/readgroupsets:import", - "id": "genomics.readgroupsets.import", - "description": "Creates read group sets by asynchronously importing the provided\ninformation.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe caller must have WRITE permissions to the dataset.\n\n## Notes on [BAM](https://samtools.github.io/hts-specs/SAMv1.pdf) import\n\n- Tags will be converted to strings - tag types are not preserved\n- Comments (`@CO`) in the input file header will not be preserved\n- Original header order of references (`@SQ`) will not be preserved\n- Any reverse stranded unmapped reads will be reverse complemented, and\ntheir qualities (also the \"BQ\" and \"OQ\" tags, if any) will be reversed\n- Unmapped reads will be stripped of positional information (reference name\nand position)", - "request": { - "$ref": "ImportReadGroupSetsRequest" - } + "id": "genomics.readgroupsets.import" }, "delete": { + "flatPath": "v1/readgroupsets/{readGroupSetId}", + "id": "genomics.readgroupsets.delete", + "path": "v1/readgroupsets/{readGroupSetId}", "description": "Deletes a read group set.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "response": { "$ref": "Empty" @@ -2984,6 +2835,10 @@ "readGroupSetId" ], "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], "parameters": { "readGroupSetId": { "location": "path", @@ -2991,37 +2846,38 @@ "type": "string", "required": true } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/readgroupsets/{readGroupSetId}", - "id": "genomics.readgroupsets.delete", - "path": "v1/readgroupsets/{readGroupSetId}" + } } }, "resources": { "coveragebuckets": { "methods": { "list": { - "flatPath": "v1/readgroupsets/{readGroupSetId}/coveragebuckets", - "path": "v1/readgroupsets/{readGroupSetId}/coveragebuckets", - "id": "genomics.readgroupsets.coveragebuckets.list", "description": "Lists fixed width coverage buckets for a read group set, each of which\ncorrespond to a range of a reference sequence. Each bucket summarizes\ncoverage information across its corresponding genomic range.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nCoverage is defined as the number of reads which are aligned to a given\nbase in the reference sequence. Coverage buckets are available at several\nprecomputed bucket widths, enabling retrieval of various coverage 'zoom\nlevels'. The caller must have READ permissions for the target read group\nset.", - "httpMethod": "GET", - "parameterOrder": [ - "readGroupSetId" - ], "response": { "$ref": "ListCoverageBucketsResponse" }, + "parameterOrder": [ + "readGroupSetId" + ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" ], "parameters": { + "end": { + "format": "int64", + "description": "The end position of the range on the reference, 0-based exclusive. If\nspecified, `referenceName` must also be specified. If unset or 0, defaults\nto the length of the reference.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string", + "location": "query" + }, "pageSize": { "location": "query", "format": "int32", @@ -3029,214 +2885,262 @@ "type": "integer" }, "start": { - "location": "query", "format": "int64", "description": "The start position of the range on the reference, 0-based inclusive. If\nspecified, `referenceName` must also be specified. Defaults to 0.", - "type": "string" + "type": "string", + "location": "query" }, "readGroupSetId": { + "location": "path", "description": "Required. The ID of the read group set over which coverage is requested.", "type": "string", - "required": true, - "location": "path" + "required": true }, "targetBucketWidth": { - "type": "string", - "location": "query", "format": "int64", - "description": "The desired width of each reported coverage bucket in base pairs. This\nwill be rounded down to the nearest precomputed bucket width; the value\nof which is returned as `bucketWidth` in the response. Defaults\nto infinity (each bucket spans an entire reference sequence) or the length\nof the target range, if specified. The smallest precomputed\n`bucketWidth` is currently 2048 base pairs; this is subject to\nchange." + "description": "The desired width of each reported coverage bucket in base pairs. This\nwill be rounded down to the nearest precomputed bucket width; the value\nof which is returned as `bucketWidth` in the response. Defaults\nto infinity (each bucket spans an entire reference sequence) or the length\nof the target range, if specified. The smallest precomputed\n`bucketWidth` is currently 2048 base pairs; this is subject to\nchange.", + "type": "string", + "location": "query" }, "referenceName": { - "location": "query", "description": "The name of the reference to query, within the reference set associated\nwith this query. Optional.", - "type": "string" - }, - "end": { - "type": "string", - "location": "query", - "format": "int64", - "description": "The end position of the range on the reference, 0-based exclusive. If\nspecified, `referenceName` must also be specified. If unset or 0, defaults\nto the length of the reference." - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", "type": "string", "location": "query" } - } + }, + "flatPath": "v1/readgroupsets/{readGroupSetId}/coveragebuckets", + "id": "genomics.readgroupsets.coveragebuckets.list", + "path": "v1/readgroupsets/{readGroupSetId}/coveragebuckets" } } } } }, - "variants": { + "reads": { "methods": { - "get": { - "flatPath": "v1/variants/{variantId}", - "path": "v1/variants/{variantId}", - "id": "genomics.variants.get", - "description": "Gets a variant by ID.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "httpMethod": "GET", - "parameterOrder": [ - "variantId" - ], - "response": { - "$ref": "Variant" + "search": { + "request": { + "$ref": "SearchReadsRequest" }, + "description": "Gets a list of reads for one or more read group sets.\n\nFor the definitions of read group sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nReads search operates over a genomic coordinate space of reference sequence\n& position defined over the reference sequences to which the requested\nread group sets are aligned.\n\nIf a target positional range is specified, search returns all reads whose\nalignment to the reference genome overlap the range. A query which\nspecifies only read group set IDs yields all reads in those read group\nsets, including unmapped reads.\n\nAll reads returned (including reads on subsequent pages) are ordered by\ngenomic coordinate (by reference sequence, then position). Reads with\nequivalent genomic coordinates are returned in an unspecified order. This\norder is consistent, such that two queries for the same content (regardless\nof page size) yield reads in the same order across their respective streams\nof paginated responses.\n\nImplements\n[GlobalAllianceApi.searchReads](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/readmethods.avdl#L85).", + "response": { + "$ref": "SearchReadsResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "parameters": {}, + "flatPath": "v1/reads/search", + "id": "genomics.reads.search", + "path": "v1/reads/search" + } + } + }, + "callsets": { + "methods": { + "search": { + "response": { + "$ref": "SearchCallSetsResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "flatPath": "v1/callsets/search", + "id": "genomics.callsets.search", + "path": "v1/callsets/search", + "description": "Gets a list of call sets matching the criteria.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchCallSets](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L178).", + "request": { + "$ref": "SearchCallSetsRequest" + } + }, + "get": { + "description": "Gets a call set by ID.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "httpMethod": "GET", + "response": { + "$ref": "CallSet" + }, + "parameterOrder": [ + "callSetId" + ], "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" ], "parameters": { - "variantId": { + "callSetId": { "location": "path", - "description": "The ID of the variant.", + "description": "The ID of the call set.", "type": "string", "required": true } - } + }, + "flatPath": "v1/callsets/{callSetId}", + "path": "v1/callsets/{callSetId}", + "id": "genomics.callsets.get" }, "patch": { + "request": { + "$ref": "CallSet" + }, + "description": "Updates a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.", + "response": { + "$ref": "CallSet" + }, + "parameterOrder": [ + "callSetId" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], "parameters": { "updateMask": { "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. At this time, mutable\nfields are names and\ninfo. Acceptable values are \"names\" and\n\"info\". If unspecified, all mutable fields will be updated.", + "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.", "type": "string", "location": "query" }, - "variantId": { - "type": "string", - "required": true, + "callSetId": { "location": "path", - "description": "The ID of the variant to be updated." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/variants/{variantId}", - "id": "genomics.variants.patch", - "path": "v1/variants/{variantId}", - "description": "Updates a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics. Returns the modified variant without\nits calls.", - "request": { - "$ref": "Variant" - }, - "response": { - "$ref": "Variant" - }, - "parameterOrder": [ - "variantId" - ], - "httpMethod": "PATCH" - }, - "import": { - "flatPath": "v1/variants:import", - "path": "v1/variants:import", - "id": "genomics.variants.import", - "request": { - "$ref": "ImportVariantsRequest" - }, - "description": "Creates variant data by asynchronously importing the provided information.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe variants for import will be merged with any existing variant that\nmatches its reference sequence, start, end, reference bases, and\nalternative bases. If no such variant exists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant, and Variant info fields are merged\nas specified in\ninfoMergeConfig.\nAs a special case, for single-sample VCF files, QUAL and FILTER fields will\nbe moved to the call level; these are sometimes interpreted in a\ncall-specific context.\nImported VCF headers are appended to the metadata already in a variant set.", - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/devstorage.read_write", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": {} - }, - "delete": { - "description": "Deletes a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "httpMethod": "DELETE", - "parameterOrder": [ - "variantId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "variantId": { - "location": "path", - "description": "The ID of the variant to be deleted.", + "description": "The ID of the call set to be updated.", "type": "string", "required": true } }, + "flatPath": "v1/callsets/{callSetId}", + "id": "genomics.callsets.patch", + "path": "v1/callsets/{callSetId}" + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "CallSet" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "flatPath": "v1/variants/{variantId}", - "path": "v1/variants/{variantId}", - "id": "genomics.variants.delete" - }, - "merge": { + "parameters": {}, + "flatPath": "v1/callsets", + "path": "v1/callsets", + "id": "genomics.callsets.create", "request": { - "$ref": "MergeVariantsRequest" + "$ref": "CallSet" }, - "description": "Merges the given variants with existing variants.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach variant will be\nmerged with an existing variant that matches its reference sequence,\nstart, end, reference bases, and alternative bases. If no such variant\nexists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant. Variant info fields are merged as\nspecified in the\ninfoMergeConfig\nfield of the MergeVariantsRequest.\n\nPlease exercise caution when using this method! It is easy to introduce\nmistakes in existing variants and difficult to back out of them. For\nexample,\nsuppose you were trying to merge a new variant with an existing one and\nboth\nvariants contain calls that belong to callsets with the same callset ID.\n\n // Existing variant - irrelevant fields trimmed for clarity\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 0,\n 1\n ],\n }\n ]\n }\n\n // New variant with conflicting call information\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 1,\n 1\n ],\n }\n ]\n }\n\nThe resulting merged variant would overwrite the existing calls with those\nfrom the new variant:\n\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 1,\n 1\n ],\n }\n ]\n }\n\nThis may be the desired outcome, but it is up to the user to determine if\nif that is indeed the case.", - "httpMethod": "POST", - "parameterOrder": [], + "description": "Creates a new call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" + }, + "delete": { "response": { "$ref": "Empty" }, + "parameterOrder": [ + "callSetId" + ], + "httpMethod": "DELETE", + "parameters": { + "callSetId": { + "description": "The ID of the call set to be deleted.", + "type": "string", + "required": true, + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "parameters": {}, - "flatPath": "v1/variants:merge", - "path": "v1/variants:merge", - "id": "genomics.variants.merge" - }, - "create": { - "response": { - "$ref": "Variant" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/variants", - "id": "genomics.variants.create", - "path": "v1/variants", - "description": "Creates a new variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "request": { - "$ref": "Variant" - } - }, - "search": { - "response": { - "$ref": "SearchVariantsResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/variants/search", - "id": "genomics.variants.search", - "path": "v1/variants/search", - "description": "Gets a list of variants matching the criteria.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126).", - "request": { - "$ref": "SearchVariantsRequest" - } + "flatPath": "v1/callsets/{callSetId}", + "id": "genomics.callsets.delete", + "path": "v1/callsets/{callSetId}", + "description": "Deletes a call set.\n\nFor the definitions of call sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" } } }, "annotationsets": { "methods": { + "delete": { + "description": "Deletes an annotation set. Caller must have WRITE permission\nfor the associated annotation set.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "annotationSetId" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "annotationSetId": { + "location": "path", + "description": "The ID of the annotation set to be deleted.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/annotationsets/{annotationSetId}", + "id": "genomics.annotationsets.delete", + "path": "v1/annotationsets/{annotationSetId}" + }, + "search": { + "request": { + "$ref": "SearchAnnotationSetsRequest" + }, + "description": "Searches for annotation sets that match the given criteria. Annotation sets\nare returned in an unspecified order. This order is consistent, such that\ntwo queries for the same content (regardless of page size) yield annotation\nsets in the same order across their respective streams of paginated\nresponses. Caller must have READ permission for the queried datasets.", + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "SearchAnnotationSetsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "parameters": {}, + "flatPath": "v1/annotationsets/search", + "path": "v1/annotationsets/search", + "id": "genomics.annotationsets.search" + }, + "get": { + "description": "Gets an annotation set. Caller must have READ permission for\nthe associated dataset.", + "response": { + "$ref": "AnnotationSet" + }, + "parameterOrder": [ + "annotationSetId" + ], + "httpMethod": "GET", + "parameters": { + "annotationSetId": { + "location": "path", + "description": "The ID of the annotation set to be retrieved.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "flatPath": "v1/annotationsets/{annotationSetId}", + "id": "genomics.annotationsets.get", + "path": "v1/annotationsets/{annotationSetId}" + }, "update": { "response": { "$ref": "AnnotationSet" @@ -3272,109 +3176,196 @@ } }, "create": { - "description": "Creates a new annotation set. Caller must have WRITE permission for the\nassociated dataset.\n\nThe following fields are required:\n\n * datasetId\n * referenceSetId\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field).", "request": { "$ref": "AnnotationSet" }, + "description": "Creates a new annotation set. Caller must have WRITE permission for the\nassociated dataset.\n\nThe following fields are required:\n\n * datasetId\n * referenceSetId\n\nAll other fields may be optionally specified, unless documented as being\nserver-generated (for example, the `id` field).", "response": { "$ref": "AnnotationSet" }, "parameterOrder": [], "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": {}, + "flatPath": "v1/annotationsets", + "id": "genomics.annotationsets.create", + "path": "v1/annotationsets" + } + } + }, + "variants": { + "methods": { + "create": { + "description": "Creates a new variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "request": { + "$ref": "Variant" + }, + "response": { + "$ref": "Variant" + }, + "parameterOrder": [], + "httpMethod": "POST", "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics" ], - "flatPath": "v1/annotationsets", - "id": "genomics.annotationsets.create", - "path": "v1/annotationsets" + "flatPath": "v1/variants", + "id": "genomics.variants.create", + "path": "v1/variants" }, - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "annotationSetId" - ], - "response": { - "$ref": "Empty" + "search": { + "request": { + "$ref": "SearchVariantsRequest" }, + "description": "Gets a list of variants matching the criteria.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchVariants](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/variantmethods.avdl#L126).", + "response": { + "$ref": "SearchVariantsResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" ], + "parameters": {}, + "flatPath": "v1/variants/search", + "id": "genomics.variants.search", + "path": "v1/variants/search" + }, + "get": { + "flatPath": "v1/variants/{variantId}", + "path": "v1/variants/{variantId}", + "id": "genomics.variants.get", + "description": "Gets a variant by ID.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "httpMethod": "GET", + "parameterOrder": [ + "variantId" + ], + "response": { + "$ref": "Variant" + }, "parameters": { - "annotationSetId": { + "variantId": { "location": "path", - "description": "The ID of the annotation set to be deleted.", + "description": "The ID of the variant.", "type": "string", "required": true } }, - "flatPath": "v1/annotationsets/{annotationSetId}", - "path": "v1/annotationsets/{annotationSetId}", - "id": "genomics.annotationsets.delete", - "description": "Deletes an annotation set. Caller must have WRITE permission\nfor the associated annotation set." - }, - "search": { - "flatPath": "v1/annotationsets/search", - "path": "v1/annotationsets/search", - "id": "genomics.annotationsets.search", - "description": "Searches for annotation sets that match the given criteria. Annotation sets\nare returned in an unspecified order. This order is consistent, such that\ntwo queries for the same content (regardless of page size) yield annotation\nsets in the same order across their respective streams of paginated\nresponses. Caller must have READ permission for the queried datasets.", - "request": { - "$ref": "SearchAnnotationSetsRequest" - }, - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "SearchAnnotationSetsResponse" - }, - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" ] }, - "get": { - "response": { - "$ref": "AnnotationSet" + "patch": { + "flatPath": "v1/variants/{variantId}", + "path": "v1/variants/{variantId}", + "id": "genomics.variants.patch", + "description": "Updates a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics. Returns the modified variant without\nits calls.", + "request": { + "$ref": "Variant" }, + "httpMethod": "PATCH", "parameterOrder": [ - "annotationSetId" + "variantId" ], - "httpMethod": "GET", + "response": { + "$ref": "Variant" + }, + "parameters": { + "updateMask": { + "format": "google-fieldmask", + "description": "An optional mask specifying which fields to update. At this time, mutable\nfields are names and\ninfo. Acceptable values are \"names\" and\n\"info\". If unspecified, all mutable fields will be updated.", + "type": "string", + "location": "query" + }, + "variantId": { + "description": "The ID of the variant to be updated.", + "type": "string", + "required": true, + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" + "https://www.googleapis.com/auth/genomics" + ] + }, + "merge": { + "request": { + "$ref": "MergeVariantsRequest" + }, + "description": "Merges the given variants with existing variants.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nEach variant will be\nmerged with an existing variant that matches its reference sequence,\nstart, end, reference bases, and alternative bases. If no such variant\nexists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant. Variant info fields are merged as\nspecified in the\ninfoMergeConfig\nfield of the MergeVariantsRequest.\n\nPlease exercise caution when using this method! It is easy to introduce\nmistakes in existing variants and difficult to back out of them. For\nexample,\nsuppose you were trying to merge a new variant with an existing one and\nboth\nvariants contain calls that belong to callsets with the same callset ID.\n\n // Existing variant - irrelevant fields trimmed for clarity\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 0,\n 1\n ],\n }\n ]\n }\n\n // New variant with conflicting call information\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 1,\n 1\n ],\n }\n ]\n }\n\nThe resulting merged variant would overwrite the existing calls with those\nfrom the new variant:\n\n {\n \"variantSetId\": \"10473108253681171589\",\n \"referenceName\": \"1\",\n \"start\": \"10582\",\n \"referenceBases\": \"G\",\n \"alternateBases\": [\n \"A\"\n ],\n \"calls\": [\n {\n \"callSetId\": \"10473108253681171589-0\",\n \"callSetName\": \"CALLSET0\",\n \"genotype\": [\n 1,\n 1\n ],\n }\n ]\n }\n\nThis may be the desired outcome, but it is up to the user to determine if\nif that is indeed the case.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": {}, + "flatPath": "v1/variants:merge", + "id": "genomics.variants.merge", + "path": "v1/variants:merge" + }, + "import": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/devstorage.read_write", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": {}, + "flatPath": "v1/variants:import", + "id": "genomics.variants.import", + "path": "v1/variants:import", + "request": { + "$ref": "ImportVariantsRequest" + }, + "description": "Creates variant data by asynchronously importing the provided information.\n\nFor the definitions of variant sets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThe variants for import will be merged with any existing variant that\nmatches its reference sequence, start, end, reference bases, and\nalternative bases. If no such variant exists, a new one will be created.\n\nWhen variants are merged, the call information from the new variant\nis added to the existing variant, and Variant info fields are merged\nas specified in\ninfoMergeConfig.\nAs a special case, for single-sample VCF files, QUAL and FILTER fields will\nbe moved to the call level; these are sometimes interpreted in a\ncall-specific context.\nImported VCF headers are appended to the metadata already in a variant set." + }, + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "variantId" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" ], "parameters": { - "annotationSetId": { + "variantId": { "location": "path", - "description": "The ID of the annotation set to be retrieved.", + "description": "The ID of the variant to be deleted.", "type": "string", "required": true } }, - "flatPath": "v1/annotationsets/{annotationSetId}", - "id": "genomics.annotationsets.get", - "path": "v1/annotationsets/{annotationSetId}", - "description": "Gets an annotation set. Caller must have READ permission for\nthe associated dataset." + "flatPath": "v1/variants/{variantId}", + "path": "v1/variants/{variantId}", + "id": "genomics.variants.delete", + "description": "Deletes a variant.\n\nFor the definitions of variants and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" } } }, "references": { "methods": { "search": { - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "flatPath": "v1/references/search", - "id": "genomics.references.search", - "path": "v1/references/search", "description": "Searches for references which match the given criteria.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.searchReferences](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L146).", "request": { "$ref": "SearchReferencesRequest" @@ -3383,20 +3374,25 @@ "$ref": "SearchReferencesResponse" }, "parameterOrder": [], - "httpMethod": "POST" + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], + "flatPath": "v1/references/search", + "id": "genomics.references.search", + "path": "v1/references/search" }, "get": { - "flatPath": "v1/references/{referenceId}", - "id": "genomics.references.get", - "path": "v1/references/{referenceId}", - "description": "Gets a reference.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158).", - "response": { - "$ref": "Reference" - }, + "httpMethod": "GET", "parameterOrder": [ "referenceId" ], - "httpMethod": "GET", + "response": { + "$ref": "Reference" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", @@ -3409,7 +3405,11 @@ "type": "string", "required": true } - } + }, + "flatPath": "v1/references/{referenceId}", + "path": "v1/references/{referenceId}", + "id": "genomics.references.get", + "description": "Gets a reference.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReference](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L158)." } }, "resources": { @@ -3417,24 +3417,30 @@ "methods": { "list": { "description": "Lists the bases in a reference, optionally restricted to a range.\n\nFor the definitions of references and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nImplements\n[GlobalAllianceApi.getReferenceBases](https://github.com/ga4gh/schemas/blob/v0.5.1/src/main/resources/avro/referencemethods.avdl#L221).", - "response": { - "$ref": "ListBasesResponse" - }, + "httpMethod": "GET", "parameterOrder": [ "referenceId" ], - "httpMethod": "GET", + "response": { + "$ref": "ListBasesResponse" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" ], "parameters": { + "pageSize": { + "format": "int32", + "description": "The maximum number of bases to return in a single page. If unspecified,\ndefaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega base\npairs).", + "type": "integer", + "location": "query" + }, "start": { - "type": "string", - "location": "query", "format": "int64", - "description": "The start position (0-based) of this query. Defaults to 0." + "description": "The start position (0-based) of this query. Defaults to 0.", + "type": "string", + "location": "query" }, "referenceId": { "location": "path", @@ -3443,26 +3449,20 @@ "required": true }, "end": { - "location": "query", "format": "int64", "description": "The end position (0-based, exclusive) of this query. Defaults to the length\nof this reference.", - "type": "string" - }, - "pageToken": { - "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", "type": "string", "location": "query" }, - "pageSize": { + "pageToken": { "location": "query", - "format": "int32", - "description": "The maximum number of bases to return in a single page. If unspecified,\ndefaults to 200Kbp (kilo base pairs). The maximum value is 10Mbp (mega base\npairs).", - "type": "integer" + "description": "The continuation token, which is used to page through large result sets.\nTo get the next page of results, set this parameter to the value of\n`nextPageToken` from the previous response.", + "type": "string" } }, "flatPath": "v1/references/{referenceId}/bases", - "id": "genomics.references.bases.list", - "path": "v1/references/{referenceId}/bases" + "path": "v1/references/{referenceId}/bases", + "id": "genomics.references.bases.list" } } } @@ -3470,234 +3470,18 @@ }, "datasets": { "methods": { - "setIamPolicy": { - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "pattern": "^datasets/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/datasets/{datasetsId}:setIamPolicy", - "id": "genomics.datasets.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "description": "Sets the access control policy on the specified dataset. Replaces any\nexisting policy.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nSee \u003ca href=\"/iam/docs/managing-policies#setting_a_policy\"\u003eSetting a\nPolicy\u003c/a\u003e for more information.", - "request": { - "$ref": "SetIamPolicyRequest" - } - }, - "create": { - "request": { - "$ref": "Dataset" - }, - "description": "Creates a new dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Dataset" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": {}, - "flatPath": "v1/datasets", - "path": "v1/datasets", - "id": "genomics.datasets.create" - }, - "getIamPolicy": { - "description": "Gets the access control policy for the dataset. This is empty if the\npolicy or resource does not exist.\n\nSee \u003ca href=\"/iam/docs/managing-policies#getting_a_policy\"\u003eGetting a\nPolicy\u003c/a\u003e for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", - "type": "string", - "required": true, - "pattern": "^datasets/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/datasets/{datasetsId}:getIamPolicy", - "id": "genomics.datasets.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy" - }, - "undelete": { - "flatPath": "v1/datasets/{datasetId}:undelete", - "path": "v1/datasets/{datasetId}:undelete", - "id": "genomics.datasets.undelete", - "request": { - "$ref": "UndeleteDatasetRequest" - }, - "description": "Undeletes a dataset by restoring a dataset which was deleted via this API.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis operation is only possible for a week after the deletion occurred.", - "httpMethod": "POST", - "parameterOrder": [ - "datasetId" - ], - "response": { - "$ref": "Dataset" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "datasetId": { - "location": "path", - "description": "The ID of the dataset to be undeleted.", - "type": "string", - "required": true - } - } - }, - "get": { - "response": { - "$ref": "Dataset" - }, - "parameterOrder": [ - "datasetId" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics", - "https://www.googleapis.com/auth/genomics.readonly" - ], - "parameters": { - "datasetId": { - "description": "The ID of the dataset.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/datasets/{datasetId}", - "id": "genomics.datasets.get", - "path": "v1/datasets/{datasetId}", - "description": "Gets a dataset by ID.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" - }, - "patch": { - "request": { - "$ref": "Dataset" - }, - "description": "Updates a dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.", - "httpMethod": "PATCH", - "parameterOrder": [ - "datasetId" - ], - "response": { - "$ref": "Dataset" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "datasetId": { - "type": "string", - "required": true, - "location": "path", - "description": "The ID of the dataset to be updated." - }, - "updateMask": { - "format": "google-fieldmask", - "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/datasets/{datasetId}", - "path": "v1/datasets/{datasetId}", - "id": "genomics.datasets.patch" - }, - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nSee \u003ca href=\"/iam/docs/managing-policies#testing_permissions\"\u003eTesting\nPermissions\u003c/a\u003e for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "pattern": "^datasets/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1/datasets/{datasetsId}:testIamPermissions", - "id": "genomics.datasets.testIamPermissions", - "path": "v1/{+resource}:testIamPermissions" - }, - "delete": { - "parameterOrder": [ - "datasetId" - ], - "response": { - "$ref": "Empty" - }, - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "datasetId": { - "location": "path", - "description": "The ID of the dataset to be deleted.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/datasets/{datasetId}", - "id": "genomics.datasets.delete", - "path": "v1/datasets/{datasetId}", - "description": "Deletes a dataset and all of its contents (all read group sets,\nreference sets, variant sets, call sets, annotation sets, etc.)\nThis is reversible (up to one week after the deletion) via\nthe\ndatasets.undelete\noperation.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" - }, "list": { - "id": "genomics.datasets.list", - "path": "v1/datasets", "description": "Lists datasets within a project.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", "response": { "$ref": "ListDatasetsResponse" }, "parameterOrder": [], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics", + "https://www.googleapis.com/auth/genomics.readonly" + ], "parameters": { "pageToken": { "location": "query", @@ -3716,48 +3500,233 @@ "type": "string" } }, + "flatPath": "v1/datasets", + "id": "genomics.datasets.list", + "path": "v1/datasets" + }, + "create": { + "flatPath": "v1/datasets", + "path": "v1/datasets", + "id": "genomics.datasets.create", + "description": "Creates a new dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "request": { + "$ref": "Dataset" + }, + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Dataset" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ] + }, + "setIamPolicy": { + "description": "Sets the access control policy on the specified dataset. Replaces any\nexisting policy.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nSee \u003ca href=\"/iam/docs/managing-policies#setting_a_policy\"\u003eSetting a\nPolicy\u003c/a\u003e for more information.", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", + "type": "string", + "required": true, + "pattern": "^datasets/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/datasets/{datasetsId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "id": "genomics.datasets.setIamPolicy" + }, + "getIamPolicy": { + "request": { + "$ref": "GetIamPolicyRequest" + }, + "description": "Gets the access control policy for the dataset. This is empty if the\npolicy or resource does not exist.\n\nSee \u003ca href=\"/iam/docs/managing-policies#getting_a_policy\"\u003eGetting a\nPolicy\u003c/a\u003e for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", + "type": "string", + "required": true, + "pattern": "^datasets/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/datasets/{datasetsId}:getIamPolicy", + "id": "genomics.datasets.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + }, + "patch": { + "description": "Updates a dataset.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis method supports patch semantics.", + "request": { + "$ref": "Dataset" + }, + "response": { + "$ref": "Dataset" + }, + "parameterOrder": [ + "datasetId" + ], + "httpMethod": "PATCH", + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "An optional mask specifying which fields to update. At this time, the only\nmutable field is name. The only\nacceptable value is \"name\". If unspecified, all mutable fields will be\nupdated.", + "type": "string" + }, + "datasetId": { + "description": "The ID of the dataset to be updated.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/datasets/{datasetId}", + "id": "genomics.datasets.patch", + "path": "v1/datasets/{datasetId}" + }, + "undelete": { + "httpMethod": "POST", + "parameterOrder": [ + "datasetId" + ], + "response": { + "$ref": "Dataset" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "datasetId": { + "location": "path", + "description": "The ID of the dataset to be undeleted.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/datasets/{datasetId}:undelete", + "path": "v1/datasets/{datasetId}:undelete", + "id": "genomics.datasets.undelete", + "request": { + "$ref": "UndeleteDatasetRequest" + }, + "description": "Undeletes a dataset by restoring a dataset which was deleted via this API.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)\n\nThis operation is only possible for a week after the deletion occurred." + }, + "get": { + "flatPath": "v1/datasets/{datasetId}", + "id": "genomics.datasets.get", + "path": "v1/datasets/{datasetId}", + "description": "Gets a dataset by ID.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "response": { + "$ref": "Dataset" + }, + "parameterOrder": [ + "datasetId" + ], + "httpMethod": "GET", + "parameters": { + "datasetId": { + "description": "The ID of the dataset.", + "type": "string", + "required": true, + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/genomics", "https://www.googleapis.com/auth/genomics.readonly" + ] + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.\nSee \u003ca href=\"/iam/docs/managing-policies#testing_permissions\"\u003eTesting\nPermissions\u003c/a\u003e for more information.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" ], - "flatPath": "v1/datasets" + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which policy is being specified. Format is\n`datasets/\u003cdataset ID\u003e`.", + "type": "string", + "required": true, + "pattern": "^datasets/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/datasets/{datasetsId}:testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "id": "genomics.datasets.testIamPermissions" + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "datasetId" + ], + "httpMethod": "DELETE", + "parameters": { + "datasetId": { + "location": "path", + "description": "The ID of the dataset to be deleted.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1/datasets/{datasetId}", + "id": "genomics.datasets.delete", + "path": "v1/datasets/{datasetId}", + "description": "Deletes a dataset and all of its contents (all read group sets,\nreference sets, variant sets, call sets, annotation sets, etc.)\nThis is reversible (up to one week after the deletion) via\nthe\ndatasets.undelete\noperation.\n\nFor the definitions of datasets and other genomics resources, see\n[Fundamentals of Google\nGenomics](https://cloud.google.com/genomics/fundamentals-of-google-genomics)" } } } }, "parameters": { - "key": { - "type": "string", - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", @@ -3769,20 +3738,20 @@ "default": "true", "type": "boolean" }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { "enumDescriptions": [ @@ -3798,6 +3767,11 @@ "type": "string" }, "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], "location": "query", "description": "Data format for response.", "default": "json", @@ -3806,12 +3780,38 @@ "media", "proto" ], + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ] + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" } } } diff --git a/vendor/google.golang.org/api/genomics/v1alpha2/genomics-api.json b/vendor/google.golang.org/api/genomics/v1alpha2/genomics-api.json index 237e646..1c27897 100644 --- a/vendor/google.golang.org/api/genomics/v1alpha2/genomics-api.json +++ b/vendor/google.golang.org/api/genomics/v1alpha2/genomics-api.json @@ -1,9 +1,266 @@ { + "basePath": "", + "ownerDomain": "google.com", + "name": "genomics", + "batchPath": "batch", + "id": "genomics:v1alpha2", + "documentationLink": "https://cloud.google.com/genomics", + "revision": "20170824", + "title": "Genomics API", "ownerName": "Google", "discoveryVersion": "v1", "resources": { + "operations": { + "methods": { + "get": { + "flatPath": "v1alpha2/operations/{operationsId}", + "path": "v1alpha2/{+name}", + "id": "genomics.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^operations/.+$" + } + } + }, + "list": { + "description": "Lists operations that match the specified filter in the request.", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "filter": { + "location": "query", + "description": "A string for filtering Operations.\nThe following filter fields are supported:\n\n* projectId: Required. Corresponds to\n OperationMetadata.projectId.\n* createTime: The time this job was created, in seconds from the\n [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `\u003c=`\n operators.\n* status: Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n one status may be specified.\n* labels.key where key is a label key.\n\nExamples:\n\n* `projectId = my-project AND createTime \u003e= 1432140000`\n* `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^operations$", + "location": "path" + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1alpha2/operations", + "id": "genomics.operations.list", + "path": "v1alpha2/{+name}" + }, + "cancel": { + "flatPath": "v1alpha2/operations/{operationsId}:cancel", + "id": "genomics.operations.cancel", + "path": "v1alpha2/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation.", + "request": { + "$ref": "CancelOperationRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^operations/.+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ] + } + } + }, "pipelines": { "methods": { + "setOperationStatus": { + "description": "Sets status of a given operation. Any new timestamps (as determined by\ndescription) are appended to TimestampEvents. Should only be called by VMs\ncreated by the Pipelines Service and not by end users.", + "request": { + "$ref": "SetOperationStatusRequest" + }, + "httpMethod": "PUT", + "parameterOrder": [], + "response": { + "$ref": "Empty" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1alpha2/pipelines:setOperationStatus", + "path": "v1alpha2/pipelines:setOperationStatus", + "id": "genomics.pipelines.setOperationStatus" + }, + "getControllerConfig": { + "description": "Gets controller configuration information. Should only be called\nby VMs created by the Pipelines Service and not by end users.", + "response": { + "$ref": "ControllerConfig" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "operationId": { + "location": "query", + "description": "The operation to retrieve controller configuration for.", + "type": "string" + }, + "validationToken": { + "location": "query", + "format": "uint64", + "type": "string" + } + }, + "flatPath": "v1alpha2/pipelines:getControllerConfig", + "id": "genomics.pipelines.getControllerConfig", + "path": "v1alpha2/pipelines:getControllerConfig" + }, + "delete": { + "description": "Deletes a pipeline based on ID.\n\nCaller must have WRITE permission to the project.", + "httpMethod": "DELETE", + "parameterOrder": [ + "pipelineId" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "pipelineId": { + "description": "Caller must have WRITE access to the project in which this pipeline\nis defined.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1alpha2/pipelines/{pipelineId}", + "path": "v1alpha2/pipelines/{pipelineId}", + "id": "genomics.pipelines.delete" + }, + "list": { + "flatPath": "v1alpha2/pipelines", + "path": "v1alpha2/pipelines", + "id": "genomics.pipelines.list", + "description": "Lists pipelines.\n\nCaller must have READ permission to the project.", + "httpMethod": "GET", + "response": { + "$ref": "ListPipelinesResponse" + }, + "parameterOrder": [], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": { + "namePrefix": { + "location": "query", + "description": "Pipelines with names that match this prefix should be\nreturned. If unspecified, all pipelines in the project, up to\n`pageSize`, will be returned.", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "Token to use to indicate where to start getting results.\nIf unspecified, returns the first page of results.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Number of pipelines to return at once. Defaults to 256, and max\nis 2048.", + "type": "integer", + "location": "query" + }, + "projectId": { + "description": "Required. The name of the project to search for pipelines. Caller\nmust have READ access to this project.", + "type": "string", + "location": "query" + } + } + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Pipeline" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/genomics" + ], + "parameters": {}, + "flatPath": "v1alpha2/pipelines", + "path": "v1alpha2/pipelines", + "id": "genomics.pipelines.create", + "request": { + "$ref": "Pipeline" + }, + "description": "Creates a pipeline that can be run later. Create takes a Pipeline that\nhas all fields other than `pipelineId` populated, and then returns\nthe same pipeline with `pipelineId` populated. This id can be used\nto run the pipeline.\n\nCaller must have WRITE permission to the project." + }, + "run": { + "description": "Runs a pipeline. If `pipelineId` is specified in the request, then\nrun a saved pipeline. If `ephemeralPipeline` is specified, then run\nthat pipeline once without saving a copy.\n\nThe caller must have READ permission to the project where the pipeline\nis stored and WRITE permission to the project where the pipeline will be\nrun, as VMs will be created and storage will be used.\n\nIf a pipeline operation is still running after 6 days, it will be canceled.", + "request": { + "$ref": "RunPipelineRequest" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/compute", + "https://www.googleapis.com/auth/genomics" + ], + "flatPath": "v1alpha2/pipelines:run", + "id": "genomics.pipelines.run", + "path": "v1alpha2/pipelines:run" + }, "get": { "response": { "$ref": "Pipeline" @@ -28,274 +285,46 @@ "id": "genomics.pipelines.get", "path": "v1alpha2/pipelines/{pipelineId}", "description": "Retrieves a pipeline based on ID.\n\nCaller must have READ permission to the project." - }, - "setOperationStatus": { - "path": "v1alpha2/pipelines:setOperationStatus", - "id": "genomics.pipelines.setOperationStatus", - "description": "Sets status of a given operation. Any new timestamps (as determined by\ndescription) are appended to TimestampEvents. Should only be called by VMs\ncreated by the Pipelines Service and not by end users.", - "request": { - "$ref": "SetOperationStatusRequest" - }, - "httpMethod": "PUT", - "parameterOrder": [], - "response": { - "$ref": "Empty" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1alpha2/pipelines:setOperationStatus" - }, - "getControllerConfig": { - "id": "genomics.pipelines.getControllerConfig", - "path": "v1alpha2/pipelines:getControllerConfig", - "description": "Gets controller configuration information. Should only be called\nby VMs created by the Pipelines Service and not by end users.", - "response": { - "$ref": "ControllerConfig" - }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "operationId": { - "type": "string", - "location": "query", - "description": "The operation to retrieve controller configuration for." - }, - "validationToken": { - "location": "query", - "format": "uint64", - "type": "string" - } - }, - "flatPath": "v1alpha2/pipelines:getControllerConfig" - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "pipelineId" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "pipelineId": { - "location": "path", - "description": "Caller must have WRITE access to the project in which this pipeline\nis defined.", - "type": "string", - "required": true - } - }, - "flatPath": "v1alpha2/pipelines/{pipelineId}", - "id": "genomics.pipelines.delete", - "path": "v1alpha2/pipelines/{pipelineId}", - "description": "Deletes a pipeline based on ID.\n\nCaller must have WRITE permission to the project." - }, - "list": { - "httpMethod": "GET", - "parameterOrder": [], - "response": { - "$ref": "ListPipelinesResponse" - }, - "parameters": { - "namePrefix": { - "location": "query", - "description": "Pipelines with names that match this prefix should be\nreturned. If unspecified, all pipelines in the project, up to\n`pageSize`, will be returned.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "Token to use to indicate where to start getting results.\nIf unspecified, returns the first page of results.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Number of pipelines to return at once. Defaults to 256, and max\nis 2048.", - "type": "integer", - "location": "query" - }, - "projectId": { - "location": "query", - "description": "Required. The name of the project to search for pipelines. Caller\nmust have READ access to this project.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1alpha2/pipelines", - "path": "v1alpha2/pipelines", - "id": "genomics.pipelines.list", - "description": "Lists pipelines.\n\nCaller must have READ permission to the project." - }, - "create": { - "description": "Creates a pipeline that can be run later. Create takes a Pipeline that\nhas all fields other than `pipelineId` populated, and then returns\nthe same pipeline with `pipelineId` populated. This id can be used\nto run the pipeline.\n\nCaller must have WRITE permission to the project.", - "request": { - "$ref": "Pipeline" - }, - "response": { - "$ref": "Pipeline" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1alpha2/pipelines", - "id": "genomics.pipelines.create", - "path": "v1alpha2/pipelines" - }, - "run": { - "request": { - "$ref": "RunPipelineRequest" - }, - "description": "Runs a pipeline. If `pipelineId` is specified in the request, then\nrun a saved pipeline. If `ephemeralPipeline` is specified, then run\nthat pipeline once without saving a copy.\n\nThe caller must have READ permission to the project where the pipeline\nis stored and WRITE permission to the project where the pipeline will be\nrun, as VMs will be created and storage will be used.\n\nIf a pipeline operation is still running after 6 days, it will be canceled.", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/compute", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": {}, - "flatPath": "v1alpha2/pipelines:run", - "id": "genomics.pipelines.run", - "path": "v1alpha2/pipelines:run" - } - } - }, - "operations": { - "methods": { - "get": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^operations/.+$", - "location": "path", - "description": "The name of the operation resource." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1alpha2/operations/{operationsId}", - "id": "genomics.operations.get", - "path": "v1alpha2/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "description": "Lists operations that match the specified filter in the request.", - "httpMethod": "GET", - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "pageSize": { - "format": "int32", - "description": "The maximum number of results to return. If unspecified, defaults to\n256. The maximum value is 2048.", - "type": "integer", - "location": "query" - }, - "filter": { - "location": "query", - "description": "A string for filtering Operations.\nThe following filter fields are supported:\n\n* projectId: Required. Corresponds to\n OperationMetadata.projectId.\n* createTime: The time this job was created, in seconds from the\n [epoch](http://en.wikipedia.org/wiki/Unix_time). Can use `\u003e=` and/or `\u003c=`\n operators.\n* status: Can be `RUNNING`, `SUCCESS`, `FAILURE`, or `CANCELED`. Only\n one status may be specified.\n* labels.key where key is a label key.\n\nExamples:\n\n* `projectId = my-project AND createTime \u003e= 1432140000`\n* `projectId = my-project AND createTime \u003e= 1432140000 AND createTime \u003c= 1432150000 AND status = RUNNING`\n* `projectId = my-project AND labels.color = *`\n* `projectId = my-project AND labels.color = red`", - "type": "string" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "The standard list page token." - }, - "name": { - "location": "path", - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true, - "pattern": "^operations$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "flatPath": "v1alpha2/operations", - "path": "v1alpha2/{+name}", - "id": "genomics.operations.list" - }, - "cancel": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/genomics" - ], - "parameters": { - "name": { - "pattern": "^operations/.+$", - "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true - } - }, - "flatPath": "v1alpha2/operations/{operationsId}:cancel", - "id": "genomics.operations.cancel", - "path": "v1alpha2/{+name}:cancel", - "request": { - "$ref": "CancelOperationRequest" - }, - "description": "Starts asynchronous cancellation on a long-running operation. The server makes a best effort to cancel the operation, but success is not guaranteed. Clients may use Operations.GetOperation or Operations.ListOperations to check whether the cancellation succeeded or the operation completed despite cancellation." } } } }, "parameters": { - "fields": { + "oauth_token": { "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "description": "OAuth 2.0 token for the current user.", "type": "string" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { "enumDescriptions": [ @@ -311,12 +340,6 @@ "type": "string" }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -324,11 +347,12 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], "type": "string" }, "key": { @@ -336,37 +360,21 @@ "type": "string", "location": "query" }, - "quotaUser": { + "access_token": { "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "description": "OAuth access token.", "type": "string" }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "description": "OAuth bearer token.", + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" }, - "oauth_token": { + "pp": { "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", + "description": "Pretty-print response.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" } }, "schemas": { @@ -374,7 +382,36 @@ "description": "Request to set operation status. Should only be used by VMs\ncreated by the Pipelines Service and not by end users.", "type": "object", "properties": { + "operationId": { + "type": "string" + }, + "validationToken": { + "format": "uint64", + "type": "string" + }, + "errorMessage": { + "type": "string" + }, "errorCode": { + "enumDescriptions": [ + "Not an error; returned on success\n\nHTTP Mapping: 200 OK", + "The operation was cancelled, typically by the caller.\n\nHTTP Mapping: 499 Client Closed Request", + "Unknown error. For example, this error may be returned when\na `Status` value received from another address space belongs to\nan error space that is not known in this address space. Also\nerrors raised by APIs that do not return enough error information\nmay be converted to this error.\n\nHTTP Mapping: 500 Internal Server Error", + "The client specified an invalid argument. Note that this differs\nfrom `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\nthat are problematic regardless of the state of the system\n(e.g., a malformed file name).\n\nHTTP Mapping: 400 Bad Request", + "The deadline expired before the operation could complete. For operations\nthat change the state of the system, this error may be returned\neven if the operation has completed successfully. For example, a\nsuccessful response from a server could have been delayed long\nenough for the deadline to expire.\n\nHTTP Mapping: 504 Gateway Timeout", + "Some requested entity (e.g., file or directory) was not found.\n\nNote to server developers: if a request is denied for an entire class\nof users, such as gradual feature rollout or undocumented whitelist,\n`NOT_FOUND` may be used. If a request is denied for some users within\na class of users, such as user-based access control, `PERMISSION_DENIED`\nmust be used.\n\nHTTP Mapping: 404 Not Found", + "The entity that a client attempted to create (e.g., file or directory)\nalready exists.\n\nHTTP Mapping: 409 Conflict", + "The caller does not have permission to execute the specified\noperation. `PERMISSION_DENIED` must not be used for rejections\ncaused by exhausting some resource (use `RESOURCE_EXHAUSTED`\ninstead for those errors). `PERMISSION_DENIED` must not be\nused if the caller can not be identified (use `UNAUTHENTICATED`\ninstead for those errors). This error code does not imply the\nrequest is valid or the requested entity exists or satisfies\nother pre-conditions.\n\nHTTP Mapping: 403 Forbidden", + "The request does not have valid authentication credentials for the\noperation.\n\nHTTP Mapping: 401 Unauthorized", + "Some resource has been exhausted, perhaps a per-user quota, or\nperhaps the entire file system is out of space.\n\nHTTP Mapping: 429 Too Many Requests", + "The operation was rejected because the system is not in a state\nrequired for the operation's execution. For example, the directory\nto be deleted is non-empty, an rmdir operation is applied to\na non-directory, etc.\n\nService implementors can use the following guidelines to decide\nbetween `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level\n (e.g., when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence).\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. E.g., if an \"rmdir\"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\nHTTP Mapping: 400 Bad Request", + "The operation was aborted, typically due to a concurrency issue such as\na sequencer check failure or transaction abort.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 409 Conflict", + "The operation was attempted past the valid range. E.g., seeking or\nreading past end-of-file.\n\nUnlike `INVALID_ARGUMENT`, this error indicates a problem that may\nbe fixed if the system state changes. For example, a 32-bit file\nsystem will generate `INVALID_ARGUMENT` if asked to read at an\noffset that is not in the range [0,2^32-1], but it will generate\n`OUT_OF_RANGE` if asked to read from an offset past the current\nfile size.\n\nThere is a fair bit of overlap between `FAILED_PRECONDITION` and\n`OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\nerror) when it applies so that callers who are iterating through\na space can easily look for an `OUT_OF_RANGE` error to detect when\nthey are done.\n\nHTTP Mapping: 400 Bad Request", + "The operation is not implemented or is not supported/enabled in this\nservice.\n\nHTTP Mapping: 501 Not Implemented", + "Internal errors. This means that some invariants expected by the\nunderlying system have been broken. This error code is reserved\nfor serious errors.\n\nHTTP Mapping: 500 Internal Server Error", + "The service is currently unavailable. This is most likely a\ntransient condition, which can be corrected by retrying with\na backoff.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 503 Service Unavailable", + "Unrecoverable data loss or corruption.\n\nHTTP Mapping: 500 Internal Server Error" + ], "enum": [ "OK", "CANCELLED", @@ -394,73 +431,19 @@ "UNAVAILABLE", "DATA_LOSS" ], - "type": "string", - "enumDescriptions": [ - "Not an error; returned on success\n\nHTTP Mapping: 200 OK", - "The operation was cancelled, typically by the caller.\n\nHTTP Mapping: 499 Client Closed Request", - "Unknown error. For example, this error may be returned when\na `Status` value received from another address space belongs to\nan error space that is not known in this address space. Also\nerrors raised by APIs that do not return enough error information\nmay be converted to this error.\n\nHTTP Mapping: 500 Internal Server Error", - "The client specified an invalid argument. Note that this differs\nfrom `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments\nthat are problematic regardless of the state of the system\n(e.g., a malformed file name).\n\nHTTP Mapping: 400 Bad Request", - "The deadline expired before the operation could complete. For operations\nthat change the state of the system, this error may be returned\neven if the operation has completed successfully. For example, a\nsuccessful response from a server could have been delayed long\nenough for the deadline to expire.\n\nHTTP Mapping: 504 Gateway Timeout", - "Some requested entity (e.g., file or directory) was not found.\n\nNote to server developers: if a request is denied for an entire class\nof users, such as gradual feature rollout or undocumented whitelist,\n`NOT_FOUND` may be used. If a request is denied for some users within\na class of users, such as user-based access control, `PERMISSION_DENIED`\nmust be used.\n\nHTTP Mapping: 404 Not Found", - "The entity that a client attempted to create (e.g., file or directory)\nalready exists.\n\nHTTP Mapping: 409 Conflict", - "The caller does not have permission to execute the specified\noperation. `PERMISSION_DENIED` must not be used for rejections\ncaused by exhausting some resource (use `RESOURCE_EXHAUSTED`\ninstead for those errors). `PERMISSION_DENIED` must not be\nused if the caller can not be identified (use `UNAUTHENTICATED`\ninstead for those errors). This error code does not imply the\nrequest is valid or the requested entity exists or satisfies\nother pre-conditions.\n\nHTTP Mapping: 403 Forbidden", - "The request does not have valid authentication credentials for the\noperation.\n\nHTTP Mapping: 401 Unauthorized", - "Some resource has been exhausted, perhaps a per-user quota, or\nperhaps the entire file system is out of space.\n\nHTTP Mapping: 429 Too Many Requests", - "The operation was rejected because the system is not in a state\nrequired for the operation's execution. For example, the directory\nto be deleted is non-empty, an rmdir operation is applied to\na non-directory, etc.\n\nService implementors can use the following guidelines to decide\nbetween `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n (b) Use `ABORTED` if the client should retry at a higher level\n (e.g., when a client-specified test-and-set fails, indicating the\n client should restart a read-modify-write sequence).\n (c) Use `FAILED_PRECONDITION` if the client should not retry until\n the system state has been explicitly fixed. E.g., if an \"rmdir\"\n fails because the directory is non-empty, `FAILED_PRECONDITION`\n should be returned since the client should not retry unless\n the files are deleted from the directory.\n\nHTTP Mapping: 400 Bad Request", - "The operation was aborted, typically due to a concurrency issue such as\na sequencer check failure or transaction abort.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 409 Conflict", - "The operation was attempted past the valid range. E.g., seeking or\nreading past end-of-file.\n\nUnlike `INVALID_ARGUMENT`, this error indicates a problem that may\nbe fixed if the system state changes. For example, a 32-bit file\nsystem will generate `INVALID_ARGUMENT` if asked to read at an\noffset that is not in the range [0,2^32-1], but it will generate\n`OUT_OF_RANGE` if asked to read from an offset past the current\nfile size.\n\nThere is a fair bit of overlap between `FAILED_PRECONDITION` and\n`OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific\nerror) when it applies so that callers who are iterating through\na space can easily look for an `OUT_OF_RANGE` error to detect when\nthey are done.\n\nHTTP Mapping: 400 Bad Request", - "The operation is not implemented or is not supported/enabled in this\nservice.\n\nHTTP Mapping: 501 Not Implemented", - "Internal errors. This means that some invariants expected by the\nunderlying system have been broken. This error code is reserved\nfor serious errors.\n\nHTTP Mapping: 500 Internal Server Error", - "The service is currently unavailable. This is most likely a\ntransient condition, which can be corrected by retrying with\na backoff.\n\nSee the guidelines above for deciding between `FAILED_PRECONDITION`,\n`ABORTED`, and `UNAVAILABLE`.\n\nHTTP Mapping: 503 Service Unavailable", - "Unrecoverable data loss or corruption.\n\nHTTP Mapping: 500 Internal Server Error" - ] + "type": "string" }, "timestampEvents": { "items": { "$ref": "TimestampEvent" }, "type": "array" - }, - "operationId": { - "type": "string" - }, - "validationToken": { - "format": "uint64", - "type": "string" - }, - "errorMessage": { - "type": "string" } }, "id": "SetOperationStatusRequest" }, - "ComputeEngine": { - "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.", - "type": "object", - "properties": { - "diskNames": { - "description": "The names of the disks that were created for this pipeline.", - "items": { - "type": "string" - }, - "type": "array" - }, - "machineType": { - "description": "The machine type of the instance.", - "type": "string" - }, - "instanceName": { - "description": "The instance on which the operation is running.", - "type": "string" - }, - "zone": { - "description": "The availability zone in which the instance resides.", - "type": "string" - } - }, - "id": "ComputeEngine" - }, "ImportVariantsResponse": { + "description": "The variant data import response.", "type": "object", "properties": { "callSetIds": { @@ -471,8 +454,33 @@ "type": "array" } }, - "id": "ImportVariantsResponse", - "description": "The variant data import response." + "id": "ImportVariantsResponse" + }, + "ComputeEngine": { + "description": "Describes a Compute Engine resource that is being managed by a running\npipeline.", + "type": "object", + "properties": { + "instanceName": { + "description": "The instance on which the operation is running.", + "type": "string" + }, + "zone": { + "description": "The availability zone in which the instance resides.", + "type": "string" + }, + "diskNames": { + "description": "The names of the disks that were created for this pipeline.", + "items": { + "type": "string" + }, + "type": "array" + }, + "machineType": { + "description": "The machine type of the instance.", + "type": "string" + } + }, + "id": "ComputeEngine" }, "TimestampEvent": { "description": "Stores the list of events and times they occured for major events in job\nexecution.", @@ -491,19 +499,19 @@ "id": "TimestampEvent" }, "LocalCopy": { - "id": "LocalCopy", "description": "LocalCopy defines how a remote file should be copied to and from the VM.", "type": "object", "properties": { - "path": { - "description": "Required. The path within the user's docker container where\nthis input should be localized to and from, relative to the specified\ndisk's mount point. For example: file.txt,", - "type": "string" - }, "disk": { "description": "Required. The name of the disk where this parameter is\nlocated. Can be the name of one of the disks specified in the\nResources field, or \"boot\", which represents the Docker\ninstance's boot disk and has a mount point of `/`.", "type": "string" + }, + "path": { + "description": "Required. The path within the user's docker container where\nthis input should be localized to and from, relative to the specified\ndisk's mount point. For example: file.txt,", + "type": "string" } - } + }, + "id": "LocalCopy" }, "DockerExecutor": { "description": "The Docker execuctor specification.", @@ -520,40 +528,10 @@ }, "id": "DockerExecutor" }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, "Disk": { "description": "A Google Compute Engine disk resource specification.", "type": "object", "properties": { - "source": { - "description": "The full or partial URL of the persistent disk to attach. See\nhttps://cloud.google.com/compute/docs/reference/latest/instances#resource\nand\nhttps://cloud.google.com/compute/docs/disks/persistent-disks#snapshots\nfor more details.", - "type": "string" - }, - "name": { - "description": "Required. The name of the disk that can be used in the pipeline\nparameters. Must be 1 - 63 characters.\nThe name \"boot\" is reserved for system use.", - "type": "string" - }, - "type": { - "enum": [ - "TYPE_UNSPECIFIED", - "PERSISTENT_HDD", - "PERSISTENT_SSD", - "LOCAL_SSD" - ], - "description": "Required. The type of the disk to create.", - "type": "string", - "enumDescriptions": [ - "Default disk type. Use one of the other options below.", - "Specifies a Google Compute Engine persistent hard disk. See\nhttps://cloud.google.com/compute/docs/disks/#pdspecs for details.", - "Specifies a Google Compute Engine persistent solid-state disk. See\nhttps://cloud.google.com/compute/docs/disks/#pdspecs for details.", - "Specifies a Google Compute Engine local SSD.\nSee https://cloud.google.com/compute/docs/disks/local-ssd for details." - ] - }, "autoDelete": { "description": "Deprecated. Disks created by the Pipelines API will be deleted at the end\nof the pipeline run, regardless of what this field is set to.", "type": "boolean" @@ -570,10 +548,40 @@ "readOnly": { "description": "Specifies how a sourced-base persistent disk will be mounted. See\nhttps://cloud.google.com/compute/docs/disks/persistent-disks#use_multi_instances\nfor more details.\nCan only be set at create time.", "type": "boolean" + }, + "source": { + "description": "The full or partial URL of the persistent disk to attach. See\nhttps://cloud.google.com/compute/docs/reference/latest/instances#resource\nand\nhttps://cloud.google.com/compute/docs/disks/persistent-disks#snapshots\nfor more details.", + "type": "string" + }, + "name": { + "description": "Required. The name of the disk that can be used in the pipeline\nparameters. Must be 1 - 63 characters.\nThe name \"boot\" is reserved for system use.", + "type": "string" + }, + "type": { + "description": "Required. The type of the disk to create.", + "type": "string", + "enumDescriptions": [ + "Default disk type. Use one of the other options below.", + "Specifies a Google Compute Engine persistent hard disk. See\nhttps://cloud.google.com/compute/docs/disks/#pdspecs for details.", + "Specifies a Google Compute Engine persistent solid-state disk. See\nhttps://cloud.google.com/compute/docs/disks/#pdspecs for details.", + "Specifies a Google Compute Engine local SSD.\nSee https://cloud.google.com/compute/docs/disks/local-ssd for details." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "PERSISTENT_HDD", + "PERSISTENT_SSD", + "LOCAL_SSD" + ] } }, "id": "Disk" }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, "PipelineParameter": { "description": "Parameters facilitate setting and delivering data into the\npipeline's execution environment. They are defined at create time,\nwith optional defaults, and can be overridden at run time.\n\nIf `localCopy` is unset, then the parameter specifies a string that\nis passed as-is into the pipeline, as the value of the environment\nvariable with the given name. A default value can be optionally\nspecified at create time. The default can be overridden at run time\nusing the inputs map. If no default is given, a value must be\nsupplied at runtime.\n\nIf `localCopy` is defined, then the parameter specifies a data\nsource or sink, both in Google Cloud Storage and on the Docker container\nwhere the pipeline computation is run. The service account associated with\nthe Pipeline (by\ndefault the project's Compute Engine service account) must have access to the\nGoogle Cloud Storage paths.\n\nAt run time, the Google Cloud Storage paths can be overridden if a default\nwas provided at create time, or must be set otherwise. The pipeline runner\nshould add a key/value pair to either the inputs or outputs map. The\nindicated data copies will be carried out before/after pipeline execution,\njust as if the corresponding arguments were provided to `gsutil cp`.\n\nFor example: Given the following `PipelineParameter`, specified\nin the `inputParameters` list:\n\n```\n{name: \"input_file\", localCopy: {path: \"file.txt\", disk: \"pd1\"}}\n```\n\nwhere `disk` is defined in the `PipelineResources` object as:\n\n```\n{name: \"pd1\", mountPoint: \"/mnt/disk/\"}\n```\n\nWe create a disk named `pd1`, mount it on the host VM, and map\n`/mnt/pd1` to `/mnt/disk` in the docker container. At\nruntime, an entry for `input_file` would be required in the inputs\nmap, such as:\n\n```\n inputs[\"input_file\"] = \"gs://my-bucket/bar.txt\"\n```\n\nThis would generate the following gsutil call:\n\n```\n gsutil cp gs://my-bucket/bar.txt /mnt/pd1/file.txt\n```\n\nThe file `/mnt/pd1/file.txt` maps to `/mnt/disk/file.txt` in the\nDocker container. Acceptable paths are:\n\n\u003ctable\u003e\n \u003cthead\u003e\n \u003ctr\u003e\u003cth\u003eGoogle Cloud storage path\u003c/th\u003e\u003cth\u003eLocal path\u003c/th\u003e\u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\u003ctd\u003efile\u003c/td\u003e\u003ctd\u003efile\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\u003ctd\u003eglob\u003c/td\u003e\u003ctd\u003edirectory\u003c/td\u003e\u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\nFor outputs, the direction of the copy is reversed:\n\n```\n gsutil cp /mnt/disk/file.txt gs://my-bucket/bar.txt\n```\n\nAcceptable paths are:\n\n\u003ctable\u003e\n \u003cthead\u003e\n \u003ctr\u003e\u003cth\u003eLocal path\u003c/th\u003e\u003cth\u003eGoogle Cloud Storage path\u003c/th\u003e\u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\u003ctd\u003efile\u003c/td\u003e\u003ctd\u003efile\u003c/td\u003e\u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003efile\u003c/td\u003e\n \u003ctd\u003edirectory - directory must already exist\u003c/td\u003e\n \u003c/tr\u003e\n \u003ctr\u003e\n \u003ctd\u003eglob\u003c/td\u003e\n \u003ctd\u003edirectory - directory will be created if it doesn't exist\u003c/td\u003e\u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\nOne restriction due to docker limitations, is that for outputs that are found\non the boot disk, the local path cannot be a glob and must be a file.", "type": "object", @@ -591,24 +599,25 @@ "type": "string" }, "localCopy": { - "description": "If present, this parameter is marked for copying to and from the VM.\n`LocalCopy` indicates where on the VM the file should be. The value\ngiven to this parameter (either at runtime or using `defaultValue`)\nmust be the remote path where the file should be.", - "$ref": "LocalCopy" + "$ref": "LocalCopy", + "description": "If present, this parameter is marked for copying to and from the VM.\n`LocalCopy` indicates where on the VM the file should be. The value\ngiven to this parameter (either at runtime or using `defaultValue`)\nmust be the remote path where the file should be." } }, "id": "PipelineParameter" }, "LoggingOptions": { + "description": "The logging options for the pipeline run.", + "type": "object", "properties": { "gcsPath": { "description": "The location in Google Cloud Storage to which the pipeline logs\nwill be copied. Can be specified as a fully qualified directory\npath, in which case logs will be output with a unique identifier\nas the filename in that directory, or as a fully specified path,\nwhich must end in `.log`, in which case that path will be\nused, and the user must ensure that logs are not\noverwritten. Stdout and stderr logs from the run are also\ngenerated and output as `-stdout.log` and `-stderr.log`.", "type": "string" } }, - "id": "LoggingOptions", - "description": "The logging options for the pipeline run.", - "type": "object" + "id": "LoggingOptions" }, "RunPipelineRequest": { + "description": "The request to run a pipeline. If `pipelineId` is specified, it\nrefers to a saved pipeline created with CreatePipeline and set as\nthe `pipelineId` of the returned Pipeline object. If\n`ephemeralPipeline` is specified, that pipeline is run once\nwith the given args and not saved. It is an error to specify both\n`pipelineId` and `ephemeralPipeline`. `pipelineArgs`\nmust be specified.", "type": "object", "properties": { "pipelineArgs": { @@ -624,8 +633,7 @@ "$ref": "Pipeline" } }, - "id": "RunPipelineRequest", - "description": "The request to run a pipeline. If `pipelineId` is specified, it\nrefers to a saved pipeline created with CreatePipeline and set as\nthe `pipelineId` of the returned Pipeline object. If\n`ephemeralPipeline` is specified, that pipeline is run once\nwith the given args and not saved. It is an error to specify both\n`pipelineId` and `ephemeralPipeline`. `pipelineArgs`\nmust be specified." + "id": "RunPipelineRequest" }, "CancelOperationRequest": { "description": "The request message for Operations.CancelOperation.", @@ -642,28 +650,28 @@ "type": "boolean" }, "response": { + "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an empty response is returned.", + "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - }, - "description": "If importing ReadGroupSets, an ImportReadGroupSetsResponse is returned. If importing Variants, an ImportVariantsResponse is returned. For pipelines and exports, an empty response is returned.", - "type": "object" + } }, "name": { "description": "The server-assigned name, which is only unique within the same service that originally returns it. For example: `operations/CJHU7Oi_ChDrveSpBRjfuL-qzoWAgEw`", "type": "string" }, "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" }, "metadata": { + "description": "An OperationMetadata object. This will always be returned with the Operation.", "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - }, - "description": "An OperationMetadata object. This will always be returned with the Operation." + } } }, "id": "Operation" @@ -673,8 +681,8 @@ "type": "object", "properties": { "computeEngine": { - "$ref": "ComputeEngine", - "description": "Execution information specific to Google Compute Engine." + "description": "Execution information specific to Google Compute Engine.", + "$ref": "ComputeEngine" } }, "id": "RuntimeMetadata" @@ -697,10 +705,6 @@ "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { @@ -716,6 +720,10 @@ "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" } }, "id": "Status" @@ -739,6 +747,8 @@ "id": "ServiceAccount" }, "Pipeline": { + "description": "The pipeline object. Represents a transformation from a set of input\nparameters to a set of output parameters. The transformation is defined\nas a docker image and command to run within that image. Each pipeline\nis run on a Google Compute Engine VM. A pipeline can be created with the\n`create` method and then later run with the `run` method, or a pipeline can\nbe defined and run all at once with the `run` method.", + "type": "object", "properties": { "outputParameters": { "description": "Output parameters of the pipeline.", @@ -775,13 +785,11 @@ "type": "string" }, "projectId": { - "type": "string", - "description": "Required. The project in which to create the pipeline. The caller must have\nWRITE access." + "description": "Required. The project in which to create the pipeline. The caller must have\nWRITE access.", + "type": "string" } }, - "id": "Pipeline", - "description": "The pipeline object. Represents a transformation from a set of input\nparameters to a set of output parameters. The transformation is defined\nas a docker image and command to run within that image. Each pipeline\nis run on a Google Compute Engine VM. A pipeline can be created with the\n`create` method and then later run with the `run` method, or a pipeline can\nbe defined and run all at once with the `run` method.", - "type": "object" + "id": "Pipeline" }, "PipelineResources": { "description": "The system resources for the pipeline run.", @@ -811,9 +819,9 @@ "type": "array" }, "bootDiskSizeGb": { - "type": "integer", "format": "int32", - "description": "The size of the boot disk. Defaults to 10 (GB)." + "description": "The size of the boot disk. Defaults to 10 (GB).", + "type": "integer" }, "preemptible": { "description": "Whether to use preemptible VMs. Defaults to `false`. In order to use this,\nmust be true for both create time and run time. Cannot be true at run time\nif false at create time.", @@ -827,43 +835,10 @@ }, "id": "PipelineResources" }, - "OperationEvent": { - "description": "An event that occurred during an Operation.", - "type": "object", - "properties": { - "startTime": { - "format": "google-datetime", - "description": "Optional time of when event started.", - "type": "string" - }, - "description": { - "description": "Required description of event.", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.", - "type": "string" - } - }, - "id": "OperationEvent" - }, "ControllerConfig": { "description": "Stores the information that the controller will fetch from the\nserver in order to run. Should only be used by VMs created by the\nPipelines Service and not by end users.", "type": "object", "properties": { - "machineType": { - "type": "string" - }, - "cmd": { - "type": "string" - }, - "vars": { - "type": "object", - "additionalProperties": { - "type": "string" - } - }, "image": { "type": "string" }, @@ -877,12 +852,24 @@ } }, "gcsSinks": { - "type": "object", "additionalProperties": { "$ref": "RepeatedString" - } + }, + "type": "object" }, "disks": { + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "machineType": { + "type": "string" + }, + "cmd": { + "type": "string" + }, + "vars": { "additionalProperties": { "type": "string" }, @@ -891,6 +878,27 @@ }, "id": "ControllerConfig" }, + "OperationEvent": { + "description": "An event that occurred during an Operation.", + "type": "object", + "properties": { + "description": { + "description": "Required description of event.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Optional time of when event finished. An event can have a start time and no\nfinish time. If an event has a finish time, there must be a start time.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Optional time of when event started.", + "type": "string" + } + }, + "id": "OperationEvent" + }, "RepeatedString": { "type": "object", "properties": { @@ -907,16 +915,16 @@ "description": "The response message for Operations.ListOperations.", "type": "object", "properties": { - "nextPageToken": { - "type": "string", - "description": "The standard List next-page token." - }, "operations": { "description": "A list of operations that matches the specified filter in the request.", "items": { "$ref": "Operation" }, "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" } }, "id": "ListOperationsResponse" @@ -925,16 +933,20 @@ "description": "Metadata describing an Operation.", "type": "object", "properties": { + "projectId": { + "description": "The Google Cloud Project in which the job is scoped.", + "type": "string" + }, "clientId": { "description": "This field is deprecated. Use `labels` instead. Optionally provided by the\ncaller when submitting the request that creates the operation.", "type": "string" }, "events": { + "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export.", "items": { "$ref": "OperationEvent" }, - "type": "array", - "description": "Optional event messages that were generated during the job's execution.\nThis also contains any warnings that were generated during import\nor export." + "type": "array" }, "endTime": { "format": "google-datetime", @@ -947,21 +959,21 @@ "type": "string" }, "request": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, "description": "The original request that started the operation. Note that this will be in\ncurrent version of the API. If the operation was started with v1beta2 API\nand a GetOperation is performed on v1 API, a v1 request will be returned.", + "type": "object" + }, + "runtimeMetadata": { + "description": "Runtime metadata on this Operation.", "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" } }, - "runtimeMetadata": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Runtime metadata on this Operation." - }, "labels": { "additionalProperties": { "type": "string" @@ -973,15 +985,66 @@ "format": "google-datetime", "description": "The time at which the job was submitted to the Genomics service.", "type": "string" - }, - "projectId": { - "description": "The Google Cloud Project in which the job is scoped.", - "type": "string" } }, "id": "OperationMetadata" }, + "RunPipelineArgs": { + "description": "The pipeline run arguments.", + "type": "object", + "properties": { + "logging": { + "$ref": "LoggingOptions", + "description": "Required. Logging options. Used by the service to communicate results\nto the user." + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Labels to apply to this pipeline run. Labels will also be applied to\ncompute resources (VM, disks) created by this pipeline run. When listing\noperations, operations can filtered by labels.\nLabel keys may not be empty; label values may be empty. Non-empty labels\nmust be 1-63 characters long, and comply with [RFC1035]\n(https://www.ietf.org/rfc/rfc1035.txt).\nSpecifically, the name must be 1-63 characters long and match the regular\nexpression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first\ncharacter must be a lowercase letter, and all following characters must be\na dash, lowercase letter, or digit, except the last character, which cannot\nbe a dash.", + "type": "object" + }, + "keepVmAliveOnFailureDuration": { + "format": "google-duration", + "description": "How long to keep the VM up after a failure (for example docker command\nfailed, copying input or output files failed, etc). While the VM is up, one\ncan ssh into the VM to debug. Default is 0; maximum allowed value is 1 day.", + "type": "string" + }, + "resources": { + "$ref": "PipelineResources", + "description": "Specifies resource requirements/overrides for the pipeline run." + }, + "outputs": { + "description": "Pipeline output arguments; keys are defined in the pipeline\ndocumentation. All output parameters of without default values\nmust be specified. If parameters with defaults are specified\nhere, the defaults will be overridden.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "projectId": { + "description": "Required. The project in which to run the pipeline. The caller must have\nWRITER access to all Google Cloud services and resources (e.g. Google\nCompute Engine) will be used.", + "type": "string" + }, + "clientId": { + "description": "This field is deprecated. Use `labels` instead. Client-specified pipeline\noperation identifier.", + "type": "string" + }, + "inputs": { + "description": "Pipeline input arguments; keys are defined in the pipeline documentation.\nAll input parameters that do not have default values must be specified.\nIf parameters with defaults are specified here, the defaults will be\noverridden.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "serviceAccount": { + "$ref": "ServiceAccount", + "description": "The Google Cloud Service Account that will be used to access data and\nservices. By default, the compute service account associated with\n`projectId` is used." + } + }, + "id": "RunPipelineArgs" + }, "ListPipelinesResponse": { + "description": "The response of ListPipelines. Contains at most `pageSize`\npipelines. If it contains `pageSize` pipelines, and more pipelines\nexist, then `nextPageToken` will be populated and should be\nused as the `pageToken` argument to a subsequent ListPipelines\nrequest.", + "type": "object", "properties": { "nextPageToken": { "description": "The token to use to get the next page of results.", @@ -995,62 +1058,7 @@ "type": "array" } }, - "id": "ListPipelinesResponse", - "description": "The response of ListPipelines. Contains at most `pageSize`\npipelines. If it contains `pageSize` pipelines, and more pipelines\nexist, then `nextPageToken` will be populated and should be\nused as the `pageToken` argument to a subsequent ListPipelines\nrequest.", - "type": "object" - }, - "RunPipelineArgs": { - "description": "The pipeline run arguments.", - "type": "object", - "properties": { - "projectId": { - "description": "Required. The project in which to run the pipeline. The caller must have\nWRITER access to all Google Cloud services and resources (e.g. Google\nCompute Engine) will be used.", - "type": "string" - }, - "clientId": { - "description": "This field is deprecated. Use `labels` instead. Client-specified pipeline\noperation identifier.", - "type": "string" - }, - "serviceAccount": { - "$ref": "ServiceAccount", - "description": "The Google Cloud Service Account that will be used to access data and\nservices. By default, the compute service account associated with\n`projectId` is used." - }, - "inputs": { - "type": "object", - "additionalProperties": { - "type": "string" - }, - "description": "Pipeline input arguments; keys are defined in the pipeline documentation.\nAll input parameters that do not have default values must be specified.\nIf parameters with defaults are specified here, the defaults will be\noverridden." - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels to apply to this pipeline run. Labels will also be applied to\ncompute resources (VM, disks) created by this pipeline run. When listing\noperations, operations can filtered by labels.\nLabel keys may not be empty; label values may be empty. Non-empty labels\nmust be 1-63 characters long, and comply with [RFC1035]\n(https://www.ietf.org/rfc/rfc1035.txt).\nSpecifically, the name must be 1-63 characters long and match the regular\nexpression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first\ncharacter must be a lowercase letter, and all following characters must be\na dash, lowercase letter, or digit, except the last character, which cannot\nbe a dash.", - "type": "object" - }, - "logging": { - "$ref": "LoggingOptions", - "description": "Required. Logging options. Used by the service to communicate results\nto the user." - }, - "outputs": { - "description": "Pipeline output arguments; keys are defined in the pipeline\ndocumentation. All output parameters of without default values\nmust be specified. If parameters with defaults are specified\nhere, the defaults will be overridden.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "resources": { - "$ref": "PipelineResources", - "description": "Specifies resource requirements/overrides for the pipeline run." - }, - "keepVmAliveOnFailureDuration": { - "format": "google-duration", - "description": "How long to keep the VM up after a failure (for example docker command\nfailed, copying input or output files failed, etc). While the VM is up, one\ncan ssh into the VM to debug. Default is 0; maximum allowed value is 1 day.", - "type": "string" - } - }, - "id": "RunPipelineArgs" + "id": "ListPipelinesResponse" } }, "protocol": "rest", @@ -1063,28 +1071,20 @@ "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/genomics": { "description": "View and manage Genomics data" }, "https://www.googleapis.com/auth/compute": { "description": "View and manage your Google Compute Engine resources" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" } } } }, - "servicePath": "", - "description": "Upload, process, query, and search Genomics data in the cloud.", "kind": "discovery#restDescription", - "rootUrl": "https://genomics.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "genomics", - "batchPath": "batch", - "id": "genomics:v1alpha2", - "documentationLink": "https://cloud.google.com/genomics", - "revision": "20170824", - "title": "Genomics API" + "description": "Upload, process, query, and search Genomics data in the cloud.", + "servicePath": "", + "rootUrl": "https://genomics.googleapis.com/" } diff --git a/vendor/google.golang.org/api/gensupport/send_test.go b/vendor/google.golang.org/api/gensupport/send_test.go new file mode 100644 index 0000000..2219eb3 --- /dev/null +++ b/vendor/google.golang.org/api/gensupport/send_test.go @@ -0,0 +1,20 @@ +// Copyright 2017 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gensupport + +import ( + "net/http" + "testing" +) + +func TestSendRequest(t *testing.T) { + // Setting Accept-Encoding should give an error immediately. + req, _ := http.NewRequest("GET", "url", nil) + req.Header.Set("Accept-Encoding", "") + _, err := SendRequest(nil, nil, req) + if err == nil { + t.Error("got nil, want error") + } +} diff --git a/vendor/google.golang.org/api/google-api-go-generator/Makefile b/vendor/google.golang.org/api/google-api-go-generator/Makefile new file mode 100644 index 0000000..a85d523 --- /dev/null +++ b/vendor/google.golang.org/api/google-api-go-generator/Makefile @@ -0,0 +1,34 @@ +# This Makefile is for library maintainers, not end-developers. +# All the generated code is already checked in. + +API_JSON = $(wildcard ../*/*/*-api.json ../*/*/*/*-api.json) + +GENERATOR=./google-api-go-generator + +# Download all API specifications and rebuild Go bindings. +# All downloaded files are cached in $TMPDIR for reuse with 'cached' below. +all: $(GENERATOR) + $(GENERATOR) -cache=false -install -api=* + +# Reuse cached API specifications in $TMPDIR and rebuild Go bindings. +cached: $(GENERATOR) + $(GENERATOR) -cache=true -install -api=* + +# Only rebuild Go bindings, do not modify API specifications. +# For every existing */*/*-api.json file, */*/*-gen.go will be built. +local: $(API_JSON:-api.json=-gen.go) + +# Pattern rule for the 'local' target. +# Translates otherwise unnamed targets with a -gen.go suffix into the +# matching input file with a -api.json suffix. $< is the input file. +%-gen.go: %-api.json $(GENERATOR) + $(GENERATOR) -api_json_file=$< + +# Alias to rebuild and install $(GENERATOR) +generator: $(GENERATOR) + +# Marked as .PHONY so that make always invokes go build. +$(GENERATOR): + go build -o $@ + +.PHONY: all cached local generator $(GENERATOR) diff --git a/vendor/google.golang.org/api/iam/v1/iam-api.json b/vendor/google.golang.org/api/iam/v1/iam-api.json index 6a370c1..8e5071f 100644 --- a/vendor/google.golang.org/api/iam/v1/iam-api.json +++ b/vendor/google.golang.org/api/iam/v1/iam-api.json @@ -1,1310 +1,24 @@ { - "basePath": "", - "revision": "20170824", - "documentationLink": "https://cloud.google.com/iam/", - "id": "iam:v1", - "discoveryVersion": "v1", - "version_module": true, - "schemas": { - "CreateServiceAccountKeyRequest": { - "type": "object", - "properties": { - "keyAlgorithm": { - "type": "string", - "enumDescriptions": [ - "An unspecified key algorithm.", - "1k RSA Key.", - "2k RSA Key." - ], - "enum": [ - "KEY_ALG_UNSPECIFIED", - "KEY_ALG_RSA_1024", - "KEY_ALG_RSA_2048" - ], - "description": "Which type of key and algorithm to use for the key.\nThe default is currently a 2K RSA key. However this may change in the\nfuture." - }, - "privateKeyType": { - "type": "string", - "enumDescriptions": [ - "Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`.", - "PKCS12 format.\nThe password for the PKCS12 file is `notasecret`.\nFor more information, see https://tools.ietf.org/html/rfc7292.", - "Google Credentials File format." - ], - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_PKCS12_FILE", - "TYPE_GOOGLE_CREDENTIALS_FILE" - ], - "description": "The output format of the private key. `GOOGLE_CREDENTIALS_FILE` is the\ndefault output format." - } - }, - "id": "CreateServiceAccountKeyRequest", - "description": "The service account key create request." - }, - "SignJwtResponse": { - "type": "object", - "properties": { - "signedJwt": { - "description": "The signed JWT.", - "type": "string" - }, - "keyId": { - "type": "string", - "description": "The id of the key used to sign the JWT." - } - }, - "id": "SignJwtResponse", - "description": "The service account sign JWT response." - }, - "TestIamPermissionsRequest": { - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest", - "description": "Request message for `TestIamPermissions` method." - }, - "Policy": { - "type": "object", - "properties": { - "bindings": { - "items": { - "$ref": "Binding" - }, - "type": "array", - "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error." - }, - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - }, - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - } - }, - "id": "Policy", - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam)." - }, - "ListRolesResponse": { - "description": "The response containing the roles defined under a resource.", - "type": "object", - "properties": { - "nextPageToken": { - "type": "string", - "description": "To retrieve the next page of results, set\n`ListRolesRequest.page_token` to this value." - }, - "roles": { - "description": "The Roles defined on this resource.", - "items": { - "$ref": "Role" - }, - "type": "array" - } - }, - "id": "ListRolesResponse" - }, - "AuditData": { - "description": "Audit log information specific to Cloud IAM. This message is serialized\nas an `Any` type in the `ServiceData` message of an\n`AuditLog` message.", - "type": "object", - "properties": { - "policyDelta": { - "$ref": "PolicyDelta", - "description": "Policy delta between the original policy and the newly set policy." - } - }, - "id": "AuditData" - }, - "BindingDelta": { - "description": "One delta entry for Binding. Each individual change (only one member in each\nentry) to a binding will be a separate entry.", - "type": "object", - "properties": { - "condition": { - "$ref": "Expr", - "description": "The condition that is associated with this binding.\nThis field is GOOGLE_INTERNAL.\nThis field is not logged in IAM side because it's only for audit logging.\nOptional" - }, - "member": { - "description": "A single identity requesting access for a Cloud Platform resource.\nFollows the same format of Binding.members.\nRequired", - "type": "string" - }, - "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" - }, - "action": { - "enum": [ - "ACTION_UNSPECIFIED", - "ADD", - "REMOVE" - ], - "description": "The action that was performed on a Binding.\nRequired", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Addition of a Binding.", - "Removal of a Binding." - ] - } - }, - "id": "BindingDelta" - }, - "UndeleteRoleRequest": { - "description": "The request to undelete an existing role.", - "type": "object", - "properties": { - "etag": { - "type": "string", - "format": "byte", - "description": "Used to perform a consistent read-modify-write." - } - }, - "id": "UndeleteRoleRequest" - }, - "CreateServiceAccountRequest": { - "type": "object", - "properties": { - "serviceAccount": { - "$ref": "ServiceAccount", - "description": "The ServiceAccount resource to create.\nCurrently, only the following values are user assignable:\n`display_name` ." - }, - "accountId": { - "description": "Required. The account id that is used to generate the service account\nemail address and a stable unique id. It is unique within a project,\nmust be 6-30 characters long, and match the regular expression\n`[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035.", - "type": "string" - } - }, - "id": "CreateServiceAccountRequest", - "description": "The service account create request." - }, - "Role": { - "type": "object", - "properties": { - "deleted": { - "description": "The current deleted state of the role. This field is read only.\nIt will be ignored in calls to CreateRole and UpdateRole.", - "type": "boolean" - }, - "title": { - "description": "Optional. A human-readable title for the role. Typically this\nis limited to 100 UTF-8 bytes.", - "type": "string" - }, - "includedPermissions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "The names of the permissions this role grants when bound in an IAM policy." - }, - "description": { - "type": "string", - "description": "Optional. A human-readable description for the role." - }, - "etag": { - "format": "byte", - "description": "Used to perform a consistent read-modify-write.", - "type": "string" - }, - "stage": { - "type": "string", - "enumDescriptions": [ - "The user has indicated this role is currently in an alpha phase.", - "The user has indicated this role is currently in a beta phase.", - "The user has indicated this role is generally available.", - "The user has indicated this role is being deprecated.", - "This role is disabled and will not contribute permissions to any members\nit is granted to in policies.", - "The user has indicated this role is currently in an eap phase." - ], - "enum": [ - "ALPHA", - "BETA", - "GA", - "DEPRECATED", - "DISABLED", - "EAP" - ], - "description": "The current launch stage of the role." - }, - "name": { - "description": "The name of the role.\n\nWhen Role is used in CreateRole, the role name must not be set.\n\nWhen Role is used in output and other input such as UpdateRole, the role\nname is the complete path, e.g., roles/logging.viewer for curated roles\nand organizations/{ORGANIZATION_ID}/roles/logging.viewer for custom roles.", - "type": "string" - } - }, - "id": "Role", - "description": "A role in the Identity and Access Management API." - }, - "Binding": { - "type": "object", - "properties": { - "members": { - "items": { - "type": "string" - }, - "type": "array", - "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n" - }, - "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" - } - }, - "id": "Binding", - "description": "Associates `members` with a `role`." - }, - "ServiceAccount": { - "description": "A service account in the Identity and Access Management API.\n\nTo create a service account, specify the `project_id` and the `account_id`\nfor the account. The `account_id` is unique within the project, and is used\nto generate the service account email address and a stable\n`unique_id`.\n\nIf the account already exists, the account's resource name is returned\nin util::Status's ResourceInfo.resource_name in the format of\nprojects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can\nuse the name in other methods to access the account.\n\nAll other methods can identify the service account using the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "object", - "properties": { - "email": { - "description": "@OutputOnly The email address of the service account.", - "type": "string" - }, - "name": { - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nRequests using `-` as a wildcard for the project will infer the project\nfrom the `account` and the `account` value can be the `email` address or\nthe `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.", - "type": "string" - }, - "projectId": { - "type": "string", - "description": "@OutputOnly The id of the project that owns the service account." - }, - "uniqueId": { - "type": "string", - "description": "@OutputOnly The unique and stable id of the service account." - }, - "oauth2ClientId": { - "type": "string", - "description": "@OutputOnly. The OAuth2 client id for the service account.\nThis is used in conjunction with the OAuth2 clientconfig API to make\nthree legged OAuth2 (3LO) flows to access the data of Google users." - }, - "displayName": { - "type": "string", - "description": "Optional. A user-specified description of the service account. Must be\nfewer than 100 UTF-8 bytes." - }, - "etag": { - "format": "byte", - "description": "Used to perform a consistent read-modify-write.", - "type": "string" - } - }, - "id": "ServiceAccount" - }, - "QueryGrantableRolesRequest": { - "description": "The grantable role query request.", - "type": "object", - "properties": { - "fullResourceName": { - "description": "Required. The full resource name to query from the list of grantable roles.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`.", - "type": "string" - }, - "pageToken": { - "type": "string", - "description": "Optional pagination token returned in an earlier\nQueryGrantableRolesResponse." - }, - "pageSize": { - "type": "integer", - "format": "int32", - "description": "Optional limit on the number of roles to include in the response." - }, - "view": { - "type": "string", - "enumDescriptions": [ - "Omits the `included_permissions` field.\nThis is the default value.", - "Returns all fields." - ], - "enum": [ - "BASIC", - "FULL" - ] - } - }, - "id": "QueryGrantableRolesRequest" - }, - "Expr": { - "description": "Represents an expression text. Example:\n\n title: \"User account presence\"\n description: \"Determines whether the request has a user account\"\n expression: \"size(request.user) \u003e 0\"", - "type": "object", - "properties": { - "location": { - "type": "string", - "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file." - }, - "title": { - "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.", - "type": "string" - }, - "description": { - "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", - "type": "string" - }, - "expression": { - "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", - "type": "string" - } - }, - "id": "Expr" - }, - "CreateRoleRequest": { - "description": "The request to create a new role.", - "type": "object", - "properties": { - "roleId": { - "description": "The role id to use for this role.", - "type": "string" - }, - "role": { - "$ref": "Role", - "description": "The Role resource to create." - } - }, - "id": "CreateRoleRequest" - }, - "ListServiceAccountKeysResponse": { - "type": "object", - "properties": { - "keys": { - "description": "The public keys for the service account.", - "items": { - "$ref": "ServiceAccountKey" - }, - "type": "array" - } - }, - "id": "ListServiceAccountKeysResponse", - "description": "The service account keys list response." - }, - "TestIamPermissionsResponse": { - "type": "object", - "properties": { - "permissions": { - "items": { - "type": "string" - }, - "type": "array", - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed." - } - }, - "id": "TestIamPermissionsResponse", - "description": "Response message for `TestIamPermissions` method." - }, - "QueryTestablePermissionsRequest": { - "type": "object", - "properties": { - "fullResourceName": { - "type": "string", - "description": "Required. The full resource name to query from the list of testable\npermissions.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`." - }, - "pageToken": { - "description": "Optional pagination token returned in an earlier\nQueryTestablePermissionsRequest.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional limit on the number of permissions to include in the response.", - "type": "integer" - } - }, - "id": "QueryTestablePermissionsRequest", - "description": "A request to get permissions which can be tested on a resource." - }, - "ServiceAccountKey": { - "type": "object", - "properties": { - "privateKeyData": { - "type": "string", - "format": "byte", - "description": "The private key data. Only provided in `CreateServiceAccountKey`\nresponses. Make sure to keep the private key data secure because it\nallows for the assertion of the service account identity.\nWhen decoded, the private key data can be used to authenticate with\nGoogle API client libraries and with\n\u003ca href=\"/sdk/gcloud/reference/auth/activate-service-account\"\u003egcloud\nauth activate-service-account\u003c/a\u003e." - }, - "publicKeyData": { - "type": "string", - "format": "byte", - "description": "The public key data. Only provided in `GetServiceAccountKey` responses." - }, - "name": { - "description": "The resource name of the service account key in the following format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.", - "type": "string" - }, - "validBeforeTime": { - "type": "string", - "format": "google-datetime", - "description": "The key can be used before this timestamp." - }, - "keyAlgorithm": { - "type": "string", - "enumDescriptions": [ - "An unspecified key algorithm.", - "1k RSA Key.", - "2k RSA Key." - ], - "enum": [ - "KEY_ALG_UNSPECIFIED", - "KEY_ALG_RSA_1024", - "KEY_ALG_RSA_2048" - ], - "description": "Specifies the algorithm (and possibly key size) for the key." - }, - "privateKeyType": { - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_PKCS12_FILE", - "TYPE_GOOGLE_CREDENTIALS_FILE" - ], - "description": "The output format for the private key.\nOnly provided in `CreateServiceAccountKey` responses, not\nin `GetServiceAccountKey` or `ListServiceAccountKey` responses.\n\nGoogle never exposes system-managed private keys, and never retains\nuser-managed private keys.", - "type": "string", - "enumDescriptions": [ - "Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`.", - "PKCS12 format.\nThe password for the PKCS12 file is `notasecret`.\nFor more information, see https://tools.ietf.org/html/rfc7292.", - "Google Credentials File format." - ] - }, - "validAfterTime": { - "format": "google-datetime", - "description": "The key can be used after this timestamp.", - "type": "string" - } - }, - "id": "ServiceAccountKey", - "description": "Represents a service account key.\n\nA service account has two sets of key-pairs: user-managed, and\nsystem-managed.\n\nUser-managed key-pairs can be created and deleted by users. Users are\nresponsible for rotating these keys periodically to ensure security of\ntheir service accounts. Users retain the private key of these key-pairs,\nand Google retains ONLY the public key.\n\nSystem-managed key-pairs are managed automatically by Google, and rotated\ndaily without user intervention. The private key never leaves Google's\nservers to maximize security.\n\nPublic keys for all service accounts are also published at the OAuth2\nService Account API." - }, - "SignBlobResponse": { - "type": "object", - "properties": { - "keyId": { - "description": "The id of the key used to sign the blob.", - "type": "string" - }, - "signature": { - "type": "string", - "format": "byte", - "description": "The signed blob." - } - }, - "id": "SignBlobResponse", - "description": "The service account sign blob response." - }, - "Permission": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "The name of this Permission." - }, - "onlyInPredefinedRoles": { - "type": "boolean", - "description": "This permission can ONLY be used in predefined roles." - }, - "title": { - "description": "The title of this Permission.", - "type": "string" - }, - "description": { - "description": "A brief description of what this Permission is used for.", - "type": "string" - }, - "customRolesSupportLevel": { - "enum": [ - "SUPPORTED", - "TESTING", - "NOT_SUPPORTED" - ], - "description": "The current custom role support level.", - "type": "string", - "enumDescriptions": [ - "Permission is fully supported for custom role use.", - "Permission is being tested to check custom role compatibility.", - "Permission is not supported for custom role use." - ] - }, - "stage": { - "type": "string", - "enumDescriptions": [ - "The permission is currently in an alpha phase.", - "The permission is currently in a beta phase.", - "The permission is generally available.", - "The permission is being deprecated." - ], - "enum": [ - "ALPHA", - "BETA", - "GA", - "DEPRECATED" - ], - "description": "The current launch stage of the permission." - } - }, - "id": "Permission", - "description": "A permission which can be included by a role." - }, - "SignJwtRequest": { - "description": "The service account sign JWT request.", - "type": "object", - "properties": { - "payload": { - "description": "The JWT payload to sign, a JSON JWT Claim set.", - "type": "string" - } - }, - "id": "SignJwtRequest" - }, - "PolicyDelta": { - "type": "object", - "properties": { - "bindingDeltas": { - "description": "The delta for Bindings between two policies.", - "items": { - "$ref": "BindingDelta" - }, - "type": "array" - } - }, - "id": "PolicyDelta", - "description": "The difference delta between two policies." - }, - "ListServiceAccountsResponse": { - "description": "The service account list response.", - "type": "object", - "properties": { - "nextPageToken": { - "type": "string", - "description": "To retrieve the next page of results, set\nListServiceAccountsRequest.page_token\nto this value." - }, - "accounts": { - "items": { - "$ref": "ServiceAccount" - }, - "type": "array", - "description": "The list of matching service accounts." - } - }, - "id": "ListServiceAccountsResponse" - }, - "QueryGrantableRolesResponse": { - "description": "The grantable role query response.", - "type": "object", - "properties": { - "nextPageToken": { - "type": "string", - "description": "To retrieve the next page of results, set\n`QueryGrantableRolesRequest.page_token` to this value." - }, - "roles": { - "items": { - "$ref": "Role" - }, - "type": "array", - "description": "The list of matching roles." - } - }, - "id": "QueryGrantableRolesResponse" - }, - "SignBlobRequest": { - "type": "object", - "properties": { - "bytesToSign": { - "format": "byte", - "description": "The bytes to sign.", - "type": "string" - } - }, - "id": "SignBlobRequest", - "description": "The service account sign blob request." - }, - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - } - }, - "id": "SetIamPolicyRequest" - }, - "QueryTestablePermissionsResponse": { - "description": "The response containing permissions which can be tested on a resource.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "To retrieve the next page of results, set\n`QueryTestableRolesRequest.page_token` to this value.", - "type": "string" - }, - "permissions": { - "items": { - "$ref": "Permission" - }, - "type": "array", - "description": "The Permissions testable on the requested resource." - } - }, - "id": "QueryTestablePermissionsResponse" - }, - "Empty": { - "type": "object", - "properties": {}, - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." - } - }, - "protocol": "rest", - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, - "canonicalName": "iam", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "rootUrl": "https://iam.googleapis.com/", - "ownerDomain": "google.com", - "name": "iam", - "batchPath": "batch", - "fullyEncodeReservedExpansion": true, - "title": "Google Identity and Access Management (IAM) API", - "ownerName": "Google", "resources": { - "projects": { - "resources": { - "roles": { - "methods": { - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Role" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "A mask describing which fields in the Role have changed.", - "type": "string" - }, - "name": { - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/roles/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", - "path": "v1/{+name}", - "id": "iam.projects.roles.patch", - "request": { - "$ref": "Role" - }, - "description": "Updates a Role definition." - }, - "undelete": { - "flatPath": "v1/projects/{projectsId}/roles/{rolesId}:undelete", - "path": "v1/{+name}:undelete", - "id": "iam.projects.roles.undelete", - "description": "Undelete a Role, bringing it back in its previous state.", - "request": { - "$ref": "UndeleteRoleRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Role" - }, - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/roles/[^/]+$", - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "get": { - "response": { - "$ref": "Role" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/roles/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", - "id": "iam.projects.roles.get", - "path": "v1/{+name}", - "description": "Gets a Role definition." - }, - "delete": { - "response": { - "$ref": "Role" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "etag": { - "type": "string", - "location": "query", - "format": "byte", - "description": "Used to perform a consistent read-modify-write." - }, - "name": { - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/roles/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", - "id": "iam.projects.roles.delete", - "path": "v1/{+name}", - "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed." - }, - "list": { - "description": "Lists the Roles defined on a resource.", - "response": { - "$ref": "ListRolesResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "showDeleted": { - "location": "query", - "description": "Include Roles that have been deleted.", - "type": "boolean" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "Optional pagination token returned in an earlier ListRolesResponse." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional limit on the number of roles to include in the response.", - "type": "integer" - }, - "view": { - "type": "string", - "location": "query", - "enum": [ - "BASIC", - "FULL" - ], - "description": "Optional view for the returned Role objects." - }, - "parent": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`" - } - }, - "flatPath": "v1/projects/{projectsId}/roles", - "id": "iam.projects.roles.list", - "path": "v1/{+parent}/roles" - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "Role" - }, - "parameters": { - "parent": { - "location": "path", - "description": "The resource name of the parent resource in one of the following formats:\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/roles", - "path": "v1/{+parent}/roles", - "id": "iam.projects.roles.create", - "description": "Creates a new Role.", - "request": { - "$ref": "CreateRoleRequest" - } - } - } - }, - "serviceAccounts": { - "methods": { - "get": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", - "id": "iam.projects.serviceAccounts.get", - "path": "v1/{+name}", - "description": "Gets a ServiceAccount.", - "response": { - "$ref": "ServiceAccount" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "update": { - "request": { - "$ref": "ServiceAccount" - }, - "description": "Updates a ServiceAccount.\n\nCurrently, only the following fields are updatable:\n`display_name` .\nThe `etag` is mandatory.", - "response": { - "$ref": "ServiceAccount" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nRequests using `-` as a wildcard for the project will infer the project\nfrom the `account` and the `account` value can be the `email` address or\nthe `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", - "id": "iam.projects.serviceAccounts.update", - "path": "v1/{+name}" - }, - "testIamPermissions": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "iam.projects.serviceAccounts.testIamPermissions", - "description": "Tests the specified permissions against the IAM access control policy\nfor a ServiceAccount.", - "request": { - "$ref": "TestIamPermissionsRequest" - } - }, - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", - "path": "v1/{+name}", - "id": "iam.projects.serviceAccounts.delete", - "description": "Deletes a ServiceAccount." - }, - "list": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts", - "path": "v1/{+name}/serviceAccounts", - "id": "iam.projects.serviceAccounts.list", - "description": "Lists ServiceAccounts for a project.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListServiceAccountsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional pagination token returned in an earlier\nListServiceAccountsResponse.next_page_token.", - "type": "string" - }, - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`." - }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Optional limit on the number of service accounts to include in the\nresponse. Further accounts can subsequently be obtained by including the\nListServiceAccountsResponse.next_page_token\nin a subsequent request." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "signBlob": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "SignBlobResponse" - }, - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:signBlob", - "path": "v1/{+name}:signBlob", - "id": "iam.projects.serviceAccounts.signBlob", - "description": "Signs a blob using a service account's system-managed private key.", - "request": { - "$ref": "SignBlobRequest" - } - }, - "create": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts", - "id": "iam.projects.serviceAccounts.create", - "path": "v1/{+name}/serviceAccounts", - "request": { - "$ref": "CreateServiceAccountRequest" - }, - "description": "Creates a ServiceAccount\nand returns it.", - "response": { - "$ref": "ServiceAccount" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`." - } - } - }, - "signJwt": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "SignJwtResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:signJwt", - "path": "v1/{+name}:signJwt", - "id": "iam.projects.serviceAccounts.signJwt", - "request": { - "$ref": "SignJwtRequest" - }, - "description": "Signs a JWT using a service account's system-managed private key.\n\nIf no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an\nan expiry time of one hour by default. If you request an expiry time of\nmore than one hour, the request will fail." - }, - "setIamPolicy": { - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the IAM access control policy for a\nServiceAccount.", - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field." - } - }, - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:setIamPolicy", - "id": "iam.projects.serviceAccounts.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy" - }, - "getIamPolicy": { - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:getIamPolicy", - "id": "iam.projects.serviceAccounts.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "description": "Returns the IAM access control policy for a\nServiceAccount." - } - }, - "resources": { - "keys": { - "methods": { - "delete": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys/{keysId}", - "id": "iam.projects.serviceAccounts.keys.delete", - "path": "v1/{+name}", - "description": "Deletes a ServiceAccountKey.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "location": "path", - "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$" - } - } - }, - "get": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys/{keysId}", - "id": "iam.projects.serviceAccounts.keys.get", - "path": "v1/{+name}", - "description": "Gets the ServiceAccountKey\nby key id.", - "response": { - "$ref": "ServiceAccountKey" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "publicKeyType": { - "type": "string", - "location": "query", - "enum": [ - "TYPE_NONE", - "TYPE_X509_PEM_FILE", - "TYPE_RAW_PUBLIC_KEY" - ], - "description": "The output format of the public key requested.\nX509_PEM is the default output format." - }, - "name": { - "location": "path", - "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.\n\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$" - } - } - }, - "list": { - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys", - "path": "v1/{+name}/keys", - "id": "iam.projects.serviceAccounts.keys.list", - "description": "Lists ServiceAccountKeys.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListServiceAccountKeysResponse" - }, - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nUsing `-` as a wildcard for the project, will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account." - }, - "keyTypes": { - "type": "string", - "repeated": true, - "location": "query", - "enum": [ - "KEY_TYPE_UNSPECIFIED", - "USER_MANAGED", - "SYSTEM_MANAGED" - ], - "description": "Filters the types of keys the user wants to include in the list\nresponse. Duplicate key types are not allowed. If no key type\nis provided, all keys are returned." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] - }, - "create": { - "response": { - "$ref": "ServiceAccountKey" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", - "location": "path", - "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys", - "id": "iam.projects.serviceAccounts.keys.create", - "path": "v1/{+name}/keys", - "description": "Creates a ServiceAccountKey\nand returns it.", - "request": { - "$ref": "CreateServiceAccountKeyRequest" - } - } - } - } - } - } - } - }, "permissions": { "methods": { "queryTestablePermissions": { + "path": "v1/permissions:queryTestablePermissions", + "id": "iam.permissions.queryTestablePermissions", + "description": "Lists the permissions testable on a resource.\nA permission is testable if it can be tested for an identity on a resource.", "request": { "$ref": "QueryTestablePermissionsRequest" }, - "description": "Lists the permissions testable on a resource.\nA permission is testable if it can be tested for an identity on a resource.", + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "QueryTestablePermissionsResponse" }, - "parameterOrder": [], - "httpMethod": "POST", + "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": {}, - "flatPath": "v1/permissions:queryTestablePermissions", - "id": "iam.permissions.queryTestablePermissions", - "path": "v1/permissions:queryTestablePermissions" + "flatPath": "v1/permissions:queryTestablePermissions" } } }, @@ -1329,31 +43,34 @@ } }, "get": { + "path": "v1/{+name}", + "id": "iam.roles.get", + "description": "Gets a Role definition.", + "httpMethod": "GET", "parameterOrder": [ "name" ], "response": { "$ref": "Role" }, - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "name": { + "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", "type": "string", "required": true, "pattern": "^roles/[^/]+$", - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`" + "location": "path" } }, - "flatPath": "v1/roles/{rolesId}", - "id": "iam.roles.get", - "path": "v1/{+name}", - "description": "Gets a Role definition." + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/roles/{rolesId}" }, "list": { + "path": "v1/roles", + "id": "iam.roles.list", + "description": "Lists the Roles defined on a resource.", "httpMethod": "GET", "parameterOrder": [], "response": { @@ -1363,15 +80,20 @@ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { - "showDeleted": { - "type": "boolean", + "parent": { "location": "query", - "description": "Include Roles that have been deleted." + "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", + "type": "string" + }, + "showDeleted": { + "description": "Include Roles that have been deleted.", + "type": "boolean", + "location": "query" }, "pageToken": { + "type": "string", "location": "query", - "description": "Optional pagination token returned in an earlier ListRolesResponse.", - "type": "string" + "description": "Optional pagination token returned in an earlier ListRolesResponse." }, "pageSize": { "location": "query", @@ -1380,24 +102,16 @@ "type": "integer" }, "view": { + "description": "Optional view for the returned Role objects.", "type": "string", "location": "query", "enum": [ "BASIC", "FULL" - ], - "description": "Optional view for the returned Role objects." - }, - "parent": { - "type": "string", - "location": "query", - "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`" + ] } }, - "flatPath": "v1/roles", - "path": "v1/roles", - "id": "iam.roles.list", - "description": "Lists the Roles defined on a resource." + "flatPath": "v1/roles" } } }, @@ -1405,11 +119,211 @@ "resources": { "roles": { "methods": { - "delete": { + "patch": { + "request": { + "$ref": "Role" + }, + "description": "Updates a Role definition.", + "response": { + "$ref": "Role" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "updateMask": { + "location": "query", + "format": "google-fieldmask", + "description": "A mask describing which fields in the Role have changed.", + "type": "string" + }, + "name": { + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/roles/[^/]+$", + "location": "path", + "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`" + } + }, + "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}", + "id": "iam.organizations.roles.patch", + "path": "v1/{+name}" + }, + "undelete": { + "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}:undelete", + "path": "v1/{+name}:undelete", + "id": "iam.organizations.roles.undelete", + "request": { + "$ref": "UndeleteRoleRequest" + }, + "description": "Undelete a Role, bringing it back in its previous state.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Role" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^organizations/[^/]+/roles/[^/]+$", + "location": "path", + "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", + "type": "string", + "required": true + } + } + }, + "get": { + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Role" + }, + "parameters": { + "name": { + "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/roles/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}", - "id": "iam.organizations.roles.delete", "path": "v1/{+name}", - "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed.", + "id": "iam.organizations.roles.get", + "description": "Gets a Role definition." + }, + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Role" + }, + "parameters": { + "name": { + "pattern": "^organizations/[^/]+/roles/[^/]+$", + "location": "path", + "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", + "type": "string", + "required": true + }, + "etag": { + "type": "string", + "location": "query", + "format": "byte", + "description": "Used to perform a consistent read-modify-write." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}", + "path": "v1/{+name}", + "id": "iam.organizations.roles.delete", + "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed." + }, + "list": { + "description": "Lists the Roles defined on a resource.", + "httpMethod": "GET", + "response": { + "$ref": "ListRolesResponse" + }, + "parameterOrder": [ + "parent" + ], + "parameters": { + "view": { + "location": "query", + "enum": [ + "BASIC", + "FULL" + ], + "description": "Optional view for the returned Role objects.", + "type": "string" + }, + "parent": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", + "type": "string", + "required": true + }, + "showDeleted": { + "location": "query", + "description": "Include Roles that have been deleted.", + "type": "boolean" + }, + "pageToken": { + "description": "Optional pagination token returned in an earlier ListRolesResponse.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional limit on the number of roles to include in the response.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/organizations/{organizationsId}/roles", + "path": "v1/{+parent}/roles", + "id": "iam.organizations.roles.list" + }, + "create": { + "response": { + "$ref": "Role" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "The resource name of the parent resource in one of the following formats:\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/organizations/{organizationsId}/roles", + "id": "iam.organizations.roles.create", + "path": "v1/{+parent}/roles", + "description": "Creates a new Role.", + "request": { + "$ref": "CreateRoleRequest" + } + } + } + } + } + }, + "projects": { + "resources": { + "roles": { + "methods": { + "delete": { "response": { "$ref": "Role" }, @@ -1422,69 +336,73 @@ ], "parameters": { "name": { + "location": "path", + "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", "type": "string", "required": true, - "pattern": "^organizations/[^/]+/roles/[^/]+$", - "location": "path", - "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`" + "pattern": "^projects/[^/]+/roles/[^/]+$" }, "etag": { - "type": "string", - "location": "query", "format": "byte", - "description": "Used to perform a consistent read-modify-write." + "description": "Used to perform a consistent read-modify-write.", + "type": "string", + "location": "query" } - } + }, + "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", + "id": "iam.projects.roles.delete", + "path": "v1/{+name}", + "description": "Soft deletes a role. The role is suspended and cannot be used to create new\nIAM Policy Bindings.\nThe Role will not be included in `ListRoles()` unless `show_deleted` is set\nin the `ListRolesRequest`. The Role contains the deleted boolean set.\nExisting Bindings remains, but are inactive. The Role can be undeleted\nwithin 7 days. After 7 days the Role is deleted and all Bindings associated\nwith the role are removed." }, "list": { + "description": "Lists the Roles defined on a resource.", + "response": { + "$ref": "ListRolesResponse" + }, "httpMethod": "GET", "parameterOrder": [ "parent" ], - "response": { - "$ref": "ListRolesResponse" - }, "parameters": { + "parent": { + "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, "showDeleted": { + "description": "Include Roles that have been deleted.", "type": "boolean", - "location": "query", - "description": "Include Roles that have been deleted." + "location": "query" }, "pageToken": { - "type": "string", "location": "query", - "description": "Optional pagination token returned in an earlier ListRolesResponse." + "description": "Optional pagination token returned in an earlier ListRolesResponse.", + "type": "string" }, "pageSize": { - "location": "query", "format": "int32", "description": "Optional limit on the number of roles to include in the response.", - "type": "integer" + "type": "integer", + "location": "query" }, "view": { - "type": "string", "location": "query", "enum": [ "BASIC", "FULL" ], - "description": "Optional view for the returned Role objects." - }, - "parent": { - "location": "path", - "description": "The resource name of the parent resource in one of the following formats:\n`` (empty string) -- this refers to curated roles.\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$" + "description": "Optional view for the returned Role objects.", + "type": "string" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/organizations/{organizationsId}/roles", - "path": "v1/{+parent}/roles", - "id": "iam.organizations.roles.list", - "description": "Lists the Roles defined on a resource." + "flatPath": "v1/projects/{projectsId}/roles", + "id": "iam.projects.roles.list", + "path": "v1/{+parent}/roles" }, "create": { "request": { @@ -1503,25 +421,18 @@ ], "parameters": { "parent": { - "location": "path", "description": "The resource name of the parent resource in one of the following formats:\n`organizations/{ORGANIZATION_ID}`\n`projects/{PROJECT_ID}`", "type": "string", "required": true, - "pattern": "^organizations/[^/]+$" + "pattern": "^projects/[^/]+$", + "location": "path" } }, - "flatPath": "v1/organizations/{organizationsId}/roles", - "id": "iam.organizations.roles.create", + "flatPath": "v1/projects/{projectsId}/roles", + "id": "iam.projects.roles.create", "path": "v1/{+parent}/roles" }, "patch": { - "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}", - "id": "iam.organizations.roles.patch", - "path": "v1/{+name}", - "request": { - "$ref": "Role" - }, - "description": "Updates a Role definition.", "response": { "$ref": "Role" }, @@ -1529,29 +440,33 @@ "name" ], "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { "updateMask": { - "type": "string", "location": "query", "format": "google-fieldmask", - "description": "A mask describing which fields in the Role have changed." + "description": "A mask describing which fields in the Role have changed.", + "type": "string" }, "name": { "location": "path", "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", "type": "string", "required": true, - "pattern": "^organizations/[^/]+/roles/[^/]+$" + "pattern": "^projects/[^/]+/roles/[^/]+$" } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", + "id": "iam.projects.roles.patch", + "path": "v1/{+name}", + "description": "Updates a Role definition.", + "request": { + "$ref": "Role" } }, "undelete": { - "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}:undelete", - "id": "iam.organizations.roles.undelete", - "path": "v1/{+name}:undelete", "request": { "$ref": "UndeleteRoleRequest" }, @@ -1568,38 +483,454 @@ ], "parameters": { "name": { - "location": "path", "description": "The resource name of the role in one of the following formats:\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", "type": "string", "required": true, - "pattern": "^organizations/[^/]+/roles/[^/]+$" + "pattern": "^projects/[^/]+/roles/[^/]+$", + "location": "path" } - } + }, + "flatPath": "v1/projects/{projectsId}/roles/{rolesId}:undelete", + "id": "iam.projects.roles.undelete", + "path": "v1/{+name}:undelete" }, "get": { - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], + "description": "Gets a Role definition.", "response": { "$ref": "Role" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { "name": { - "location": "path", "description": "The resource name of the role in one of the following formats:\n`roles/{ROLE_NAME}`\n`organizations/{ORGANIZATION_ID}/roles/{ROLE_NAME}`\n`projects/{PROJECT_ID}/roles/{ROLE_NAME}`", "type": "string", "required": true, - "pattern": "^organizations/[^/]+/roles/[^/]+$" + "pattern": "^projects/[^/]+/roles/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/roles/{rolesId}", + "id": "iam.projects.roles.get", + "path": "v1/{+name}" + } + } + }, + "serviceAccounts": { + "resources": { + "keys": { + "methods": { + "get": { + "description": "Gets the ServiceAccountKey\nby key id.", + "response": { + "$ref": "ServiceAccountKey" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.\n\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$" + }, + "publicKeyType": { + "location": "query", + "enum": [ + "TYPE_NONE", + "TYPE_X509_PEM_FILE", + "TYPE_RAW_PUBLIC_KEY" + ], + "description": "The output format of the public key requested.\nX509_PEM is the default output format.", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys/{keysId}", + "id": "iam.projects.serviceAccounts.keys.get", + "path": "v1/{+name}" + }, + "list": { + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys", + "path": "v1/{+name}/keys", + "id": "iam.projects.serviceAccounts.keys.list", + "description": "Lists ServiceAccountKeys.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ListServiceAccountKeysResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nUsing `-` as a wildcard for the project, will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true + }, + "keyTypes": { + "location": "query", + "enum": [ + "KEY_TYPE_UNSPECIFIED", + "USER_MANAGED", + "SYSTEM_MANAGED" + ], + "description": "Filters the types of keys the user wants to include in the list\nresponse. Duplicate key types are not allowed. If no key type\nis provided, all keys are returned.", + "type": "string", + "repeated": true + } + } + }, + "create": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys", + "id": "iam.projects.serviceAccounts.keys.create", + "path": "v1/{+name}/keys", + "request": { + "$ref": "CreateServiceAccountKeyRequest" + }, + "description": "Creates a ServiceAccountKey\nand returns it.", + "response": { + "$ref": "ServiceAccountKey" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST" + }, + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+/keys/[^/]+$", + "location": "path", + "description": "The resource name of the service account key in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}/keys/{keysId}", + "path": "v1/{+name}", + "id": "iam.projects.serviceAccounts.keys.delete", + "description": "Deletes a ServiceAccountKey." + } + } + } + }, + "methods": { + "get": { + "response": { + "$ref": "ServiceAccount" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1/organizations/{organizationsId}/roles/{rolesId}", + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", + "id": "iam.projects.serviceAccounts.get", "path": "v1/{+name}", - "id": "iam.organizations.roles.get", - "description": "Gets a Role definition." + "description": "Gets a ServiceAccount." + }, + "update": { + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", + "id": "iam.projects.serviceAccounts.update", + "path": "v1/{+name}", + "description": "Updates a ServiceAccount.\n\nCurrently, only the following fields are updatable:\n`display_name` .\nThe `etag` is mandatory.", + "request": { + "$ref": "ServiceAccount" + }, + "response": { + "$ref": "ServiceAccount" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "parameters": { + "name": { + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nRequests using `-` as a wildcard for the project will infer the project\nfrom the `account` and the `account` value can be the `email` address or\nthe `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "testIamPermissions": { + "id": "iam.projects.serviceAccounts.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "description": "Tests the specified permissions against the IAM access control policy\nfor a ServiceAccount.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:testIamPermissions" + }, + "delete": { + "description": "Deletes a ServiceAccount.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}", + "id": "iam.projects.serviceAccounts.delete", + "path": "v1/{+name}" + }, + "list": { + "response": { + "$ref": "ListServiceAccountsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "Optional limit on the number of service accounts to include in the\nresponse. Further accounts can subsequently be obtained by including the\nListServiceAccountsResponse.next_page_token\nin a subsequent request.", + "type": "integer", + "location": "query" + }, + "pageToken": { + "description": "Optional pagination token returned in an earlier\nListServiceAccountsResponse.next_page_token.", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts", + "id": "iam.projects.serviceAccounts.list", + "path": "v1/{+name}/serviceAccounts", + "description": "Lists ServiceAccounts for a project." + }, + "signBlob": { + "request": { + "$ref": "SignBlobRequest" + }, + "description": "Signs a blob using a service account's system-managed private key.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "SignBlobResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:signBlob", + "path": "v1/{+name}:signBlob", + "id": "iam.projects.serviceAccounts.signBlob" + }, + "create": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Required. The resource name of the project associated with the service\naccounts, such as `projects/my-project-123`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts", + "id": "iam.projects.serviceAccounts.create", + "path": "v1/{+name}/serviceAccounts", + "request": { + "$ref": "CreateServiceAccountRequest" + }, + "description": "Creates a ServiceAccount\nand returns it.", + "response": { + "$ref": "ServiceAccount" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST" + }, + "signJwt": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "SignJwtResponse" + }, + "parameters": { + "name": { + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:signJwt", + "path": "v1/{+name}:signJwt", + "id": "iam.projects.serviceAccounts.signJwt", + "description": "Signs a JWT using a service account's system-managed private key.\n\nIf no expiry time (`exp`) is provided in the `SignJwtRequest`, IAM sets an\nan expiry time of one hour by default. If you request an expiry time of\nmore than one hour, the request will fail.", + "request": { + "$ref": "SignJwtRequest" + } + }, + "setIamPolicy": { + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the IAM access control policy for a\nServiceAccount.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:setIamPolicy", + "id": "iam.projects.serviceAccounts.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy" + }, + "getIamPolicy": { + "description": "Returns the IAM access control policy for a\nServiceAccount.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/serviceAccounts/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/serviceAccounts/{serviceAccountsId}:getIamPolicy", + "id": "iam.projects.serviceAccounts.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" } } } @@ -1608,9 +939,9 @@ }, "parameters": { "quotaUser": { - "type": "string", "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" }, "pp": { "location": "query", @@ -1619,43 +950,42 @@ "type": "boolean" }, "oauth_token": { + "description": "OAuth 2.0 token for the current user.", "type": "string", - "location": "query", - "description": "OAuth 2.0 token for the current user." + "location": "query" }, "bearer_token": { - "type": "string", "location": "query", - "description": "OAuth bearer token." + "description": "OAuth bearer token.", + "type": "string" }, "upload_protocol": { - "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "type": "string", + "location": "query" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean" - }, - "uploadType": { - "type": "string", - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." + "type": "boolean", + "location": "query" }, "fields": { - "location": "query", "description": "Selector specifying which fields to include in a partial response.", - "type": "string" + "type": "string", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" }, "callback": { - "location": "query", "description": "JSONP", - "type": "string" + "type": "string", + "location": "query" }, "$.xgafv": { - "location": "query", "enum": [ "1", "2" @@ -1665,7 +995,8 @@ "enumDescriptions": [ "v1 error format", "v2 error format" - ] + ], + "location": "query" }, "alt": { "location": "query", @@ -1684,19 +1015,688 @@ ] }, "access_token": { - "location": "query", "description": "OAuth access token.", - "type": "string" + "type": "string", + "location": "query" }, "key": { - "type": "string", "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" } }, "version": "v1", "baseUrl": "https://iam.googleapis.com/", - "servicePath": "", + "kind": "discovery#restDescription", "description": "Manages identity and access control for Google Cloud Platform resources, including the creation of service accounts, which you can use to authenticate to Google and make API calls.", - "kind": "discovery#restDescription" + "servicePath": "", + "basePath": "", + "documentationLink": "https://cloud.google.com/iam/", + "id": "iam:v1", + "revision": "20170828", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "SignBlobResponse": { + "type": "object", + "properties": { + "keyId": { + "type": "string", + "description": "The id of the key used to sign the blob." + }, + "signature": { + "format": "byte", + "description": "The signed blob.", + "type": "string" + } + }, + "id": "SignBlobResponse", + "description": "The service account sign blob response." + }, + "SignJwtRequest": { + "description": "The service account sign JWT request.", + "type": "object", + "properties": { + "payload": { + "description": "The JWT payload to sign, a JSON JWT Claim set.", + "type": "string" + } + }, + "id": "SignJwtRequest" + }, + "Permission": { + "properties": { + "name": { + "description": "The name of this Permission.", + "type": "string" + }, + "onlyInPredefinedRoles": { + "description": "This permission can ONLY be used in predefined roles.", + "type": "boolean" + }, + "title": { + "description": "The title of this Permission.", + "type": "string" + }, + "description": { + "type": "string", + "description": "A brief description of what this Permission is used for." + }, + "customRolesSupportLevel": { + "enum": [ + "SUPPORTED", + "TESTING", + "NOT_SUPPORTED" + ], + "description": "The current custom role support level.", + "type": "string", + "enumDescriptions": [ + "Permission is fully supported for custom role use.", + "Permission is being tested to check custom role compatibility.", + "Permission is not supported for custom role use." + ] + }, + "stage": { + "enum": [ + "ALPHA", + "BETA", + "GA", + "DEPRECATED" + ], + "description": "The current launch stage of the permission.", + "type": "string", + "enumDescriptions": [ + "The permission is currently in an alpha phase.", + "The permission is currently in a beta phase.", + "The permission is generally available.", + "The permission is being deprecated." + ] + } + }, + "id": "Permission", + "description": "A permission which can be included by a role.", + "type": "object" + }, + "PolicyDelta": { + "type": "object", + "properties": { + "bindingDeltas": { + "description": "The delta for Bindings between two policies.", + "items": { + "$ref": "BindingDelta" + }, + "type": "array" + } + }, + "id": "PolicyDelta", + "description": "The difference delta between two policies." + }, + "ListServiceAccountsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "type": "string", + "description": "To retrieve the next page of results, set\nListServiceAccountsRequest.page_token\nto this value." + }, + "accounts": { + "description": "The list of matching service accounts.", + "items": { + "$ref": "ServiceAccount" + }, + "type": "array" + } + }, + "id": "ListServiceAccountsResponse", + "description": "The service account list response." + }, + "QueryGrantableRolesResponse": { + "description": "The grantable role query response.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "To retrieve the next page of results, set\n`QueryGrantableRolesRequest.page_token` to this value.", + "type": "string" + }, + "roles": { + "description": "The list of matching roles.", + "items": { + "$ref": "Role" + }, + "type": "array" + } + }, + "id": "QueryGrantableRolesResponse" + }, + "SignBlobRequest": { + "properties": { + "bytesToSign": { + "format": "byte", + "description": "The bytes to sign.", + "type": "string" + } + }, + "id": "SignBlobRequest", + "description": "The service account sign blob request.", + "type": "object" + }, + "SetIamPolicyRequest": { + "type": "object", + "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" + } + }, + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method." + }, + "QueryTestablePermissionsResponse": { + "description": "The response containing permissions which can be tested on a resource.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "To retrieve the next page of results, set\n`QueryTestableRolesRequest.page_token` to this value.", + "type": "string" + }, + "permissions": { + "description": "The Permissions testable on the requested resource.", + "items": { + "$ref": "Permission" + }, + "type": "array" + } + }, + "id": "QueryTestablePermissionsResponse" + }, + "Empty": { + "type": "object", + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." + }, + "CreateServiceAccountKeyRequest": { + "id": "CreateServiceAccountKeyRequest", + "description": "The service account key create request.", + "type": "object", + "properties": { + "keyAlgorithm": { + "enumDescriptions": [ + "An unspecified key algorithm.", + "1k RSA Key.", + "2k RSA Key." + ], + "enum": [ + "KEY_ALG_UNSPECIFIED", + "KEY_ALG_RSA_1024", + "KEY_ALG_RSA_2048" + ], + "description": "Which type of key and algorithm to use for the key.\nThe default is currently a 2K RSA key. However this may change in the\nfuture.", + "type": "string" + }, + "privateKeyType": { + "description": "The output format of the private key. `GOOGLE_CREDENTIALS_FILE` is the\ndefault output format.", + "type": "string", + "enumDescriptions": [ + "Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`.", + "PKCS12 format.\nThe password for the PKCS12 file is `notasecret`.\nFor more information, see https://tools.ietf.org/html/rfc7292.", + "Google Credentials File format." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "TYPE_PKCS12_FILE", + "TYPE_GOOGLE_CREDENTIALS_FILE" + ] + } + } + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" + }, + "SignJwtResponse": { + "description": "The service account sign JWT response.", + "type": "object", + "properties": { + "signedJwt": { + "description": "The signed JWT.", + "type": "string" + }, + "keyId": { + "description": "The id of the key used to sign the JWT.", + "type": "string" + } + }, + "id": "SignJwtResponse" + }, + "Policy": { + "type": "object", + "properties": { + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + }, + "bindings": { + "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "Binding" + }, + "type": "array" + }, + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + } + }, + "id": "Policy", + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam)." + }, + "ListRolesResponse": { + "properties": { + "nextPageToken": { + "description": "To retrieve the next page of results, set\n`ListRolesRequest.page_token` to this value.", + "type": "string" + }, + "roles": { + "description": "The Roles defined on this resource.", + "items": { + "$ref": "Role" + }, + "type": "array" + } + }, + "id": "ListRolesResponse", + "description": "The response containing the roles defined under a resource.", + "type": "object" + }, + "AuditData": { + "type": "object", + "properties": { + "policyDelta": { + "$ref": "PolicyDelta", + "description": "Policy delta between the original policy and the newly set policy." + } + }, + "id": "AuditData", + "description": "Audit log information specific to Cloud IAM. This message is serialized\nas an `Any` type in the `ServiceData` message of an\n`AuditLog` message." + }, + "BindingDelta": { + "description": "One delta entry for Binding. Each individual change (only one member in each\nentry) to a binding will be a separate entry.", + "type": "object", + "properties": { + "condition": { + "description": "The condition that is associated with this binding.\nThis field is GOOGLE_INTERNAL.\nThis field is not logged in IAM side because it's only for audit logging.\nOptional", + "$ref": "Expr" + }, + "member": { + "description": "A single identity requesting access for a Cloud Platform resource.\nFollows the same format of Binding.members.\nRequired", + "type": "string" + }, + "role": { + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", + "type": "string" + }, + "action": { + "enumDescriptions": [ + "Unspecified.", + "Addition of a Binding.", + "Removal of a Binding." + ], + "enum": [ + "ACTION_UNSPECIFIED", + "ADD", + "REMOVE" + ], + "description": "The action that was performed on a Binding.\nRequired", + "type": "string" + } + }, + "id": "BindingDelta" + }, + "UndeleteRoleRequest": { + "id": "UndeleteRoleRequest", + "description": "The request to undelete an existing role.", + "type": "object", + "properties": { + "etag": { + "format": "byte", + "description": "Used to perform a consistent read-modify-write.", + "type": "string" + } + } + }, + "CreateServiceAccountRequest": { + "description": "The service account create request.", + "type": "object", + "properties": { + "serviceAccount": { + "$ref": "ServiceAccount", + "description": "The ServiceAccount resource to create.\nCurrently, only the following values are user assignable:\n`display_name` ." + }, + "accountId": { + "description": "Required. The account id that is used to generate the service account\nemail address and a stable unique id. It is unique within a project,\nmust be 6-30 characters long, and match the regular expression\n`[a-z]([-a-z0-9]*[a-z0-9])` to comply with RFC1035.", + "type": "string" + } + }, + "id": "CreateServiceAccountRequest" + }, + "Role": { + "description": "A role in the Identity and Access Management API.", + "type": "object", + "properties": { + "includedPermissions": { + "description": "The names of the permissions this role grants when bound in an IAM policy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Optional. A human-readable description for the role.", + "type": "string" + }, + "etag": { + "format": "byte", + "description": "Used to perform a consistent read-modify-write.", + "type": "string" + }, + "stage": { + "enumDescriptions": [ + "The user has indicated this role is currently in an alpha phase.", + "The user has indicated this role is currently in a beta phase.", + "The user has indicated this role is generally available.", + "The user has indicated this role is being deprecated.", + "This role is disabled and will not contribute permissions to any members\nit is granted to in policies.", + "The user has indicated this role is currently in an eap phase." + ], + "enum": [ + "ALPHA", + "BETA", + "GA", + "DEPRECATED", + "DISABLED", + "EAP" + ], + "description": "The current launch stage of the role.", + "type": "string" + }, + "name": { + "description": "The name of the role.\n\nWhen Role is used in CreateRole, the role name must not be set.\n\nWhen Role is used in output and other input such as UpdateRole, the role\nname is the complete path, e.g., roles/logging.viewer for curated roles\nand organizations/{ORGANIZATION_ID}/roles/logging.viewer for custom roles.", + "type": "string" + }, + "deleted": { + "description": "The current deleted state of the role. This field is read only.\nIt will be ignored in calls to CreateRole and UpdateRole.", + "type": "boolean" + }, + "title": { + "description": "Optional. A human-readable title for the role. Typically this\nis limited to 100 UTF-8 bytes.", + "type": "string" + } + }, + "id": "Role" + }, + "Binding": { + "type": "object", + "properties": { + "members": { + "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "role": { + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", + "type": "string" + } + }, + "id": "Binding", + "description": "Associates `members` with a `role`." + }, + "Expr": { + "description": "Represents an expression text. Example:\n\n title: \"User account presence\"\n description: \"Determines whether the request has a user account\"\n expression: \"size(request.user) \u003e 0\"", + "type": "object", + "properties": { + "description": { + "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", + "type": "string" + }, + "expression": { + "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", + "type": "string" + }, + "location": { + "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.", + "type": "string" + }, + "title": { + "type": "string", + "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression." + } + }, + "id": "Expr" + }, + "ServiceAccount": { + "type": "object", + "properties": { + "oauth2ClientId": { + "description": "@OutputOnly. The OAuth2 client id for the service account.\nThis is used in conjunction with the OAuth2 clientconfig API to make\nthree legged OAuth2 (3LO) flows to access the data of Google users.", + "type": "string" + }, + "uniqueId": { + "description": "@OutputOnly The unique and stable id of the service account.", + "type": "string" + }, + "displayName": { + "description": "Optional. A user-specified description of the service account. Must be\nfewer than 100 UTF-8 bytes.", + "type": "string" + }, + "etag": { + "type": "string", + "format": "byte", + "description": "Used to perform a consistent read-modify-write." + }, + "name": { + "description": "The resource name of the service account in the following format:\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\n\nRequests using `-` as a wildcard for the project will infer the project\nfrom the `account` and the `account` value can be the `email` address or\nthe `unique_id` of the service account.\n\nIn responses the resource name will always be in the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.", + "type": "string" + }, + "email": { + "description": "@OutputOnly The email address of the service account.", + "type": "string" + }, + "projectId": { + "description": "@OutputOnly The id of the project that owns the service account.", + "type": "string" + } + }, + "id": "ServiceAccount", + "description": "A service account in the Identity and Access Management API.\n\nTo create a service account, specify the `project_id` and the `account_id`\nfor the account. The `account_id` is unique within the project, and is used\nto generate the service account email address and a stable\n`unique_id`.\n\nIf the account already exists, the account's resource name is returned\nin util::Status's ResourceInfo.resource_name in the format of\nprojects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}. The caller can\nuse the name in other methods to access the account.\n\nAll other methods can identify the service account using the format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}`.\nUsing `-` as a wildcard for the project will infer the project from\nthe account. The `account` value can be the `email` address or the\n`unique_id` of the service account." + }, + "QueryGrantableRolesRequest": { + "description": "The grantable role query request.", + "type": "object", + "properties": { + "fullResourceName": { + "description": "Required. The full resource name to query from the list of grantable roles.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`.", + "type": "string" + }, + "pageToken": { + "description": "Optional pagination token returned in an earlier\nQueryGrantableRolesResponse.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional limit on the number of roles to include in the response.", + "type": "integer" + }, + "view": { + "enumDescriptions": [ + "Omits the `included_permissions` field.\nThis is the default value.", + "Returns all fields." + ], + "enum": [ + "BASIC", + "FULL" + ], + "type": "string" + } + }, + "id": "QueryGrantableRolesRequest" + }, + "CreateRoleRequest": { + "description": "The request to create a new role.", + "type": "object", + "properties": { + "role": { + "$ref": "Role", + "description": "The Role resource to create." + }, + "roleId": { + "description": "The role id to use for this role.", + "type": "string" + } + }, + "id": "CreateRoleRequest" + }, + "ListServiceAccountKeysResponse": { + "id": "ListServiceAccountKeysResponse", + "description": "The service account keys list response.", + "type": "object", + "properties": { + "keys": { + "items": { + "$ref": "ServiceAccountKey" + }, + "type": "array", + "description": "The public keys for the service account." + } + } + }, + "TestIamPermissionsResponse": { + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse", + "description": "Response message for `TestIamPermissions` method.", + "type": "object" + }, + "QueryTestablePermissionsRequest": { + "type": "object", + "properties": { + "fullResourceName": { + "description": "Required. The full resource name to query from the list of testable\npermissions.\n\nThe name follows the Google Cloud Platform resource format.\nFor example, a Cloud Platform project with id `my-project` will be named\n`//cloudresourcemanager.googleapis.com/projects/my-project`.", + "type": "string" + }, + "pageToken": { + "description": "Optional pagination token returned in an earlier\nQueryTestablePermissionsRequest.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "description": "Optional limit on the number of permissions to include in the response." + } + }, + "id": "QueryTestablePermissionsRequest", + "description": "A request to get permissions which can be tested on a resource." + }, + "ServiceAccountKey": { + "description": "Represents a service account key.\n\nA service account has two sets of key-pairs: user-managed, and\nsystem-managed.\n\nUser-managed key-pairs can be created and deleted by users. Users are\nresponsible for rotating these keys periodically to ensure security of\ntheir service accounts. Users retain the private key of these key-pairs,\nand Google retains ONLY the public key.\n\nSystem-managed key-pairs are managed automatically by Google, and rotated\ndaily without user intervention. The private key never leaves Google's\nservers to maximize security.\n\nPublic keys for all service accounts are also published at the OAuth2\nService Account API.", + "type": "object", + "properties": { + "publicKeyData": { + "format": "byte", + "description": "The public key data. Only provided in `GetServiceAccountKey` responses.", + "type": "string" + }, + "name": { + "description": "The resource name of the service account key in the following format\n`projects/{PROJECT_ID}/serviceAccounts/{SERVICE_ACCOUNT_EMAIL}/keys/{key}`.", + "type": "string" + }, + "validBeforeTime": { + "format": "google-datetime", + "description": "The key can be used before this timestamp.", + "type": "string" + }, + "keyAlgorithm": { + "enum": [ + "KEY_ALG_UNSPECIFIED", + "KEY_ALG_RSA_1024", + "KEY_ALG_RSA_2048" + ], + "description": "Specifies the algorithm (and possibly key size) for the key.", + "type": "string", + "enumDescriptions": [ + "An unspecified key algorithm.", + "1k RSA Key.", + "2k RSA Key." + ] + }, + "validAfterTime": { + "type": "string", + "format": "google-datetime", + "description": "The key can be used after this timestamp." + }, + "privateKeyType": { + "enum": [ + "TYPE_UNSPECIFIED", + "TYPE_PKCS12_FILE", + "TYPE_GOOGLE_CREDENTIALS_FILE" + ], + "description": "The output format for the private key.\nOnly provided in `CreateServiceAccountKey` responses, not\nin `GetServiceAccountKey` or `ListServiceAccountKey` responses.\n\nGoogle never exposes system-managed private keys, and never retains\nuser-managed private keys.", + "type": "string", + "enumDescriptions": [ + "Unspecified. Equivalent to `TYPE_GOOGLE_CREDENTIALS_FILE`.", + "PKCS12 format.\nThe password for the PKCS12 file is `notasecret`.\nFor more information, see https://tools.ietf.org/html/rfc7292.", + "Google Credentials File format." + ] + }, + "privateKeyData": { + "format": "byte", + "description": "The private key data. Only provided in `CreateServiceAccountKey`\nresponses. Make sure to keep the private key data secure because it\nallows for the assertion of the service account identity.\nWhen decoded, the private key data can be used to authenticate with\nGoogle API client libraries and with\n\u003ca href=\"/sdk/gcloud/reference/auth/activate-service-account\"\u003egcloud\nauth activate-service-account\u003c/a\u003e.", + "type": "string" + } + }, + "id": "ServiceAccountKey" + } + }, + "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "canonicalName": "iam", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "rootUrl": "https://iam.googleapis.com/", + "ownerDomain": "google.com", + "name": "iam", + "batchPath": "batch", + "fullyEncodeReservedExpansion": true, + "title": "Google Identity and Access Management (IAM) API", + "ownerName": "Google" } diff --git a/vendor/google.golang.org/api/internal/creds.go b/vendor/google.golang.org/api/internal/creds.go new file mode 100644 index 0000000..b546b63 --- /dev/null +++ b/vendor/google.golang.org/api/internal/creds.go @@ -0,0 +1,104 @@ +// Copyright 2017 Google Inc. All Rights Reserved. +// +// 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. + +package internal + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "time" + + "golang.org/x/net/context" + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" +) + +// Creds returns credential information obtained from DialSettings, or if none, then +// it returns default credential information. +func Creds(ctx context.Context, ds *DialSettings) (*google.DefaultCredentials, error) { + if ds.CredentialsFile != "" { + return credFileTokenSource(ctx, ds.CredentialsFile, ds.Scopes...) + } + if ds.TokenSource != nil { + return &google.DefaultCredentials{TokenSource: ds.TokenSource}, nil + } + return google.FindDefaultCredentials(ctx, ds.Scopes...) +} + +// credFileTokenSource reads a refresh token file or a service account and returns +// a TokenSource constructed from the config. +func credFileTokenSource(ctx context.Context, filename string, scope ...string) (*google.DefaultCredentials, error) { + data, err := ioutil.ReadFile(filename) + if err != nil { + return nil, fmt.Errorf("cannot read credentials file: %v", err) + } + // See if it is a refresh token credentials file first. + ts, ok, err := refreshTokenTokenSource(ctx, data, scope...) + if err != nil { + return nil, err + } + if ok { + return &google.DefaultCredentials{ + TokenSource: ts, + JSON: data, + }, nil + } + + // If not, it should be a service account. + cfg, err := google.JWTConfigFromJSON(data, scope...) + if err != nil { + return nil, fmt.Errorf("google.JWTConfigFromJSON: %v", err) + } + // jwt.Config does not expose the project ID, so re-unmarshal to get it. + var pid struct { + ProjectID string `json:"project_id"` + } + if err := json.Unmarshal(data, &pid); err != nil { + return nil, err + } + return &google.DefaultCredentials{ + ProjectID: pid.ProjectID, + TokenSource: cfg.TokenSource(ctx), + JSON: data, + }, nil +} + +func refreshTokenTokenSource(ctx context.Context, data []byte, scope ...string) (oauth2.TokenSource, bool, error) { + var c cred + if err := json.Unmarshal(data, &c); err != nil { + return nil, false, fmt.Errorf("cannot unmarshal credentials file: %v", err) + } + if c.ClientID == "" || c.ClientSecret == "" || c.RefreshToken == "" || c.Type != "authorized_user" { + return nil, false, nil + } + cfg := &oauth2.Config{ + ClientID: c.ClientID, + ClientSecret: c.ClientSecret, + Endpoint: google.Endpoint, + RedirectURL: "urn:ietf:wg:oauth:2.0:oob", + Scopes: scope, + } + return cfg.TokenSource(ctx, &oauth2.Token{ + RefreshToken: c.RefreshToken, + Expiry: time.Now(), + }), true, nil +} + +type cred struct { + ClientID string `json:"client_id"` + ClientSecret string `json:"client_secret"` + RefreshToken string `json:"refresh_token"` + Type string `json:"type"` +} diff --git a/vendor/google.golang.org/api/internal/creds_test.go b/vendor/google.golang.org/api/internal/creds_test.go new file mode 100644 index 0000000..590e977 --- /dev/null +++ b/vendor/google.golang.org/api/internal/creds_test.go @@ -0,0 +1,130 @@ +// Copyright 2017 Google Inc. All Rights Reserved. +// +// 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. + +package internal + +import ( + "testing" + + "github.com/google/go-cmp/cmp" + "golang.org/x/net/context" + "golang.org/x/oauth2" + "golang.org/x/oauth2/google" +) + +type dummyTokenSource struct { + oauth2.TokenSource +} + +func TestTokenSource(t *testing.T) { + ctx := context.Background() + + // Pass in a TokenSource, get it back. + ts := &dummyTokenSource{} + ds := &DialSettings{TokenSource: ts} + got, err := Creds(ctx, ds) + if err != nil { + t.Fatal(err) + } + want := &google.DefaultCredentials{TokenSource: ts} + if !cmp.Equal(got, want) { + t.Error("did not get the same TokenSource back") + } + + // Load a valid JSON file. No way to really test the contents; we just + // verify that there is no error. + ds = &DialSettings{CredentialsFile: "service-account.json"} + if _, err := Creds(ctx, ds); err != nil { + t.Errorf("got %v, wanted no error", err) + } + + // If both a file and TokenSource are passed, the file takes precedence + // (existing behavior). + // TODO(jba): make this an error? + ds = &DialSettings{ + TokenSource: ts, + CredentialsFile: "service-account.json", + } + got, err = Creds(ctx, ds) + if err != nil { + t.Fatal(err) + } + if cmp.Equal(got, want) { + t.Error("got the same TokenSource back, wanted one from the JSON file") + } + // TODO(jba): find a way to test the call to google.DefaultTokenSource. +} + +const validRefeshTokenJSON = `{ + "client_id": "764-aaaaa.apps.googleusercontent.com", + "client_secret": "d-988888888", + "refresh_token": "1/88888aaaaaaaaa", + "type": "authorized_user" +}` + +const validServiceAccountJSON = `{ + "type": "service_account", + "project_id": "dumba-504", + "private_key_id": "adsfsdd", + "private_key": "-----BEGIN PRIVATE KEY-----\n\n-----END PRIVATE KEY-----\n", + "client_email": "dumba-504@appspot.gserviceaccount.com", + "client_id": "111", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://accounts.google.com/o/oauth2/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dumba-504%40appspot.gserviceaccount.com" +}` + +func TestRefreshTokenTokenSource(t *testing.T) { + tests := []struct { + name string + data []byte + wantOK bool + wantErr bool + }{ + { + name: "empty", + data: []byte{}, + wantOK: false, + wantErr: true, // not valid JSON + }, + { + name: "non refresh token JSON", + data: []byte("{}"), + wantOK: false, + wantErr: false, + }, + { + name: "service account JSON", + data: []byte(validServiceAccountJSON), + wantOK: false, + wantErr: false, + }, + { + name: "valid refresh token JSON", + data: []byte(validRefeshTokenJSON), + wantOK: true, + wantErr: false, + }, + } + for _, tt := range tests { + _, ok, err := refreshTokenTokenSource(context.Background(), tt.data) + if (err != nil) != tt.wantErr { + t.Errorf("%v: refreshTokenTokenSource() err = %v, wantErr %v", tt.name, err, tt.wantErr) + } + if ok != tt.wantOK { + t.Errorf("%v: refreshTokenTokenSource() ok = %v, want %v", tt.name, ok, tt.wantOK) + } + } +} diff --git a/vendor/google.golang.org/api/internal/service-account.json b/vendor/google.golang.org/api/internal/service-account.json new file mode 100644 index 0000000..2cb54c2 --- /dev/null +++ b/vendor/google.golang.org/api/internal/service-account.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "project_id", + "private_key_id": "private_key_id", + "private_key": "private_key", + "client_email": "xyz@developer.gserviceaccount.com", + "client_id": "123", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://accounts.google.com/o/oauth2/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/xyz%40developer.gserviceaccount.com" +} diff --git a/vendor/google.golang.org/api/kgsearch/v1/kgsearch-api.json b/vendor/google.golang.org/api/kgsearch/v1/kgsearch-api.json index ec077e6..95a9904 100644 --- a/vendor/google.golang.org/api/kgsearch/v1/kgsearch-api.json +++ b/vendor/google.golang.org/api/kgsearch/v1/kgsearch-api.json @@ -1,90 +1,115 @@ { + "version": "v1", + "baseUrl": "https://kgsearch.googleapis.com/", + "servicePath": "", + "description": "Searches the Google Knowledge Graph for entities.", + "kind": "discovery#restDescription", + "rootUrl": "https://kgsearch.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "kgsearch", + "batchPath": "batch", "id": "kgsearch:v1", "documentationLink": "https://developers.google.com/knowledge-graph/", "revision": "20170109", "title": "Knowledge Graph Search API", - "ownerName": "Google", "discoveryVersion": "v1", + "ownerName": "Google", "version_module": "True", "resources": { "entities": { "methods": { "search": { + "flatPath": "v1/entities:search", + "path": "v1/entities:search", + "id": "kgsearch.entities.search", + "description": "Searches Knowledge Graph for entities that match the constraints.\nA list of matched entities will be returned in response, which will be in\nJSON-LD format and compatible with http://schema.org", + "httpMethod": "GET", + "parameterOrder": [], "response": { "$ref": "SearchResponse" }, - "parameterOrder": [], - "httpMethod": "GET", "parameters": { - "ids": { - "location": "query", - "description": "The list of entity id to be used for search instead of query string.\nTo specify multiple ids in the HTTP request, repeat the parameter in the\nURL as in ...?ids=A&ids=B", - "type": "string", - "repeated": true - }, - "limit": { - "location": "query", - "format": "int32", - "description": "Limits the number of entities to be returned.", - "type": "integer" - }, "prefix": { "location": "query", "description": "Enables prefix match against names and aliases of entities", "type": "boolean" }, "query": { - "location": "query", "description": "The literal query string for search.", - "type": "string" + "type": "string", + "location": "query" }, "types": { + "repeated": true, + "location": "query", "description": "Restricts returned entities with these types, e.g. Person\n(as defined in http://schema.org/Person). If multiple types are specified,\nreturned entities will contain one or more of these types.", + "type": "string" + }, + "indent": { + "description": "Enables indenting of json results.", + "type": "boolean", + "location": "query" + }, + "languages": { + "repeated": true, + "location": "query", + "description": "The list of language codes (defined in ISO 693) to run the query with,\ne.g. 'en'.", + "type": "string" + }, + "ids": { + "description": "The list of entity id to be used for search instead of query string.\nTo specify multiple ids in the HTTP request, repeat the parameter in the\nURL as in ...?ids=A&ids=B", "type": "string", "repeated": true, "location": "query" }, - "indent": { + "limit": { "location": "query", - "description": "Enables indenting of json results.", - "type": "boolean" - }, - "languages": { - "location": "query", - "description": "The list of language codes (defined in ISO 693) to run the query with,\ne.g. 'en'.", - "type": "string", - "repeated": true + "format": "int32", + "description": "Limits the number of entities to be returned.", + "type": "integer" } - }, - "flatPath": "v1/entities:search", - "id": "kgsearch.entities.search", - "path": "v1/entities:search", - "description": "Searches Knowledge Graph for entities that match the constraints.\nA list of matched entities will be returned in response, which will be in\nJSON-LD format and compatible with http://schema.org" + } } } } }, "parameters": { - "pp": { - "default": "true", - "type": "boolean", + "key": { "location": "query", - "description": "Pretty-print response." - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string" }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, "oauth_token": { "location": "query", "description": "OAuth 2.0 token for the current user.", "type": "string" }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { "location": "query", @@ -98,9 +123,14 @@ "location": "query" }, "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", + "location": "query" + }, + "callback": { "location": "query", - "description": "Selector specifying which fields to include in a partial response." + "description": "JSONP", + "type": "string" }, "$.xgafv": { "enumDescriptions": [ @@ -115,12 +145,12 @@ "description": "V1 error format.", "type": "string" }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, "alt": { + "enum": [ + "json", + "media", + "proto" + ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -129,66 +159,36 @@ ], "location": "query", "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" + "default": "json" } }, "schemas": { "SearchResponse": { - "description": "Response message includes the context and a list of matching results\nwhich contain the detail of associated entities.", "type": "object", "properties": { - "@type": { - "description": "The schema type of top-level JSON-LD object, e.g. ItemList.", - "type": "any" - }, "itemListElement": { + "description": "The item list of search results.", "items": { "type": "any" }, - "type": "array", - "description": "The item list of search results." + "type": "array" }, "@context": { "description": "The local context applicable for the response. See more details at\nhttp://www.w3.org/TR/json-ld/#context-definitions.", "type": "any" + }, + "@type": { + "description": "The schema type of top-level JSON-LD object, e.g. ItemList.", + "type": "any" } }, - "id": "SearchResponse" + "id": "SearchResponse", + "description": "Response message includes the context and a list of matching results\nwhich contain the detail of associated entities." } }, "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, - "protocol": "rest", - "version": "v1", - "baseUrl": "https://kgsearch.googleapis.com/", - "servicePath": "", - "description": "Searches the Google Knowledge Graph for entities.", - "kind": "discovery#restDescription", - "rootUrl": "https://kgsearch.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "kgsearch", - "batchPath": "batch" + "protocol": "rest" } diff --git a/vendor/google.golang.org/api/language/v1/language-api.json b/vendor/google.golang.org/api/language/v1/language-api.json index b8ea520..84fa620 100644 --- a/vendor/google.golang.org/api/language/v1/language-api.json +++ b/vendor/google.golang.org/api/language/v1/language-api.json @@ -1,29 +1,7 @@ { - "revision": "20170822", - "documentationLink": "https://cloud.google.com/natural-language/", - "id": "language:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "Features": { - "properties": { - "extractDocumentSentiment": { - "description": "Extract document-level sentiment.", - "type": "boolean" - }, - "extractSyntax": { - "description": "Extract syntax information.", - "type": "boolean" - }, - "extractEntities": { - "description": "Extract entities.", - "type": "boolean" - } - }, - "id": "Features", - "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", - "type": "object" - }, "EntityMention": { "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.", "type": "object", @@ -43,25 +21,29 @@ ] }, "text": { - "description": "The mention text.", - "$ref": "TextSpan" + "$ref": "TextSpan", + "description": "The mention text." } }, "id": "EntityMention" }, - "Sentence": { + "Features": { "properties": { - "sentiment": { - "$ref": "Sentiment", - "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence." + "extractDocumentSentiment": { + "description": "Extract document-level sentiment.", + "type": "boolean" }, - "text": { - "description": "The sentence text.", - "$ref": "TextSpan" + "extractSyntax": { + "description": "Extract syntax information.", + "type": "boolean" + }, + "extractEntities": { + "description": "Extract entities.", + "type": "boolean" } }, - "id": "Sentence", - "description": "Represents a sentence in the input document.", + "id": "Features", + "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", "type": "object" }, "Document": { @@ -79,24 +61,56 @@ "type": "string" }, "type": { + "enumDescriptions": [ + "The content type is not specified.", + "Plain text", + "HTML" + ], "enum": [ "TYPE_UNSPECIFIED", "PLAIN_TEXT", "HTML" ], "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.", - "type": "string", - "enumDescriptions": [ - "The content type is not specified.", - "Plain text", - "HTML" - ] + "type": "string" } }, "id": "Document", "description": "################################################################ #\n\nRepresents the input to API methods.", "type": "object" }, + "Sentence": { + "properties": { + "text": { + "description": "The sentence text.", + "$ref": "TextSpan" + }, + "sentiment": { + "$ref": "Sentiment", + "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence." + } + }, + "id": "Sentence", + "description": "Represents a sentence in the input document.", + "type": "object" + }, + "Sentiment": { + "properties": { + "magnitude": { + "format": "float", + "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", + "type": "number" + }, + "score": { + "format": "float", + "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", + "type": "number" + } + }, + "id": "Sentiment", + "description": "Represents the feeling associated with the entire text or entities in\nthe text.", + "type": "object" + }, "AnalyzeEntitiesRequest": { "properties": { "encodingType": { @@ -124,130 +138,9 @@ "description": "The entity analysis request message.", "type": "object" }, - "Sentiment": { - "properties": { - "magnitude": { - "format": "float", - "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", - "type": "number" - }, - "score": { - "format": "float", - "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", - "type": "number" - } - }, - "id": "Sentiment", - "description": "Represents the feeling associated with the entire text or entities in\nthe text.", - "type": "object" - }, "PartOfSpeech": { - "description": "Represents part of speech information for a token. Parts of speech\nare as defined in\nhttp://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf", - "type": "object", "properties": { - "proper": { - "enum": [ - "PROPER_UNKNOWN", - "PROPER", - "NOT_PROPER" - ], - "description": "The grammatical properness.", - "type": "string", - "enumDescriptions": [ - "Proper is not applicable in the analyzed language or is not predicted.", - "Proper", - "Not proper" - ] - }, - "case": { - "enumDescriptions": [ - "Case is not applicable in the analyzed language or is not predicted.", - "Accusative", - "Adverbial", - "Complementive", - "Dative", - "Genitive", - "Instrumental", - "Locative", - "Nominative", - "Oblique", - "Partitive", - "Prepositional", - "Reflexive", - "Relative", - "Vocative" - ], - "enum": [ - "CASE_UNKNOWN", - "ACCUSATIVE", - "ADVERBIAL", - "COMPLEMENTIVE", - "DATIVE", - "GENITIVE", - "INSTRUMENTAL", - "LOCATIVE", - "NOMINATIVE", - "OBLIQUE", - "PARTITIVE", - "PREPOSITIONAL", - "REFLEXIVE_CASE", - "RELATIVE_CASE", - "VOCATIVE" - ], - "description": "The grammatical case.", - "type": "string" - }, - "tense": { - "enum": [ - "TENSE_UNKNOWN", - "CONDITIONAL_TENSE", - "FUTURE", - "PAST", - "PRESENT", - "IMPERFECT", - "PLUPERFECT" - ], - "description": "The grammatical tense.", - "type": "string", - "enumDescriptions": [ - "Tense is not applicable in the analyzed language or is not predicted.", - "Conditional", - "Future", - "Past", - "Present", - "Imperfect", - "Pluperfect" - ] - }, - "reciprocity": { - "enum": [ - "RECIPROCITY_UNKNOWN", - "RECIPROCAL", - "NON_RECIPROCAL" - ], - "description": "The grammatical reciprocity.", - "type": "string", - "enumDescriptions": [ - "Reciprocity is not applicable in the analyzed language or is not\npredicted.", - "Reciprocal", - "Non-reciprocal" - ] - }, "form": { - "enumDescriptions": [ - "Form is not applicable in the analyzed language or is not predicted.", - "Adnomial", - "Auxiliary", - "Complementizer", - "Final ending", - "Gerund", - "Realis", - "Irrealis", - "Short form", - "Long form", - "Order form", - "Specific form" - ], "enum": [ "FORM_UNKNOWN", "ADNOMIAL", @@ -263,7 +156,21 @@ "SPECIFIC" ], "description": "The grammatical form.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Form is not applicable in the analyzed language or is not predicted.", + "Adnomial", + "Auxiliary", + "Complementizer", + "Final ending", + "Gerund", + "Realis", + "Irrealis", + "Short form", + "Long form", + "Order form", + "Specific form" + ] }, "number": { "enum": [ @@ -282,12 +189,6 @@ ] }, "voice": { - "enumDescriptions": [ - "Voice is not applicable in the analyzed language or is not predicted.", - "Active", - "Causative", - "Passive" - ], "enum": [ "VOICE_UNKNOWN", "ACTIVE", @@ -295,7 +196,13 @@ "PASSIVE" ], "description": "The grammatical voice.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Voice is not applicable in the analyzed language or is not predicted.", + "Active", + "Causative", + "Passive" + ] }, "aspect": { "enumDescriptions": [ @@ -314,15 +221,6 @@ "type": "string" }, "mood": { - "enumDescriptions": [ - "Mood is not applicable in the analyzed language or is not predicted.", - "Conditional", - "Imperative", - "Indicative", - "Interrogative", - "Jussive", - "Subjunctive" - ], "enum": [ "MOOD_UNKNOWN", "CONDITIONAL_MOOD", @@ -333,7 +231,16 @@ "SUBJUNCTIVE" ], "description": "The grammatical mood.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Mood is not applicable in the analyzed language or is not predicted.", + "Conditional", + "Imperative", + "Indicative", + "Interrogative", + "Jussive", + "Subjunctive" + ] }, "tag": { "enum": [ @@ -388,6 +295,13 @@ "type": "string" }, "person": { + "enumDescriptions": [ + "Person is not applicable in the analyzed language or is not predicted.", + "First", + "Second", + "Third", + "Reflexive" + ], "enum": [ "PERSON_UNKNOWN", "FIRST", @@ -396,19 +310,104 @@ "REFLEXIVE_PERSON" ], "description": "The grammatical person.", + "type": "string" + }, + "proper": { + "enumDescriptions": [ + "Proper is not applicable in the analyzed language or is not predicted.", + "Proper", + "Not proper" + ], + "enum": [ + "PROPER_UNKNOWN", + "PROPER", + "NOT_PROPER" + ], + "description": "The grammatical properness.", + "type": "string" + }, + "case": { + "enum": [ + "CASE_UNKNOWN", + "ACCUSATIVE", + "ADVERBIAL", + "COMPLEMENTIVE", + "DATIVE", + "GENITIVE", + "INSTRUMENTAL", + "LOCATIVE", + "NOMINATIVE", + "OBLIQUE", + "PARTITIVE", + "PREPOSITIONAL", + "REFLEXIVE_CASE", + "RELATIVE_CASE", + "VOCATIVE" + ], + "description": "The grammatical case.", "type": "string", "enumDescriptions": [ - "Person is not applicable in the analyzed language or is not predicted.", - "First", - "Second", - "Third", - "Reflexive" + "Case is not applicable in the analyzed language or is not predicted.", + "Accusative", + "Adverbial", + "Complementive", + "Dative", + "Genitive", + "Instrumental", + "Locative", + "Nominative", + "Oblique", + "Partitive", + "Prepositional", + "Reflexive", + "Relative", + "Vocative" ] + }, + "tense": { + "enumDescriptions": [ + "Tense is not applicable in the analyzed language or is not predicted.", + "Conditional", + "Future", + "Past", + "Present", + "Imperfect", + "Pluperfect" + ], + "enum": [ + "TENSE_UNKNOWN", + "CONDITIONAL_TENSE", + "FUTURE", + "PAST", + "PRESENT", + "IMPERFECT", + "PLUPERFECT" + ], + "description": "The grammatical tense.", + "type": "string" + }, + "reciprocity": { + "enumDescriptions": [ + "Reciprocity is not applicable in the analyzed language or is not\npredicted.", + "Reciprocal", + "Non-reciprocal" + ], + "enum": [ + "RECIPROCITY_UNKNOWN", + "RECIPROCAL", + "NON_RECIPROCAL" + ], + "description": "The grammatical reciprocity.", + "type": "string" } }, - "id": "PartOfSpeech" + "id": "PartOfSpeech", + "description": "Represents part of speech information for a token. Parts of speech\nare as defined in\nhttp://www.lrec-conf.org/proceedings/lrec2012/pdf/274_Paper.pdf", + "type": "object" }, "AnalyzeSyntaxRequest": { + "description": "The syntax analysis request message.", + "type": "object", "properties": { "encodingType": { "enum": [ @@ -427,13 +426,11 @@ ] }, "document": { - "description": "Input document.", - "$ref": "Document" + "$ref": "Document", + "description": "Input document." } }, - "id": "AnalyzeSyntaxRequest", - "description": "The syntax analysis request message.", - "type": "object" + "id": "AnalyzeSyntaxRequest" }, "AnalyzeSentimentResponse": { "properties": { @@ -458,6 +455,8 @@ "type": "object" }, "AnalyzeEntitiesResponse": { + "description": "The entity analysis response message.", + "type": "object", "properties": { "entities": { "description": "The recognized entities in the input document.", @@ -471,8 +470,31 @@ "type": "string" } }, - "id": "AnalyzeEntitiesResponse", - "description": "The entity analysis response message.", + "id": "AnalyzeEntitiesResponse" + }, + "AnalyzeSyntaxResponse": { + "properties": { + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, + "sentences": { + "description": "Sentences in the input document.", + "items": { + "$ref": "Sentence" + }, + "type": "array" + }, + "tokens": { + "description": "Tokens, along with their syntactic information, in the input document.", + "items": { + "$ref": "Token" + }, + "type": "array" + } + }, + "id": "AnalyzeSyntaxResponse", + "description": "The syntax analysis response message.", "type": "object" }, "Entity": { @@ -503,16 +525,6 @@ "type": "object" }, "type": { - "enumDescriptions": [ - "Unknown", - "Person", - "Location", - "Organization", - "Event", - "Work of art", - "Consumer goods", - "Other types" - ], "enum": [ "UNKNOWN", "PERSON", @@ -524,39 +536,22 @@ "OTHER" ], "description": "The entity type.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unknown", + "Person", + "Location", + "Organization", + "Event", + "Work of art", + "Consumer goods", + "Other types" + ] } }, "id": "Entity" }, - "AnalyzeSyntaxResponse": { - "description": "The syntax analysis response message.", - "type": "object", - "properties": { - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" - }, - "sentences": { - "description": "Sentences in the input document.", - "items": { - "$ref": "Sentence" - }, - "type": "array" - }, - "tokens": { - "description": "Tokens, along with their syntactic information, in the input document.", - "items": { - "$ref": "Token" - }, - "type": "array" - } - }, - "id": "AnalyzeSyntaxResponse" - }, "AnnotateTextRequest": { - "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.", - "type": "object", "properties": { "encodingType": { "enumDescriptions": [ @@ -583,9 +578,13 @@ "$ref": "Features" } }, - "id": "AnnotateTextRequest" + "id": "AnnotateTextRequest", + "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.", + "type": "object" }, "AnalyzeSentimentRequest": { + "description": "The sentiment analysis request message.", + "type": "object", "properties": { "encodingType": { "enum": [ @@ -608,25 +607,12 @@ "description": "Input document." } }, - "id": "AnalyzeSentimentRequest", - "description": "The sentiment analysis request message.", - "type": "object" + "id": "AnalyzeSentimentRequest" }, "AnnotateTextResponse": { "description": "The text annotations response message.", "type": "object", "properties": { - "entities": { - "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.", - "items": { - "$ref": "Entity" - }, - "type": "array" - }, - "documentSentiment": { - "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment.", - "$ref": "Sentiment" - }, "language": { "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", "type": "string" @@ -644,94 +630,24 @@ "$ref": "Token" }, "type": "array" + }, + "entities": { + "description": "Entities, along with their semantic information, in the input document.\nPopulated if the user enables\nAnnotateTextRequest.Features.extract_entities.", + "items": { + "$ref": "Entity" + }, + "type": "array" + }, + "documentSentiment": { + "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment.", + "$ref": "Sentiment" } }, "id": "AnnotateTextResponse" }, "DependencyEdge": { - "description": "Represents dependency parse tree information for a token. (For more\ninformation on dependency labels, see\nhttp://www.aclweb.org/anthology/P13-2017", - "type": "object", "properties": { "label": { - "enumDescriptions": [ - "Unknown", - "Abbreviation modifier", - "Adjectival complement", - "Adverbial clause modifier", - "Adverbial modifier", - "Adjectival modifier of an NP", - "Appositional modifier of an NP", - "Attribute dependent of a copular verb", - "Auxiliary (non-main) verb", - "Passive auxiliary", - "Coordinating conjunction", - "Clausal complement of a verb or adjective", - "Conjunct", - "Clausal subject", - "Clausal passive subject", - "Dependency (unable to determine)", - "Determiner", - "Discourse", - "Direct object", - "Expletive", - "Goes with (part of a word in a text not well edited)", - "Indirect object", - "Marker (word introducing a subordinate clause)", - "Multi-word expression", - "Multi-word verbal expression", - "Negation modifier", - "Noun compound modifier", - "Noun phrase used as an adverbial modifier", - "Nominal subject", - "Passive nominal subject", - "Numeric modifier of a noun", - "Element of compound number", - "Punctuation mark", - "Parataxis relation", - "Participial modifier", - "The complement of a preposition is a clause", - "Object of a preposition", - "Possession modifier", - "Postverbal negative particle", - "Predicate complement", - "Preconjunt", - "Predeterminer", - "Prefix", - "Prepositional modifier", - "The relationship between a verb and verbal morpheme", - "Particle", - "Associative or possessive marker", - "Quantifier phrase modifier", - "Relative clause modifier", - "Complementizer in relative clause", - "Ellipsis without a preceding predicate", - "Referent", - "Remnant", - "Reparandum", - "Root", - "Suffix specifying a unit of number", - "Suffix", - "Temporal modifier", - "Topic marker", - "Clause headed by an infinite form of the verb that modifies a noun", - "Vocative", - "Open clausal complement", - "Name suffix", - "Name title", - "Adverbial phrase modifier", - "Causative auxiliary", - "Helper auxiliary", - "Rentaishi (Prenominal modifier)", - "Foreign words", - "Keyword", - "List for chains of comparable items", - "Nominalized clause", - "Nominalized clausal subject", - "Nominalized clausal passive", - "Compound of numeric modifier", - "Copula", - "Dislocated relation (for fronted/topicalized elements)" - ], "enum": [ "UNKNOWN", "ABBREV", @@ -812,7 +728,86 @@ "DISLOCATED" ], "description": "The parse label for the token.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unknown", + "Abbreviation modifier", + "Adjectival complement", + "Adverbial clause modifier", + "Adverbial modifier", + "Adjectival modifier of an NP", + "Appositional modifier of an NP", + "Attribute dependent of a copular verb", + "Auxiliary (non-main) verb", + "Passive auxiliary", + "Coordinating conjunction", + "Clausal complement of a verb or adjective", + "Conjunct", + "Clausal subject", + "Clausal passive subject", + "Dependency (unable to determine)", + "Determiner", + "Discourse", + "Direct object", + "Expletive", + "Goes with (part of a word in a text not well edited)", + "Indirect object", + "Marker (word introducing a subordinate clause)", + "Multi-word expression", + "Multi-word verbal expression", + "Negation modifier", + "Noun compound modifier", + "Noun phrase used as an adverbial modifier", + "Nominal subject", + "Passive nominal subject", + "Numeric modifier of a noun", + "Element of compound number", + "Punctuation mark", + "Parataxis relation", + "Participial modifier", + "The complement of a preposition is a clause", + "Object of a preposition", + "Possession modifier", + "Postverbal negative particle", + "Predicate complement", + "Preconjunt", + "Predeterminer", + "Prefix", + "Prepositional modifier", + "The relationship between a verb and verbal morpheme", + "Particle", + "Associative or possessive marker", + "Quantifier phrase modifier", + "Relative clause modifier", + "Complementizer in relative clause", + "Ellipsis without a preceding predicate", + "Referent", + "Remnant", + "Reparandum", + "Root", + "Suffix specifying a unit of number", + "Suffix", + "Temporal modifier", + "Topic marker", + "Clause headed by an infinite form of the verb that modifies a noun", + "Vocative", + "Open clausal complement", + "Name suffix", + "Name title", + "Adverbial phrase modifier", + "Causative auxiliary", + "Helper auxiliary", + "Rentaishi (Prenominal modifier)", + "Foreign words", + "Keyword", + "List for chains of comparable items", + "Nominalized clause", + "Nominalized clausal subject", + "Nominalized clausal passive", + "Compound of numeric modifier", + "Copula", + "Dislocated relation (for fronted/topicalized elements)" + ] }, "headTokenIndex": { "format": "int32", @@ -820,7 +815,9 @@ "type": "integer" } }, - "id": "DependencyEdge" + "id": "DependencyEdge", + "description": "Represents dependency parse tree information for a token. (For more\ninformation on dependency labels, see\nhttp://www.aclweb.org/anthology/P13-2017", + "type": "object" }, "Token": { "description": "Represents the smallest syntactic building block of the text.", @@ -835,8 +832,8 @@ "description": "Parts of speech tag for this token." }, "dependencyEdge": { - "$ref": "DependencyEdge", - "description": "Dependency tree parse for this token." + "description": "Dependency tree parse for this token.", + "$ref": "DependencyEdge" }, "text": { "description": "The token text.", @@ -862,8 +859,6 @@ "type": "object" }, "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", "properties": { "message": { "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", @@ -886,23 +881,25 @@ "type": "integer" } }, - "id": "Status" + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object" } }, - "protocol": "rest", "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "canonicalName": "Cloud Natural Language", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-language": { - "description": "Apply machine learning models to reveal the structure and meaning of text" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-language": { + "description": "Apply machine learning models to reveal the structure and meaning of text" } } } @@ -916,62 +913,24 @@ "resources": { "documents": { "methods": { - "analyzeEntities": { - "id": "language.documents.analyzeEntities", - "path": "v1/documents:analyzeEntities", - "request": { - "$ref": "AnalyzeEntitiesRequest" - }, - "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.", - "response": { - "$ref": "AnalyzeEntitiesResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-language", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1/documents:analyzeEntities" - }, - "analyzeSyntax": { - "response": { - "$ref": "AnalyzeSyntaxResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-language", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1/documents:analyzeSyntax", - "id": "language.documents.analyzeSyntax", - "path": "v1/documents:analyzeSyntax", - "request": { - "$ref": "AnalyzeSyntaxRequest" - }, - "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties." - }, "analyzeSentiment": { - "request": { - "$ref": "AnalyzeSentimentRequest" - }, - "description": "Analyzes the sentiment of the provided text.", - "httpMethod": "POST", - "parameterOrder": [], "response": { "$ref": "AnalyzeSentimentResponse" }, + "parameterOrder": [], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-language", "https://www.googleapis.com/auth/cloud-platform" ], "parameters": {}, "flatPath": "v1/documents:analyzeSentiment", + "id": "language.documents.analyzeSentiment", "path": "v1/documents:analyzeSentiment", - "id": "language.documents.analyzeSentiment" + "request": { + "$ref": "AnalyzeSentimentRequest" + }, + "description": "Analyzes the sentiment of the provided text." }, "annotateText": { "response": { @@ -991,11 +950,60 @@ "request": { "$ref": "AnnotateTextRequest" } + }, + "analyzeEntities": { + "response": { + "$ref": "AnalyzeEntitiesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-language", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {}, + "flatPath": "v1/documents:analyzeEntities", + "id": "language.documents.analyzeEntities", + "path": "v1/documents:analyzeEntities", + "request": { + "$ref": "AnalyzeEntitiesRequest" + }, + "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties." + }, + "analyzeSyntax": { + "path": "v1/documents:analyzeSyntax", + "id": "language.documents.analyzeSyntax", + "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.", + "request": { + "$ref": "AnalyzeSyntaxRequest" + }, + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "AnalyzeSyntaxResponse" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-language", + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/documents:analyzeSyntax" } } } }, "parameters": { + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, "fields": { "description": "Selector specifying which fields to include in a partial response.", "type": "string", @@ -1020,11 +1028,17 @@ "type": "string" }, "callback": { - "location": "query", "description": "JSONP", - "type": "string" + "type": "string", + "location": "query" }, "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", "description": "Data format for response.", "default": "json", "enum": [ @@ -1032,13 +1046,7 @@ "media", "proto" ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" + "type": "string" }, "key": { "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", @@ -1067,26 +1075,18 @@ "location": "query" }, "oauth_token": { - "location": "query", "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" } }, "version": "v1", "baseUrl": "https://language.googleapis.com/", - "servicePath": "", "description": "Provides natural language understanding technologies to developers. Examples include sentiment analysis, entity recognition, entity sentiment analysis, and text annotations.", "kind": "discovery#restDescription", - "basePath": "" + "servicePath": "", + "basePath": "", + "revision": "20170822", + "documentationLink": "https://cloud.google.com/natural-language/", + "id": "language:v1" } diff --git a/vendor/google.golang.org/api/language/v1beta1/language-api.json b/vendor/google.golang.org/api/language/v1beta1/language-api.json index 824752c..3a9e766 100644 --- a/vendor/google.golang.org/api/language/v1beta1/language-api.json +++ b/vendor/google.golang.org/api/language/v1beta1/language-api.json @@ -5,563 +5,7 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "Features": { - "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", - "type": "object", - "properties": { - "extractDocumentSentiment": { - "description": "Extract document-level sentiment.", - "type": "boolean" - }, - "extractSyntax": { - "description": "Extract syntax information.", - "type": "boolean" - }, - "extractEntities": { - "description": "Extract entities.", - "type": "boolean" - } - }, - "id": "Features" - }, - "EntityMention": { - "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.", - "type": "object", - "properties": { - "type": { - "enumDescriptions": [ - "Unknown", - "Proper name", - "Common noun (or noun compound)" - ], - "enum": [ - "TYPE_UNKNOWN", - "PROPER", - "COMMON" - ], - "description": "The type of the entity mention.", - "type": "string" - }, - "text": { - "$ref": "TextSpan", - "description": "The mention text." - } - }, - "id": "EntityMention" - }, - "Sentence": { - "description": "Represents a sentence in the input document.", - "type": "object", - "properties": { - "text": { - "$ref": "TextSpan", - "description": "The sentence text." - }, - "sentiment": { - "$ref": "Sentiment", - "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence." - } - }, - "id": "Sentence" - }, - "Document": { - "description": "################################################################ #\n\nRepresents the input to API methods.", - "type": "object", - "properties": { - "language": { - "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.\u003cbr\u003e\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.", - "type": "string" - }, - "content": { - "description": "The content of the input in string format.", - "type": "string" - }, - "type": { - "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.", - "type": "string", - "enumDescriptions": [ - "The content type is not specified.", - "Plain text", - "HTML" - ], - "enum": [ - "TYPE_UNSPECIFIED", - "PLAIN_TEXT", - "HTML" - ] - }, - "gcsContentUri": { - "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.", - "type": "string" - } - }, - "id": "Document" - }, - "Sentiment": { - "description": "Represents the feeling associated with the entire text or entities in\nthe text.", - "type": "object", - "properties": { - "score": { - "format": "float", - "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", - "type": "number" - }, - "polarity": { - "format": "float", - "description": "DEPRECATED FIELD - This field is being deprecated in\nfavor of score. Please refer to our documentation at\nhttps://cloud.google.com/natural-language/docs for more information.", - "type": "number" - }, - "magnitude": { - "format": "float", - "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", - "type": "number" - } - }, - "id": "Sentiment" - }, - "AnalyzeEntitiesRequest": { - "description": "The entity analysis request message.", - "type": "object", - "properties": { - "encodingType": { - "enumDescriptions": [ - "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." - ], - "enum": [ - "NONE", - "UTF8", - "UTF16", - "UTF32" - ], - "description": "The encoding type used by the API to calculate offsets.", - "type": "string" - }, - "document": { - "description": "Input document.", - "$ref": "Document" - } - }, - "id": "AnalyzeEntitiesRequest" - }, - "PartOfSpeech": { - "description": "Represents part of speech information for a token.", - "type": "object", - "properties": { - "form": { - "description": "The grammatical form.", - "type": "string", - "enumDescriptions": [ - "Form is not applicable in the analyzed language or is not predicted.", - "Adnomial", - "Auxiliary", - "Complementizer", - "Final ending", - "Gerund", - "Realis", - "Irrealis", - "Short form", - "Long form", - "Order form", - "Specific form" - ], - "enum": [ - "FORM_UNKNOWN", - "ADNOMIAL", - "AUXILIARY", - "COMPLEMENTIZER", - "FINAL_ENDING", - "GERUND", - "REALIS", - "IRREALIS", - "SHORT", - "LONG", - "ORDER", - "SPECIFIC" - ] - }, - "number": { - "enumDescriptions": [ - "Number is not applicable in the analyzed language or is not predicted.", - "Singular", - "Plural", - "Dual" - ], - "enum": [ - "NUMBER_UNKNOWN", - "SINGULAR", - "PLURAL", - "DUAL" - ], - "description": "The grammatical number.", - "type": "string" - }, - "voice": { - "description": "The grammatical voice.", - "type": "string", - "enumDescriptions": [ - "Voice is not applicable in the analyzed language or is not predicted.", - "Active", - "Causative", - "Passive" - ], - "enum": [ - "VOICE_UNKNOWN", - "ACTIVE", - "CAUSATIVE", - "PASSIVE" - ] - }, - "aspect": { - "enumDescriptions": [ - "Aspect is not applicable in the analyzed language or is not predicted.", - "Perfective", - "Imperfective", - "Progressive" - ], - "enum": [ - "ASPECT_UNKNOWN", - "PERFECTIVE", - "IMPERFECTIVE", - "PROGRESSIVE" - ], - "description": "The grammatical aspect.", - "type": "string" - }, - "mood": { - "description": "The grammatical mood.", - "type": "string", - "enumDescriptions": [ - "Mood is not applicable in the analyzed language or is not predicted.", - "Conditional", - "Imperative", - "Indicative", - "Interrogative", - "Jussive", - "Subjunctive" - ], - "enum": [ - "MOOD_UNKNOWN", - "CONDITIONAL_MOOD", - "IMPERATIVE", - "INDICATIVE", - "INTERROGATIVE", - "JUSSIVE", - "SUBJUNCTIVE" - ] - }, - "tag": { - "description": "The part of speech tag.", - "type": "string", - "enumDescriptions": [ - "Unknown", - "Adjective", - "Adposition (preposition and postposition)", - "Adverb", - "Conjunction", - "Determiner", - "Noun (common and proper)", - "Cardinal number", - "Pronoun", - "Particle or other function word", - "Punctuation", - "Verb (all tenses and modes)", - "Other: foreign words, typos, abbreviations", - "Affix" - ], - "enum": [ - "UNKNOWN", - "ADJ", - "ADP", - "ADV", - "CONJ", - "DET", - "NOUN", - "NUM", - "PRON", - "PRT", - "PUNCT", - "VERB", - "X", - "AFFIX" - ] - }, - "gender": { - "enumDescriptions": [ - "Gender is not applicable in the analyzed language or is not predicted.", - "Feminine", - "Masculine", - "Neuter" - ], - "enum": [ - "GENDER_UNKNOWN", - "FEMININE", - "MASCULINE", - "NEUTER" - ], - "description": "The grammatical gender.", - "type": "string" - }, - "person": { - "description": "The grammatical person.", - "type": "string", - "enumDescriptions": [ - "Person is not applicable in the analyzed language or is not predicted.", - "First", - "Second", - "Third", - "Reflexive" - ], - "enum": [ - "PERSON_UNKNOWN", - "FIRST", - "SECOND", - "THIRD", - "REFLEXIVE_PERSON" - ] - }, - "proper": { - "description": "The grammatical properness.", - "type": "string", - "enumDescriptions": [ - "Proper is not applicable in the analyzed language or is not predicted.", - "Proper", - "Not proper" - ], - "enum": [ - "PROPER_UNKNOWN", - "PROPER", - "NOT_PROPER" - ] - }, - "case": { - "enumDescriptions": [ - "Case is not applicable in the analyzed language or is not predicted.", - "Accusative", - "Adverbial", - "Complementive", - "Dative", - "Genitive", - "Instrumental", - "Locative", - "Nominative", - "Oblique", - "Partitive", - "Prepositional", - "Reflexive", - "Relative", - "Vocative" - ], - "enum": [ - "CASE_UNKNOWN", - "ACCUSATIVE", - "ADVERBIAL", - "COMPLEMENTIVE", - "DATIVE", - "GENITIVE", - "INSTRUMENTAL", - "LOCATIVE", - "NOMINATIVE", - "OBLIQUE", - "PARTITIVE", - "PREPOSITIONAL", - "REFLEXIVE_CASE", - "RELATIVE_CASE", - "VOCATIVE" - ], - "description": "The grammatical case.", - "type": "string" - }, - "tense": { - "enumDescriptions": [ - "Tense is not applicable in the analyzed language or is not predicted.", - "Conditional", - "Future", - "Past", - "Present", - "Imperfect", - "Pluperfect" - ], - "enum": [ - "TENSE_UNKNOWN", - "CONDITIONAL_TENSE", - "FUTURE", - "PAST", - "PRESENT", - "IMPERFECT", - "PLUPERFECT" - ], - "description": "The grammatical tense.", - "type": "string" - }, - "reciprocity": { - "description": "The grammatical reciprocity.", - "type": "string", - "enumDescriptions": [ - "Reciprocity is not applicable in the analyzed language or is not\npredicted.", - "Reciprocal", - "Non-reciprocal" - ], - "enum": [ - "RECIPROCITY_UNKNOWN", - "RECIPROCAL", - "NON_RECIPROCAL" - ] - } - }, - "id": "PartOfSpeech" - }, - "AnalyzeSyntaxRequest": { - "description": "The syntax analysis request message.", - "type": "object", - "properties": { - "encodingType": { - "enumDescriptions": [ - "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." - ], - "enum": [ - "NONE", - "UTF8", - "UTF16", - "UTF32" - ], - "description": "The encoding type used by the API to calculate offsets.", - "type": "string" - }, - "document": { - "description": "Input document.", - "$ref": "Document" - } - }, - "id": "AnalyzeSyntaxRequest" - }, - "AnalyzeSentimentResponse": { - "description": "The sentiment analysis response message.", - "type": "object", - "properties": { - "documentSentiment": { - "$ref": "Sentiment", - "description": "The overall sentiment of the input document." - }, - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" - }, - "sentences": { - "description": "The sentiment for all the sentences in the document.", - "items": { - "$ref": "Sentence" - }, - "type": "array" - } - }, - "id": "AnalyzeSentimentResponse" - }, - "AnalyzeEntitiesResponse": { - "description": "The entity analysis response message.", - "type": "object", - "properties": { - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" - }, - "entities": { - "description": "The recognized entities in the input document.", - "items": { - "$ref": "Entity" - }, - "type": "array" - } - }, - "id": "AnalyzeEntitiesResponse" - }, - "AnalyzeSyntaxResponse": { - "description": "The syntax analysis response message.", - "type": "object", - "properties": { - "sentences": { - "description": "Sentences in the input document.", - "items": { - "$ref": "Sentence" - }, - "type": "array" - }, - "tokens": { - "description": "Tokens, along with their syntactic information, in the input document.", - "items": { - "$ref": "Token" - }, - "type": "array" - }, - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" - } - }, - "id": "AnalyzeSyntaxResponse" - }, - "Entity": { - "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.", - "type": "object", - "properties": { - "salience": { - "format": "float", - "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.", - "type": "number" - }, - "metadata": { - "additionalProperties": { - "type": "string" - }, - "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.", - "type": "object" - }, - "type": { - "description": "The entity type.", - "type": "string", - "enumDescriptions": [ - "Unknown", - "Person", - "Location", - "Organization", - "Event", - "Work of art", - "Consumer goods", - "Other types" - ], - "enum": [ - "UNKNOWN", - "PERSON", - "LOCATION", - "ORGANIZATION", - "EVENT", - "WORK_OF_ART", - "CONSUMER_GOOD", - "OTHER" - ] - }, - "mentions": { - "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.", - "items": { - "$ref": "EntityMention" - }, - "type": "array" - }, - "name": { - "description": "The representative name for the entity.", - "type": "string" - } - }, - "id": "Entity" - }, "AnnotateTextRequest": { - "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.", - "type": "object", "properties": { "encodingType": { "enumDescriptions": [ @@ -580,20 +24,57 @@ "type": "string" }, "document": { - "description": "Input document.", - "$ref": "Document" + "$ref": "Document", + "description": "Input document." }, "features": { "description": "The enabled features.", "$ref": "Features" } }, - "id": "AnnotateTextRequest" + "id": "AnnotateTextRequest", + "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.", + "type": "object" + }, + "AnalyzeSentimentRequest": { + "description": "The sentiment analysis request message.", + "type": "object", + "properties": { + "encodingType": { + "enum": [ + "NONE", + "UTF8", + "UTF16", + "UTF32" + ], + "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.", + "type": "string", + "enumDescriptions": [ + "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." + ] + }, + "document": { + "$ref": "Document", + "description": "Input document." + } + }, + "id": "AnalyzeSentimentRequest" }, "AnnotateTextResponse": { "description": "The text annotations response message.", "type": "object", "properties": { + "documentSentiment": { + "$ref": "Sentiment", + "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment." + }, + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, "sentences": { "description": "Sentences in the input document. Populated if the user enables\nAnnotateTextRequest.Features.extract_syntax.", "items": { @@ -614,50 +95,22 @@ "$ref": "Entity" }, "type": "array" - }, - "documentSentiment": { - "$ref": "Sentiment", - "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment." - }, - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" } }, "id": "AnnotateTextResponse" }, - "AnalyzeSentimentRequest": { - "description": "The sentiment analysis request message.", - "type": "object", - "properties": { - "document": { - "$ref": "Document", - "description": "Input document." - }, - "encodingType": { - "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.", - "type": "string", - "enumDescriptions": [ - "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." - ], - "enum": [ - "NONE", - "UTF8", - "UTF16", - "UTF32" - ] - } - }, - "id": "AnalyzeSentimentRequest" - }, "DependencyEdge": { + "id": "DependencyEdge", "description": "Represents dependency parse tree information for a token.", "type": "object", "properties": { + "headTokenIndex": { + "format": "int32", + "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.", + "type": "integer" + }, "label": { + "type": "string", "enumDescriptions": [ "Unknown", "Abbreviation modifier", @@ -816,39 +269,32 @@ "COP", "DISLOCATED" ], - "description": "The parse label for the token.", - "type": "string" - }, - "headTokenIndex": { - "format": "int32", - "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.", - "type": "integer" + "description": "The parse label for the token." } - }, - "id": "DependencyEdge" + } }, "Token": { - "description": "Represents the smallest syntactic building block of the text.", "type": "object", "properties": { + "partOfSpeech": { + "$ref": "PartOfSpeech", + "description": "Parts of speech tag for this token." + }, "dependencyEdge": { - "$ref": "DependencyEdge", - "description": "Dependency tree parse for this token." + "description": "Dependency tree parse for this token.", + "$ref": "DependencyEdge" }, "text": { - "description": "The token text.", - "$ref": "TextSpan" + "$ref": "TextSpan", + "description": "The token text." }, "lemma": { "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.", "type": "string" - }, - "partOfSpeech": { - "description": "Parts of speech tag for this token.", - "$ref": "PartOfSpeech" } }, - "id": "Token" + "id": "Token", + "description": "Represents the smallest syntactic building block of the text." }, "TextSpan": { "description": "Represents an output piece of text.", @@ -892,22 +338,576 @@ } }, "id": "Status" + }, + "EntityMention": { + "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.", + "type": "object", + "properties": { + "type": { + "enumDescriptions": [ + "Unknown", + "Proper name", + "Common noun (or noun compound)" + ], + "enum": [ + "TYPE_UNKNOWN", + "PROPER", + "COMMON" + ], + "description": "The type of the entity mention.", + "type": "string" + }, + "text": { + "$ref": "TextSpan", + "description": "The mention text." + } + }, + "id": "EntityMention" + }, + "Features": { + "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", + "type": "object", + "properties": { + "extractDocumentSentiment": { + "description": "Extract document-level sentiment.", + "type": "boolean" + }, + "extractSyntax": { + "description": "Extract syntax information.", + "type": "boolean" + }, + "extractEntities": { + "type": "boolean", + "description": "Extract entities." + } + }, + "id": "Features" + }, + "Sentence": { + "description": "Represents a sentence in the input document.", + "type": "object", + "properties": { + "text": { + "$ref": "TextSpan", + "description": "The sentence text." + }, + "sentiment": { + "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence.", + "$ref": "Sentiment" + } + }, + "id": "Sentence" + }, + "Document": { + "description": "################################################################ #\n\nRepresents the input to API methods.", + "type": "object", + "properties": { + "language": { + "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.\u003cbr\u003e\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.", + "type": "string" + }, + "content": { + "description": "The content of the input in string format.", + "type": "string" + }, + "type": { + "enum": [ + "TYPE_UNSPECIFIED", + "PLAIN_TEXT", + "HTML" + ], + "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.", + "type": "string", + "enumDescriptions": [ + "The content type is not specified.", + "Plain text", + "HTML" + ] + }, + "gcsContentUri": { + "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.", + "type": "string" + } + }, + "id": "Document" + }, + "Sentiment": { + "properties": { + "score": { + "format": "float", + "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", + "type": "number" + }, + "polarity": { + "format": "float", + "description": "DEPRECATED FIELD - This field is being deprecated in\nfavor of score. Please refer to our documentation at\nhttps://cloud.google.com/natural-language/docs for more information.", + "type": "number" + }, + "magnitude": { + "format": "float", + "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", + "type": "number" + } + }, + "id": "Sentiment", + "description": "Represents the feeling associated with the entire text or entities in\nthe text.", + "type": "object" + }, + "AnalyzeEntitiesRequest": { + "description": "The entity analysis request message.", + "type": "object", + "properties": { + "encodingType": { + "enum": [ + "NONE", + "UTF8", + "UTF16", + "UTF32" + ], + "description": "The encoding type used by the API to calculate offsets.", + "type": "string", + "enumDescriptions": [ + "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." + ] + }, + "document": { + "$ref": "Document", + "description": "Input document." + } + }, + "id": "AnalyzeEntitiesRequest" + }, + "PartOfSpeech": { + "description": "Represents part of speech information for a token.", + "type": "object", + "properties": { + "form": { + "type": "string", + "enumDescriptions": [ + "Form is not applicable in the analyzed language or is not predicted.", + "Adnomial", + "Auxiliary", + "Complementizer", + "Final ending", + "Gerund", + "Realis", + "Irrealis", + "Short form", + "Long form", + "Order form", + "Specific form" + ], + "enum": [ + "FORM_UNKNOWN", + "ADNOMIAL", + "AUXILIARY", + "COMPLEMENTIZER", + "FINAL_ENDING", + "GERUND", + "REALIS", + "IRREALIS", + "SHORT", + "LONG", + "ORDER", + "SPECIFIC" + ], + "description": "The grammatical form." + }, + "number": { + "enum": [ + "NUMBER_UNKNOWN", + "SINGULAR", + "PLURAL", + "DUAL" + ], + "description": "The grammatical number.", + "type": "string", + "enumDescriptions": [ + "Number is not applicable in the analyzed language or is not predicted.", + "Singular", + "Plural", + "Dual" + ] + }, + "voice": { + "enumDescriptions": [ + "Voice is not applicable in the analyzed language or is not predicted.", + "Active", + "Causative", + "Passive" + ], + "enum": [ + "VOICE_UNKNOWN", + "ACTIVE", + "CAUSATIVE", + "PASSIVE" + ], + "description": "The grammatical voice.", + "type": "string" + }, + "aspect": { + "type": "string", + "enumDescriptions": [ + "Aspect is not applicable in the analyzed language or is not predicted.", + "Perfective", + "Imperfective", + "Progressive" + ], + "enum": [ + "ASPECT_UNKNOWN", + "PERFECTIVE", + "IMPERFECTIVE", + "PROGRESSIVE" + ], + "description": "The grammatical aspect." + }, + "mood": { + "description": "The grammatical mood.", + "type": "string", + "enumDescriptions": [ + "Mood is not applicable in the analyzed language or is not predicted.", + "Conditional", + "Imperative", + "Indicative", + "Interrogative", + "Jussive", + "Subjunctive" + ], + "enum": [ + "MOOD_UNKNOWN", + "CONDITIONAL_MOOD", + "IMPERATIVE", + "INDICATIVE", + "INTERROGATIVE", + "JUSSIVE", + "SUBJUNCTIVE" + ] + }, + "tag": { + "enum": [ + "UNKNOWN", + "ADJ", + "ADP", + "ADV", + "CONJ", + "DET", + "NOUN", + "NUM", + "PRON", + "PRT", + "PUNCT", + "VERB", + "X", + "AFFIX" + ], + "description": "The part of speech tag.", + "type": "string", + "enumDescriptions": [ + "Unknown", + "Adjective", + "Adposition (preposition and postposition)", + "Adverb", + "Conjunction", + "Determiner", + "Noun (common and proper)", + "Cardinal number", + "Pronoun", + "Particle or other function word", + "Punctuation", + "Verb (all tenses and modes)", + "Other: foreign words, typos, abbreviations", + "Affix" + ] + }, + "gender": { + "enumDescriptions": [ + "Gender is not applicable in the analyzed language or is not predicted.", + "Feminine", + "Masculine", + "Neuter" + ], + "enum": [ + "GENDER_UNKNOWN", + "FEMININE", + "MASCULINE", + "NEUTER" + ], + "description": "The grammatical gender.", + "type": "string" + }, + "person": { + "enum": [ + "PERSON_UNKNOWN", + "FIRST", + "SECOND", + "THIRD", + "REFLEXIVE_PERSON" + ], + "description": "The grammatical person.", + "type": "string", + "enumDescriptions": [ + "Person is not applicable in the analyzed language or is not predicted.", + "First", + "Second", + "Third", + "Reflexive" + ] + }, + "proper": { + "enumDescriptions": [ + "Proper is not applicable in the analyzed language or is not predicted.", + "Proper", + "Not proper" + ], + "enum": [ + "PROPER_UNKNOWN", + "PROPER", + "NOT_PROPER" + ], + "description": "The grammatical properness.", + "type": "string" + }, + "case": { + "type": "string", + "enumDescriptions": [ + "Case is not applicable in the analyzed language or is not predicted.", + "Accusative", + "Adverbial", + "Complementive", + "Dative", + "Genitive", + "Instrumental", + "Locative", + "Nominative", + "Oblique", + "Partitive", + "Prepositional", + "Reflexive", + "Relative", + "Vocative" + ], + "enum": [ + "CASE_UNKNOWN", + "ACCUSATIVE", + "ADVERBIAL", + "COMPLEMENTIVE", + "DATIVE", + "GENITIVE", + "INSTRUMENTAL", + "LOCATIVE", + "NOMINATIVE", + "OBLIQUE", + "PARTITIVE", + "PREPOSITIONAL", + "REFLEXIVE_CASE", + "RELATIVE_CASE", + "VOCATIVE" + ], + "description": "The grammatical case." + }, + "tense": { + "enum": [ + "TENSE_UNKNOWN", + "CONDITIONAL_TENSE", + "FUTURE", + "PAST", + "PRESENT", + "IMPERFECT", + "PLUPERFECT" + ], + "description": "The grammatical tense.", + "type": "string", + "enumDescriptions": [ + "Tense is not applicable in the analyzed language or is not predicted.", + "Conditional", + "Future", + "Past", + "Present", + "Imperfect", + "Pluperfect" + ] + }, + "reciprocity": { + "enum": [ + "RECIPROCITY_UNKNOWN", + "RECIPROCAL", + "NON_RECIPROCAL" + ], + "description": "The grammatical reciprocity.", + "type": "string", + "enumDescriptions": [ + "Reciprocity is not applicable in the analyzed language or is not\npredicted.", + "Reciprocal", + "Non-reciprocal" + ] + } + }, + "id": "PartOfSpeech" + }, + "AnalyzeSyntaxRequest": { + "description": "The syntax analysis request message.", + "type": "object", + "properties": { + "document": { + "$ref": "Document", + "description": "Input document." + }, + "encodingType": { + "enumDescriptions": [ + "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." + ], + "enum": [ + "NONE", + "UTF8", + "UTF16", + "UTF32" + ], + "description": "The encoding type used by the API to calculate offsets.", + "type": "string" + } + }, + "id": "AnalyzeSyntaxRequest" + }, + "AnalyzeSentimentResponse": { + "description": "The sentiment analysis response message.", + "type": "object", + "properties": { + "documentSentiment": { + "description": "The overall sentiment of the input document.", + "$ref": "Sentiment" + }, + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, + "sentences": { + "description": "The sentiment for all the sentences in the document.", + "items": { + "$ref": "Sentence" + }, + "type": "array" + } + }, + "id": "AnalyzeSentimentResponse" + }, + "AnalyzeEntitiesResponse": { + "description": "The entity analysis response message.", + "type": "object", + "properties": { + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, + "entities": { + "description": "The recognized entities in the input document.", + "items": { + "$ref": "Entity" + }, + "type": "array" + } + }, + "id": "AnalyzeEntitiesResponse" + }, + "AnalyzeSyntaxResponse": { + "type": "object", + "properties": { + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, + "sentences": { + "items": { + "$ref": "Sentence" + }, + "type": "array", + "description": "Sentences in the input document." + }, + "tokens": { + "description": "Tokens, along with their syntactic information, in the input document.", + "items": { + "$ref": "Token" + }, + "type": "array" + } + }, + "id": "AnalyzeSyntaxResponse", + "description": "The syntax analysis response message." + }, + "Entity": { + "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.", + "type": "object", + "properties": { + "name": { + "description": "The representative name for the entity.", + "type": "string" + }, + "salience": { + "format": "float", + "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.", + "type": "number" + }, + "metadata": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively." + }, + "type": { + "enum": [ + "UNKNOWN", + "PERSON", + "LOCATION", + "ORGANIZATION", + "EVENT", + "WORK_OF_ART", + "CONSUMER_GOOD", + "OTHER" + ], + "description": "The entity type.", + "type": "string", + "enumDescriptions": [ + "Unknown", + "Person", + "Location", + "Organization", + "Event", + "Work of art", + "Consumer goods", + "Other types" + ] + }, + "mentions": { + "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.", + "items": { + "$ref": "EntityMention" + }, + "type": "array" + } + }, + "id": "Entity" } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "canonicalName": "Cloud Natural Language", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-language": { - "description": "Apply machine learning models to reveal the structure and meaning of text" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-language": { + "description": "Apply machine learning models to reveal the structure and meaning of text" } } } @@ -921,24 +921,43 @@ "resources": { "documents": { "methods": { - "analyzeSyntax": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "AnalyzeSyntaxResponse" + "analyzeEntities": { + "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.", + "request": { + "$ref": "AnalyzeEntitiesRequest" }, + "response": { + "$ref": "AnalyzeEntitiesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-language", "https://www.googleapis.com/auth/cloud-platform" ], + "flatPath": "v1beta1/documents:analyzeEntities", + "id": "language.documents.analyzeEntities", + "path": "v1beta1/documents:analyzeEntities" + }, + "analyzeSyntax": { + "response": { + "$ref": "AnalyzeSyntaxResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-language", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {}, "flatPath": "v1beta1/documents:analyzeSyntax", - "path": "v1beta1/documents:analyzeSyntax", "id": "language.documents.analyzeSyntax", - "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.", + "path": "v1beta1/documents:analyzeSyntax", "request": { "$ref": "AnalyzeSyntaxRequest" - } + }, + "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties." }, "analyzeSentiment": { "response": { @@ -977,72 +996,19 @@ "flatPath": "v1beta1/documents:annotateText", "path": "v1beta1/documents:annotateText", "id": "language.documents.annotateText" - }, - "analyzeEntities": { - "response": { - "$ref": "AnalyzeEntitiesResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-language", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": {}, - "flatPath": "v1beta1/documents:analyzeEntities", - "id": "language.documents.analyzeEntities", - "path": "v1beta1/documents:analyzeEntities", - "request": { - "$ref": "AnalyzeEntitiesRequest" - }, - "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties." } } } }, "parameters": { - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "description": "JSONP", + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "description": "OAuth access token.", "type": "string" }, "quotaUser": { @@ -1051,15 +1017,15 @@ "location": "query" }, "pp": { - "location": "query", "description": "Pretty-print response.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" }, "bearer_token": { + "location": "query", "description": "OAuth bearer token.", - "type": "string", - "location": "query" + "type": "string" }, "oauth_token": { "location": "query", @@ -1077,21 +1043,55 @@ "default": "true", "type": "boolean" }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, "uploadType": { "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, - "fields": { + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" } }, "version": "v1beta1", "baseUrl": "https://language.googleapis.com/", - "kind": "discovery#restDescription", "description": "Provides natural language understanding technologies to developers. Examples include sentiment analysis, entity recognition, entity sentiment analysis, and text annotations.", + "kind": "discovery#restDescription", "servicePath": "", "basePath": "" } diff --git a/vendor/google.golang.org/api/language/v1beta2/language-api.json b/vendor/google.golang.org/api/language/v1beta2/language-api.json index 271c3d7..c874d2e 100644 --- a/vendor/google.golang.org/api/language/v1beta2/language-api.json +++ b/vendor/google.golang.org/api/language/v1beta2/language-api.json @@ -11,250 +11,11 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "Token": { - "description": "Represents the smallest syntactic building block of the text.", - "type": "object", - "properties": { - "dependencyEdge": { - "$ref": "DependencyEdge", - "description": "Dependency tree parse for this token." - }, - "text": { - "$ref": "TextSpan", - "description": "The token text." - }, - "lemma": { - "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.", - "type": "string" - }, - "partOfSpeech": { - "$ref": "PartOfSpeech", - "description": "Parts of speech tag for this token." - } - }, - "id": "Token" - }, - "TextSpan": { - "description": "Represents an output piece of text.", - "type": "object", - "properties": { - "beginOffset": { - "format": "int32", - "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.", - "type": "integer" - }, - "content": { - "description": "The content of the output text.", - "type": "string" - } - }, - "id": "TextSpan" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - } - }, - "id": "Status" - }, - "EntityMention": { - "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.", - "type": "object", - "properties": { - "type": { - "description": "The type of the entity mention.", - "type": "string", - "enumDescriptions": [ - "Unknown", - "Proper name", - "Common noun (or noun compound)" - ], - "enum": [ - "TYPE_UNKNOWN", - "PROPER", - "COMMON" - ] - }, - "text": { - "$ref": "TextSpan", - "description": "The mention text." - }, - "sentiment": { - "$ref": "Sentiment", - "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the sentiment expressed for this mention of\nthe entity in the provided document." - } - }, - "id": "EntityMention" - }, - "Features": { - "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", - "type": "object", - "properties": { - "extractEntitySentiment": { - "description": "Extract entities and their associated sentiment.", - "type": "boolean" - }, - "extractDocumentSentiment": { - "description": "Extract document-level sentiment.", - "type": "boolean" - }, - "extractSyntax": { - "description": "Extract syntax information.", - "type": "boolean" - }, - "extractEntities": { - "type": "boolean", - "description": "Extract entities." - } - }, - "id": "Features" - }, - "Document": { - "description": "################################################################ #\n\nRepresents the input to API methods.", - "type": "object", - "properties": { - "language": { - "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.\u003cbr\u003e\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.", - "type": "string" - }, - "content": { - "description": "The content of the input in string format.", - "type": "string" - }, - "type": { - "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.", - "type": "string", - "enumDescriptions": [ - "The content type is not specified.", - "Plain text", - "HTML" - ], - "enum": [ - "TYPE_UNSPECIFIED", - "PLAIN_TEXT", - "HTML" - ] - }, - "gcsContentUri": { - "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.", - "type": "string" - } - }, - "id": "Document" - }, - "Sentence": { - "description": "Represents a sentence in the input document.", - "type": "object", - "properties": { - "text": { - "$ref": "TextSpan", - "description": "The sentence text." - }, - "sentiment": { - "$ref": "Sentiment", - "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence." - } - }, - "id": "Sentence" - }, - "Sentiment": { - "description": "Represents the feeling associated with the entire text or entities in\nthe text.", - "type": "object", - "properties": { - "score": { - "format": "float", - "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", - "type": "number" - }, - "magnitude": { - "format": "float", - "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", - "type": "number" - } - }, - "id": "Sentiment" - }, - "AnalyzeEntitiesRequest": { - "type": "object", - "properties": { - "encodingType": { - "description": "The encoding type used by the API to calculate offsets.", - "type": "string", - "enumDescriptions": [ - "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", - "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." - ], - "enum": [ - "NONE", - "UTF8", - "UTF16", - "UTF32" - ] - }, - "document": { - "$ref": "Document", - "description": "Input document." - } - }, - "id": "AnalyzeEntitiesRequest", - "description": "The entity analysis request message." - }, - "AnalyzeEntitySentimentResponse": { - "description": "The entity-level sentiment analysis response message.", - "type": "object", - "properties": { - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" - }, - "entities": { - "description": "The recognized entities in the input document with associated sentiments.", - "items": { - "$ref": "Entity" - }, - "type": "array" - } - }, - "id": "AnalyzeEntitySentimentResponse" - }, "AnalyzeEntitySentimentRequest": { - "id": "AnalyzeEntitySentimentRequest", "description": "The entity-level sentiment analysis request message.", "type": "object", "properties": { - "document": { - "$ref": "Document", - "description": "Input document." - }, "encodingType": { - "enum": [ - "NONE", - "UTF8", - "UTF16", - "UTF32" - ], "description": "The encoding type used by the API to calculate offsets.", "type": "string", "enumDescriptions": [ @@ -262,117 +23,28 @@ "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." + ], + "enum": [ + "NONE", + "UTF8", + "UTF16", + "UTF32" ] + }, + "document": { + "description": "Input document.", + "$ref": "Document" } - } + }, + "id": "AnalyzeEntitySentimentRequest" }, "PartOfSpeech": { "description": "Represents part of speech information for a token.", "type": "object", "properties": { - "form": { - "description": "The grammatical form.", - "type": "string", - "enumDescriptions": [ - "Form is not applicable in the analyzed language or is not predicted.", - "Adnomial", - "Auxiliary", - "Complementizer", - "Final ending", - "Gerund", - "Realis", - "Irrealis", - "Short form", - "Long form", - "Order form", - "Specific form" - ], - "enum": [ - "FORM_UNKNOWN", - "ADNOMIAL", - "AUXILIARY", - "COMPLEMENTIZER", - "FINAL_ENDING", - "GERUND", - "REALIS", - "IRREALIS", - "SHORT", - "LONG", - "ORDER", - "SPECIFIC" - ] - }, - "number": { - "description": "The grammatical number.", - "type": "string", - "enumDescriptions": [ - "Number is not applicable in the analyzed language or is not predicted.", - "Singular", - "Plural", - "Dual" - ], - "enum": [ - "NUMBER_UNKNOWN", - "SINGULAR", - "PLURAL", - "DUAL" - ] - }, - "voice": { - "enumDescriptions": [ - "Voice is not applicable in the analyzed language or is not predicted.", - "Active", - "Causative", - "Passive" - ], - "enum": [ - "VOICE_UNKNOWN", - "ACTIVE", - "CAUSATIVE", - "PASSIVE" - ], - "description": "The grammatical voice.", - "type": "string" - }, - "aspect": { - "enumDescriptions": [ - "Aspect is not applicable in the analyzed language or is not predicted.", - "Perfective", - "Imperfective", - "Progressive" - ], - "enum": [ - "ASPECT_UNKNOWN", - "PERFECTIVE", - "IMPERFECTIVE", - "PROGRESSIVE" - ], - "description": "The grammatical aspect.", - "type": "string" - }, - "mood": { - "enumDescriptions": [ - "Mood is not applicable in the analyzed language or is not predicted.", - "Conditional", - "Imperative", - "Indicative", - "Interrogative", - "Jussive", - "Subjunctive" - ], - "enum": [ - "MOOD_UNKNOWN", - "CONDITIONAL_MOOD", - "IMPERATIVE", - "INDICATIVE", - "INTERROGATIVE", - "JUSSIVE", - "SUBJUNCTIVE" - ], - "description": "The grammatical mood.", - "type": "string" - }, "tag": { + "description": "The part of speech tag.", + "type": "string", "enumDescriptions": [ "Unknown", "Adjective", @@ -404,9 +76,7 @@ "VERB", "X", "AFFIX" - ], - "description": "The part of speech tag.", - "type": "string" + ] }, "gender": { "enumDescriptions": [ @@ -443,17 +113,17 @@ "type": "string" }, "proper": { - "enum": [ - "PROPER_UNKNOWN", - "PROPER", - "NOT_PROPER" - ], "description": "The grammatical properness.", "type": "string", "enumDescriptions": [ "Proper is not applicable in the analyzed language or is not predicted.", "Proper", "Not proper" + ], + "enum": [ + "PROPER_UNKNOWN", + "PROPER", + "NOT_PROPER" ] }, "case": { @@ -495,8 +165,6 @@ "type": "string" }, "tense": { - "description": "The grammatical tense.", - "type": "string", "enumDescriptions": [ "Tense is not applicable in the analyzed language or is not predicted.", "Conditional", @@ -514,9 +182,13 @@ "PRESENT", "IMPERFECT", "PLUPERFECT" - ] + ], + "description": "The grammatical tense.", + "type": "string" }, "reciprocity": { + "description": "The grammatical reciprocity.", + "type": "string", "enumDescriptions": [ "Reciprocity is not applicable in the analyzed language or is not\npredicted.", "Reciprocal", @@ -526,9 +198,109 @@ "RECIPROCITY_UNKNOWN", "RECIPROCAL", "NON_RECIPROCAL" + ] + }, + "form": { + "enumDescriptions": [ + "Form is not applicable in the analyzed language or is not predicted.", + "Adnomial", + "Auxiliary", + "Complementizer", + "Final ending", + "Gerund", + "Realis", + "Irrealis", + "Short form", + "Long form", + "Order form", + "Specific form" ], - "description": "The grammatical reciprocity.", + "enum": [ + "FORM_UNKNOWN", + "ADNOMIAL", + "AUXILIARY", + "COMPLEMENTIZER", + "FINAL_ENDING", + "GERUND", + "REALIS", + "IRREALIS", + "SHORT", + "LONG", + "ORDER", + "SPECIFIC" + ], + "description": "The grammatical form.", "type": "string" + }, + "number": { + "enumDescriptions": [ + "Number is not applicable in the analyzed language or is not predicted.", + "Singular", + "Plural", + "Dual" + ], + "enum": [ + "NUMBER_UNKNOWN", + "SINGULAR", + "PLURAL", + "DUAL" + ], + "description": "The grammatical number.", + "type": "string" + }, + "voice": { + "description": "The grammatical voice.", + "type": "string", + "enumDescriptions": [ + "Voice is not applicable in the analyzed language or is not predicted.", + "Active", + "Causative", + "Passive" + ], + "enum": [ + "VOICE_UNKNOWN", + "ACTIVE", + "CAUSATIVE", + "PASSIVE" + ] + }, + "aspect": { + "enumDescriptions": [ + "Aspect is not applicable in the analyzed language or is not predicted.", + "Perfective", + "Imperfective", + "Progressive" + ], + "enum": [ + "ASPECT_UNKNOWN", + "PERFECTIVE", + "IMPERFECTIVE", + "PROGRESSIVE" + ], + "description": "The grammatical aspect.", + "type": "string" + }, + "mood": { + "description": "The grammatical mood.", + "type": "string", + "enumDescriptions": [ + "Mood is not applicable in the analyzed language or is not predicted.", + "Conditional", + "Imperative", + "Indicative", + "Interrogative", + "Jussive", + "Subjunctive" + ], + "enum": [ + "MOOD_UNKNOWN", + "CONDITIONAL_MOOD", + "IMPERATIVE", + "INDICATIVE", + "INTERROGATIVE", + "JUSSIVE", + "SUBJUNCTIVE" + ] } }, "id": "PartOfSpeech" @@ -538,8 +310,6 @@ "type": "object", "properties": { "encodingType": { - "description": "The encoding type used by the API to calculate offsets.", - "type": "string", "enumDescriptions": [ "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", @@ -551,11 +321,13 @@ "UTF8", "UTF16", "UTF32" - ] + ], + "description": "The encoding type used by the API to calculate offsets.", + "type": "string" }, "document": { - "$ref": "Document", - "description": "Input document." + "description": "Input document.", + "$ref": "Document" } }, "id": "AnalyzeSyntaxRequest" @@ -583,24 +355,83 @@ "id": "AnalyzeSentimentResponse" }, "AnalyzeEntitiesResponse": { - "id": "AnalyzeEntitiesResponse", "description": "The entity analysis response message.", "type": "object", "properties": { + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, "entities": { "description": "The recognized entities in the input document.", "items": { "$ref": "Entity" }, "type": "array" - }, - "language": { - "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", - "type": "string" } - } + }, + "id": "AnalyzeEntitiesResponse" + }, + "Entity": { + "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.", + "type": "object", + "properties": { + "mentions": { + "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.", + "items": { + "$ref": "EntityMention" + }, + "type": "array" + }, + "name": { + "description": "The representative name for the entity.", + "type": "string" + }, + "type": { + "enumDescriptions": [ + "Unknown", + "Person", + "Location", + "Organization", + "Event", + "Work of art", + "Consumer goods", + "Other types" + ], + "enum": [ + "UNKNOWN", + "PERSON", + "LOCATION", + "ORGANIZATION", + "EVENT", + "WORK_OF_ART", + "CONSUMER_GOOD", + "OTHER" + ], + "description": "The entity type.", + "type": "string" + }, + "metadata": { + "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "salience": { + "format": "float", + "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.", + "type": "number" + }, + "sentiment": { + "$ref": "Sentiment", + "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document." + } + }, + "id": "Entity" }, "AnalyzeSyntaxResponse": { + "description": "The syntax analysis response message.", "type": "object", "properties": { "language": { @@ -622,72 +453,23 @@ "type": "array" } }, - "id": "AnalyzeSyntaxResponse", - "description": "The syntax analysis response message." - }, - "Entity": { - "description": "Represents a phrase in the text that is a known entity, such as\na person, an organization, or location. The API associates information, such\nas salience and mentions, with entities.", - "type": "object", - "properties": { - "name": { - "description": "The representative name for the entity.", - "type": "string" - }, - "type": { - "enum": [ - "UNKNOWN", - "PERSON", - "LOCATION", - "ORGANIZATION", - "EVENT", - "WORK_OF_ART", - "CONSUMER_GOOD", - "OTHER" - ], - "description": "The entity type.", - "type": "string", - "enumDescriptions": [ - "Unknown", - "Person", - "Location", - "Organization", - "Event", - "Work of art", - "Consumer goods", - "Other types" - ] - }, - "metadata": { - "description": "Metadata associated with the entity.\n\nCurrently, Wikipedia URLs and Knowledge Graph MIDs are provided, if\navailable. The associated keys are \"wikipedia_url\" and \"mid\", respectively.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "salience": { - "format": "float", - "description": "The salience score associated with the entity in the [0, 1.0] range.\n\nThe salience score for an entity provides information about the\nimportance or centrality of that entity to the entire document text.\nScores closer to 0 are less salient, while scores closer to 1.0 are highly\nsalient.", - "type": "number" - }, - "sentiment": { - "$ref": "Sentiment", - "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the aggregate sentiment expressed for this\nentity in the provided document." - }, - "mentions": { - "description": "The mentions of this entity in the input document. The API currently\nsupports proper noun mentions.", - "items": { - "$ref": "EntityMention" - }, - "type": "array" - } - }, - "id": "Entity" + "id": "AnalyzeSyntaxResponse" }, "AnnotateTextRequest": { "description": "The request message for the text annotation API, which can perform multiple\nanalysis types (sentiment, entities, and syntax) in one call.", "type": "object", "properties": { + "document": { + "$ref": "Document", + "description": "Input document." + }, + "features": { + "description": "The enabled features.", + "$ref": "Features" + }, "encodingType": { + "description": "The encoding type used by the API to calculate offsets.", + "type": "string", "enumDescriptions": [ "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", @@ -699,22 +481,13 @@ "UTF8", "UTF16", "UTF32" - ], - "description": "The encoding type used by the API to calculate offsets.", - "type": "string" - }, - "document": { - "description": "Input document.", - "$ref": "Document" - }, - "features": { - "$ref": "Features", - "description": "The enabled features." + ] } }, "id": "AnnotateTextRequest" }, "AnnotateTextResponse": { + "description": "The text annotations response message.", "type": "object", "properties": { "sentences": { @@ -739,22 +512,21 @@ "type": "array" }, "documentSentiment": { - "$ref": "Sentiment", - "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment." + "description": "The overall sentiment for the document. Populated if the user enables\nAnnotateTextRequest.Features.extract_document_sentiment.", + "$ref": "Sentiment" }, "language": { "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", "type": "string" } }, - "id": "AnnotateTextResponse", - "description": "The text annotations response message." + "id": "AnnotateTextResponse" }, "AnalyzeSentimentRequest": { + "description": "The sentiment analysis request message.", + "type": "object", "properties": { "encodingType": { - "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.", - "type": "string", "enumDescriptions": [ "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", @@ -766,102 +538,27 @@ "UTF8", "UTF16", "UTF32" - ] + ], + "description": "The encoding type used by the API to calculate sentence offsets for the\nsentence sentiment.", + "type": "string" }, "document": { - "description": "Input document.", - "$ref": "Document" + "$ref": "Document", + "description": "Input document." } }, - "id": "AnalyzeSentimentRequest", - "description": "The sentiment analysis request message.", - "type": "object" + "id": "AnalyzeSentimentRequest" }, "DependencyEdge": { - "id": "DependencyEdge", "description": "Represents dependency parse tree information for a token.", "type": "object", "properties": { + "headTokenIndex": { + "format": "int32", + "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.", + "type": "integer" + }, "label": { - "enum": [ - "UNKNOWN", - "ABBREV", - "ACOMP", - "ADVCL", - "ADVMOD", - "AMOD", - "APPOS", - "ATTR", - "AUX", - "AUXPASS", - "CC", - "CCOMP", - "CONJ", - "CSUBJ", - "CSUBJPASS", - "DEP", - "DET", - "DISCOURSE", - "DOBJ", - "EXPL", - "GOESWITH", - "IOBJ", - "MARK", - "MWE", - "MWV", - "NEG", - "NN", - "NPADVMOD", - "NSUBJ", - "NSUBJPASS", - "NUM", - "NUMBER", - "P", - "PARATAXIS", - "PARTMOD", - "PCOMP", - "POBJ", - "POSS", - "POSTNEG", - "PRECOMP", - "PRECONJ", - "PREDET", - "PREF", - "PREP", - "PRONL", - "PRT", - "PS", - "QUANTMOD", - "RCMOD", - "RCMODREL", - "RDROP", - "REF", - "REMNANT", - "REPARANDUM", - "ROOT", - "SNUM", - "SUFF", - "TMOD", - "TOPIC", - "VMOD", - "VOCATIVE", - "XCOMP", - "SUFFIX", - "TITLE", - "ADVPHMOD", - "AUXCAUS", - "AUXVV", - "DTMOD", - "FOREIGN", - "KW", - "LIST", - "NOMC", - "NOMCSUBJ", - "NOMCSUBJPASS", - "NUMC", - "COP", - "DISLOCATED" - ], "description": "The parse label for the token.", "type": "string", "enumDescriptions": [ @@ -942,30 +639,333 @@ "Compound of numeric modifier", "Copula", "Dislocated relation (for fronted/topicalized elements)" + ], + "enum": [ + "UNKNOWN", + "ABBREV", + "ACOMP", + "ADVCL", + "ADVMOD", + "AMOD", + "APPOS", + "ATTR", + "AUX", + "AUXPASS", + "CC", + "CCOMP", + "CONJ", + "CSUBJ", + "CSUBJPASS", + "DEP", + "DET", + "DISCOURSE", + "DOBJ", + "EXPL", + "GOESWITH", + "IOBJ", + "MARK", + "MWE", + "MWV", + "NEG", + "NN", + "NPADVMOD", + "NSUBJ", + "NSUBJPASS", + "NUM", + "NUMBER", + "P", + "PARATAXIS", + "PARTMOD", + "PCOMP", + "POBJ", + "POSS", + "POSTNEG", + "PRECOMP", + "PRECONJ", + "PREDET", + "PREF", + "PREP", + "PRONL", + "PRT", + "PS", + "QUANTMOD", + "RCMOD", + "RCMODREL", + "RDROP", + "REF", + "REMNANT", + "REPARANDUM", + "ROOT", + "SNUM", + "SUFF", + "TMOD", + "TOPIC", + "VMOD", + "VOCATIVE", + "XCOMP", + "SUFFIX", + "TITLE", + "ADVPHMOD", + "AUXCAUS", + "AUXVV", + "DTMOD", + "FOREIGN", + "KW", + "LIST", + "NOMC", + "NOMCSUBJ", + "NOMCSUBJPASS", + "NUMC", + "COP", + "DISLOCATED" + ] + } + }, + "id": "DependencyEdge" + }, + "TextSpan": { + "description": "Represents an output piece of text.", + "type": "object", + "properties": { + "beginOffset": { + "format": "int32", + "description": "The API calculates the beginning offset of the content in the original\ndocument according to the EncodingType specified in the API request.", + "type": "integer" + }, + "content": { + "description": "The content of the output text.", + "type": "string" + } + }, + "id": "TextSpan" + }, + "Token": { + "description": "Represents the smallest syntactic building block of the text.", + "type": "object", + "properties": { + "partOfSpeech": { + "$ref": "PartOfSpeech", + "description": "Parts of speech tag for this token." + }, + "dependencyEdge": { + "$ref": "DependencyEdge", + "description": "Dependency tree parse for this token." + }, + "text": { + "description": "The token text.", + "$ref": "TextSpan" + }, + "lemma": { + "description": "[Lemma](https://en.wikipedia.org/wiki/Lemma_%28morphology%29) of the token.", + "type": "string" + } + }, + "id": "Token" + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "Features": { + "description": "All available features for sentiment, syntax, and semantic analysis.\nSetting each one to true will enable that specific analysis for the input.", + "type": "object", + "properties": { + "extractEntities": { + "description": "Extract entities.", + "type": "boolean" + }, + "extractEntitySentiment": { + "description": "Extract entities and their associated sentiment.", + "type": "boolean" + }, + "extractDocumentSentiment": { + "description": "Extract document-level sentiment.", + "type": "boolean" + }, + "extractSyntax": { + "description": "Extract syntax information.", + "type": "boolean" + } + }, + "id": "Features" + }, + "EntityMention": { + "description": "Represents a mention for an entity in the text. Currently, proper noun\nmentions are supported.", + "type": "object", + "properties": { + "type": { + "enumDescriptions": [ + "Unknown", + "Proper name", + "Common noun (or noun compound)" + ], + "enum": [ + "TYPE_UNKNOWN", + "PROPER", + "COMMON" + ], + "description": "The type of the entity mention.", + "type": "string" + }, + "text": { + "$ref": "TextSpan", + "description": "The mention text." + }, + "sentiment": { + "$ref": "Sentiment", + "description": "For calls to AnalyzeEntitySentiment or if\nAnnotateTextRequest.Features.extract_entity_sentiment is set to\ntrue, this field will contain the sentiment expressed for this mention of\nthe entity in the provided document." + } + }, + "id": "EntityMention" + }, + "Sentence": { + "description": "Represents a sentence in the input document.", + "type": "object", + "properties": { + "text": { + "description": "The sentence text.", + "$ref": "TextSpan" + }, + "sentiment": { + "$ref": "Sentiment", + "description": "For calls to AnalyzeSentiment or if\nAnnotateTextRequest.Features.extract_document_sentiment is set to\ntrue, this field will contain the sentiment for the sentence." + } + }, + "id": "Sentence" + }, + "Document": { + "description": "################################################################ #\n\nRepresents the input to API methods.", + "type": "object", + "properties": { + "content": { + "description": "The content of the input in string format.", + "type": "string" + }, + "type": { + "description": "Required. If the type is not set or is `TYPE_UNSPECIFIED`,\nreturns an `INVALID_ARGUMENT` error.", + "type": "string", + "enumDescriptions": [ + "The content type is not specified.", + "Plain text", + "HTML" + ], + "enum": [ + "TYPE_UNSPECIFIED", + "PLAIN_TEXT", + "HTML" ] }, - "headTokenIndex": { - "format": "int32", - "description": "Represents the head of this token in the dependency tree.\nThis is the index of the token which has an arc going to this token.\nThe index is the position of the token in the array of tokens returned\nby the API method. If this token is a root token, then the\n`head_token_index` is its own index.", - "type": "integer" + "gcsContentUri": { + "description": "The Google Cloud Storage URI where the file content is located.\nThis URI must be of the form: gs://bucket_name/object_name. For more\ndetails, see https://cloud.google.com/storage/docs/reference-uris.\nNOTE: Cloud Storage object versioning is not supported.", + "type": "string" + }, + "language": { + "description": "The language of the document (if not specified, the language is\nautomatically detected). Both ISO and BCP-47 language codes are\naccepted.\u003cbr\u003e\n[Language Support](/natural-language/docs/languages)\nlists currently supported languages for each API method.\nIf the language (either specified by the caller or automatically detected)\nis not supported by the called API method, an `INVALID_ARGUMENT` error\nis returned.", + "type": "string" } - } + }, + "id": "Document" + }, + "Sentiment": { + "description": "Represents the feeling associated with the entire text or entities in\nthe text.", + "type": "object", + "properties": { + "score": { + "format": "float", + "description": "Sentiment score between -1.0 (negative sentiment) and 1.0\n(positive sentiment).", + "type": "number" + }, + "magnitude": { + "format": "float", + "description": "A non-negative number in the [0, +inf) range, which represents\nthe absolute magnitude of sentiment regardless of score (positive or\nnegative).", + "type": "number" + } + }, + "id": "Sentiment" + }, + "AnalyzeEntitiesRequest": { + "description": "The entity analysis request message.", + "type": "object", + "properties": { + "document": { + "$ref": "Document", + "description": "Input document." + }, + "encodingType": { + "description": "The encoding type used by the API to calculate offsets.", + "type": "string", + "enumDescriptions": [ + "If `EncodingType` is not specified, encoding-dependent information (such as\n`begin_offset`) will be set at `-1`.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-8 encoding of the input. C++ and Go are examples of languages\nthat use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-16 encoding of the input. Java and Javascript are examples of\nlanguages that use this encoding natively.", + "Encoding-dependent information (such as `begin_offset`) is calculated based\non the UTF-32 encoding of the input. Python is an example of a language\nthat uses this encoding natively." + ], + "enum": [ + "NONE", + "UTF8", + "UTF16", + "UTF32" + ] + } + }, + "id": "AnalyzeEntitiesRequest" + }, + "AnalyzeEntitySentimentResponse": { + "description": "The entity-level sentiment analysis response message.", + "type": "object", + "properties": { + "language": { + "description": "The language of the text, which will be the same as the language specified\nin the request or, if not specified, the automatically-detected language.\nSee Document.language field for more details.", + "type": "string" + }, + "entities": { + "description": "The recognized entities in the input document with associated sentiments.", + "items": { + "$ref": "Entity" + }, + "type": "array" + } + }, + "id": "AnalyzeEntitySentimentResponse" } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "canonicalName": "Cloud Natural Language", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-language": { - "description": "Apply machine learning models to reveal the structure and meaning of text" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-language": { + "description": "Apply machine learning models to reveal the structure and meaning of text" } } } @@ -979,13 +979,13 @@ "resources": { "documents": { "methods": { - "analyzeSentiment": { - "description": "Analyzes the sentiment of the provided text.", + "analyzeSyntax": { + "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.", "request": { - "$ref": "AnalyzeSentimentRequest" + "$ref": "AnalyzeSyntaxRequest" }, "response": { - "$ref": "AnalyzeSentimentResponse" + "$ref": "AnalyzeSyntaxResponse" }, "parameterOrder": [], "httpMethod": "POST", @@ -994,18 +994,30 @@ "https://www.googleapis.com/auth/cloud-language", "https://www.googleapis.com/auth/cloud-platform" ], + "flatPath": "v1beta2/documents:analyzeSyntax", + "id": "language.documents.analyzeSyntax", + "path": "v1beta2/documents:analyzeSyntax" + }, + "analyzeSentiment": { "flatPath": "v1beta2/documents:analyzeSentiment", "id": "language.documents.analyzeSentiment", - "path": "v1beta2/documents:analyzeSentiment" + "path": "v1beta2/documents:analyzeSentiment", + "request": { + "$ref": "AnalyzeSentimentRequest" + }, + "description": "Analyzes the sentiment of the provided text.", + "response": { + "$ref": "AnalyzeSentimentResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-language", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": {} }, "annotateText": { - "flatPath": "v1beta2/documents:annotateText", - "id": "language.documents.annotateText", - "path": "v1beta2/documents:annotateText", - "request": { - "$ref": "AnnotateTextRequest" - }, - "description": "A convenience method that provides all syntax, sentiment, entity, and\nclassification features in one call.", "response": { "$ref": "AnnotateTextResponse" }, @@ -1015,7 +1027,14 @@ "https://www.googleapis.com/auth/cloud-language", "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": {} + "parameters": {}, + "flatPath": "v1beta2/documents:annotateText", + "id": "language.documents.annotateText", + "path": "v1beta2/documents:annotateText", + "request": { + "$ref": "AnnotateTextRequest" + }, + "description": "A convenience method that provides all syntax, sentiment, entity, and\nclassification features in one call." }, "analyzeEntitySentiment": { "description": "Finds entities, similar to AnalyzeEntities in the text and analyzes\nsentiment associated with each entity and its mentions.", @@ -1037,51 +1056,32 @@ "path": "v1beta2/documents:analyzeEntitySentiment" }, "analyzeEntities": { - "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.", + "flatPath": "v1beta2/documents:analyzeEntities", + "path": "v1beta2/documents:analyzeEntities", + "id": "language.documents.analyzeEntities", "request": { "$ref": "AnalyzeEntitiesRequest" }, + "description": "Finds named entities (currently proper names and common nouns) in the text\nalong with entity types, salience, mentions for each entity, and\nother properties.", "httpMethod": "POST", "parameterOrder": [], "response": { "$ref": "AnalyzeEntitiesResponse" }, - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-language", "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1beta2/documents:analyzeEntities", - "path": "v1beta2/documents:analyzeEntities", - "id": "language.documents.analyzeEntities" - }, - "analyzeSyntax": { - "description": "Analyzes the syntax of the text and provides sentence boundaries and\ntokenization along with part of speech tags, dependency trees, and other\nproperties.", - "request": { - "$ref": "AnalyzeSyntaxRequest" - }, - "response": { - "$ref": "AnalyzeSyntaxResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-language", - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta2/documents:analyzeSyntax", - "id": "language.documents.analyzeSyntax", - "path": "v1beta2/documents:analyzeSyntax" + "parameters": {} } } } }, "parameters": { "quotaUser": { + "location": "query", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" + "type": "string" }, "pp": { "location": "query", @@ -1090,9 +1090,9 @@ "type": "boolean" }, "oauth_token": { - "type": "string", "location": "query", - "description": "OAuth 2.0 token for the current user." + "description": "OAuth 2.0 token for the current user.", + "type": "string" }, "bearer_token": { "location": "query", @@ -1100,9 +1100,9 @@ "type": "string" }, "upload_protocol": { - "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "type": "string", + "location": "query" }, "prettyPrint": { "description": "Returns response with indentations and line breaks.", @@ -1110,16 +1110,16 @@ "type": "boolean", "location": "query" }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, "fields": { "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, "callback": { "location": "query", "description": "JSONP", @@ -1139,6 +1139,11 @@ "type": "string" }, "alt": { + "enum": [ + "json", + "media", + "proto" + ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -1147,12 +1152,7 @@ ], "location": "query", "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] + "default": "json" }, "key": { "location": "query", @@ -1160,9 +1160,9 @@ "type": "string" }, "access_token": { - "location": "query", "description": "OAuth access token.", - "type": "string" + "type": "string", + "location": "query" } } } diff --git a/vendor/google.golang.org/api/logging/v2/logging-api.json b/vendor/google.golang.org/api/logging/v2/logging-api.json index 111a1e4..19ce87a 100644 --- a/vendor/google.golang.org/api/logging/v2/logging-api.json +++ b/vendor/google.golang.org/api/logging/v2/logging-api.json @@ -1,8 +1,477 @@ { + "ownerDomain": "google.com", + "name": "logging", "batchPath": "batch", "title": "Stackdriver Logging API", "ownerName": "Google", "resources": { + "monitoredResourceDescriptors": { + "methods": { + "list": { + "response": { + "$ref": "ListMonitoredResourceDescriptorsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available." + } + }, + "flatPath": "v2/monitoredResourceDescriptors", + "id": "logging.monitoredResourceDescriptors.list", + "path": "v2/monitoredResourceDescriptors", + "description": "Lists the descriptors for monitored resource types used by Stackdriver Logging." + } + } + }, + "organizations": { + "resources": { + "exclusions": { + "methods": { + "create": { + "request": { + "$ref": "LogExclusion" + }, + "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "LogExclusion" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$" + } + }, + "flatPath": "v2/organizations/{organizationsId}/exclusions", + "path": "v2/{+parent}/exclusions", + "id": "logging.organizations.exclusions.create" + }, + "delete": { + "description": "Deletes an exclusion.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/exclusions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}", + "id": "logging.organizations.exclusions.delete", + "path": "v2/{+name}" + }, + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "LogExclusion" + }, + "parameters": { + "updateMask": { + "format": "google-fieldmask", + "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".", + "type": "string", + "location": "query" + }, + "name": { + "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/exclusions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}", + "path": "v2/{+name}", + "id": "logging.organizations.exclusions.patch", + "description": "Changes one or more properties of an existing exclusion.", + "request": { + "$ref": "LogExclusion" + } + }, + "get": { + "response": { + "$ref": "LogExclusion" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/exclusions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}", + "id": "logging.organizations.exclusions.get", + "path": "v2/{+name}", + "description": "Gets the description of an exclusion." + }, + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListExclusionsResponse" + }, + "parameterOrder": [ + "parent" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$" + }, + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + } + }, + "flatPath": "v2/organizations/{organizationsId}/exclusions", + "path": "v2/{+parent}/exclusions", + "id": "logging.organizations.exclusions.list", + "description": "Lists all the exclusions in a parent resource." + } + } + }, + "sinks": { + "methods": { + "get": { + "description": "Gets a sink.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "sinkName": { + "pattern": "^organizations/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true + } + }, + "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", + "id": "logging.organizations.sinks.get", + "path": "v2/{+sinkName}" + }, + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "sinkName" + ], + "response": { + "$ref": "LogSink" + }, + "parameters": { + "uniqueWriterIdentity": { + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean", + "location": "query" + }, + "sinkName": { + "location": "path", + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/sinks/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", + "path": "v2/{+sinkName}", + "id": "logging.organizations.sinks.patch", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "request": { + "$ref": "LogSink" + } + }, + "update": { + "path": "v2/{+sinkName}", + "id": "logging.organizations.sinks.update", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "request": { + "$ref": "LogSink" + }, + "httpMethod": "PUT", + "parameterOrder": [ + "sinkName" + ], + "response": { + "$ref": "LogSink" + }, + "parameters": { + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean" + }, + "sinkName": { + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/sinks/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}" + }, + "delete": { + "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", + "id": "logging.organizations.sinks.delete", + "path": "v2/{+sinkName}", + "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "DELETE", + "parameters": { + "sinkName": { + "pattern": "^organizations/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ] + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListSinksResponse" + }, + "parameters": { + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + }, + "parent": { + "location": "path", + "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/organizations/{organizationsId}/sinks", + "path": "v2/{+parent}/sinks", + "id": "logging.organizations.sinks.list", + "description": "Lists sinks." + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "LogSink" + }, + "parameters": { + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", + "type": "boolean" + }, + "parent": { + "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/organizations/{organizationsId}/sinks", + "path": "v2/{+parent}/sinks", + "id": "logging.organizations.sinks.create", + "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", + "request": { + "$ref": "LogSink" + } + } + } + }, + "logs": { + "methods": { + "delete": { + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", + "httpMethod": "DELETE", + "parameterOrder": [ + "logName" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "logName": { + "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/logs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2/organizations/{organizationsId}/logs/{logsId}", + "path": "v2/{+logName}", + "id": "logging.organizations.logs.delete" + }, + "list": { + "response": { + "$ref": "ListLogsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + }, + "parent": { + "pattern": "^organizations/[^/]+$", + "location": "path", + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/organizations/{organizationsId}/logs", + "id": "logging.organizations.logs.list", + "path": "v2/{+parent}/logs", + "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed." + } + } + } + } + }, "entries": { "methods": { "list": { @@ -32,19 +501,19 @@ }, "parameterOrder": [], "httpMethod": "POST", - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/logging.admin", "https://www.googleapis.com/auth/logging.write" ], + "parameters": {}, "flatPath": "v2/entries:write", "id": "logging.entries.write", "path": "v2/entries:write", - "description": "Log entry resourcesWrites log entries to Stackdriver Logging. This API method is the only way to send log entries to Stackdriver Logging. This method is used, directly or indirectly, by the Stackdriver Logging agent (fluentd) and all logging libraries configured to use Stackdriver Logging.", "request": { "$ref": "WriteLogEntriesRequest" - } + }, + "description": "Log entry resourcesWrites log entries to Stackdriver Logging. This API method is the only way to send log entries to Stackdriver Logging. This method is used, directly or indirectly, by the Stackdriver Logging agent (fluentd) and all logging libraries configured to use Stackdriver Logging." } } }, @@ -53,17 +522,13 @@ "exclusions": { "methods": { "delete": { - "flatPath": "v2/projects/{projectsId}/exclusions/{exclusionsId}", - "id": "logging.projects.exclusions.delete", - "path": "v2/{+name}", - "description": "Deletes an exclusion.", - "response": { - "$ref": "Empty" - }, + "httpMethod": "DELETE", "parameterOrder": [ "name" ], - "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/logging.admin" @@ -76,29 +541,37 @@ "required": true, "pattern": "^projects/[^/]+/exclusions/[^/]+$" } - } + }, + "flatPath": "v2/projects/{projectsId}/exclusions/{exclusionsId}", + "path": "v2/{+name}", + "id": "logging.projects.exclusions.delete", + "description": "Deletes an exclusion." }, "patch": { - "response": { + "description": "Changes one or more properties of an existing exclusion.", + "request": { "$ref": "LogExclusion" }, + "httpMethod": "PATCH", "parameterOrder": [ "name" ], - "httpMethod": "PATCH", + "response": { + "$ref": "LogExclusion" + }, "parameters": { "updateMask": { - "type": "string", - "location": "query", "format": "google-fieldmask", - "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\"." + "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".", + "type": "string", + "location": "query" }, "name": { + "pattern": "^projects/[^/]+/exclusions/[^/]+$", + "location": "path", "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", "type": "string", - "required": true, - "pattern": "^projects/[^/]+/exclusions/[^/]+$", - "location": "path" + "required": true } }, "scopes": [ @@ -106,21 +579,47 @@ "https://www.googleapis.com/auth/logging.admin" ], "flatPath": "v2/projects/{projectsId}/exclusions/{exclusionsId}", - "id": "logging.projects.exclusions.patch", "path": "v2/{+name}", - "description": "Changes one or more properties of an existing exclusion.", - "request": { - "$ref": "LogExclusion" - } + "id": "logging.projects.exclusions.patch" }, "get": { - "description": "Gets the description of an exclusion.", + "httpMethod": "GET", "response": { "$ref": "LogExclusion" }, "parameterOrder": [ "name" ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "name": { + "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/exclusions/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2/projects/{projectsId}/exclusions/{exclusionsId}", + "path": "v2/{+name}", + "id": "logging.projects.exclusions.get", + "description": "Gets the description of an exclusion." + }, + "list": { + "id": "logging.projects.exclusions.list", + "path": "v2/{+parent}/exclusions", + "description": "Lists all the exclusions in a parent resource.", + "response": { + "$ref": "ListExclusionsResponse" + }, + "parameterOrder": [ + "parent" + ], "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", @@ -129,35 +628,98 @@ "https://www.googleapis.com/auth/logging.read" ], "parameters": { - "name": { + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", "type": "string", - "required": true, - "pattern": "^projects/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." - } - }, - "flatPath": "v2/projects/{projectsId}/exclusions/{exclusionsId}", - "id": "logging.projects.exclusions.get", - "path": "v2/{+name}" - }, - "list": { - "description": "Lists all the exclusions in a parent resource.", - "response": { - "$ref": "ListExclusionsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer" + }, "parent": { "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", "type": "string", "required": true, "pattern": "^projects/[^/]+$", "location": "path" - }, + } + }, + "flatPath": "v2/projects/{projectsId}/exclusions" + }, + "create": { + "request": { + "$ref": "LogExclusion" + }, + "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", + "response": { + "$ref": "LogExclusion" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "parent": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\"." + } + }, + "flatPath": "v2/projects/{projectsId}/exclusions", + "id": "logging.projects.exclusions.create", + "path": "v2/{+parent}/exclusions" + } + } + }, + "metrics": { + "methods": { + "get": { + "path": "v2/{+metricName}", + "id": "logging.projects.metrics.get", + "description": "Gets a logs-based metric.", + "httpMethod": "GET", + "parameterOrder": [ + "metricName" + ], + "response": { + "$ref": "LogMetric" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "metricName": { + "pattern": "^projects/[^/]+/metrics/[^/]+$", + "location": "path", + "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n", + "type": "string", + "required": true + } + }, + "flatPath": "v2/projects/{projectsId}/metrics/{metricsId}" + }, + "list": { + "description": "Lists logs-based metrics.", + "response": { + "$ref": "ListLogMetricsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { "pageToken": { "location": "query", "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", @@ -168,153 +730,42 @@ "format": "int32", "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2/projects/{projectsId}/exclusions", - "id": "logging.projects.exclusions.list", - "path": "v2/{+parent}/exclusions" - }, - "create": { - "flatPath": "v2/projects/{projectsId}/exclusions", - "id": "logging.projects.exclusions.create", - "path": "v2/{+parent}/exclusions", - "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", - "request": { - "$ref": "LogExclusion" - }, - "response": { - "$ref": "LogExclusion" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ] - } - } - }, - "metrics": { - "methods": { - "delete": { - "description": "Deletes a logs-based metric.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "metricName" - ], - "httpMethod": "DELETE", - "parameters": { - "metricName": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metrics/[^/]+$", - "location": "path", - "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], - "flatPath": "v2/projects/{projectsId}/metrics/{metricsId}", - "id": "logging.projects.metrics.delete", - "path": "v2/{+metricName}" - }, - "get": { - "flatPath": "v2/projects/{projectsId}/metrics/{metricsId}", - "path": "v2/{+metricName}", - "id": "logging.projects.metrics.get", - "description": "Gets a logs-based metric.", - "httpMethod": "GET", - "response": { - "$ref": "LogMetric" - }, - "parameterOrder": [ - "metricName" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "metricName": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metrics/[^/]+$", - "location": "path", - "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n" - } - } - }, - "list": { - "description": "Lists logs-based metrics.", - "response": { - "$ref": "ListLogMetricsResponse" - }, - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { + }, "parent": { "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n", "type": "string", "required": true, "pattern": "^projects/[^/]+$", "location": "path" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], "flatPath": "v2/projects/{projectsId}/metrics", "id": "logging.projects.metrics.list", "path": "v2/{+parent}/metrics" }, "update": { - "httpMethod": "PUT", - "parameterOrder": [ - "metricName" - ], + "request": { + "$ref": "LogMetric" + }, + "description": "Creates or updates a logs-based metric.", "response": { "$ref": "LogMetric" }, + "parameterOrder": [ + "metricName" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], "parameters": { "metricName": { "pattern": "^projects/[^/]+/metrics/[^/]+$", @@ -324,24 +775,15 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], "flatPath": "v2/projects/{projectsId}/metrics/{metricsId}", - "path": "v2/{+metricName}", "id": "logging.projects.metrics.update", - "description": "Creates or updates a logs-based metric.", - "request": { - "$ref": "LogMetric" - } + "path": "v2/{+metricName}" }, "create": { + "description": "Creates a logs-based metric.", "request": { "$ref": "LogMetric" }, - "description": "Creates a logs-based metric.", "httpMethod": "POST", "parameterOrder": [ "parent" @@ -349,11 +791,6 @@ "response": { "$ref": "LogMetric" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], "parameters": { "parent": { "description": "The resource name of the project in which to create the metric:\n\"projects/[PROJECT_ID]\"\nThe new metric must be provided in the request.", @@ -363,176 +800,60 @@ "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], "flatPath": "v2/projects/{projectsId}/metrics", "path": "v2/{+parent}/metrics", "id": "logging.projects.metrics.create" + }, + "delete": { + "path": "v2/{+metricName}", + "id": "logging.projects.metrics.delete", + "description": "Deletes a logs-based metric.", + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "metricName" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], + "parameters": { + "metricName": { + "pattern": "^projects/[^/]+/metrics/[^/]+$", + "location": "path", + "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n", + "type": "string", + "required": true + } + }, + "flatPath": "v2/projects/{projectsId}/metrics/{metricsId}" } } }, "sinks": { "methods": { - "get": { - "httpMethod": "GET", - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "sinkName": { - "pattern": "^projects/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, - "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.projects.sinks.get", - "description": "Gets a sink." - }, - "patch": { - "parameters": { - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean" - }, - "sinkName": { - "pattern": "^projects/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.projects.sinks.patch", - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "create": { + "id": "logging.projects.sinks.create", + "path": "v2/{+parent}/sinks", "request": { "$ref": "LogSink" }, - "httpMethod": "PATCH", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "LogSink" - } - }, - "update": { + "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", "response": { "$ref": "LogSink" }, - "parameterOrder": [ - "sinkName" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "uniqueWriterIdentity": { - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean", - "location": "query" - }, - "sinkName": { - "location": "path", - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/sinks/[^/]+$" - } - }, - "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", - "id": "logging.projects.sinks.update", - "path": "v2/{+sinkName}", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "sinkName" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "sinkName": { - "location": "path", - "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/sinks/[^/]+$" - } - }, - "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", - "id": "logging.projects.sinks.delete", - "path": "v2/{+sinkName}", - "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted." - }, - "list": { - "httpMethod": "GET", "parameterOrder": [ "parent" ], - "response": { - "$ref": "ListSinksResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2/projects/{projectsId}/sinks", - "path": "v2/{+parent}/sinks", - "id": "logging.projects.sinks.list", - "description": "Lists sinks." - }, - "create": { + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/logging.admin" @@ -546,39 +867,183 @@ "location": "path" }, "uniqueWriterIdentity": { - "location": "query", "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", - "type": "boolean" + "type": "boolean", + "location": "query" } }, - "flatPath": "v2/projects/{projectsId}/sinks", - "path": "v2/{+parent}/sinks", - "id": "logging.projects.sinks.create", + "flatPath": "v2/projects/{projectsId}/sinks" + }, + "get": { + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "GET", + "parameters": { + "sinkName": { + "location": "path", + "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/sinks/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", + "id": "logging.projects.sinks.get", + "path": "v2/{+sinkName}", + "description": "Gets a sink." + }, + "patch": { + "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", + "id": "logging.projects.sinks.patch", + "path": "v2/{+sinkName}", "request": { "$ref": "LogSink" }, - "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", - "httpMethod": "POST", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean" + }, + "sinkName": { + "pattern": "^projects/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true + } + } + }, + "update": { + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "PUT", + "parameters": { + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean" + }, + "sinkName": { + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/sinks/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", + "id": "logging.projects.sinks.update", + "path": "v2/{+sinkName}", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "request": { + "$ref": "LogSink" + } + }, + "delete": { + "flatPath": "v2/projects/{projectsId}/sinks/{sinksId}", + "id": "logging.projects.sinks.delete", + "path": "v2/{+sinkName}", + "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "sinkName": { + "pattern": "^projects/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true + } + } + }, + "list": { + "description": "Lists sinks.", + "httpMethod": "GET", "parameterOrder": [ "parent" ], "response": { - "$ref": "LogSink" - } + "$ref": "ListSinksResponse" + }, + "parameters": { + "parent": { + "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/projects/{projectsId}/sinks", + "path": "v2/{+parent}/sinks", + "id": "logging.projects.sinks.list" } } }, "logs": { "methods": { "delete": { - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "logName" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" ], - "httpMethod": "DELETE", "parameters": { "logName": { "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", @@ -588,13 +1053,17 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], "flatPath": "v2/projects/{projectsId}/logs/{logsId}", + "path": "v2/{+logName}", "id": "logging.projects.logs.delete", - "path": "v2/{+logName}" + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", + "httpMethod": "DELETE", + "parameterOrder": [ + "logName" + ], + "response": { + "$ref": "Empty" + } }, "list": { "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", @@ -605,32 +1074,32 @@ "parent" ], "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], "parameters": { - "parent": { - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, "pageToken": { "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", "type": "string", "location": "query" }, "pageSize": { + "location": "query", "format": "int32", "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" + "type": "integer" + }, + "parent": { + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], "flatPath": "v2/projects/{projectsId}/logs", "id": "logging.projects.logs.list", "path": "v2/{+parent}/logs" @@ -641,6 +1110,167 @@ }, "billingAccounts": { "resources": { + "exclusions": { + "methods": { + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "LogExclusion" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "parent": { + "location": "path", + "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$" + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions", + "path": "v2/{+parent}/exclusions", + "id": "logging.billingAccounts.exclusions.create", + "request": { + "$ref": "LogExclusion" + }, + "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource." + }, + "delete": { + "description": "Deletes an exclusion.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$", + "location": "path", + "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}", + "path": "v2/{+name}", + "id": "logging.billingAccounts.exclusions.delete" + }, + "patch": { + "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}", + "id": "logging.billingAccounts.exclusions.patch", + "path": "v2/{+name}", + "request": { + "$ref": "LogExclusion" + }, + "description": "Changes one or more properties of an existing exclusion.", + "response": { + "$ref": "LogExclusion" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "updateMask": { + "format": "google-fieldmask", + "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$" + } + } + }, + "get": { + "id": "logging.billingAccounts.exclusions.get", + "path": "v2/{+name}", + "description": "Gets the description of an exclusion.", + "response": { + "$ref": "LogExclusion" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}" + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListExclusionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + }, + "parent": { + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$", + "location": "path", + "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n" + }, + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions", + "path": "v2/{+parent}/exclusions", + "id": "logging.billingAccounts.exclusions.list", + "description": "Lists all the exclusions in a parent resource." + } + } + }, "sinks": { "methods": { "delete": { @@ -652,31 +1282,105 @@ "response": { "$ref": "Empty" }, + "parameters": { + "sinkName": { + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\"." + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/logging.admin" ], - "parameters": { - "sinkName": { - "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}", "path": "v2/{+sinkName}", "id": "logging.billingAccounts.sinks.delete" }, "list": { - "httpMethod": "GET", + "description": "Lists sinks.", "response": { "$ref": "ListSinksResponse" }, "parameterOrder": [ "parent" ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer" + }, + "parent": { + "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks", + "id": "logging.billingAccounts.sinks.list", + "path": "v2/{+parent}/sinks" + }, + "create": { + "request": { + "$ref": "LogSink" + }, + "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "parent": { + "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$", + "location": "path" + }, + "uniqueWriterIdentity": { + "type": "boolean", + "location": "query", + "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink." + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks", + "id": "logging.billingAccounts.sinks.create", + "path": "v2/{+parent}/sinks" + }, + "get": { + "description": "Gets a sink.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only", @@ -684,6 +1388,138 @@ "https://www.googleapis.com/auth/logging.read" ], "parameters": { + "sinkName": { + "location": "path", + "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$" + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}", + "id": "logging.billingAccounts.sinks.get", + "path": "v2/{+sinkName}" + }, + "patch": { + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "PATCH", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean" + }, + "sinkName": { + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\"." + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}", + "id": "logging.billingAccounts.sinks.patch", + "path": "v2/{+sinkName}", + "request": { + "$ref": "LogSink" + }, + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." + }, + "update": { + "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}", + "id": "logging.billingAccounts.sinks.update", + "path": "v2/{+sinkName}", + "request": { + "$ref": "LogSink" + }, + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "uniqueWriterIdentity": { + "type": "boolean", + "location": "query", + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false." + }, + "sinkName": { + "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", + "location": "path", + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true + } + } + } + } + }, + "logs": { + "methods": { + "delete": { + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "logName" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "logName": { + "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/logs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2/billingAccounts/{billingAccountsId}/logs/{logsId}", + "id": "logging.billingAccounts.logs.delete", + "path": "v2/{+logName}" + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListLogsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "parent": { + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$", + "location": "path" + }, "pageToken": { "location": "query", "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", @@ -694,379 +1530,12 @@ "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", "type": "integer", "location": "query" - }, - "parent": { - "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+$", - "location": "path" } }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks", - "path": "v2/{+parent}/sinks", - "id": "logging.billingAccounts.sinks.list", - "description": "Lists sinks." - }, - "create": { - "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", - "request": { - "$ref": "LogSink" - }, - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "LogSink" - }, - "parameters": { - "parent": { - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+$", - "location": "path", - "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\"." - }, - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", - "type": "boolean" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks", - "path": "v2/{+parent}/sinks", - "id": "logging.billingAccounts.sinks.create" - }, - "get": { - "description": "Gets a sink.", - "httpMethod": "GET", - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "parameters": { - "sinkName": { - "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.billingAccounts.sinks.get" - }, - "patch": { - "path": "v2/{+sinkName}", - "id": "logging.billingAccounts.sinks.patch", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", - "httpMethod": "PATCH", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "LogSink" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean" - }, - "sinkName": { - "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}" - }, - "update": { - "path": "v2/{+sinkName}", - "id": "logging.billingAccounts.sinks.update", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", - "httpMethod": "PUT", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "LogSink" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean" - }, - "sinkName": { - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/sinks/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/sinks/{sinksId}" - } - } - }, - "logs": { - "methods": { - "list": { - "id": "logging.billingAccounts.logs.list", + "flatPath": "v2/billingAccounts/{billingAccountsId}/logs", "path": "v2/{+parent}/logs", - "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", - "response": { - "$ref": "ListLogsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - }, - "parent": { - "location": "path", - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+$" - } - }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/logs" - }, - "delete": { - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "httpMethod": "DELETE", - "parameterOrder": [ - "logName" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "logName": { - "location": "path", - "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/logs/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/logs/{logsId}", - "path": "v2/{+logName}", - "id": "logging.billingAccounts.logs.delete" - } - } - }, - "exclusions": { - "methods": { - "delete": { - "description": "Deletes an exclusion.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}", - "id": "logging.billingAccounts.exclusions.delete", - "path": "v2/{+name}" - }, - "patch": { - "description": "Changes one or more properties of an existing exclusion.", - "request": { - "$ref": "LogExclusion" - }, - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "LogExclusion" - }, - "parameters": { - "updateMask": { - "location": "query", - "format": "google-fieldmask", - "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".", - "type": "string" - }, - "name": { - "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}", - "path": "v2/{+name}", - "id": "logging.billingAccounts.exclusions.patch" - }, - "get": { - "response": { - "$ref": "LogExclusion" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." - } - }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions/{exclusionsId}", - "id": "logging.billingAccounts.exclusions.get", - "path": "v2/{+name}", - "description": "Gets the description of an exclusion." - }, - "list": { - "description": "Lists all the exclusions in a parent resource.", - "response": { - "$ref": "ListExclusionsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "parent": { - "pattern": "^billingAccounts/[^/]+$", - "location": "path", - "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - } - }, - "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions", - "id": "logging.billingAccounts.exclusions.list", - "path": "v2/{+parent}/exclusions" - }, - "create": { - "id": "logging.billingAccounts.exclusions.create", - "path": "v2/{+parent}/exclusions", - "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", - "request": { - "$ref": "LogExclusion" - }, - "response": { - "$ref": "LogExclusion" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "location": "path", - "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/billingAccounts/{billingAccountsId}/exclusions" + "id": "logging.billingAccounts.logs.list", + "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed." } } } @@ -1074,170 +1543,10 @@ }, "folders": { "resources": { - "exclusions": { - "methods": { - "delete": { - "path": "v2/{+name}", - "id": "logging.folders.exclusions.delete", - "description": "Deletes an exclusion.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "pattern": "^folders/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}" - }, - "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "LogExclusion" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "updateMask": { - "type": "string", - "location": "query", - "format": "google-fieldmask", - "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\"." - }, - "name": { - "type": "string", - "required": true, - "pattern": "^folders/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." - } - }, - "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}", - "path": "v2/{+name}", - "id": "logging.folders.exclusions.patch", - "request": { - "$ref": "LogExclusion" - }, - "description": "Changes one or more properties of an existing exclusion." - }, - "get": { - "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}", - "path": "v2/{+name}", - "id": "logging.folders.exclusions.get", - "description": "Gets the description of an exclusion.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "LogExclusion" - }, - "parameters": { - "name": { - "location": "path", - "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+/exclusions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ] - }, - "list": { - "flatPath": "v2/folders/{foldersId}/exclusions", - "path": "v2/{+parent}/exclusions", - "id": "logging.folders.exclusions.list", - "description": "Lists all the exclusions in a parent resource.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListExclusionsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - }, - "parent": { - "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - } - }, - "create": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "parent": { - "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2/folders/{foldersId}/exclusions", - "path": "v2/{+parent}/exclusions", - "id": "logging.folders.exclusions.create", - "request": { - "$ref": "LogExclusion" - }, - "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "LogExclusion" - } - } - } - }, "sinks": { "methods": { "get": { + "description": "Gets a sink.", "response": { "$ref": "LogSink" }, @@ -1245,6 +1554,12 @@ "sinkName" ], "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], "parameters": { "sinkName": { "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", @@ -1254,29 +1569,25 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", "id": "logging.folders.sinks.get", - "path": "v2/{+sinkName}", - "description": "Gets a sink." + "path": "v2/{+sinkName}" }, "patch": { - "httpMethod": "PATCH", - "parameterOrder": [ - "sinkName" - ], + "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", + "id": "logging.folders.sinks.patch", + "path": "v2/{+sinkName}", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "request": { + "$ref": "LogSink" + }, "response": { "$ref": "LogSink" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" + "parameterOrder": [ + "sinkName" ], + "httpMethod": "PATCH", "parameters": { "uniqueWriterIdentity": { "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", @@ -1284,29 +1595,19 @@ "location": "query" }, "sinkName": { + "pattern": "^folders/[^/]+/sinks/[^/]+$", "location": "path", "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", "type": "string", - "required": true, - "pattern": "^folders/[^/]+/sinks/[^/]+$" + "required": true } }, - "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.folders.sinks.patch", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ] }, "update": { - "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", - "id": "logging.folders.sinks.update", - "path": "v2/{+sinkName}", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", "response": { "$ref": "LogSink" }, @@ -1331,7 +1632,14 @@ "required": true, "pattern": "^folders/[^/]+/sinks/[^/]+$" } - } + }, + "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", + "id": "logging.folders.sinks.update", + "path": "v2/{+sinkName}", + "request": { + "$ref": "LogSink" + }, + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." }, "delete": { "response": { @@ -1347,11 +1655,11 @@ ], "parameters": { "sinkName": { - "pattern": "^folders/[^/]+/sinks/[^/]+$", - "location": "path", "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", "type": "string", - "required": true + "required": true, + "pattern": "^folders/[^/]+/sinks/[^/]+$", + "location": "path" } }, "flatPath": "v2/folders/{foldersId}/sinks/{sinksId}", @@ -1364,18 +1672,12 @@ "id": "logging.folders.sinks.list", "description": "Lists sinks.", "httpMethod": "GET", - "response": { - "$ref": "ListSinksResponse" - }, "parameterOrder": [ "parent" ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], + "response": { + "$ref": "ListSinksResponse" + }, "parameters": { "parent": { "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", @@ -1385,20 +1687,33 @@ "location": "path" }, "pageToken": { - "location": "query", "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { - "type": "integer", "location": "query", "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available." + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], "flatPath": "v2/folders/{foldersId}/sinks" }, "create": { + "flatPath": "v2/folders/{foldersId}/sinks", + "id": "logging.folders.sinks.create", + "path": "v2/{+parent}/sinks", + "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", + "request": { + "$ref": "LogSink" + }, "response": { "$ref": "LogSink" }, @@ -1423,20 +1738,14 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/folders/{foldersId}/sinks", - "id": "logging.folders.sinks.create", - "path": "v2/{+parent}/sinks", - "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", - "request": { - "$ref": "LogSink" - } + ] } } }, "logs": { "methods": { "delete": { + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", "response": { "$ref": "Empty" }, @@ -1446,11 +1755,11 @@ "httpMethod": "DELETE", "parameters": { "logName": { + "pattern": "^folders/[^/]+/logs/[^/]+$", + "location": "path", "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", "type": "string", - "required": true, - "pattern": "^folders/[^/]+/logs/[^/]+$", - "location": "path" + "required": true } }, "scopes": [ @@ -1459,13 +1768,9 @@ ], "flatPath": "v2/folders/{foldersId}/logs/{logsId}", "id": "logging.folders.logs.delete", - "path": "v2/{+logName}", - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted." + "path": "v2/{+logName}" }, "list": { - "flatPath": "v2/folders/{foldersId}/logs", - "id": "logging.folders.logs.list", - "path": "v2/{+parent}/logs", "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", "response": { "$ref": "ListLogsResponse" @@ -1474,128 +1779,24 @@ "parent" ], "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], "parameters": { - "parent": { - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^folders/[^/]+$", - "location": "path" - }, "pageToken": { + "location": "query", "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" + "type": "string" }, "pageSize": { "format": "int32", "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", "type": "integer", "location": "query" - } - } - } - } - } - } - }, - "monitoredResourceDescriptors": { - "methods": { - "list": { - "description": "Lists the descriptors for monitored resource types used by Stackdriver Logging.", - "response": { - "$ref": "ListMonitoredResourceDescriptorsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2/monitoredResourceDescriptors", - "id": "logging.monitoredResourceDescriptors.list", - "path": "v2/monitoredResourceDescriptors" - } - } - }, - "organizations": { - "resources": { - "sinks": { - "methods": { - "delete": { - "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted.", - "httpMethod": "DELETE", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "sinkName": { - "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/sinks/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.organizations.sinks.delete" - }, - "list": { - "description": "Lists sinks.", - "response": { - "$ref": "ListSinksResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" }, "parent": { - "pattern": "^organizations/[^/]+$", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+$", "location": "path", - "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n" } }, "scopes": [ @@ -1604,346 +1805,22 @@ "https://www.googleapis.com/auth/logging.admin", "https://www.googleapis.com/auth/logging.read" ], - "flatPath": "v2/organizations/{organizationsId}/sinks", - "id": "logging.organizations.sinks.list", - "path": "v2/{+parent}/sinks" - }, - "create": { - "request": { - "$ref": "LogSink" - }, - "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "LogSink" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "parent": { - "location": "path", - "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$" - }, - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", - "type": "boolean" - } - }, - "flatPath": "v2/organizations/{organizationsId}/sinks", - "path": "v2/{+parent}/sinks", - "id": "logging.organizations.sinks.create" - }, - "get": { - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "httpMethod": "GET", - "parameters": { - "sinkName": { - "location": "path", - "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/sinks/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", - "id": "logging.organizations.sinks.get", - "path": "v2/{+sinkName}", - "description": "Gets a sink." - }, - "patch": { - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "httpMethod": "PATCH", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean" - }, - "sinkName": { - "location": "path", - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/sinks/[^/]+$" - } - }, - "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", - "id": "logging.organizations.sinks.patch", - "path": "v2/{+sinkName}", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." - }, - "update": { - "httpMethod": "PUT", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "LogSink" - }, - "parameters": { - "uniqueWriterIdentity": { - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean", - "location": "query" - }, - "sinkName": { - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/sinks/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/organizations/{organizationsId}/sinks/{sinksId}", - "path": "v2/{+sinkName}", - "id": "logging.organizations.sinks.update", - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", - "request": { - "$ref": "LogSink" - } - } - } - }, - "logs": { - "methods": { - "delete": { - "path": "v2/{+logName}", - "id": "logging.organizations.logs.delete", - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "httpMethod": "DELETE", - "parameterOrder": [ - "logName" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "logName": { - "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/logs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/organizations/{organizationsId}/logs/{logsId}" - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListLogsResponse" - }, - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - }, - "parent": { - "location": "path", - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$" - } - }, - "flatPath": "v2/organizations/{organizationsId}/logs", - "path": "v2/{+parent}/logs", - "id": "logging.organizations.logs.list", - "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed." + "flatPath": "v2/folders/{foldersId}/logs", + "id": "logging.folders.logs.list", + "path": "v2/{+parent}/logs" } } }, "exclusions": { "methods": { - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "name": { - "pattern": "^organizations/[^/]+/exclusions/[^/]+$", - "location": "path", - "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true - } - }, - "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}", - "id": "logging.organizations.exclusions.delete", - "path": "v2/{+name}", - "description": "Deletes an exclusion." - }, - "patch": { - "id": "logging.organizations.exclusions.patch", - "path": "v2/{+name}", - "description": "Changes one or more properties of an existing exclusion.", - "request": { - "$ref": "LogExclusion" - }, - "response": { - "$ref": "LogExclusion" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PATCH", - "parameters": { - "name": { - "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/exclusions/[^/]+$", - "location": "path" - }, - "updateMask": { - "format": "google-fieldmask", - "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\".", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}" - }, - "get": { - "httpMethod": "GET", - "response": { - "$ref": "LogExclusion" - }, - "parameterOrder": [ - "name" - ], - "parameters": { - "name": { - "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/exclusions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2/organizations/{organizationsId}/exclusions/{exclusionsId}", - "path": "v2/{+name}", - "id": "logging.organizations.exclusions.get", - "description": "Gets the description of an exclusion." - }, - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListExclusionsResponse" - }, - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "parent": { - "location": "path", - "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$" - }, - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - } - }, - "flatPath": "v2/organizations/{organizationsId}/exclusions", - "path": "v2/{+parent}/exclusions", - "id": "logging.organizations.exclusions.list", - "description": "Lists all the exclusions in a parent resource." - }, "create": { + "flatPath": "v2/folders/{foldersId}/exclusions", + "id": "logging.folders.exclusions.create", + "path": "v2/{+parent}/exclusions", + "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", "request": { "$ref": "LogExclusion" }, - "description": "Creates a new exclusion in a specified parent resource. Only log entries belonging to that resource can be excluded. You can have up to 10 exclusions in a resource.", "response": { "$ref": "LogExclusion" }, @@ -1951,22 +1828,147 @@ "parent" ], "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], "parameters": { "parent": { - "pattern": "^organizations/[^/]+$", + "pattern": "^folders/[^/]+$", "location": "path", "description": "Required. The parent resource in which to create the exclusion:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", "type": "string", "required": true } }, - "flatPath": "v2/organizations/{organizationsId}/exclusions", - "id": "logging.organizations.exclusions.create", - "path": "v2/{+parent}/exclusions" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ] + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^folders/[^/]+/exclusions/[^/]+$", + "location": "path", + "description": "Required. The resource name of an existing exclusion to delete:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}", + "id": "logging.folders.exclusions.delete", + "path": "v2/{+name}", + "description": "Deletes an exclusion." + }, + "patch": { + "response": { + "$ref": "LogExclusion" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PATCH", + "parameters": { + "name": { + "location": "path", + "description": "Required. The resource name of the exclusion to update:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\".", + "type": "string", + "required": true, + "pattern": "^folders/[^/]+/exclusions/[^/]+$" + }, + "updateMask": { + "type": "string", + "location": "query", + "format": "google-fieldmask", + "description": "Required. A nonempty list of fields to change in the existing exclusion. New values for the fields are taken from the corresponding fields in the LogExclusion included in this request. Fields not mentioned in update_mask are not changed and are ignored in the request.For example, to change the filter and description of an exclusion, specify an update_mask of \"filter,description\"." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}", + "id": "logging.folders.exclusions.patch", + "path": "v2/{+name}", + "description": "Changes one or more properties of an existing exclusion.", + "request": { + "$ref": "LogExclusion" + } + }, + "get": { + "description": "Gets the description of an exclusion.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "LogExclusion" + }, + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^folders/[^/]+/exclusions/[^/]+$", + "location": "path", + "description": "Required. The resource name of an existing exclusion:\n\"projects/[PROJECT_ID]/exclusions/[EXCLUSION_ID]\"\n\"organizations/[ORGANIZATION_ID]/exclusions/[EXCLUSION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/exclusions/[EXCLUSION_ID]\"\n\"folders/[FOLDER_ID]/exclusions/[EXCLUSION_ID]\"\nExample: \"projects/my-project-id/exclusions/my-exclusion-id\"." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2/folders/{foldersId}/exclusions/{exclusionsId}", + "path": "v2/{+name}", + "id": "logging.folders.exclusions.get" + }, + "list": { + "flatPath": "v2/folders/{foldersId}/exclusions", + "path": "v2/{+parent}/exclusions", + "id": "logging.folders.exclusions.list", + "description": "Lists all the exclusions in a parent resource.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListExclusionsResponse" + }, + "parameters": { + "parent": { + "pattern": "^folders/[^/]+$", + "location": "path", + "description": "Required. The parent resource whose exclusions are to be listed.\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true + }, + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ] } } } @@ -1974,26 +1976,47 @@ } }, "parameters": { + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Pretty-print response." + }, "bearer_token": { "location": "query", "description": "OAuth bearer token.", "type": "string" }, "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "upload_protocol": { "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "description": "OAuth 2.0 token for the current user.", "type": "string" }, - "prettyPrint": { + "upload_protocol": { + "type": "string", "location": "query", - "description": "Returns response with indentations and line breaks.", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." + }, + "prettyPrint": { "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query", + "description": "Returns response with indentations and line breaks." }, "uploadType": { "location": "query", @@ -2006,7 +2029,6 @@ "type": "string" }, "$.xgafv": { - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -2016,7 +2038,8 @@ "1", "2" ], - "description": "V1 error format." + "description": "V1 error format.", + "type": "string" }, "callback": { "description": "JSONP", @@ -2024,11 +2047,6 @@ "location": "query" }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -2037,28 +2055,12 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "type": "string", - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] } }, "version": "v2", @@ -2073,787 +2075,14 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "LogEntryOperation": { - "id": "LogEntryOperation", - "description": "Additional information about a potentially long-running operation with which a log entry is associated.", - "type": "object", - "properties": { - "id": { - "description": "Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.", - "type": "string" - }, - "first": { - "description": "Optional. Set this to True if this is the first log entry in the operation.", - "type": "boolean" - }, - "producer": { - "description": "Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: \"MyDivision.MyBigCompany.com\", \"github.com/MyProject/MyApplication\".", - "type": "string" - }, - "last": { - "description": "Optional. Set this to True if this is the last log entry in the operation.", - "type": "boolean" - } - } - }, - "LogMetric": { - "properties": { - "valueExtractor": { - "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are: 1. field: The name of the log entry field from which the value is to be extracted. 2. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")", - "type": "string" - }, - "bucketOptions": { - "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values.", - "$ref": "BucketOptions" - }, - "name": { - "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\".", - "type": "string" - }, - "labelExtractors": { - "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If the either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "metricDescriptor": { - "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description.", - "$ref": "MetricDescriptor" - }, - "version": { - "enumDescriptions": [ - "Stackdriver Logging API v2.", - "Stackdriver Logging API v1." - ], - "enum": [ - "V2", - "V1" - ], - "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.", - "type": "string" - }, - "filter": { - "description": "Required. An advanced logs filter which is used to match log entries. Example:\n\"resource.type=gae_app AND severity\u003e=ERROR\"\nThe maximum length of the filter is 20000 characters.", - "type": "string" - }, - "description": { - "description": "Optional. A description of this metric, which is used in documentation.", - "type": "string" - } - }, - "id": "LogMetric", - "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.Logs-based metric can also be used to extract values from logs and create a a distribution of the values. The distribution records the statistics of the extracted values along with an optional histogram of the values as specified by the bucket options.", - "type": "object" - }, - "MonitoredResource": { - "id": "MonitoredResource", - "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n", - "type": "object", - "properties": { - "type": { - "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", - "type": "string" - }, - "labels": { - "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\".", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - } - }, - "LogSink": { - "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.", - "type": "object", - "properties": { - "writerIdentity": { - "description": "Output only. An IAM identity—a service account or group—under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.", - "type": "string" - }, - "outputVersionFormat": { - "enumDescriptions": [ - "An unspecified format version that will default to V2.", - "LogEntry version 2 format.", - "LogEntry version 1 format." - ], - "enum": [ - "VERSION_FORMAT_UNSPECIFIED", - "V2", - "V1" - ], - "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed.", - "type": "string" - }, - "name": { - "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.", - "type": "string" - }, - "includeChildren": { - "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent. To only export entries from certain child projects, filter on the project part of the log name:\nlogName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND\nresource.type=gce_instance\n", - "type": "boolean" - }, - "destination": { - "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.", - "type": "string" - }, - "filter": { - "description": "Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:\nlogName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR\n", - "type": "string" - }, - "endTime": { - "type": "string", - "format": "google-datetime", - "description": "Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time." - } - }, - "id": "LogSink" - }, - "ListLogsResponse": { - "description": "Result returned from ListLogs.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - }, - "logNames": { - "description": "A list of log names. For example, \"projects/my-project/syslog\" or \"organizations/123/cloudresourcemanager.googleapis.com%2Factivity\".", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ListLogsResponse" - }, - "HttpRequest": { - "description": "A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message.", - "type": "object", - "properties": { - "latency": { - "format": "google-duration", - "description": "The request processing latency on the server, from the time the request was received until the response was sent.", - "type": "string" - }, - "userAgent": { - "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".", - "type": "string" - }, - "cacheFillBytes": { - "format": "int64", - "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.", - "type": "string" - }, - "requestMethod": { - "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".", - "type": "string" - }, - "requestSize": { - "format": "int64", - "description": "The size of the HTTP request message in bytes, including the request headers and the request body.", - "type": "string" - }, - "responseSize": { - "format": "int64", - "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.", - "type": "string" - }, - "protocol": { - "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"", - "type": "string" - }, - "requestUrl": { - "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".", - "type": "string" - }, - "serverIp": { - "type": "string", - "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to." - }, - "remoteIp": { - "type": "string", - "description": "The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: \"192.168.1.1\", \"FE80::0202:B3FF:FE1E:8329\"." - }, - "cacheLookup": { - "type": "boolean", - "description": "Whether or not a cache lookup was attempted." - }, - "cacheHit": { - "description": "Whether or not an entity was served from cache (with or without validation).", - "type": "boolean" - }, - "cacheValidatedWithOriginServer": { - "description": "Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.", - "type": "boolean" - }, - "status": { - "format": "int32", - "description": "The response code indicating the status of response. Examples: 200, 404.", - "type": "integer" - }, - "referer": { - "description": "The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).", - "type": "string" - } - }, - "id": "HttpRequest" - }, - "ListSinksResponse": { - "description": "Result returned from ListSinks.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.", - "type": "string" - }, - "sinks": { - "description": "A list of sinks.", - "items": { - "$ref": "LogSink" - }, - "type": "array" - } - }, - "id": "ListSinksResponse" - }, - "MonitoredResourceDescriptor": { - "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.", - "type": "object", - "properties": { - "name": { - "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", - "type": "string" - }, - "description": { - "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.", - "type": "string" - }, - "displayName": { - "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".", - "type": "string" - }, - "type": { - "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.", - "type": "string" - }, - "labels": { - "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".", - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array" - } - }, - "id": "MonitoredResourceDescriptor" - }, - "LogEntrySourceLocation": { - "description": "Additional information about the source code location that produced the log entry.", - "type": "object", - "properties": { - "file": { - "type": "string", - "description": "Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name." - }, - "function": { - "description": "Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", - "type": "string" - }, - "line": { - "format": "int64", - "description": "Optional. Line within the source file. 1-based; 0 indicates no line number available.", - "type": "string" - } - }, - "id": "LogEntrySourceLocation" - }, - "ListLogEntriesResponse": { - "description": "Result returned from ListLogEntries.", - "type": "object", - "properties": { - "entries": { - "description": "A list of log entries. If entries is empty, nextPageToken may still be returned, indicating that more entries may exist. See nextPageToken for more information.", - "items": { - "$ref": "LogEntry" - }, - "type": "array" - }, - "nextPageToken": { - "type": "string", - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search." - } - }, - "id": "ListLogEntriesResponse" - }, - "LogLine": { - "description": "Application log line emitted while processing a request.", - "type": "object", - "properties": { - "logMessage": { - "description": "App-provided log message.", - "type": "string" - }, - "severity": { - "enumDescriptions": [ - "(0) The log entry has no assigned severity level.", - "(100) Debug or trace information.", - "(200) Routine information, such as ongoing status or performance.", - "(300) Normal but significant events, such as start up, shut down, or a configuration change.", - "(400) Warning events might cause problems.", - "(500) Error events are likely to cause problems.", - "(600) Critical events cause more severe problems or outages.", - "(700) A person must take an action immediately.", - "(800) One or more systems are unusable." - ], - "enum": [ - "DEFAULT", - "DEBUG", - "INFO", - "NOTICE", - "WARNING", - "ERROR", - "CRITICAL", - "ALERT", - "EMERGENCY" - ], - "description": "Severity of this log entry.", - "type": "string" - }, - "sourceLocation": { - "$ref": "SourceLocation", - "description": "Where in the source code this log message was written." - }, - "time": { - "format": "google-datetime", - "description": "Approximate time when this log entry was made.", - "type": "string" - } - }, - "id": "LogLine" - }, - "Linear": { - "properties": { - "offset": { - "format": "double", - "description": "Lower bound of the first bucket.", - "type": "number" - }, - "numFiniteBuckets": { - "format": "int32", - "description": "Must be greater than 0.", - "type": "integer" - }, - "width": { - "format": "double", - "description": "Must be greater than 0.", - "type": "number" - } - }, - "id": "Linear", - "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1)).", - "type": "object" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "SourceLocation": { - "description": "Specifies a location in a source code file.", - "type": "object", - "properties": { - "file": { - "type": "string", - "description": "Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name." - }, - "functionName": { - "type": "string", - "description": "Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information is used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python)." - }, - "line": { - "type": "string", - "format": "int64", - "description": "Line within the source file." - } - }, - "id": "SourceLocation" - }, - "ListLogEntriesRequest": { - "description": "The parameters to ListLogEntries.", - "type": "object", - "properties": { - "orderBy": { - "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.", - "type": "string" - }, - "resourceNames": { - "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.", - "items": { - "type": "string" - }, - "type": "array" - }, - "filter": { - "description": "Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.", - "type": "string" - }, - "projectIds": { - "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.", - "items": { - "type": "string" - }, - "type": "array" - }, - "pageToken": { - "type": "string", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. page_token must be the value of next_page_token from the previous response. The values of other method parameters should be identical to those in the previous call." - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of next_page_token in the response indicates that more results might be available.", - "type": "integer" - } - }, - "id": "ListLogEntriesRequest" - }, - "Explicit": { - "type": "object", - "properties": { - "bounds": { - "description": "The values must be monotonically increasing.", - "items": { - "format": "double", - "type": "number" - }, - "type": "array" - } - }, - "id": "Explicit", - "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): boundsi Lower bound (1 \u003c= i \u003c N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets." - }, - "SourceReference": { - "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.", - "type": "object", - "properties": { - "repository": { - "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", - "type": "string" - }, - "revisionId": { - "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", - "type": "string" - } - }, - "id": "SourceReference" - }, - "WriteLogEntriesResponse": { - "type": "object", - "properties": {}, - "id": "WriteLogEntriesResponse", - "description": "Result returned from WriteLogEntries. empty" - }, - "Exponential": { - "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1)).", - "type": "object", - "properties": { - "growthFactor": { - "format": "double", - "description": "Must be greater than 1.", - "type": "number" - }, - "scale": { - "type": "number", - "format": "double", - "description": "Must be greater than 0." - }, - "numFiniteBuckets": { - "format": "int32", - "description": "Must be greater than 0.", - "type": "integer" - } - }, - "id": "Exponential" - }, - "WriteLogEntriesRequest": { - "description": "The parameters to WriteLogEntries.", - "type": "object", - "properties": { - "partialSuccess": { - "type": "boolean", - "description": "Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries' zero-based index in the entries.write method." - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.", - "type": "object" - }, - "resource": { - "description": "Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:\n{ \"type\": \"gce_instance\",\n \"labels\": {\n \"zone\": \"us-central1-a\", \"instance_id\": \"00000000000000000000\" }}\nSee LogEntry.", - "$ref": "MonitoredResource" - }, - "entries": { - "description": "Required. The log entries to send to Stackdriver Logging. The order of log entries in this list does not matter. Values supplied in this method's log_name, resource, and labels fields are copied into those log entries in this list that do not include values for their corresponding fields. For more information, see the LogEntry type.If the timestamp or insert_id fields are missing in log entries, then this method supplies the current time or a unique identifier, respectively. The supplied values are chosen so that, among the log entries that did not supply their own values, the entries earlier in the list will sort before the entries later in the list. See entries.list.Log entries with timestamps that are more than the logs retention period in the past or more than 24 hours in the future might be discarded. Discarding does not return an error.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should try to include several log entries in this list, rather than calling this method for each individual log entry.", - "items": { - "$ref": "LogEntry" - }, - "type": "array" - }, - "logName": { - "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string" - } - }, - "id": "WriteLogEntriesRequest" - }, - "LabelDescriptor": { - "description": "A description of a label.", - "type": "object", - "properties": { - "key": { - "description": "The label key.", - "type": "string" - }, - "description": { - "description": "A human-readable description for the label.", - "type": "string" - }, - "valueType": { - "enum": [ - "STRING", - "BOOL", - "INT64" - ], - "description": "The type of data that can be assigned to the label.", - "type": "string", - "enumDescriptions": [ - "A variable-length string. This is the default.", - "Boolean; true or false.", - "A 64-bit signed integer." - ] - } - }, - "id": "LabelDescriptor" - }, - "BucketOptions": { - "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i \u003e 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.", - "type": "object", - "properties": { - "exponentialBuckets": { - "$ref": "Exponential", - "description": "The exponential buckets." - }, - "explicitBuckets": { - "$ref": "Explicit", - "description": "The explicit buckets." - }, - "linearBuckets": { - "$ref": "Linear", - "description": "The linear bucket." - } - }, - "id": "BucketOptions" - }, - "ListLogMetricsResponse": { - "type": "object", - "properties": { - "metrics": { - "description": "A list of logs-based metrics.", - "items": { - "$ref": "LogMetric" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - } - }, - "id": "ListLogMetricsResponse", - "description": "Result returned from ListLogMetrics." - }, - "MetricDescriptor": { - "id": "MetricDescriptor", - "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.", - "type": "object", - "properties": { - "metricKind": { - "enum": [ - "METRIC_KIND_UNSPECIFIED", - "GAUGE", - "DELTA", - "CUMULATIVE" - ], - "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.", - "type": "string", - "enumDescriptions": [ - "Do not use this default value.", - "An instantaneous measurement of a value.", - "The change in a value during a time interval.", - "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points." - ] - }, - "description": { - "description": "A detailed description of the metric, which can be used in documentation.", - "type": "string" - }, - "displayName": { - "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".", - "type": "string" - }, - "unit": { - "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is equivalent to 1 if it is used alone. For examples, {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not containing '{' or '}'.", - "type": "string" - }, - "labels": { - "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.", - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array" - }, - "name": { - "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n", - "type": "string" - }, - "type": { - "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n", - "type": "string" - }, - "valueType": { - "type": "string", - "enumDescriptions": [ - "Do not use this default value.", - "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", - "The value is a signed 64-bit integer.", - "The value is a double precision floating point number.", - "The value is a text string. This value type can be used only if the metric kind is GAUGE.", - "The value is a Distribution.", - "The value is money." - ], - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "BOOL", - "INT64", - "DOUBLE", - "STRING", - "DISTRIBUTION", - "MONEY" - ], - "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported." - } - } - }, - "LogEntry": { - "properties": { - "resource": { - "$ref": "MonitoredResource", - "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error." - }, - "httpRequest": { - "$ref": "HttpRequest", - "description": "Optional. Information about the HTTP request associated with this log entry, if applicable." - }, - "jsonPayload": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The log entry payload, represented as a structure that is expressed as a JSON object.", - "type": "object" - }, - "insertId": { - "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.", - "type": "string" - }, - "operation": { - "$ref": "LogEntryOperation", - "description": "Optional. Information about an operation associated with the log entry, if applicable." - }, - "textPayload": { - "description": "The log entry payload, represented as a Unicode string (UTF-8).", - "type": "string" - }, - "protoPayload": { - "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.", - "type": "object" - }, - "trace": { - "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824", - "type": "string" - }, - "severity": { - "enumDescriptions": [ - "(0) The log entry has no assigned severity level.", - "(100) Debug or trace information.", - "(200) Routine information, such as ongoing status or performance.", - "(300) Normal but significant events, such as start up, shut down, or a configuration change.", - "(400) Warning events might cause problems.", - "(500) Error events are likely to cause problems.", - "(600) Critical events cause more severe problems or outages.", - "(700) A person must take an action immediately.", - "(800) One or more systems are unusable." - ], - "enum": [ - "DEFAULT", - "DEBUG", - "INFO", - "NOTICE", - "WARNING", - "ERROR", - "CRITICAL", - "ALERT", - "EMERGENCY" - ], - "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.", - "type": "string" - }, - "sourceLocation": { - "description": "Optional. Source code location information associated with the log entry, if any.", - "$ref": "LogEntrySourceLocation" - }, - "receiveTimestamp": { - "format": "google-datetime", - "description": "Output only. The time the log entry was received by Stackdriver Logging.", - "type": "string" - }, - "timestamp": { - "format": "google-datetime", - "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.", - "type": "string" - }, - "logName": { - "type": "string", - "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results." - } - }, - "id": "LogEntry", - "description": "An individual entry in a log.", - "type": "object" - }, "RequestLog": { - "description": "Complete log information about a single HTTP request to an App Engine application.", "type": "object", "properties": { + "endTime": { + "format": "google-datetime", + "description": "Time when the request finished.", + "type": "string" + }, "userAgent": { "description": "User agent that made the request.", "type": "string" @@ -2870,9 +2099,9 @@ "description": "Source code for the application that handled this request. There can be more than one source reference per deployed application if source code is distributed among multiple repositories." }, "responseSize": { - "type": "string", "format": "int64", - "description": "Size in bytes sent back to client by request." + "description": "Size in bytes sent back to client by request.", + "type": "string" }, "traceId": { "description": "Stackdriver Trace identifier for this request.", @@ -2924,18 +2153,18 @@ "type": "string" }, "instanceIndex": { + "type": "integer", "format": "int32", - "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1.", - "type": "integer" - }, - "host": { - "description": "Internet host and port number of the resource being requested.", - "type": "string" + "description": "If the instance processing this request belongs to a manually scaled module, then this is the 0-based index of the instance. Otherwise, this value is -1." }, "finished": { "description": "Whether this request is finished or active.", "type": "boolean" }, + "host": { + "description": "Internet host and port number of the resource being requested.", + "type": "string" + }, "httpVersion": { "description": "HTTP version of request. Example: \"HTTP/1.1\".", "type": "string" @@ -2959,30 +2188,30 @@ "type": "string" }, "appEngineRelease": { - "type": "string", - "description": "App Engine release version." - }, - "method": { - "description": "Request method. Example: \"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\".", + "description": "App Engine release version.", "type": "string" }, + "method": { + "type": "string", + "description": "Request method. Example: \"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\"." + }, "cost": { + "type": "number", "format": "double", - "description": "An indication of the relative cost of serving this request.", - "type": "number" + "description": "An indication of the relative cost of serving this request." }, "instanceId": { "description": "An identifier for the instance that handled the request.", "type": "string" }, "megaCycles": { - "type": "string", "format": "int64", - "description": "Number of CPU megacycles used to process request." + "description": "Number of CPU megacycles used to process request.", + "type": "string" }, "first": { - "type": "boolean", - "description": "Whether this is the first RequestLog entry for this request. If an active request has several RequestLog entries written to Stackdriver Logging, then this field will be set for one of them." + "description": "Whether this is the first RequestLog entry for this request. If an active request has several RequestLog entries written to Stackdriver Logging, then this field will be set for one of them.", + "type": "boolean" }, "versionId": { "description": "Version of the application that handled this request.", @@ -2991,27 +2220,15 @@ "moduleId": { "description": "Module of the application that handled this request.", "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Time when the request finished.", - "type": "string" } }, - "id": "RequestLog" + "id": "RequestLog", + "description": "Complete log information about a single HTTP request to an App Engine application." }, "LogExclusion": { "description": "Specifies a set of log entries that are not to be stored in Stackdriver Logging. If your project receives a large volume of logs, you might be able to use exclusions to reduce your chargeable logs. Exclusions are processed after log sinks, so you can export log entries before they are excluded. Audit log entries and log entries from Amazon Web Services are never excluded.", "type": "object", "properties": { - "disabled": { - "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can use exclusions.patch to change the value of this field.", - "type": "boolean" - }, - "filter": { - "description": "Required. An advanced logs filter that matches the log entries to be excluded. By using the sample function, you can exclude less than 100% of the matching log entries. For example, the following filter matches 99% of low-severity log entries from load balancers:\n\"resource.type=http_load_balancer severity\u003cERROR sample(insertId, 0.99)\"\n", - "type": "string" - }, "name": { "description": "Required. A client-assigned identifier, such as \"load-balancer-exclusion\". Identifiers are limited to 100 characters and can include only letters, digits, underscores, hyphens, and periods.", "type": "string" @@ -3019,52 +2236,837 @@ "description": { "description": "Optional. A description of this exclusion.", "type": "string" + }, + "disabled": { + "type": "boolean", + "description": "Optional. If set to True, then this exclusion is disabled and it does not exclude any log entries. You can use exclusions.patch to change the value of this field." + }, + "filter": { + "description": "Required. An advanced logs filter that matches the log entries to be excluded. By using the sample function, you can exclude less than 100% of the matching log entries. For example, the following filter matches 99% of low-severity log entries from load balancers:\n\"resource.type=http_load_balancer severity\u003cERROR sample(insertId, 0.99)\"\n", + "type": "string" } }, "id": "LogExclusion" }, "ListMonitoredResourceDescriptorsResponse": { + "description": "Result returned from ListMonitoredResourceDescriptors.", + "type": "object", "properties": { - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - }, "resourceDescriptors": { "description": "A list of resource descriptors.", "items": { "$ref": "MonitoredResourceDescriptor" }, "type": "array" + }, + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", + "type": "string" } }, - "id": "ListMonitoredResourceDescriptorsResponse", - "description": "Result returned from ListMonitoredResourceDescriptors.", - "type": "object" + "id": "ListMonitoredResourceDescriptorsResponse" }, "ListExclusionsResponse": { "description": "Result returned from ListExclusions.", "type": "object", "properties": { + "nextPageToken": { + "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.", + "type": "string" + }, "exclusions": { + "description": "A list of exclusions.", "items": { "$ref": "LogExclusion" }, - "type": "array", - "description": "A list of exclusions." - }, - "nextPageToken": { - "type": "string", - "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken." + "type": "array" } }, "id": "ListExclusionsResponse" + }, + "LogMetric": { + "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.Logs-based metric can also be used to extract values from logs and create a a distribution of the values. The distribution records the statistics of the extracted values along with an optional histogram of the values as specified by the bucket options.", + "type": "object", + "properties": { + "labelExtractors": { + "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If the either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "version": { + "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.", + "type": "string", + "enumDescriptions": [ + "Stackdriver Logging API v2.", + "Stackdriver Logging API v1." + ], + "enum": [ + "V2", + "V1" + ] + }, + "metricDescriptor": { + "$ref": "MetricDescriptor", + "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description." + }, + "filter": { + "description": "Required. An advanced logs filter which is used to match log entries. Example:\n\"resource.type=gae_app AND severity\u003e=ERROR\"\nThe maximum length of the filter is 20000 characters.", + "type": "string" + }, + "description": { + "description": "Optional. A description of this metric, which is used in documentation.", + "type": "string" + }, + "bucketOptions": { + "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values.", + "$ref": "BucketOptions" + }, + "valueExtractor": { + "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are: 1. field: The name of the log entry field from which the value is to be extracted. 2. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")", + "type": "string" + }, + "name": { + "type": "string", + "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\"." + } + }, + "id": "LogMetric" + }, + "LogEntryOperation": { + "description": "Additional information about a potentially long-running operation with which a log entry is associated.", + "type": "object", + "properties": { + "first": { + "description": "Optional. Set this to True if this is the first log entry in the operation.", + "type": "boolean" + }, + "producer": { + "description": "Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: \"MyDivision.MyBigCompany.com\", \"github.com/MyProject/MyApplication\".", + "type": "string" + }, + "last": { + "description": "Optional. Set this to True if this is the last log entry in the operation.", + "type": "boolean" + }, + "id": { + "type": "string", + "description": "Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation." + } + }, + "id": "LogEntryOperation" + }, + "MonitoredResource": { + "id": "MonitoredResource", + "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n", + "type": "object", + "properties": { + "type": { + "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", + "type": "string" + }, + "labels": { + "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\".", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + }, + "LogSink": { + "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.", + "type": "object", + "properties": { + "endTime": { + "format": "google-datetime", + "description": "Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.", + "type": "string" + }, + "writerIdentity": { + "type": "string", + "description": "Output only. An IAM identity—a service account or group—under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity." + }, + "startTime": { + "format": "google-datetime", + "description": "Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.", + "type": "string" + }, + "outputVersionFormat": { + "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed.", + "type": "string", + "enumDescriptions": [ + "An unspecified format version that will default to V2.", + "LogEntry version 2 format.", + "LogEntry version 1 format." + ], + "enum": [ + "VERSION_FORMAT_UNSPECIFIED", + "V2", + "V1" + ] + }, + "name": { + "type": "string", + "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods." + }, + "includeChildren": { + "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent. To only export entries from certain child projects, filter on the project part of the log name:\nlogName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND\nresource.type=gce_instance\n", + "type": "boolean" + }, + "filter": { + "description": "Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:\nlogName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR\n", + "type": "string" + }, + "destination": { + "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.", + "type": "string" + } + }, + "id": "LogSink" + }, + "ListLogsResponse": { + "properties": { + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", + "type": "string" + }, + "logNames": { + "description": "A list of log names. For example, \"projects/my-project/syslog\" or \"organizations/123/cloudresourcemanager.googleapis.com%2Factivity\".", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ListLogsResponse", + "description": "Result returned from ListLogs.", + "type": "object" + }, + "ListSinksResponse": { + "description": "Result returned from ListSinks.", + "type": "object", + "properties": { + "sinks": { + "items": { + "$ref": "LogSink" + }, + "type": "array", + "description": "A list of sinks." + }, + "nextPageToken": { + "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.", + "type": "string" + } + }, + "id": "ListSinksResponse" + }, + "HttpRequest": { + "properties": { + "cacheLookup": { + "description": "Whether or not a cache lookup was attempted.", + "type": "boolean" + }, + "cacheHit": { + "description": "Whether or not an entity was served from cache (with or without validation).", + "type": "boolean" + }, + "cacheValidatedWithOriginServer": { + "description": "Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.", + "type": "boolean" + }, + "status": { + "format": "int32", + "description": "The response code indicating the status of response. Examples: 200, 404.", + "type": "integer" + }, + "referer": { + "description": "The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).", + "type": "string" + }, + "latency": { + "type": "string", + "format": "google-duration", + "description": "The request processing latency on the server, from the time the request was received until the response was sent." + }, + "userAgent": { + "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".", + "type": "string" + }, + "cacheFillBytes": { + "format": "int64", + "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.", + "type": "string" + }, + "requestMethod": { + "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".", + "type": "string" + }, + "requestSize": { + "format": "int64", + "description": "The size of the HTTP request message in bytes, including the request headers and the request body.", + "type": "string" + }, + "responseSize": { + "format": "int64", + "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.", + "type": "string" + }, + "protocol": { + "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"", + "type": "string" + }, + "requestUrl": { + "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".", + "type": "string" + }, + "serverIp": { + "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to.", + "type": "string" + }, + "remoteIp": { + "description": "The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: \"192.168.1.1\", \"FE80::0202:B3FF:FE1E:8329\".", + "type": "string" + } + }, + "id": "HttpRequest", + "description": "A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message.", + "type": "object" + }, + "MonitoredResourceDescriptor": { + "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.", + "type": "object", + "properties": { + "labels": { + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array", + "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\"." + }, + "name": { + "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", + "type": "string" + }, + "description": { + "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.", + "type": "string" + }, + "displayName": { + "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".", + "type": "string" + }, + "type": { + "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.", + "type": "string" + } + }, + "id": "MonitoredResourceDescriptor" + }, + "LogEntrySourceLocation": { + "properties": { + "function": { + "description": "Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", + "type": "string" + }, + "line": { + "format": "int64", + "description": "Optional. Line within the source file. 1-based; 0 indicates no line number available.", + "type": "string" + }, + "file": { + "description": "Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", + "type": "string" + } + }, + "id": "LogEntrySourceLocation", + "description": "Additional information about the source code location that produced the log entry.", + "type": "object" + }, + "ListLogEntriesResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.", + "type": "string" + }, + "entries": { + "description": "A list of log entries. If entries is empty, nextPageToken may still be returned, indicating that more entries may exist. See nextPageToken for more information.", + "items": { + "$ref": "LogEntry" + }, + "type": "array" + } + }, + "id": "ListLogEntriesResponse", + "description": "Result returned from ListLogEntries." + }, + "LogLine": { + "description": "Application log line emitted while processing a request.", + "type": "object", + "properties": { + "logMessage": { + "description": "App-provided log message.", + "type": "string" + }, + "severity": { + "enumDescriptions": [ + "(0) The log entry has no assigned severity level.", + "(100) Debug or trace information.", + "(200) Routine information, such as ongoing status or performance.", + "(300) Normal but significant events, such as start up, shut down, or a configuration change.", + "(400) Warning events might cause problems.", + "(500) Error events are likely to cause problems.", + "(600) Critical events cause more severe problems or outages.", + "(700) A person must take an action immediately.", + "(800) One or more systems are unusable." + ], + "enum": [ + "DEFAULT", + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERROR", + "CRITICAL", + "ALERT", + "EMERGENCY" + ], + "description": "Severity of this log entry.", + "type": "string" + }, + "sourceLocation": { + "$ref": "SourceLocation", + "description": "Where in the source code this log message was written." + }, + "time": { + "format": "google-datetime", + "description": "Approximate time when this log entry was made.", + "type": "string" + } + }, + "id": "LogLine" + }, + "Linear": { + "properties": { + "width": { + "format": "double", + "description": "Must be greater than 0.", + "type": "number" + }, + "offset": { + "format": "double", + "description": "Lower bound of the first bucket.", + "type": "number" + }, + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + } + }, + "id": "Linear", + "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1)).", + "type": "object" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "SourceLocation": { + "description": "Specifies a location in a source code file.", + "type": "object", + "properties": { + "functionName": { + "description": "Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information is used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", + "type": "string" + }, + "line": { + "format": "int64", + "description": "Line within the source file.", + "type": "string" + }, + "file": { + "description": "Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", + "type": "string" + } + }, + "id": "SourceLocation" + }, + "ListLogEntriesRequest": { + "description": "The parameters to ListLogEntries.", + "type": "object", + "properties": { + "projectIds": { + "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "filter": { + "description": "Optional. A filter that chooses which log entries to return. See Advanced Logs Filters. Only log entries that match the filter are returned. An empty filter matches all log entries in the resources listed in resource_names. Referencing a parent resource that is not listed in resource_names will cause the filter to return no results. The maximum length of the filter is 20000 characters.", + "type": "string" + }, + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. page_token must be the value of next_page_token from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of next_page_token in the response indicates that more results might be available.", + "type": "integer" + }, + "orderBy": { + "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.", + "type": "string" + }, + "resourceNames": { + "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ListLogEntriesRequest" + }, + "Explicit": { + "type": "object", + "properties": { + "bounds": { + "description": "The values must be monotonically increasing.", + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + } + }, + "id": "Explicit", + "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): boundsi Lower bound (1 \u003c= i \u003c N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets." + }, + "SourceReference": { + "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.", + "type": "object", + "properties": { + "revisionId": { + "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", + "type": "string" + }, + "repository": { + "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", + "type": "string" + } + }, + "id": "SourceReference" + }, + "WriteLogEntriesResponse": { + "description": "Result returned from WriteLogEntries. empty", + "type": "object", + "properties": {}, + "id": "WriteLogEntriesResponse" + }, + "Exponential": { + "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1)).", + "type": "object", + "properties": { + "growthFactor": { + "type": "number", + "format": "double", + "description": "Must be greater than 1." + }, + "scale": { + "format": "double", + "description": "Must be greater than 0.", + "type": "number" + }, + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + } + }, + "id": "Exponential" + }, + "WriteLogEntriesRequest": { + "type": "object", + "properties": { + "labels": { + "description": "Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "resource": { + "$ref": "MonitoredResource", + "description": "Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:\n{ \"type\": \"gce_instance\",\n \"labels\": {\n \"zone\": \"us-central1-a\", \"instance_id\": \"00000000000000000000\" }}\nSee LogEntry." + }, + "entries": { + "description": "Required. The log entries to send to Stackdriver Logging. The order of log entries in this list does not matter. Values supplied in this method's log_name, resource, and labels fields are copied into those log entries in this list that do not include values for their corresponding fields. For more information, see the LogEntry type.If the timestamp or insert_id fields are missing in log entries, then this method supplies the current time or a unique identifier, respectively. The supplied values are chosen so that, among the log entries that did not supply their own values, the entries earlier in the list will sort before the entries later in the list. See entries.list.Log entries with timestamps that are more than the logs retention period in the past or more than 24 hours in the future might be discarded. Discarding does not return an error.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should try to include several log entries in this list, rather than calling this method for each individual log entry.", + "items": { + "$ref": "LogEntry" + }, + "type": "array" + }, + "logName": { + "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string" + }, + "partialSuccess": { + "description": "Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries' zero-based index in the entries.write method.", + "type": "boolean" + } + }, + "id": "WriteLogEntriesRequest", + "description": "The parameters to WriteLogEntries." + }, + "LabelDescriptor": { + "type": "object", + "properties": { + "key": { + "description": "The label key.", + "type": "string" + }, + "description": { + "description": "A human-readable description for the label.", + "type": "string" + }, + "valueType": { + "enum": [ + "STRING", + "BOOL", + "INT64" + ], + "description": "The type of data that can be assigned to the label.", + "type": "string", + "enumDescriptions": [ + "A variable-length string. This is the default.", + "Boolean; true or false.", + "A 64-bit signed integer." + ] + } + }, + "id": "LabelDescriptor", + "description": "A description of a label." + }, + "BucketOptions": { + "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i \u003e 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.", + "type": "object", + "properties": { + "exponentialBuckets": { + "$ref": "Exponential", + "description": "The exponential buckets." + }, + "explicitBuckets": { + "description": "The explicit buckets.", + "$ref": "Explicit" + }, + "linearBuckets": { + "$ref": "Linear", + "description": "The linear bucket." + } + }, + "id": "BucketOptions" + }, + "ListLogMetricsResponse": { + "description": "Result returned from ListLogMetrics.", + "type": "object", + "properties": { + "metrics": { + "items": { + "$ref": "LogMetric" + }, + "type": "array", + "description": "A list of logs-based metrics." + }, + "nextPageToken": { + "type": "string", + "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken." + } + }, + "id": "ListLogMetricsResponse" + }, + "MetricDescriptor": { + "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.", + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n" + }, + "valueType": { + "enumDescriptions": [ + "Do not use this default value.", + "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", + "The value is a signed 64-bit integer.", + "The value is a double precision floating point number.", + "The value is a text string. This value type can be used only if the metric kind is GAUGE.", + "The value is a Distribution.", + "The value is money." + ], + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "BOOL", + "INT64", + "DOUBLE", + "STRING", + "DISTRIBUTION", + "MONEY" + ], + "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.", + "type": "string" + }, + "metricKind": { + "enumDescriptions": [ + "Do not use this default value.", + "An instantaneous measurement of a value.", + "The change in a value during a time interval.", + "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points." + ], + "enum": [ + "METRIC_KIND_UNSPECIFIED", + "GAUGE", + "DELTA", + "CUMULATIVE" + ], + "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.", + "type": "string" + }, + "description": { + "description": "A detailed description of the metric, which can be used in documentation.", + "type": "string" + }, + "displayName": { + "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".", + "type": "string" + }, + "unit": { + "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is equivalent to 1 if it is used alone. For examples, {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not containing '{' or '}'.", + "type": "string" + }, + "labels": { + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array", + "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed." + }, + "name": { + "type": "string", + "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n" + } + }, + "id": "MetricDescriptor" + }, + "LogEntry": { + "description": "An individual entry in a log.", + "type": "object", + "properties": { + "jsonPayload": { + "type": "object", + "additionalProperties": { + "type": "any", + "description": "Properties of the object." + }, + "description": "The log entry payload, represented as a structure that is expressed as a JSON object." + }, + "operation": { + "$ref": "LogEntryOperation", + "description": "Optional. Information about an operation associated with the log entry, if applicable." + }, + "insertId": { + "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.", + "type": "string" + }, + "textPayload": { + "description": "The log entry payload, represented as a Unicode string (UTF-8).", + "type": "string" + }, + "protoPayload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.", + "type": "object" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.", + "type": "object" + }, + "trace": { + "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824", + "type": "string" + }, + "severity": { + "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.", + "type": "string", + "enumDescriptions": [ + "(0) The log entry has no assigned severity level.", + "(100) Debug or trace information.", + "(200) Routine information, such as ongoing status or performance.", + "(300) Normal but significant events, such as start up, shut down, or a configuration change.", + "(400) Warning events might cause problems.", + "(500) Error events are likely to cause problems.", + "(600) Critical events cause more severe problems or outages.", + "(700) A person must take an action immediately.", + "(800) One or more systems are unusable." + ], + "enum": [ + "DEFAULT", + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERROR", + "CRITICAL", + "ALERT", + "EMERGENCY" + ] + }, + "sourceLocation": { + "description": "Optional. Source code location information associated with the log entry, if any.", + "$ref": "LogEntrySourceLocation" + }, + "receiveTimestamp": { + "format": "google-datetime", + "description": "Output only. The time the log entry was received by Stackdriver Logging.", + "type": "string" + }, + "timestamp": { + "format": "google-datetime", + "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.", + "type": "string" + }, + "logName": { + "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.", + "type": "string" + }, + "httpRequest": { + "$ref": "HttpRequest", + "description": "Optional. Information about the HTTP request associated with this log entry, if applicable." + }, + "resource": { + "$ref": "MonitoredResource", + "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error." + } + }, + "id": "LogEntry" } }, - "protocol": "rest", "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "canonicalName": "Logging", "auth": { "oauth2": { @@ -3087,7 +3089,5 @@ } } }, - "rootUrl": "https://logging.googleapis.com/", - "ownerDomain": "google.com", - "name": "logging" + "rootUrl": "https://logging.googleapis.com/" } diff --git a/vendor/google.golang.org/api/logging/v2beta1/logging-api.json b/vendor/google.golang.org/api/logging/v2beta1/logging-api.json index 9f3ab3b..40c7a21 100644 --- a/vendor/google.golang.org/api/logging/v2beta1/logging-api.json +++ b/vendor/google.golang.org/api/logging/v2beta1/logging-api.json @@ -1,598 +1,766 @@ { - "version_module": true, - "schemas": { - "ListMonitoredResourceDescriptorsResponse": { - "id": "ListMonitoredResourceDescriptorsResponse", - "description": "Result returned from ListMonitoredResourceDescriptors.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - }, - "resourceDescriptors": { - "description": "A list of resource descriptors.", - "items": { - "$ref": "MonitoredResourceDescriptor" + "ownerName": "Google", + "resources": { + "monitoredResourceDescriptors": { + "methods": { + "list": { + "id": "logging.monitoredResourceDescriptors.list", + "path": "v2beta1/monitoredResourceDescriptors", + "description": "Lists the descriptors for monitored resource types used by Stackdriver Logging.", + "response": { + "$ref": "ListMonitoredResourceDescriptorsResponse" }, - "type": "array" + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2beta1/monitoredResourceDescriptors" } } }, - "SourceReference": { - "id": "SourceReference", - "description": "A reference to a particular snapshot of the source tree used to build and deploy an application.", - "type": "object", - "properties": { - "revisionId": { - "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", - "type": "string" - }, - "repository": { - "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", - "type": "string" + "organizations": { + "resources": { + "logs": { + "methods": { + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "logName" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "parameters": { + "logName": { + "location": "path", + "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+/logs/[^/]+$" + } + }, + "flatPath": "v2beta1/organizations/{organizationsId}/logs/{logsId}", + "path": "v2beta1/{+logName}", + "id": "logging.organizations.logs.delete", + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted." + }, + "list": { + "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListLogsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available." + }, + "parent": { + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^organizations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2beta1/organizations/{organizationsId}/logs", + "path": "v2beta1/{+parent}/logs", + "id": "logging.organizations.logs.list" + } + } } } }, - "WriteLogEntriesResponse": { - "id": "WriteLogEntriesResponse", - "description": "Result returned from WriteLogEntries. empty", - "type": "object", - "properties": {} - }, - "LogEntryOperation": { - "properties": { - "last": { - "description": "Optional. Set this to True if this is the last log entry in the operation.", - "type": "boolean" - }, - "id": { - "description": "Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.", - "type": "string" - }, - "first": { - "description": "Optional. Set this to True if this is the first log entry in the operation.", - "type": "boolean" - }, - "producer": { - "type": "string", - "description": "Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: \"MyDivision.MyBigCompany.com\", \"github.com/MyProject/MyApplication\"." - } - }, - "id": "LogEntryOperation", - "description": "Additional information about a potentially long-running operation with which a log entry is associated.", - "type": "object" - }, - "LogMetric": { - "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\"." - }, - "description": { - "description": "Optional. A description of this metric, which is used in documentation.", - "type": "string" - }, - "version": { - "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.", - "type": "string", - "enumDescriptions": [ - "Stackdriver Logging API v2.", - "Stackdriver Logging API v1." + "entries": { + "methods": { + "list": { + "response": { + "$ref": "ListLogEntriesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" ], - "enum": [ - "V2", - "V1" - ] + "flatPath": "v2beta1/entries:list", + "id": "logging.entries.list", + "path": "v2beta1/entries:list", + "description": "Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.", + "request": { + "$ref": "ListLogEntriesRequest" + } }, - "filter": { - "description": "Required. An advanced logs filter which is used to match log entries. Example:\n\"resource.type=gae_app AND severity\u003e=ERROR\"\nThe maximum length of the filter is 20000 characters.", - "type": "string" - } - }, - "id": "LogMetric" - }, - "MonitoredResource": { - "properties": { - "type": { - "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", - "type": "string" - }, - "labels": { - "type": "object", - "additionalProperties": { - "type": "string" + "write": { + "flatPath": "v2beta1/entries:write", + "id": "logging.entries.write", + "path": "v2beta1/entries:write", + "request": { + "$ref": "WriteLogEntriesRequest" }, - "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\"." - } - }, - "id": "MonitoredResource", - "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n", - "type": "object" - }, - "LogSink": { - "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.", - "type": "object", - "properties": { - "includeChildren": { - "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent. To only export entries from certain child projects, filter on the project part of the log name:\nlogName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND\nresource.type=gce_instance\n", - "type": "boolean" - }, - "destination": { - "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks.", - "type": "string" - }, - "filter": { - "description": "Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:\nlogName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR\n", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.", - "type": "string" - }, - "startTime": { - "type": "string", - "format": "google-datetime", - "description": "Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated." - }, - "writerIdentity": { - "description": "Output only. An IAM identity—a service account or group—under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.", - "type": "string" - }, - "outputVersionFormat": { - "type": "string", - "enumDescriptions": [ - "An unspecified format version that will default to V2.", - "LogEntry version 2 format.", - "LogEntry version 1 format." + "description": "Log entry resourcesWrites log entries to Stackdriver Logging. This API method is the only way to send log entries to Stackdriver Logging. This method is used, directly or indirectly, by the Stackdriver Logging agent (fluentd) and all logging libraries configured to use Stackdriver Logging.", + "response": { + "$ref": "WriteLogEntriesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" ], - "enum": [ - "VERSION_FORMAT_UNSPECIFIED", - "V2", - "V1" - ], - "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed." - }, - "name": { - "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.", - "type": "string" + "parameters": {} } - }, - "id": "LogSink" + } }, - "WriteLogEntriesRequest": { - "description": "The parameters to WriteLogEntries.", - "type": "object", - "properties": { - "resource": { - "$ref": "MonitoredResource", - "description": "Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:\n{ \"type\": \"gce_instance\",\n \"labels\": {\n \"zone\": \"us-central1-a\", \"instance_id\": \"00000000000000000000\" }}\nSee LogEntry." - }, - "entries": { - "description": "Required. The log entries to write. Values supplied for the fields log_name, resource, and labels in this entries.write request are inserted into those log entries in this list that do not provide their own values.Stackdriver Logging also creates and inserts values for timestamp and insert_id if the entries do not provide them. The created insert_id for the N'th entry in this list will be greater than earlier entries and less than later entries. Otherwise, the order of log entries in this list does not matter.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should write multiple log entries at once rather than calling this method for each individual log entry.", - "items": { - "$ref": "LogEntry" - }, - "type": "array" - }, - "logName": { - "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string" - }, - "partialSuccess": { - "description": "Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries' zero-based index in the entries.write method.", - "type": "boolean" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.", - "type": "object" - } - }, - "id": "WriteLogEntriesRequest" - }, - "ListLogsResponse": { - "properties": { - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - }, - "logNames": { - "description": "A list of log names. For example, \"projects/my-project/syslog\" or \"organizations/123/cloudresourcemanager.googleapis.com%2Factivity\".", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ListLogsResponse", - "description": "Result returned from ListLogs.", - "type": "object" - }, - "HttpRequest": { - "description": "A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message.", - "type": "object", - "properties": { - "userAgent": { - "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".", - "type": "string" - }, - "latency": { - "type": "string", - "format": "google-duration", - "description": "The request processing latency on the server, from the time the request was received until the response was sent." - }, - "cacheFillBytes": { - "format": "int64", - "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.", - "type": "string" - }, - "requestMethod": { - "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".", - "type": "string" - }, - "requestSize": { - "format": "int64", - "description": "The size of the HTTP request message in bytes, including the request headers and the request body.", - "type": "string" - }, - "responseSize": { - "format": "int64", - "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.", - "type": "string" - }, - "protocol": { - "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"", - "type": "string" - }, - "requestUrl": { - "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".", - "type": "string" - }, - "remoteIp": { - "description": "The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: \"192.168.1.1\", \"FE80::0202:B3FF:FE1E:8329\".", - "type": "string" - }, - "serverIp": { - "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to.", - "type": "string" - }, - "cacheLookup": { - "description": "Whether or not a cache lookup was attempted.", - "type": "boolean" - }, - "cacheHit": { - "type": "boolean", - "description": "Whether or not an entity was served from cache (with or without validation)." - }, - "cacheValidatedWithOriginServer": { - "description": "Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.", - "type": "boolean" - }, - "status": { - "format": "int32", - "description": "The response code indicating the status of response. Examples: 200, 404.", - "type": "integer" - }, - "referer": { - "description": "The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).", - "type": "string" - } - }, - "id": "HttpRequest" - }, - "ListSinksResponse": { - "properties": { - "nextPageToken": { - "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.", - "type": "string" + "projects": { + "resources": { + "metrics": { + "methods": { + "get": { + "description": "Gets a logs-based metric.", + "httpMethod": "GET", + "response": { + "$ref": "LogMetric" + }, + "parameterOrder": [ + "metricName" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "metricName": { + "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/metrics/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}", + "path": "v2beta1/{+metricName}", + "id": "logging.projects.metrics.get" + }, + "list": { + "description": "Lists logs-based metrics.", + "response": { + "$ref": "ListLogMetricsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + }, + "parent": { + "location": "path", + "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "flatPath": "v2beta1/projects/{projectsId}/metrics", + "id": "logging.projects.metrics.list", + "path": "v2beta1/{+parent}/metrics" + }, + "update": { + "path": "v2beta1/{+metricName}", + "id": "logging.projects.metrics.update", + "description": "Creates or updates a logs-based metric.", + "request": { + "$ref": "LogMetric" + }, + "httpMethod": "PUT", + "parameterOrder": [ + "metricName" + ], + "response": { + "$ref": "LogMetric" + }, + "parameters": { + "metricName": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/metrics/[^/]+$", + "location": "path", + "description": "The resource name of the metric to update:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\nThe updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], + "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}" + }, + "create": { + "description": "Creates a logs-based metric.", + "request": { + "$ref": "LogMetric" + }, + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "LogMetric" + }, + "parameters": { + "parent": { + "description": "The resource name of the project in which to create the metric:\n\"projects/[PROJECT_ID]\"\nThe new metric must be provided in the request.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], + "flatPath": "v2beta1/projects/{projectsId}/metrics", + "path": "v2beta1/{+parent}/metrics", + "id": "logging.projects.metrics.create" + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "metricName" + ], + "httpMethod": "DELETE", + "parameters": { + "metricName": { + "location": "path", + "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/metrics/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.write" + ], + "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}", + "id": "logging.projects.metrics.delete", + "path": "v2beta1/{+metricName}", + "description": "Deletes a logs-based metric." + } + } }, "sinks": { - "description": "A list of sinks.", - "items": { - "$ref": "LogSink" - }, - "type": "array" + "methods": { + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "sinkName" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "sinkName": { + "location": "path", + "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/sinks/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}", + "path": "v2beta1/{+sinkName}", + "id": "logging.projects.sinks.delete", + "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted." + }, + "get": { + "id": "logging.projects.sinks.get", + "path": "v2beta1/{+sinkName}", + "description": "Gets a sink.", + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "sinkName": { + "location": "path", + "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/sinks/[^/]+$" + } + }, + "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}" + }, + "list": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + }, + "parent": { + "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v2beta1/projects/{projectsId}/sinks", + "path": "v2beta1/{+parent}/sinks", + "id": "logging.projects.sinks.list", + "description": "Lists sinks.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListSinksResponse" + } + }, + "update": { + "id": "logging.projects.sinks.update", + "path": "v2beta1/{+sinkName}", + "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field.", + "request": { + "$ref": "LogSink" + }, + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "sinkName" + ], + "httpMethod": "PUT", + "parameters": { + "uniqueWriterIdentity": { + "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", + "type": "boolean", + "location": "query" + }, + "sinkName": { + "location": "path", + "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/sinks/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}" + }, + "create": { + "response": { + "$ref": "LogSink" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\"." + }, + "uniqueWriterIdentity": { + "location": "query", + "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", + "type": "boolean" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2beta1/projects/{projectsId}/sinks", + "id": "logging.projects.sinks.create", + "path": "v2beta1/{+parent}/sinks", + "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", + "request": { + "$ref": "LogSink" + } + } + } + }, + "logs": { + "methods": { + "list": { + "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", + "response": { + "$ref": "ListLogsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer" + }, + "parent": { + "location": "path", + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "flatPath": "v2beta1/projects/{projectsId}/logs", + "id": "logging.projects.logs.list", + "path": "v2beta1/{+parent}/logs" + }, + "delete": { + "flatPath": "v2beta1/projects/{projectsId}/logs/{logsId}", + "path": "v2beta1/{+logName}", + "id": "logging.projects.logs.delete", + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", + "httpMethod": "DELETE", + "parameterOrder": [ + "logName" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "logName": { + "location": "path", + "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/logs/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ] + } + } } - }, - "id": "ListSinksResponse", - "description": "Result returned from ListSinks.", + } + }, + "billingAccounts": { + "resources": { + "logs": { + "methods": { + "list": { + "flatPath": "v2beta1/billingAccounts/{billingAccountsId}/logs", + "path": "v2beta1/{+parent}/logs", + "id": "logging.billingAccounts.logs.list", + "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", + "httpMethod": "GET", + "response": { + "$ref": "ListLogsResponse" + }, + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+$", + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/logging.admin", + "https://www.googleapis.com/auth/logging.read" + ] + }, + "delete": { + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "logName" + ], + "parameters": { + "logName": { + "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string", + "required": true, + "pattern": "^billingAccounts/[^/]+/logs/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/logging.admin" + ], + "flatPath": "v2beta1/billingAccounts/{billingAccountsId}/logs/{logsId}", + "path": "v2beta1/{+logName}", + "id": "logging.billingAccounts.logs.delete", + "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted." + } + } + } + } + } + }, + "parameters": { + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "type": "string", + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + } + }, + "version": "v2beta1", + "baseUrl": "https://logging.googleapis.com/", + "servicePath": "", + "description": "Writes log entries and manages your Stackdriver Logging configuration.", + "kind": "discovery#restDescription", + "basePath": "", + "revision": "20170828", + "documentationLink": "https://cloud.google.com/logging/docs/", + "id": "logging:v2beta1", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "Empty": { + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", "type": "object" }, - "LabelDescriptor": { - "description": "A description of a label.", - "type": "object", - "properties": { - "key": { - "description": "The label key.", - "type": "string" - }, - "description": { - "description": "A human-readable description for the label.", - "type": "string" - }, - "valueType": { - "description": "The type of data that can be assigned to the label.", - "type": "string", - "enumDescriptions": [ - "A variable-length string. This is the default.", - "Boolean; true or false.", - "A 64-bit signed integer." - ], - "enum": [ - "STRING", - "BOOL", - "INT64" - ] - } - }, - "id": "LabelDescriptor" - }, - "MonitoredResourceDescriptor": { - "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.", - "type": "object", - "properties": { - "labels": { - "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".", - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array" - }, - "name": { - "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", - "type": "string" - }, - "description": { - "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.", - "type": "string" - }, - "displayName": { - "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".", - "type": "string" - }, - "type": { - "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.", - "type": "string" - } - }, - "id": "MonitoredResourceDescriptor" - }, - "LogEntrySourceLocation": { - "type": "object", - "properties": { - "file": { - "description": "Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", - "type": "string" - }, - "function": { - "description": "Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", - "type": "string" - }, - "line": { - "format": "int64", - "description": "Optional. Line within the source file. 1-based; 0 indicates no line number available.", - "type": "string" - } - }, - "id": "LogEntrySourceLocation", - "description": "Additional information about the source code location that produced the log entry." - }, - "ListLogEntriesResponse": { - "description": "Result returned from ListLogEntries.", - "type": "object", - "properties": { - "entries": { - "description": "A list of log entries. If entries is empty, nextPageToken may still be returned, indicating that more entries may exist. See nextPageToken for more information.", - "items": { - "$ref": "LogEntry" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.", - "type": "string" - } - }, - "id": "ListLogEntriesResponse" - }, - "LogLine": { - "description": "Application log line emitted while processing a request.", - "type": "object", - "properties": { - "logMessage": { - "description": "App-provided log message.", - "type": "string" - }, - "severity": { - "enumDescriptions": [ - "(0) The log entry has no assigned severity level.", - "(100) Debug or trace information.", - "(200) Routine information, such as ongoing status or performance.", - "(300) Normal but significant events, such as start up, shut down, or a configuration change.", - "(400) Warning events might cause problems.", - "(500) Error events are likely to cause problems.", - "(600) Critical events cause more severe problems or outages.", - "(700) A person must take an action immediately.", - "(800) One or more systems are unusable." - ], - "enum": [ - "DEFAULT", - "DEBUG", - "INFO", - "NOTICE", - "WARNING", - "ERROR", - "CRITICAL", - "ALERT", - "EMERGENCY" - ], - "description": "Severity of this log entry.", - "type": "string" - }, - "sourceLocation": { - "$ref": "SourceLocation", - "description": "Where in the source code this log message was written." - }, - "time": { - "format": "google-datetime", - "description": "Approximate time when this log entry was made.", - "type": "string" - } - }, - "id": "LogLine" - }, - "ListLogMetricsResponse": { - "description": "Result returned from ListLogMetrics.", - "type": "object", - "properties": { - "metrics": { - "items": { - "$ref": "LogMetric" - }, - "type": "array", - "description": "A list of logs-based metrics." - }, - "nextPageToken": { - "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", - "type": "string" - } - }, - "id": "ListLogMetricsResponse" - }, - "LogEntry": { - "description": "An individual entry in a log.", - "type": "object", - "properties": { - "timestamp": { - "format": "google-datetime", - "description": "Optional. The time the event described by the log entry occurred. If omitted in a new log entry, Stackdriver Logging will insert the time the log entry is received. Stackdriver Logging might reject log entries whose time stamps are more than a couple of hours in the future. Log entries with time stamps in the past are accepted.", - "type": "string" - }, - "receiveTimestamp": { - "format": "google-datetime", - "description": "Output only. The time the log entry was received by Stackdriver Logging.", - "type": "string" - }, - "logName": { - "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.", - "type": "string" - }, - "resource": { - "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error.", - "$ref": "MonitoredResource" - }, - "httpRequest": { - "$ref": "HttpRequest", - "description": "Optional. Information about the HTTP request associated with this log entry, if applicable." - }, - "jsonPayload": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The log entry payload, represented as a structure that is expressed as a JSON object." - }, - "operation": { - "$ref": "LogEntryOperation", - "description": "Optional. Information about an operation associated with the log entry, if applicable." - }, - "insertId": { - "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging will insert its own unique identifier. The insert_id is used to order log entries that have the same timestamp value.", - "type": "string" - }, - "textPayload": { - "description": "The log entry payload, represented as a Unicode string (UTF-8).", - "type": "string" - }, - "protoPayload": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.", - "type": "object" - }, - "trace": { - "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824", - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.", - "type": "object" - }, - "severity": { - "enum": [ - "DEFAULT", - "DEBUG", - "INFO", - "NOTICE", - "WARNING", - "ERROR", - "CRITICAL", - "ALERT", - "EMERGENCY" - ], - "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.", - "type": "string", - "enumDescriptions": [ - "(0) The log entry has no assigned severity level.", - "(100) Debug or trace information.", - "(200) Routine information, such as ongoing status or performance.", - "(300) Normal but significant events, such as start up, shut down, or a configuration change.", - "(400) Warning events might cause problems.", - "(500) Error events are likely to cause problems.", - "(600) Critical events cause more severe problems or outages.", - "(700) A person must take an action immediately.", - "(800) One or more systems are unusable." - ] - }, - "sourceLocation": { - "$ref": "LogEntrySourceLocation", - "description": "Optional. Source code location information associated with the log entry, if any." - } - }, - "id": "LogEntry" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", - "type": "object", - "properties": {}, - "id": "Empty" - }, "SourceLocation": { - "description": "Specifies a location in a source code file.", - "type": "object", "properties": { - "file": { - "description": "Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", - "type": "string" - }, "functionName": { "description": "Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information is used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", "type": "string" }, "line": { + "type": "string", "format": "int64", - "description": "Line within the source file.", + "description": "Line within the source file." + }, + "file": { + "description": "Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", "type": "string" } }, - "id": "SourceLocation" + "id": "SourceLocation", + "description": "Specifies a location in a source code file.", + "type": "object" }, "ListLogEntriesRequest": { + "id": "ListLogEntriesRequest", "description": "The parameters to ListLogEntries.", "type": "object", "properties": { + "resourceNames": { + "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.", + "items": { + "type": "string" + }, + "type": "array" + }, "projectIds": { "description": "Deprecated. Use resource_names instead. One or more project identifiers or project numbers from which to retrieve log entries. Example: \"my-project-1A\". If present, these project identifiers are converted to resource name format and added to the list of resources in resource_names.", "items": { @@ -614,27 +782,356 @@ "type": "integer" }, "orderBy": { - "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values.", - "type": "string" - }, - "resourceNames": { - "description": "Required. Names of one or more parent resources from which to retrieve log entries:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nProjects listed in the project_ids field are added to this list.", + "type": "string", + "description": "Optional. How the results should be sorted. Presently, the only permitted values are \"timestamp asc\" (default) and \"timestamp desc\". The first option returns entries in order of increasing values of LogEntry.timestamp (oldest first), and the second option returns entries in order of decreasing timestamps (newest first). Entries with equal timestamps are returned in order of their insert_id values." + } + } + }, + "Explicit": { + "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): boundsi Lower bound (1 \u003c= i \u003c N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.", + "type": "object", + "properties": { + "bounds": { + "description": "The values must be monotonically increasing.", "items": { - "type": "string" + "format": "double", + "type": "number" }, "type": "array" } }, - "id": "ListLogEntriesRequest" + "id": "Explicit" }, - "RequestLog": { + "SourceReference": { "type": "object", "properties": { - "megaCycles": { - "format": "int64", - "description": "Number of CPU megacycles used to process request.", + "repository": { + "description": "Optional. A URI string identifying the repository. Example: \"https://github.com/GoogleCloudPlatform/kubernetes.git\"", "type": "string" }, + "revisionId": { + "description": "The canonical and persistent identifier of the deployed revision. Example (git): \"0035781c50ec7aa23385dc841529ce8a4b70db1b\"", + "type": "string" + } + }, + "id": "SourceReference", + "description": "A reference to a particular snapshot of the source tree used to build and deploy an application." + }, + "WriteLogEntriesResponse": { + "description": "Result returned from WriteLogEntries. empty", + "type": "object", + "properties": {}, + "id": "WriteLogEntriesResponse" + }, + "Exponential": { + "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1)).", + "type": "object", + "properties": { + "growthFactor": { + "format": "double", + "description": "Must be greater than 1.", + "type": "number" + }, + "scale": { + "format": "double", + "description": "Must be greater than 0.", + "type": "number" + }, + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + } + }, + "id": "Exponential" + }, + "WriteLogEntriesRequest": { + "description": "The parameters to WriteLogEntries.", + "type": "object", + "properties": { + "partialSuccess": { + "type": "boolean", + "description": "Optional. Whether valid entries should be written even if some other entries fail due to INVALID_ARGUMENT or PERMISSION_DENIED errors. If any entry is not written, then the response status is the error associated with one of the failed entries and the response includes error details keyed by the entries' zero-based index in the entries.write method." + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Default labels that are added to the labels field of all log entries in entries. If a log entry already has a label with the same key as a label in this parameter, then the log entry's label is not changed. See LogEntry.", + "type": "object" + }, + "resource": { + "description": "Optional. A default monitored resource object that is assigned to all log entries in entries that do not specify a value for resource. Example:\n{ \"type\": \"gce_instance\",\n \"labels\": {\n \"zone\": \"us-central1-a\", \"instance_id\": \"00000000000000000000\" }}\nSee LogEntry.", + "$ref": "MonitoredResource" + }, + "entries": { + "description": "Required. The log entries to send to Stackdriver Logging. The order of log entries in this list does not matter. Values supplied in this method's log_name, resource, and labels fields are copied into those log entries in this list that do not include values for their corresponding fields. For more information, see the LogEntry type.If the timestamp or insert_id fields are missing in log entries, then this method supplies the current time or a unique identifier, respectively. The supplied values are chosen so that, among the log entries that did not supply their own values, the entries earlier in the list will sort before the entries later in the list. See entries.list.Log entries with timestamps that are more than the logs retention period in the past or more than 24 hours in the future might be discarded. Discarding does not return an error.To improve throughput and to avoid exceeding the quota limit for calls to entries.write, you should try to include several log entries in this list, rather than calling this method for each individual log entry.", + "items": { + "$ref": "LogEntry" + }, + "type": "array" + }, + "logName": { + "description": "Optional. A default log resource name that is assigned to all log entries in entries that do not specify a value for log_name:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\" or \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", + "type": "string" + } + }, + "id": "WriteLogEntriesRequest" + }, + "LabelDescriptor": { + "description": "A description of a label.", + "type": "object", + "properties": { + "key": { + "description": "The label key.", + "type": "string" + }, + "description": { + "description": "A human-readable description for the label.", + "type": "string" + }, + "valueType": { + "enumDescriptions": [ + "A variable-length string. This is the default.", + "Boolean; true or false.", + "A 64-bit signed integer." + ], + "enum": [ + "STRING", + "BOOL", + "INT64" + ], + "description": "The type of data that can be assigned to the label.", + "type": "string" + } + }, + "id": "LabelDescriptor" + }, + "BucketOptions": { + "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i \u003e 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.", + "type": "object", + "properties": { + "exponentialBuckets": { + "$ref": "Exponential", + "description": "The exponential buckets." + }, + "explicitBuckets": { + "$ref": "Explicit", + "description": "The explicit buckets." + }, + "linearBuckets": { + "description": "The linear bucket.", + "$ref": "Linear" + } + }, + "id": "BucketOptions" + }, + "ListLogMetricsResponse": { + "description": "Result returned from ListLogMetrics.", + "type": "object", + "properties": { + "metrics": { + "description": "A list of logs-based metrics.", + "items": { + "$ref": "LogMetric" + }, + "type": "array" + }, + "nextPageToken": { + "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", + "type": "string" + } + }, + "id": "ListLogMetricsResponse" + }, + "MetricDescriptor": { + "id": "MetricDescriptor", + "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.", + "type": "object", + "properties": { + "name": { + "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n", + "type": "string" + }, + "type": { + "type": "string", + "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n" + }, + "valueType": { + "enumDescriptions": [ + "Do not use this default value.", + "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", + "The value is a signed 64-bit integer.", + "The value is a double precision floating point number.", + "The value is a text string. This value type can be used only if the metric kind is GAUGE.", + "The value is a Distribution.", + "The value is money." + ], + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "BOOL", + "INT64", + "DOUBLE", + "STRING", + "DISTRIBUTION", + "MONEY" + ], + "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.", + "type": "string" + }, + "metricKind": { + "enum": [ + "METRIC_KIND_UNSPECIFIED", + "GAUGE", + "DELTA", + "CUMULATIVE" + ], + "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.", + "type": "string", + "enumDescriptions": [ + "Do not use this default value.", + "An instantaneous measurement of a value.", + "The change in a value during a time interval.", + "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points." + ] + }, + "description": { + "description": "A detailed description of the metric, which can be used in documentation.", + "type": "string" + }, + "displayName": { + "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".", + "type": "string" + }, + "unit": { + "type": "string", + "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is equivalent to 1 if it is used alone. For examples, {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not containing '{' or '}'." + }, + "labels": { + "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.", + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array" + } + } + }, + "LogEntry": { + "type": "object", + "properties": { + "timestamp": { + "format": "google-datetime", + "description": "Optional. The time the event described by the log entry occurred. This time is used to compute the log entry's age and to enforce the logs retention period. If this field is omitted in a new log entry, then Stackdriver Logging assigns it the current time.Incoming log entries should have timestamps that are no more than the logs retention period in the past, and no more than 24 hours in the future. See the entries.write API method for more information.", + "type": "string" + }, + "receiveTimestamp": { + "format": "google-datetime", + "description": "Output only. The time the log entry was received by Stackdriver Logging.", + "type": "string" + }, + "logName": { + "description": "Required. The resource name of the log to which this log entry belongs:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded within log_name. Example: \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". [LOG_ID] must be less than 512 characters long and can only include the following characters: upper and lower case alphanumeric characters, forward-slash, underscore, hyphen, and period.For backward compatibility, if log_name begins with a forward-slash, such as /projects/..., then the log entry is ingested as usual but the forward-slash is removed. Listing the log entry will not show the leading slash and filtering for a log name with a leading slash will never return any results.", + "type": "string" + }, + "resource": { + "$ref": "MonitoredResource", + "description": "Required. The monitored resource associated with this log entry. Example: a log entry that reports a database error would be associated with the monitored resource designating the particular database that reported the error." + }, + "httpRequest": { + "$ref": "HttpRequest", + "description": "Optional. Information about the HTTP request associated with this log entry, if applicable." + }, + "jsonPayload": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The log entry payload, represented as a structure that is expressed as a JSON object.", + "type": "object" + }, + "insertId": { + "description": "Optional. A unique identifier for the log entry. If you provide a value, then Stackdriver Logging considers other log entries in the same project, with the same timestamp, and with the same insert_id to be duplicates which can be removed. If omitted in new log entries, then Stackdriver Logging assigns its own unique identifier. The insert_id is also used to order log entries that have the same timestamp value.", + "type": "string" + }, + "operation": { + "description": "Optional. Information about an operation associated with the log entry, if applicable.", + "$ref": "LogEntryOperation" + }, + "textPayload": { + "description": "The log entry payload, represented as a Unicode string (UTF-8).", + "type": "string" + }, + "protoPayload": { + "description": "The log entry payload, represented as a protocol buffer. Some Google Cloud Platform services use this field for their log entry payloads.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "trace": { + "description": "Optional. Resource name of the trace associated with the log entry, if any. If it contains a relative resource name, the name is assumed to be relative to //tracing.googleapis.com. Example: projects/my-projectid/traces/06796866738c859f2f19b7cfb3214824", + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. A set of user-defined (key, value) data that provides additional information about the log entry.", + "type": "object" + }, + "severity": { + "enumDescriptions": [ + "(0) The log entry has no assigned severity level.", + "(100) Debug or trace information.", + "(200) Routine information, such as ongoing status or performance.", + "(300) Normal but significant events, such as start up, shut down, or a configuration change.", + "(400) Warning events might cause problems.", + "(500) Error events are likely to cause problems.", + "(600) Critical events cause more severe problems or outages.", + "(700) A person must take an action immediately.", + "(800) One or more systems are unusable." + ], + "enum": [ + "DEFAULT", + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERROR", + "CRITICAL", + "ALERT", + "EMERGENCY" + ], + "description": "Optional. The severity of the log entry. The default value is LogSeverity.DEFAULT.", + "type": "string" + }, + "sourceLocation": { + "description": "Optional. Source code location information associated with the log entry, if any.", + "$ref": "LogEntrySourceLocation" + } + }, + "id": "LogEntry", + "description": "An individual entry in a log." + }, + "RequestLog": { + "description": "Complete log information about a single HTTP request to an App Engine application.", + "type": "object", + "properties": { + "cost": { + "format": "double", + "description": "An indication of the relative cost of serving this request.", + "type": "number" + }, + "instanceId": { + "description": "An identifier for the instance that handled the request.", + "type": "string" + }, + "megaCycles": { + "type": "string", + "format": "int64", + "description": "Number of CPU megacycles used to process request." + }, "first": { "description": "Whether this is the first RequestLog entry for this request. If an active request has several RequestLog entries written to Stackdriver Logging, then this field will be set for one of them.", "type": "boolean" @@ -648,17 +1145,17 @@ "description": "Module of the application that handled this request." }, "endTime": { - "type": "string", "format": "google-datetime", - "description": "Time when the request finished." + "description": "Time when the request finished.", + "type": "string" }, "userAgent": { "description": "User agent that made the request.", "type": "string" }, "wasLoadingRequest": { - "type": "boolean", - "description": "Whether this was a loading request for the instance." + "description": "Whether this was a loading request for the instance.", + "type": "boolean" }, "sourceReference": { "description": "Source code for the application that handled this request. There can be more than one source reference per deployed application if source code is distributed among multiple repositories.", @@ -668,9 +1165,9 @@ "type": "array" }, "responseSize": { + "type": "string", "format": "int64", - "description": "Size in bytes sent back to client by request.", - "type": "string" + "description": "Size in bytes sent back to client by request." }, "traceId": { "description": "Stackdriver Trace identifier for this request.", @@ -688,8 +1185,8 @@ "type": "string" }, "referrer": { - "description": "Referrer URL of request.", - "type": "string" + "type": "string", + "description": "Referrer URL of request." }, "requestId": { "description": "Globally unique identifier for a request, which is based on the request start time. Request IDs for requests which started later will compare greater as strings than those for requests which started earlier.", @@ -699,15 +1196,15 @@ "description": "The logged-in user who made the request.Most likely, this is the part of the user's email before the @ sign. The field value is the same for different requests from the same user, but different users can have similar names. This information is also available to the application via the App Engine Users API.This field will be populated starting with App Engine 1.9.21.", "type": "string" }, + "resource": { + "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included.", + "type": "string" + }, "pendingTime": { "format": "google-duration", "description": "Time this request spent in the pending request queue.", "type": "string" }, - "resource": { - "type": "string", - "description": "Contains the path and query portion of the URL that was requested. For example, if the URL was \"http://example.com/app?name=val\", the resource would be \"/app?name=val\". The fragment identifier, which is identified by the # character, is not included." - }, "status": { "format": "int32", "description": "HTTP response status code. Example: 200, 404.", @@ -739,9 +1236,9 @@ "type": "string" }, "startTime": { + "type": "string", "format": "google-datetime", - "description": "Time when the request started.", - "type": "string" + "description": "Time when the request started." }, "latency": { "format": "google-duration", @@ -749,47 +1246,438 @@ "type": "string" }, "ip": { - "type": "string", - "description": "Origin IP address." + "description": "Origin IP address.", + "type": "string" }, "appId": { "description": "Application that handled this request.", "type": "string" }, "appEngineRelease": { - "description": "App Engine release version.", - "type": "string" + "type": "string", + "description": "App Engine release version." }, "method": { "description": "Request method. Example: \"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\".", "type": "string" + } + }, + "id": "RequestLog" + }, + "ListMonitoredResourceDescriptorsResponse": { + "properties": { + "resourceDescriptors": { + "description": "A list of resource descriptors.", + "items": { + "$ref": "MonitoredResourceDescriptor" + }, + "type": "array" }, - "cost": { - "format": "double", - "description": "An indication of the relative cost of serving this request.", - "type": "number" - }, - "instanceId": { - "description": "An identifier for the instance that handled the request.", + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", "type": "string" } }, - "id": "RequestLog", - "description": "Complete log information about a single HTTP request to an App Engine application." + "id": "ListMonitoredResourceDescriptorsResponse", + "description": "Result returned from ListMonitoredResourceDescriptors.", + "type": "object" + }, + "LogMetric": { + "type": "object", + "properties": { + "valueExtractor": { + "description": "Optional. A value_extractor is required when using a distribution logs-based metric to extract the values to record from a log entry. Two functions are supported for value extraction: EXTRACT(field) or REGEXP_EXTRACT(field, regex). The argument are: 1. field: The name of the log entry field from which the value is to be extracted. 2. regex: A regular expression using the Google RE2 syntax (https://github.com/google/re2/wiki/Syntax) with a single capture group to extract data from the specified log entry field. The value of the field is converted to a string before applying the regex. It is an error to specify a regex that does not include exactly one capture group.The result of the extraction must be convertible to a double type, as the distribution always records double values. If either the extraction or the conversion to double fails, then those values are not recorded in the distribution.Example: REGEXP_EXTRACT(jsonPayload.request, \".*quantity=(\\d+).*\")", + "type": "string" + }, + "bucketOptions": { + "$ref": "BucketOptions", + "description": "Optional. The bucket_options are required when the logs-based metric is using a DISTRIBUTION value type and it describes the bucket boundaries used to create a histogram of the extracted values." + }, + "name": { + "description": "Required. The client-assigned metric identifier. Examples: \"error_count\", \"nginx/requests\".Metric identifiers are limited to 100 characters and can include only the following characters: A-Z, a-z, 0-9, and the special characters _-.,+!*',()%/. The forward-slash character (/) denotes a hierarchy of name pieces, and it cannot be the first character of the name.The metric identifier in this field must not be URL-encoded (https://en.wikipedia.org/wiki/Percent-encoding). However, when the metric identifier appears as the [METRIC_ID] part of a metric_name API parameter, then the metric identifier must be URL-encoded. Example: \"projects/my-project/metrics/nginx%2Frequests\".", + "type": "string" + }, + "labelExtractors": { + "description": "Optional. A map from a label key string to an extractor expression which is used to extract data from a log entry field and assign as the label value. Each label key specified in the LabelDescriptor must have an associated extractor expression in this map. The syntax of the extractor expression is the same as for the value_extractor field.The extracted value is converted to the type defined in the label descriptor. If the either the extraction or the type conversion fails, the label will have a default value. The default value for a string label is an empty string, for an integer label its 0, and for a boolean label its false.Note that there are upper bounds on the maximum number of labels and the number of active time series that are allowed in a project.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "metricDescriptor": { + "$ref": "MetricDescriptor", + "description": "Optional. The metric descriptor associated with the logs-based metric. If unspecified, it uses a default metric descriptor with a DELTA metric kind, INT64 value type, with no labels and a unit of \"1\". Such a metric counts the number of log entries matching the filter expression.The name, type, and description fields in the metric_descriptor are output only, and is constructed using the name and description field in the LogMetric.To create a logs-based metric that records a distribution of log values, a DELTA metric kind with a DISTRIBUTION value type must be used along with a value_extractor expression in the LogMetric.Each label in the metric descriptor must have a matching label name as the key and an extractor expression as the value in the label_extractors map.The metric_kind and value_type fields in the metric_descriptor cannot be updated once initially configured. New labels can be added in the metric_descriptor, but existing labels cannot be modified except for their description." + }, + "version": { + "enum": [ + "V2", + "V1" + ], + "description": "Deprecated. The API version that created or updated this metric. The v2 format is used by default and cannot be changed.", + "type": "string", + "enumDescriptions": [ + "Stackdriver Logging API v2.", + "Stackdriver Logging API v1." + ] + }, + "filter": { + "type": "string", + "description": "Required. An advanced logs filter which is used to match log entries. Example:\n\"resource.type=gae_app AND severity\u003e=ERROR\"\nThe maximum length of the filter is 20000 characters." + }, + "description": { + "description": "Optional. A description of this metric, which is used in documentation.", + "type": "string" + } + }, + "id": "LogMetric", + "description": "Describes a logs-based metric. The value of the metric is the number of log entries that match a logs filter in a given time interval.Logs-based metric can also be used to extract values from logs and create a a distribution of the values. The distribution records the statistics of the extracted values along with an optional histogram of the values as specified by the bucket options." + }, + "LogEntryOperation": { + "description": "Additional information about a potentially long-running operation with which a log entry is associated.", + "type": "object", + "properties": { + "last": { + "description": "Optional. Set this to True if this is the last log entry in the operation.", + "type": "boolean" + }, + "id": { + "description": "Optional. An arbitrary operation identifier. Log entries with the same identifier are assumed to be part of the same operation.", + "type": "string" + }, + "first": { + "type": "boolean", + "description": "Optional. Set this to True if this is the first log entry in the operation." + }, + "producer": { + "description": "Optional. An arbitrary producer identifier. The combination of id and producer must be globally unique. Examples for producer: \"MyDivision.MyBigCompany.com\", \"github.com/MyProject/MyApplication\".", + "type": "string" + } + }, + "id": "LogEntryOperation" + }, + "MonitoredResource": { + "type": "object", + "properties": { + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\".", + "type": "object" + }, + "type": { + "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", + "type": "string" + } + }, + "id": "MonitoredResource", + "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n" + }, + "LogSink": { + "description": "Describes a sink used to export log entries to one of the following destinations in any project: a Cloud Storage bucket, a BigQuery dataset, or a Cloud Pub/Sub topic. A logs filter controls which log entries are exported. The sink must be created within a project, organization, billing account, or folder.", + "type": "object", + "properties": { + "includeChildren": { + "description": "Optional. This field applies only to sinks owned by organizations and folders. If the field is false, the default, only the logs owned by the sink's parent resource are available for export. If the field is true, then logs from all the projects, folders, and billing accounts contained in the sink's parent resource are also available for export. Whether a particular log entry from the children is exported depends on the sink's filter expression. For example, if this field is true, then the filter resource.type=gce_instance would export all Compute Engine VM instance log entries from all projects in the sink's parent. To only export entries from certain child projects, filter on the project part of the log name:\nlogName:(\"projects/test-project1/\" OR \"projects/test-project2/\") AND\nresource.type=gce_instance\n", + "type": "boolean" + }, + "filter": { + "description": "Optional. An advanced logs filter. The only exported log entries are those that are in the resource owning the sink and that match the filter. The filter must use the log entry format specified by the output_version_format parameter. For example, in the v2 format:\nlogName=\"projects/[PROJECT_ID]/logs/[LOG_ID]\" AND severity\u003e=ERROR\n", + "type": "string" + }, + "destination": { + "type": "string", + "description": "Required. The export destination:\n\"storage.googleapis.com/[GCS_BUCKET]\"\n\"bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET]\"\n\"pubsub.googleapis.com/projects/[PROJECT_ID]/topics/[TOPIC_ID]\"\nThe sink's writer_identity, set when the sink is created, must have permission to write to the destination or else the log entries are not exported. For more information, see Exporting Logs With Sinks." + }, + "endTime": { + "format": "google-datetime", + "description": "Optional. The time at which this sink will stop exporting log entries. Log entries are exported only if their timestamp is earlier than the end time. If this field is not supplied, there is no end time. If both a start time and an end time are provided, then the end time must be later than the start time.", + "type": "string" + }, + "writerIdentity": { + "description": "Output only. An IAM identity—a service account or group—under which Stackdriver Logging writes the exported log entries to the sink's destination. This field is set by sinks.create and sinks.update, based on the setting of unique_writer_identity in those methods.Until you grant this identity write-access to the destination, log entry exports from this sink will fail. For more information, see Granting access for a resource. Consult the destination service's documentation to determine the appropriate IAM roles to assign to the identity.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Optional. The time at which this sink will begin exporting log entries. Log entries are exported only if their timestamp is not earlier than the start time. The default value of this field is the time the sink is created or updated.", + "type": "string" + }, + "outputVersionFormat": { + "enumDescriptions": [ + "An unspecified format version that will default to V2.", + "LogEntry version 2 format.", + "LogEntry version 1 format." + ], + "enum": [ + "VERSION_FORMAT_UNSPECIFIED", + "V2", + "V1" + ], + "description": "Deprecated. The log entry format to use for this sink's exported log entries. The v2 format is used by default and cannot be changed.", + "type": "string" + }, + "name": { + "description": "Required. The client-assigned sink identifier, unique within the project. Example: \"my-syslog-errors-to-pubsub\". Sink identifiers are limited to 100 characters and can include only the following characters: upper and lower-case alphanumeric characters, underscores, hyphens, and periods.", + "type": "string" + } + }, + "id": "LogSink" + }, + "ListLogsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.", + "type": "string" + }, + "logNames": { + "description": "A list of log names. For example, \"projects/my-project/syslog\" or \"organizations/123/cloudresourcemanager.googleapis.com%2Factivity\".", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ListLogsResponse", + "description": "Result returned from ListLogs." + }, + "HttpRequest": { + "type": "object", + "properties": { + "latency": { + "format": "google-duration", + "description": "The request processing latency on the server, from the time the request was received until the response was sent.", + "type": "string" + }, + "userAgent": { + "description": "The user agent sent by the client. Example: \"Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; Q312461; .NET CLR 1.0.3705)\".", + "type": "string" + }, + "cacheFillBytes": { + "format": "int64", + "description": "The number of HTTP response bytes inserted into cache. Set only when a cache fill was attempted.", + "type": "string" + }, + "requestMethod": { + "description": "The request method. Examples: \"GET\", \"HEAD\", \"PUT\", \"POST\".", + "type": "string" + }, + "requestSize": { + "format": "int64", + "description": "The size of the HTTP request message in bytes, including the request headers and the request body.", + "type": "string" + }, + "protocol": { + "description": "Protocol used for the request. Examples: \"HTTP/1.1\", \"HTTP/2\", \"websocket\"", + "type": "string" + }, + "responseSize": { + "format": "int64", + "description": "The size of the HTTP response message sent back to the client, in bytes, including the response headers and the response body.", + "type": "string" + }, + "requestUrl": { + "description": "The scheme (http, https), the host name, the path and the query portion of the URL that was requested. Example: \"http://example.com/some/info?color=red\".", + "type": "string" + }, + "serverIp": { + "description": "The IP address (IPv4 or IPv6) of the origin server that the request was sent to.", + "type": "string" + }, + "remoteIp": { + "description": "The IP address (IPv4 or IPv6) of the client that issued the HTTP request. Examples: \"192.168.1.1\", \"FE80::0202:B3FF:FE1E:8329\".", + "type": "string" + }, + "cacheLookup": { + "description": "Whether or not a cache lookup was attempted.", + "type": "boolean" + }, + "cacheHit": { + "description": "Whether or not an entity was served from cache (with or without validation).", + "type": "boolean" + }, + "cacheValidatedWithOriginServer": { + "description": "Whether or not the response was validated with the origin server before being served from cache. This field is only meaningful if cache_hit is True.", + "type": "boolean" + }, + "status": { + "format": "int32", + "description": "The response code indicating the status of response. Examples: 200, 404.", + "type": "integer" + }, + "referer": { + "description": "The referer URL of the request, as defined in HTTP/1.1 Header Field Definitions (http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html).", + "type": "string" + } + }, + "id": "HttpRequest", + "description": "A common proto for logging HTTP requests. Only contains semantics defined by the HTTP specification. Product-specific logging information MUST be defined in a separate message." + }, + "ListSinksResponse": { + "description": "Result returned from ListSinks.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If there might be more results than appear in this response, then nextPageToken is included. To get the next set of results, call the same method again using the value of nextPageToken as pageToken.", + "type": "string" + }, + "sinks": { + "description": "A list of sinks.", + "items": { + "$ref": "LogSink" + }, + "type": "array" + } + }, + "id": "ListSinksResponse" + }, + "MonitoredResourceDescriptor": { + "properties": { + "name": { + "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", + "type": "string" + }, + "description": { + "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.", + "type": "string" + }, + "displayName": { + "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".", + "type": "string" + }, + "type": { + "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.", + "type": "string" + }, + "labels": { + "description": "Required. A set of labels used to describe instances of this monitored resource type. For example, an individual Google Cloud SQL database is identified by values for the labels \"database_id\" and \"zone\".", + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array" + } + }, + "id": "MonitoredResourceDescriptor", + "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.", + "type": "object" + }, + "LogEntrySourceLocation": { + "properties": { + "function": { + "description": "Optional. Human-readable name of the function or method being invoked, with optional context such as the class or package name. This information may be used in contexts such as the logs viewer, where a file and line number are less meaningful. The format can vary by language. For example: qual.if.ied.Class.method (Java), dir/package.func (Go), function (Python).", + "type": "string" + }, + "line": { + "type": "string", + "format": "int64", + "description": "Optional. Line within the source file. 1-based; 0 indicates no line number available." + }, + "file": { + "description": "Optional. Source file name. Depending on the runtime environment, this might be a simple name or a fully-qualified name.", + "type": "string" + } + }, + "id": "LogEntrySourceLocation", + "description": "Additional information about the source code location that produced the log entry.", + "type": "object" + }, + "ListLogEntriesResponse": { + "description": "Result returned from ListLogEntries.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then nextPageToken is included. To get the next set of results, call this method again using the value of nextPageToken as pageToken.If a value for next_page_token appears and the entries field is empty, it means that the search found no log entries so far but it did not have time to search all the possible log entries. Retry the method with this value for page_token to continue the search. Alternatively, consider speeding up the search by changing your filter to specify a single log name or resource type, or to narrow the time range of the search.", + "type": "string" + }, + "entries": { + "description": "A list of log entries. If entries is empty, nextPageToken may still be returned, indicating that more entries may exist. See nextPageToken for more information.", + "items": { + "$ref": "LogEntry" + }, + "type": "array" + } + }, + "id": "ListLogEntriesResponse" + }, + "LogLine": { + "properties": { + "sourceLocation": { + "$ref": "SourceLocation", + "description": "Where in the source code this log message was written." + }, + "time": { + "format": "google-datetime", + "description": "Approximate time when this log entry was made.", + "type": "string" + }, + "logMessage": { + "description": "App-provided log message.", + "type": "string" + }, + "severity": { + "type": "string", + "enumDescriptions": [ + "(0) The log entry has no assigned severity level.", + "(100) Debug or trace information.", + "(200) Routine information, such as ongoing status or performance.", + "(300) Normal but significant events, such as start up, shut down, or a configuration change.", + "(400) Warning events might cause problems.", + "(500) Error events are likely to cause problems.", + "(600) Critical events cause more severe problems or outages.", + "(700) A person must take an action immediately.", + "(800) One or more systems are unusable." + ], + "enum": [ + "DEFAULT", + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERROR", + "CRITICAL", + "ALERT", + "EMERGENCY" + ], + "description": "Severity of this log entry." + } + }, + "id": "LogLine", + "description": "Application log line emitted while processing a request.", + "type": "object" + }, + "Linear": { + "type": "object", + "properties": { + "width": { + "format": "double", + "description": "Must be greater than 0.", + "type": "number" + }, + "offset": { + "format": "double", + "description": "Lower bound of the first bucket.", + "type": "number" + }, + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + } + }, + "id": "Linear", + "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1))." } }, "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "canonicalName": "Logging", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/logging.write": { "description": "Submit log data for your projects" }, @@ -801,6 +1689,9 @@ }, "https://www.googleapis.com/auth/cloud-platform.read-only": { "description": "View your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" } } } @@ -809,727 +1700,5 @@ "ownerDomain": "google.com", "name": "logging", "batchPath": "batch", - "title": "Stackdriver Logging API", - "ownerName": "Google", - "resources": { - "projects": { - "resources": { - "sinks": { - "methods": { - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "sinkName" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "sinkName": { - "pattern": "^projects/[^/]+/sinks/[^/]+$", - "location": "path", - "description": "Required. The full resource name of the sink to delete, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true - } - }, - "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}", - "path": "v2beta1/{+sinkName}", - "id": "logging.projects.sinks.delete", - "description": "Deletes a sink. If the sink has a unique writer_identity, then that service account is also deleted." - }, - "get": { - "httpMethod": "GET", - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "parameters": { - "sinkName": { - "description": "Required. The resource name of the sink:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/sinks/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}", - "path": "v2beta1/{+sinkName}", - "id": "logging.projects.sinks.get", - "description": "Gets a sink." - }, - "list": { - "flatPath": "v2beta1/projects/{projectsId}/sinks", - "id": "logging.projects.sinks.list", - "path": "v2beta1/{+parent}/sinks", - "description": "Lists sinks.", - "response": { - "$ref": "ListSinksResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - }, - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The parent resource whose sinks are to be listed:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ] - }, - "update": { - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "sinkName" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "uniqueWriterIdentity": { - "location": "query", - "description": "Optional. See sinks.create for a description of this field. When updating a sink, the effect of this field on the value of writer_identity in the updated sink depends on both the old and new values of this field:\nIf the old and new values of this field are both false or both true, then there is no change to the sink's writer_identity.\nIf the old value is false and the new value is true, then writer_identity is changed to a unique service account.\nIt is an error if the old value is true and the new value is set to false or defaulted to false.", - "type": "boolean" - }, - "sinkName": { - "description": "Required. The full resource name of the sink to update, including the parent resource and the sink identifier:\n\"projects/[PROJECT_ID]/sinks/[SINK_ID]\"\n\"organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]\"\n\"folders/[FOLDER_ID]/sinks/[SINK_ID]\"\nExample: \"projects/my-project-id/sinks/my-sink-id\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/sinks/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2beta1/projects/{projectsId}/sinks/{sinksId}", - "id": "logging.projects.sinks.update", - "path": "v2beta1/{+sinkName}", - "request": { - "$ref": "LogSink" - }, - "description": "Updates a sink. This method replaces the following fields in the existing sink with values from the new sink: destination, filter, output_version_format, start_time, and end_time. The updated sink might also have a new writer_identity; see the unique_writer_identity field." - }, - "create": { - "description": "Creates a sink that exports specified log entries to a destination. The export of newly-ingested log entries begins immediately, unless the current time is outside the sink's start and end times or the sink's writer_identity is not permitted to write to the destination. A sink can export log entries only from the resource owning the sink.", - "request": { - "$ref": "LogSink" - }, - "response": { - "$ref": "LogSink" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "location": "path", - "description": "Required. The resource in which to create the sink:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\nExamples: \"projects/my-logging-project\", \"organizations/123456789\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - }, - "uniqueWriterIdentity": { - "description": "Optional. Determines the kind of IAM identity returned as writer_identity in the new sink. If this value is omitted or set to false, and if the sink's parent is a project, then the value returned as writer_identity is the same group or service account used by Stackdriver Logging before the addition of writer identities to this API. The sink's destination must be in the same project as the sink itself.If this field is set to true, or if the sink is owned by a non-project resource such as an organization, then the value of writer_identity will be a unique service account used only for exports from the new sink. For more information, see writer_identity in LogSink.", - "type": "boolean", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "flatPath": "v2beta1/projects/{projectsId}/sinks", - "id": "logging.projects.sinks.create", - "path": "v2beta1/{+parent}/sinks" - } - } - }, - "logs": { - "methods": { - "delete": { - "flatPath": "v2beta1/projects/{projectsId}/logs/{logsId}", - "path": "v2beta1/{+logName}", - "id": "logging.projects.logs.delete", - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "httpMethod": "DELETE", - "parameterOrder": [ - "logName" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "logName": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/logs/[^/]+$", - "location": "path", - "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry." - } - } - }, - "list": { - "flatPath": "v2beta1/projects/{projectsId}/logs", - "path": "v2beta1/{+parent}/logs", - "id": "logging.projects.logs.list", - "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListLogsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - } - } - } - } - }, - "metrics": { - "methods": { - "get": { - "id": "logging.projects.metrics.get", - "path": "v2beta1/{+metricName}", - "description": "Gets a logs-based metric.", - "response": { - "$ref": "LogMetric" - }, - "parameterOrder": [ - "metricName" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "metricName": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metrics/[^/]+$", - "location": "path", - "description": "The resource name of the desired metric:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n" - } - }, - "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}" - }, - "list": { - "description": "Lists logs-based metrics.", - "response": { - "$ref": "ListLogMetricsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The name of the project containing the metrics:\n\"projects/[PROJECT_ID]\"\n", - "type": "string", - "required": true - }, - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - } - }, - "flatPath": "v2beta1/projects/{projectsId}/metrics", - "id": "logging.projects.metrics.list", - "path": "v2beta1/{+parent}/metrics" - }, - "update": { - "response": { - "$ref": "LogMetric" - }, - "parameterOrder": [ - "metricName" - ], - "httpMethod": "PUT", - "parameters": { - "metricName": { - "description": "The resource name of the metric to update:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\nThe updated metric must be provided in the request and it's name field must be the same as [METRIC_ID] If the metric does not exist in [PROJECT_ID], then a new metric is created.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metrics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], - "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}", - "id": "logging.projects.metrics.update", - "path": "v2beta1/{+metricName}", - "description": "Creates or updates a logs-based metric.", - "request": { - "$ref": "LogMetric" - } - }, - "create": { - "description": "Creates a logs-based metric.", - "request": { - "$ref": "LogMetric" - }, - "response": { - "$ref": "LogMetric" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "description": "The resource name of the project in which to create the metric:\n\"projects/[PROJECT_ID]\"\nThe new metric must be provided in the request.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], - "flatPath": "v2beta1/projects/{projectsId}/metrics", - "id": "logging.projects.metrics.create", - "path": "v2beta1/{+parent}/metrics" - }, - "delete": { - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "metricName" - ], - "parameters": { - "metricName": { - "location": "path", - "description": "The resource name of the metric to delete:\n\"projects/[PROJECT_ID]/metrics/[METRIC_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metrics/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], - "flatPath": "v2beta1/projects/{projectsId}/metrics/{metricsId}", - "path": "v2beta1/{+metricName}", - "id": "logging.projects.metrics.delete", - "description": "Deletes a logs-based metric." - } - } - } - } - }, - "billingAccounts": { - "resources": { - "logs": { - "methods": { - "delete": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "logName": { - "location": "path", - "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+/logs/[^/]+$" - } - }, - "flatPath": "v2beta1/billingAccounts/{billingAccountsId}/logs/{logsId}", - "path": "v2beta1/{+logName}", - "id": "logging.billingAccounts.logs.delete", - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "logName" - ] - }, - "list": { - "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListLogsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n", - "type": "string", - "required": true, - "pattern": "^billingAccounts/[^/]+$", - "location": "path" - } - }, - "flatPath": "v2beta1/billingAccounts/{billingAccountsId}/logs", - "path": "v2beta1/{+parent}/logs", - "id": "logging.billingAccounts.logs.list" - } - } - } - } - }, - "monitoredResourceDescriptors": { - "methods": { - "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListMonitoredResourceDescriptorsResponse" - }, - "parameterOrder": [], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer" - } - }, - "flatPath": "v2beta1/monitoredResourceDescriptors", - "path": "v2beta1/monitoredResourceDescriptors", - "id": "logging.monitoredResourceDescriptors.list", - "description": "Lists the descriptors for monitored resource types used by Stackdriver Logging." - } - } - }, - "organizations": { - "resources": { - "logs": { - "methods": { - "delete": { - "flatPath": "v2beta1/organizations/{organizationsId}/logs/{logsId}", - "id": "logging.organizations.logs.delete", - "path": "v2beta1/{+logName}", - "description": "Deletes all the log entries in a log. The log reappears if it receives new entries. Log entries written shortly before the delete operation might not be deleted.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "logName" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin" - ], - "parameters": { - "logName": { - "description": "Required. The resource name of the log to delete:\n\"projects/[PROJECT_ID]/logs/[LOG_ID]\"\n\"organizations/[ORGANIZATION_ID]/logs/[LOG_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]/logs/[LOG_ID]\"\n\"folders/[FOLDER_ID]/logs/[LOG_ID]\"\n[LOG_ID] must be URL-encoded. For example, \"projects/my-project-id/logs/syslog\", \"organizations/1234567890/logs/cloudresourcemanager.googleapis.com%2Factivity\". For more information about log names, see LogEntry.", - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+/logs/[^/]+$", - "location": "path" - } - } - }, - "list": { - "description": "Lists the logs in projects, organizations, folders, or billing accounts. Only logs that have entries are listed.", - "response": { - "$ref": "ListLogsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "location": "query", - "description": "Optional. If present, then retrieve the next batch of results from the preceding call to this method. pageToken must be the value of nextPageToken from the previous response. The values of other method parameters should be identical to those in the previous call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The maximum number of results to return from this request. Non-positive values are ignored. The presence of nextPageToken in the response indicates that more results might be available.", - "type": "integer", - "location": "query" - }, - "parent": { - "type": "string", - "required": true, - "pattern": "^organizations/[^/]+$", - "location": "path", - "description": "Required. The resource name that owns the logs:\n\"projects/[PROJECT_ID]\"\n\"organizations/[ORGANIZATION_ID]\"\n\"billingAccounts/[BILLING_ACCOUNT_ID]\"\n\"folders/[FOLDER_ID]\"\n" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2beta1/organizations/{organizationsId}/logs", - "id": "logging.organizations.logs.list", - "path": "v2beta1/{+parent}/logs" - } - } - } - } - }, - "entries": { - "methods": { - "list": { - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.read" - ], - "flatPath": "v2beta1/entries:list", - "path": "v2beta1/entries:list", - "id": "logging.entries.list", - "description": "Lists log entries. Use this method to retrieve log entries from Stackdriver Logging. For ways to export log entries, see Exporting Logs.", - "request": { - "$ref": "ListLogEntriesRequest" - }, - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "ListLogEntriesResponse" - } - }, - "write": { - "id": "logging.entries.write", - "path": "v2beta1/entries:write", - "description": "Writes log entries to Stackdriver Logging.", - "request": { - "$ref": "WriteLogEntriesRequest" - }, - "response": { - "$ref": "WriteLogEntriesResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/logging.admin", - "https://www.googleapis.com/auth/logging.write" - ], - "flatPath": "v2beta1/entries:write" - } - } - } - }, - "parameters": { - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Returns response with indentations and line breaks." - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ] - }, - "alt": { - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "type": "string", - "location": "query", - "description": "OAuth access token." - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - } - }, - "version": "v2beta1", - "baseUrl": "https://logging.googleapis.com/", - "kind": "discovery#restDescription", - "description": "Writes log entries and manages your Stackdriver Logging configuration.", - "servicePath": "", - "basePath": "", - "revision": "20170821", - "documentationLink": "https://cloud.google.com/logging/docs/", - "id": "logging:v2beta1", - "discoveryVersion": "v1" + "title": "Stackdriver Logging API" } diff --git a/vendor/google.golang.org/api/manufacturers/v1/manufacturers-api.json b/vendor/google.golang.org/api/manufacturers/v1/manufacturers-api.json index be00651..499064d 100644 --- a/vendor/google.golang.org/api/manufacturers/v1/manufacturers-api.json +++ b/vendor/google.golang.org/api/manufacturers/v1/manufacturers-api.json @@ -1,5 +1,4 @@ { - "batchPath": "batch", "title": "Manufacturer Center API", "ownerName": "Google", "resources": { @@ -7,7 +6,41 @@ "resources": { "products": { "methods": { + "delete": { + "description": "Deletes the product from a Manufacturer Center account.", + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "parent", + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/manufacturercenter" + ], + "parameters": { + "parent": { + "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.", + "type": "string", + "required": true, + "pattern": "^accounts/[^/]+$", + "location": "path" + }, + "name": { + "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.", + "type": "string", + "required": true, + "pattern": "^[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/accounts/{accountsId}/products/{productsId}", + "path": "v1/{+parent}/products/{+name}", + "id": "manufacturers.accounts.products.delete" + }, "get": { + "httpMethod": "GET", "response": { "$ref": "Product" }, @@ -15,7 +48,6 @@ "parent", "name" ], - "httpMethod": "GET", "parameters": { "name": { "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.", @@ -36,14 +68,11 @@ "https://www.googleapis.com/auth/manufacturercenter" ], "flatPath": "v1/accounts/{accountsId}/products/{productsId}", - "id": "manufacturers.accounts.products.get", "path": "v1/{+parent}/products/{+name}", + "id": "manufacturers.accounts.products.get", "description": "Gets the product from a Manufacturer Center account, including product\nissues.\n\nA recently updated product takes around 15 minutes to process. Changes are\nonly visible after it has been processed. While some issues may be\navailable once the product has been processed, other issues may take days\nto appear." }, "list": { - "flatPath": "v1/accounts/{accountsId}/products", - "id": "manufacturers.accounts.products.list", - "path": "v1/{+parent}/products", "description": "Lists all the products in a Manufacturer Center account.", "response": { "$ref": "ListProductsResponse" @@ -52,29 +81,32 @@ "parent" ], "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/manufacturercenter" - ], "parameters": { "pageToken": { + "location": "query", "description": "The token returned by the previous request.", - "type": "string", - "location": "query" + "type": "string" }, "pageSize": { + "location": "query", "format": "int32", "description": "Maximum number of product statuses to return in the response, used for\npaging.", - "type": "integer", - "location": "query" + "type": "integer" }, "parent": { - "location": "path", "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.", "type": "string", "required": true, - "pattern": "^accounts/[^/]+$" + "pattern": "^accounts/[^/]+$", + "location": "path" } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/manufacturercenter" + ], + "flatPath": "v1/accounts/{accountsId}/products", + "id": "manufacturers.accounts.products.list", + "path": "v1/{+parent}/products" }, "update": { "httpMethod": "PUT", @@ -85,65 +117,32 @@ "response": { "$ref": "Product" }, - "parameters": { - "parent": { - "location": "path", - "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.", - "type": "string", - "required": true, - "pattern": "^accounts/[^/]+$" - }, - "name": { - "location": "path", - "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.", - "type": "string", - "required": true, - "pattern": "^[^/]+$" - } - }, "scopes": [ "https://www.googleapis.com/auth/manufacturercenter" ], + "parameters": { + "name": { + "pattern": "^[^/]+$", + "location": "path", + "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.", + "type": "string", + "required": true + }, + "parent": { + "pattern": "^accounts/[^/]+$", + "location": "path", + "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.", + "type": "string", + "required": true + } + }, "flatPath": "v1/accounts/{accountsId}/products/{productsId}", "path": "v1/{+parent}/products/{+name}", "id": "manufacturers.accounts.products.update", - "description": "Inserts or updates the product in a Manufacturer Center account.\n\nThe checks at upload time are minimal. All required attributes need to be\npresent for a product to be valid. Issues may show up later\nafter the API has accepted an update for a product and it is possible to\noverwrite an existing valid product with an invalid product. To detect\nthis, you should retrieve the product and check it for issues once the\nupdated version is available.\n\nInserted or updated products first need to be processed before they can be\nretrieved. Until then, new products will be unavailable, and retrieval\nof updated products will return the original state of the product.", "request": { "$ref": "Product" - } - }, - "delete": { - "flatPath": "v1/accounts/{accountsId}/products/{productsId}", - "id": "manufacturers.accounts.products.delete", - "path": "v1/{+parent}/products/{+name}", - "description": "Deletes the product from a Manufacturer Center account.", - "response": { - "$ref": "Empty" }, - "parameterOrder": [ - "parent", - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/manufacturercenter" - ], - "parameters": { - "parent": { - "location": "path", - "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.", - "type": "string", - "required": true, - "pattern": "^accounts/[^/]+$" - }, - "name": { - "location": "path", - "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.", - "type": "string", - "required": true, - "pattern": "^[^/]+$" - } - } + "description": "Inserts or updates the product in a Manufacturer Center account.\n\nThe checks at upload time are minimal. All required attributes need to be\npresent for a product to be valid. Issues may show up later\nafter the API has accepted an update for a product and it is possible to\noverwrite an existing valid product with an invalid product. To detect\nthis, you should retrieve the product and check it for issues once the\nupdated version is available.\n\nInserted or updated products first need to be processed before they can be\nretrieved. Until then, new products will be unavailable, and retrieval\nof updated products will return the original state of the product." } } } @@ -151,6 +150,16 @@ } }, "parameters": { + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", @@ -163,9 +172,9 @@ "type": "boolean" }, "fields": { + "location": "query", "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" + "type": "string" }, "uploadType": { "location": "query", @@ -173,24 +182,26 @@ "type": "string" }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" }, "alt": { + "description": "Data format for response.", + "default": "json", "enum": [ "json", "media", @@ -202,19 +213,17 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query", - "description": "Data format for response.", - "default": "json" + "location": "query" }, "access_token": { + "location": "query", "description": "OAuth access token.", - "type": "string", - "location": "query" + "type": "string" }, "key": { + "location": "query", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "type": "string" }, "quotaUser": { "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", @@ -226,22 +235,12 @@ "description": "Pretty-print response.", "default": "true", "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" } }, "version": "v1", "baseUrl": "https://manufacturers.googleapis.com/", - "kind": "discovery#restDescription", "description": "Public API for managing Manufacturer Center related data.", + "kind": "discovery#restDescription", "servicePath": "", "basePath": "", "revision": "20170808", @@ -250,8 +249,92 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { - "ListProductsResponse": { + "Count": { + "properties": { + "unit": { + "description": "The unit in which these products are counted.", + "type": "string" + }, + "value": { + "format": "int64", + "description": "The numeric value of the number of products in a package.", + "type": "string" + } + }, + "id": "Count", + "description": "The number of products in a single package. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count.", + "type": "object" + }, + "Product": { + "description": "Product data.", "type": "object", + "properties": { + "name": { + "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly", + "type": "string" + }, + "manuallyDeletedAttributes": { + "description": "Names of the attributes of the product deleted manually via the\nManufacturer Center UI.\n@OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, + "issues": { + "description": "A server-generated list of issues associated with the product.\n@OutputOnly", + "items": { + "$ref": "Issue" + }, + "type": "array" + }, + "finalAttributes": { + "description": "Final attributes of the product. The final attributes are obtained by\noverriding the uploaded attributes with the manually provided and deleted\nattributes. Google systems only process, evaluate, review, and/or use final\nattributes.\n@OutputOnly", + "$ref": "Attributes" + }, + "productId": { + "description": "The ID of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly", + "type": "string" + }, + "uploadedAttributes": { + "description": "Attributes of the product uploaded via the Manufacturer Center API or via\nfeeds.", + "$ref": "Attributes" + }, + "parent": { + "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.\n@OutputOnly", + "type": "string" + }, + "manuallyProvidedAttributes": { + "description": "Attributes of the product provided manually via the Manufacturer Center UI.\n@OutputOnly", + "$ref": "Attributes" + }, + "contentLanguage": { + "description": "The content language of the product as a two-letter ISO 639-1 language code\n(for example, en).\n@OutputOnly", + "type": "string" + }, + "targetCountry": { + "description": "The target country of the product as a CLDR territory code (for example,\nUS).\n@OutputOnly", + "type": "string" + } + }, + "id": "Product" + }, + "Capacity": { + "description": "The capacity of a product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#capacity.", + "type": "object", + "properties": { + "unit": { + "description": "The unit of the capacity, i.e., MB, GB, or TB.", + "type": "string" + }, + "value": { + "format": "int64", + "description": "The numeric value of the capacity.", + "type": "string" + } + }, + "id": "Capacity" + }, + "ListProductsResponse": { "properties": { "products": { "description": "List of the products.", @@ -265,12 +348,15 @@ "type": "string" } }, - "id": "ListProductsResponse" + "id": "ListProductsResponse", + "type": "object" }, "ProductDetail": { - "description": "A product detail of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productdetail.", - "type": "object", "properties": { + "attributeValue": { + "description": "The value of the attribute.", + "type": "string" + }, "sectionName": { "description": "A short section name that can be reused between multiple product details.", "type": "string" @@ -278,22 +364,14 @@ "attributeName": { "description": "The name of the attribute.", "type": "string" - }, - "attributeValue": { - "description": "The value of the attribute.", - "type": "string" } }, - "id": "ProductDetail" + "id": "ProductDetail", + "description": "A product detail of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productdetail.", + "type": "object" }, "FeatureDescription": { - "description": "A feature description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#featuredesc.", - "type": "object", "properties": { - "image": { - "$ref": "Image", - "description": "An optional image describing the feature." - }, "headline": { "description": "A short description of the feature.", "type": "string" @@ -301,20 +379,27 @@ "text": { "description": "A detailed description of the feature.", "type": "string" + }, + "image": { + "$ref": "Image", + "description": "An optional image describing the feature." } }, - "id": "FeatureDescription" + "id": "FeatureDescription", + "description": "A feature description of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#featuredesc.", + "type": "object" }, "Issue": { "description": "Product issue.", "type": "object", "properties": { - "timestamp": { - "format": "google-datetime", - "description": "The timestamp when this issue appeared.", - "type": "string" - }, "severity": { + "enum": [ + "SEVERITY_UNSPECIFIED", + "ERROR", + "WARNING", + "INFO" + ], "description": "The severity of the issue.", "type": "string", "enumDescriptions": [ @@ -322,12 +407,6 @@ "Error severity. The issue prevents the usage of the whole item.", "Warning severity. The issue is either one that prevents the usage of the\nattribute that triggered it or one that will soon prevent the usage of\nthe whole item.", "Info severity. The issue is one that doesn't require immediate attention.\nIt is, for example, used to communicate which attributes are still\npending review." - ], - "enum": [ - "SEVERITY_UNSPECIFIED", - "ERROR", - "WARNING", - "INFO" ] }, "description": { @@ -341,16 +420,15 @@ "attribute": { "description": "If present, the attribute that triggered the issue. For more information\nabout attributes, see\nhttps://support.google.com/manufacturers/answer/6124116.", "type": "string" + }, + "timestamp": { + "format": "google-datetime", + "description": "The timestamp when this issue appeared.", + "type": "string" } }, "id": "Issue" }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, "Price": { "description": "A price.", "type": "object", @@ -366,23 +444,29 @@ }, "id": "Price" }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, "Image": { "description": "An image.", "type": "object", "properties": { "type": { - "enumDescriptions": [ - "Type is unspecified. Should not be used.", - "The image was crawled from a provided URL.", - "The image was uploaded." - ], "enum": [ "TYPE_UNSPECIFIED", "CRAWLED", "UPLOADED" ], "description": "The type of the image, i.e., crawled or uploaded.\n@OutputOnly", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Type is unspecified. Should not be used.", + "The image was crawled from a provided URL.", + "The image was uploaded." + ] }, "imageUrl": { "description": "The URL of the image. For crawled images, this is the provided URL. For\nuploaded images, this is a serving URL from Google if the image has been\nprocessed successfully.", @@ -425,6 +509,35 @@ "description": "Attributes of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116.", "type": "object", "properties": { + "productType": { + "description": "The category of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#producttype.", + "items": { + "type": "string" + }, + "type": "array" + }, + "format": { + "description": "The format of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#format.", + "type": "string" + }, + "additionalImageLink": { + "description": "The additional images of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#addlimage.", + "items": { + "$ref": "Image" + }, + "type": "array" + }, + "videoLink": { + "description": "The videos of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#video.", + "items": { + "type": "string" + }, + "type": "array" + }, + "color": { + "description": "The color of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#color.", + "type": "string" + }, "productName": { "description": "The canonical name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#productname.", "type": "string" @@ -458,8 +571,8 @@ "type": "string" }, "count": { - "description": "The count of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count.", - "$ref": "Count" + "$ref": "Count", + "description": "The count of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count." }, "brand": { "description": "The brand name of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#brand.", @@ -546,123 +659,9 @@ "imageLink": { "description": "The image of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#image.", "$ref": "Image" - }, - "productType": { - "description": "The category of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#producttype.", - "items": { - "type": "string" - }, - "type": "array" - }, - "format": { - "description": "The format of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#format.", - "type": "string" - }, - "additionalImageLink": { - "description": "The additional images of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#addlimage.", - "items": { - "$ref": "Image" - }, - "type": "array" - }, - "videoLink": { - "description": "The videos of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#video.", - "items": { - "type": "string" - }, - "type": "array" - }, - "color": { - "description": "The color of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#color.", - "type": "string" } }, "id": "Attributes" - }, - "Count": { - "description": "The number of products in a single package. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#count.", - "type": "object", - "properties": { - "unit": { - "description": "The unit in which these products are counted.", - "type": "string" - }, - "value": { - "format": "int64", - "description": "The numeric value of the number of products in a package.", - "type": "string" - } - }, - "id": "Count" - }, - "Product": { - "description": "Product data.", - "type": "object", - "properties": { - "productId": { - "description": "The ID of the product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly", - "type": "string" - }, - "uploadedAttributes": { - "description": "Attributes of the product uploaded via the Manufacturer Center API or via\nfeeds.", - "$ref": "Attributes" - }, - "parent": { - "description": "Parent ID in the format `accounts/{account_id}`.\n\n`account_id` - The ID of the Manufacturer Center account.\n@OutputOnly", - "type": "string" - }, - "manuallyProvidedAttributes": { - "description": "Attributes of the product provided manually via the Manufacturer Center UI.\n@OutputOnly", - "$ref": "Attributes" - }, - "targetCountry": { - "description": "The target country of the product as a CLDR territory code (for example,\nUS).\n@OutputOnly", - "type": "string" - }, - "contentLanguage": { - "description": "The content language of the product as a two-letter ISO 639-1 language code\n(for example, en).\n@OutputOnly", - "type": "string" - }, - "name": { - "description": "Name in the format `{target_country}:{content_language}:{product_id}`.\n\n`target_country` - The target country of the product as a CLDR territory\n code (for example, US).\n\n`content_language` - The content language of the product as a two-letter\n ISO 639-1 language code (for example, en).\n\n`product_id` - The ID of the product. For more information, see\n https://support.google.com/manufacturers/answer/6124116#id.\n@OutputOnly", - "type": "string" - }, - "manuallyDeletedAttributes": { - "description": "Names of the attributes of the product deleted manually via the\nManufacturer Center UI.\n@OutputOnly", - "items": { - "type": "string" - }, - "type": "array" - }, - "issues": { - "description": "A server-generated list of issues associated with the product.\n@OutputOnly", - "items": { - "$ref": "Issue" - }, - "type": "array" - }, - "finalAttributes": { - "$ref": "Attributes", - "description": "Final attributes of the product. The final attributes are obtained by\noverriding the uploaded attributes with the manually provided and deleted\nattributes. Google systems only process, evaluate, review, and/or use final\nattributes.\n@OutputOnly" - } - }, - "id": "Product" - }, - "Capacity": { - "description": "The capacity of a product. For more information, see\nhttps://support.google.com/manufacturers/answer/6124116#capacity.", - "type": "object", - "properties": { - "unit": { - "description": "The unit of the capacity, i.e., MB, GB, or TB.", - "type": "string" - }, - "value": { - "format": "int64", - "description": "The numeric value of the capacity.", - "type": "string" - } - }, - "id": "Capacity" } }, "protocol": "rest", @@ -682,5 +681,6 @@ }, "rootUrl": "https://manufacturers.googleapis.com/", "ownerDomain": "google.com", - "name": "manufacturers" + "name": "manufacturers", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/ml/v1/ml-api.json b/vendor/google.golang.org/api/ml/v1/ml-api.json index 92a3f15..f7a5a89 100644 --- a/vendor/google.golang.org/api/ml/v1/ml-api.json +++ b/vendor/google.golang.org/api/ml/v1/ml-api.json @@ -1,128 +1,861 @@ { - "version_module": true, - "schemas": { - "GoogleIamV1__SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "updateMask": { - "format": "google-fieldmask", - "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", - "type": "string" + "ownerDomain": "google.com", + "name": "ml", + "batchPath": "batch", + "title": "Google Cloud Machine Learning Engine", + "ownerName": "Google", + "resources": { + "projects": { + "methods": { + "predict": { + "request": { + "$ref": "GoogleCloudMlV1__PredictRequest" + }, + "description": "Performs prediction on the data in the request.\n\n**** REMOVE FROM GENERATED DOCUMENTATION", + "response": { + "$ref": "GoogleApi__HttpBody" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "Required. The resource name of a model or a version.\n\nAuthorization: requires the `predict` permission on the specified resource.", + "type": "string", + "required": true, + "pattern": "^projects/.+$" + } + }, + "flatPath": "v1/projects/{projectsId}:predict", + "id": "ml.projects.predict", + "path": "v1/{+name}:predict" }, - "policy": { - "$ref": "GoogleIamV1__Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." + "getConfig": { + "description": "Get the service account information associated with your project. You need\nthis information in order to grant the service account persmissions for\nthe Google Cloud Storage location where you put your model training code\nfor training the model with Google Cloud Machine Learning.", + "httpMethod": "GET", + "response": { + "$ref": "GoogleCloudMlV1__GetConfigResponse" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "location": "path", + "description": "Required. The project name.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}:getConfig", + "path": "v1/{+name}:getConfig", + "id": "ml.projects.getConfig" } }, - "id": "GoogleIamV1__SetIamPolicyRequest" - }, - "GoogleCloudMlV1__HyperparameterOutput": { - "id": "GoogleCloudMlV1__HyperparameterOutput", - "description": "Represents the result of a single hyperparameter tuning trial from a\ntraining job. The TrainingOutput object that is returned on successful\ncompletion of a training job with hyperparameter tuning includes a list\nof HyperparameterOutput objects, one for each successful trial.", - "type": "object", - "properties": { - "hyperparameters": { - "description": "The hyperparameters given to this trial.", - "type": "object", - "additionalProperties": { - "type": "string" + "resources": { + "models": { + "methods": { + "testIamPermissions": { + "flatPath": "v1/projects/{projectsId}/models/{modelsId}:testIamPermissions", + "id": "ml.projects.models.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "request": { + "$ref": "GoogleIamV1__TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "response": { + "$ref": "GoogleIamV1__TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$" + } + } + }, + "delete": { + "flatPath": "v1/projects/{projectsId}/models/{modelsId}", + "path": "v1/{+name}", + "id": "ml.projects.models.delete", + "description": "Deletes a model.\n\nYou can only delete a model if there are no versions in it. You can delete\nversions by calling\n[projects.models.versions.delete](/ml-engine/reference/rest/v1/projects.models.versions/delete).", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "GoogleLongrunning__Operation" + }, + "parameters": { + "name": { + "description": "Required. The name of the model.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists the models in a project.\n\nEach project can contain multiple models, and each model can have multiple\nversions.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "GoogleCloudMlV1__ListModelsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The number of models to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", + "type": "integer" + }, + "parent": { + "location": "path", + "description": "Required. The name of the project whose models are to be listed.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + }, + "pageToken": { + "location": "query", + "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/models", + "path": "v1/{+parent}/models", + "id": "ml.projects.models.list" + }, + "setIamPolicy": { + "response": { + "$ref": "GoogleIamV1__Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/models/{modelsId}:setIamPolicy", + "id": "ml.projects.models.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "GoogleIamV1__SetIamPolicyRequest" + } + }, + "create": { + "flatPath": "v1/projects/{projectsId}/models", + "id": "ml.projects.models.create", + "path": "v1/{+parent}/models", + "description": "Creates a model which will later contain one or more versions.\n\nYou must add at least one version before you can request predictions from\nthe model. Add versions by calling\n[projects.models.versions.create](/ml-engine/reference/rest/v1/projects.models.versions/create).", + "request": { + "$ref": "GoogleCloudMlV1__Model" + }, + "response": { + "$ref": "GoogleCloudMlV1__Model" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "Required. The project name.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "getIamPolicy": { + "response": { + "$ref": "GoogleIamV1__Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/models/{modelsId}:getIamPolicy", + "id": "ml.projects.models.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset." + }, + "get": { + "description": "Gets information about a model, including its name, the description (if\nset), and the default version (if at least one version of the model has\nbeen deployed).", + "response": { + "$ref": "GoogleCloudMlV1__Model" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the model.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/models/{modelsId}", + "id": "ml.projects.models.get", + "path": "v1/{+name}" + } + }, + "resources": { + "versions": { + "methods": { + "get": { + "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}", + "id": "ml.projects.models.versions.get", + "path": "v1/{+name}", + "description": "Gets information about a model version.\n\nModels can have multiple versions. You can call\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list)\nto get the same information that this method returns for all of the\nversions of a model.", + "response": { + "$ref": "GoogleCloudMlV1__Version" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the version.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Gets basic information about all the versions of a model.\n\nIf you expect that a model has a lot of versions, or if you need to handle\nonly a limited number of results at a time, you can request that the list\nbe retrieved in batches (called pages):", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "GoogleCloudMlV1__ListVersionsResponse" + }, + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The number of versions to retrieve per \"page\" of results. If\nthere are more remaining results than this number, the response message\nwill contain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", + "type": "integer" + }, + "parent": { + "location": "path", + "description": "Required. The name of the model for which to list the version.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$" + }, + "pageToken": { + "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions", + "path": "v1/{+parent}/versions", + "id": "ml.projects.models.versions.list" + }, + "create": { + "response": { + "$ref": "GoogleLongrunning__Operation" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "Required. The name of the model.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions", + "id": "ml.projects.models.versions.create", + "path": "v1/{+parent}/versions", + "description": "Creates a new version of a model from a trained TensorFlow model.\n\nIf the version created in the cloud by this call is the first deployed\nversion of the specified model, it will be made the default version of the\nmodel. When you add a version to a model that already has one or more\nversions, the default version does not automatically change. If you want a\nnew version to be the default, you must call\n[projects.models.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).", + "request": { + "$ref": "GoogleCloudMlV1__Version" + } + }, + "setDefault": { + "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}:setDefault", + "id": "ml.projects.models.versions.setDefault", + "path": "v1/{+name}:setDefault", + "request": { + "$ref": "GoogleCloudMlV1__SetDefaultVersionRequest" + }, + "description": "Designates a version to be the default for the model.\n\nThe default version is used for prediction requests made against the model\nthat don't specify a version.\n\nThe first version to be created for a model is automatically set as the\ndefault. You must make any subsequent changes to the default version\nsetting manually using this method.", + "response": { + "$ref": "GoogleCloudMlV1__Version" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "Required. The name of the version to make the default for the model. You\ncan get the names of all the versions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$", + "location": "path" + } + } + }, + "delete": { + "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}", + "id": "ml.projects.models.versions.delete", + "path": "v1/{+name}", + "description": "Deletes a model version.\n\nEach model can have multiple versions deployed and in use at any given\ntime. Use this method to remove a single version.\n\nNote: You cannot delete the version that is set as the default version\nof the model unless it is the only remaining version.", + "response": { + "$ref": "GoogleLongrunning__Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "Required. The name of the version. You can get the names of all the\nversions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$", + "location": "path" + } + } + } + } + } } }, - "trialId": { - "description": "The trial id for these results.", - "type": "string" + "operations": { + "methods": { + "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "response": { + "$ref": "GoogleLongrunning__Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", + "id": "ml.projects.operations.get", + "path": "v1/{+name}" + }, + "list": { + "response": { + "$ref": "GoogleLongrunning__ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/operations", + "id": "ml.projects.operations.list", + "path": "v1/{+name}/operations", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." + }, + "cancel": { + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", + "response": { + "$ref": "GoogleProtobuf__Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/operations/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/operations/{operationsId}:cancel", + "id": "ml.projects.operations.cancel", + "path": "v1/{+name}:cancel" + }, + "delete": { + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "GoogleProtobuf__Empty" + }, + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", + "path": "v1/{+name}", + "id": "ml.projects.operations.delete", + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`." + } + } }, - "allMetrics": { - "description": "All recorded object metrics for this trial.", - "items": { - "$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric" - }, - "type": "array" - }, - "finalMetric": { - "$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric", - "description": "The final objective metric seen for this trial." + "jobs": { + "methods": { + "list": { + "description": "Lists the jobs in the project.", + "response": { + "$ref": "GoogleCloudMlV1__ListJobsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Optional. The number of jobs to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", + "type": "integer" + }, + "parent": { + "description": "Required. The name of the project for which to list jobs.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "filter": { + "location": "query", + "description": "Optional. Specifies the subset of jobs to retrieve.", + "type": "string" + }, + "pageToken": { + "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/jobs", + "id": "ml.projects.jobs.list", + "path": "v1/{+parent}/jobs" + }, + "create": { + "flatPath": "v1/projects/{projectsId}/jobs", + "id": "ml.projects.jobs.create", + "path": "v1/{+parent}/jobs", + "description": "Creates a training or a batch prediction job.", + "request": { + "$ref": "GoogleCloudMlV1__Job" + }, + "response": { + "$ref": "GoogleCloudMlV1__Job" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "parent": { + "description": "Required. The project name.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "setIamPolicy": { + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "GoogleIamV1__Policy" + }, + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/jobs/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "id": "ml.projects.jobs.setIamPolicy", + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "GoogleIamV1__SetIamPolicyRequest" + } + }, + "cancel": { + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "GoogleProtobuf__Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the job to cancel.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/jobs/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:cancel", + "path": "v1/{+name}:cancel", + "id": "ml.projects.jobs.cancel", + "request": { + "$ref": "GoogleCloudMlV1__CancelJobRequest" + }, + "description": "Cancels a running job." + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "response": { + "$ref": "GoogleIamV1__Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "GET", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/jobs/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:getIamPolicy", + "id": "ml.projects.jobs.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + }, + "get": { + "response": { + "$ref": "GoogleCloudMlV1__Job" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the job to get the description of.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/jobs/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}", + "id": "ml.projects.jobs.get", + "path": "v1/{+name}", + "description": "Describes a job." + }, + "testIamPermissions": { + "request": { + "$ref": "GoogleIamV1__TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "response": { + "$ref": "GoogleIamV1__TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/jobs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:testIamPermissions", + "id": "ml.projects.jobs.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions" + } + } } } + } + }, + "parameters": { + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" }, - "GoogleCloudMlV1__PredictionOutput": { - "id": "GoogleCloudMlV1__PredictionOutput", - "description": "Represents results of a prediction job.", - "type": "object", - "properties": { - "errorCount": { - "format": "int64", - "description": "The number of data instances which resulted in errors.", - "type": "string" - }, - "nodeHours": { - "format": "double", - "description": "Node hours used by the batch prediction job.", - "type": "number" - }, - "outputPath": { - "description": "The output Google Cloud Storage location provided at the job creation time.", - "type": "string" - }, - "predictionCount": { - "format": "int64", - "description": "The number of generated predictions.", - "type": "string" - } - } + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" }, - "GoogleIamV1__Policy": { - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object", - "properties": { - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, - "auditConfigs": { - "description": "Specifies cloud audit logging configuration for this policy.", - "items": { - "$ref": "GoogleIamV1__AuditConfig" - }, - "type": "array" - }, - "bindings": { - "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", - "items": { - "$ref": "GoogleIamV1__Binding" - }, - "type": "array" - }, - "iamOwned": { - "type": "boolean" - }, - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - } - }, - "id": "GoogleIamV1__Policy" + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + } + }, + "version": "v1", + "baseUrl": "https://ml.googleapis.com/", + "servicePath": "", + "description": "An API to enable creating and using machine learning models.", + "kind": "discovery#restDescription", + "basePath": "", + "documentationLink": "https://cloud.google.com/ml/", + "id": "ml:v1", + "revision": "20170825", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { "GoogleLongrunning__ListOperationsResponse": { - "id": "GoogleLongrunning__ListOperationsResponse", "description": "The response message for Operations.ListOperations.", "type": "object", "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, "operations": { "description": "A list of operations that matches the specified filter in the request.", "items": { "$ref": "GoogleLongrunning__Operation" }, "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" } - } + }, + "id": "GoogleLongrunning__ListOperationsResponse" }, "GoogleCloudMlV1__ManualScaling": { "description": "Options for manually scaling a model.", @@ -165,14 +898,9 @@ "id": "GoogleCloudMlV1__TrainingOutput" }, "GoogleIamV1__Binding": { - "id": "GoogleIamV1__Binding", "description": "Associates `members` with a `role`.", "type": "object", "properties": { - "condition": { - "$ref": "GoogleType__Expr", - "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL." - }, "members": { "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", "items": { @@ -183,43 +911,48 @@ "role": { "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", "type": "string" + }, + "condition": { + "$ref": "GoogleType__Expr", + "description": "The condition that is associated with this binding.\nNOTE: an unsatisfied condition will not allow user access via current\nbinding. Different bindings, including their conditions, are examined\nindependently.\nThis field is GOOGLE_INTERNAL." } - } + }, + "id": "GoogleIamV1__Binding" }, "GoogleCloudMlV1__PredictRequest": { - "id": "GoogleCloudMlV1__PredictRequest", "description": "Request for predictions to be issued against a trained model.\n\nThe body of the request is a single JSON object with a single top-level\nfield:\n\n\u003cdl\u003e\n \u003cdt\u003einstances\u003c/dt\u003e\n \u003cdd\u003eA JSON array containing values representing the instances to use for\n prediction.\u003c/dd\u003e\n\u003c/dl\u003e\n\nThe structure of each element of the instances list is determined by your\nmodel's input definition. Instances can include named inputs or can contain\nonly unlabeled values.\n\nNot all data includes named inputs. Some instances will be simple\nJSON values (boolean, number, or string). However, instances are often lists\nof simple values, or complex nested lists. Here are some examples of request\nbodies:\n\nCSV data with each row encoded as a string value:\n\u003cpre\u003e\n{\"instances\": [\"1.0,true,\\\\\"x\\\\\"\", \"-2.0,false,\\\\\"y\\\\\"\"]}\n\u003c/pre\u003e\nPlain text:\n\u003cpre\u003e\n{\"instances\": [\"the quick brown fox\", \"la bruja le dio\"]}\n\u003c/pre\u003e\nSentences encoded as lists of words (vectors of strings):\n\u003cpre\u003e\n{\n \"instances\": [\n [\"the\",\"quick\",\"brown\"],\n [\"la\",\"bruja\",\"le\"],\n ...\n ]\n}\n\u003c/pre\u003e\nFloating point scalar values:\n\u003cpre\u003e\n{\"instances\": [0.0, 1.1, 2.2]}\n\u003c/pre\u003e\nVectors of integers:\n\u003cpre\u003e\n{\n \"instances\": [\n [0, 1, 2],\n [3, 4, 5],\n ...\n ]\n}\n\u003c/pre\u003e\nTensors (in this case, two-dimensional tensors):\n\u003cpre\u003e\n{\n \"instances\": [\n [\n [0, 1, 2],\n [3, 4, 5]\n ],\n ...\n ]\n}\n\u003c/pre\u003e\nImages can be represented different ways. In this encoding scheme the first\ntwo dimensions represent the rows and columns of the image, and the third\ncontains lists (vectors) of the R, G, and B values for each pixel.\n\u003cpre\u003e\n{\n \"instances\": [\n [\n [\n [138, 30, 66],\n [130, 20, 56],\n ...\n ],\n [\n [126, 38, 61],\n [122, 24, 57],\n ...\n ],\n ...\n ],\n ...\n ]\n}\n\u003c/pre\u003e\nJSON strings must be encoded as UTF-8. To send binary data, you must\nbase64-encode the data and mark it as binary. To mark a JSON string\nas binary, replace it with a JSON object with a single attribute named `b64`:\n\u003cpre\u003e{\"b64\": \"...\"} \u003c/pre\u003e\nFor example:\n\nTwo Serialized tf.Examples (fake data, for illustrative purposes only):\n\u003cpre\u003e\n{\"instances\": [{\"b64\": \"X5ad6u\"}, {\"b64\": \"IA9j4nx\"}]}\n\u003c/pre\u003e\nTwo JPEG image byte strings (fake data, for illustrative purposes only):\n\u003cpre\u003e\n{\"instances\": [{\"b64\": \"ASa8asdf\"}, {\"b64\": \"JLK7ljk3\"}]}\n\u003c/pre\u003e\nIf your data includes named references, format each instance as a JSON object\nwith the named references as the keys:\n\nJSON input data to be preprocessed:\n\u003cpre\u003e\n{\n \"instances\": [\n {\n \"a\": 1.0,\n \"b\": true,\n \"c\": \"x\"\n },\n {\n \"a\": -2.0,\n \"b\": false,\n \"c\": \"y\"\n }\n ]\n}\n\u003c/pre\u003e\nSome models have an underlying TensorFlow graph that accepts multiple input\ntensors. In this case, you should use the names of JSON name/value pairs to\nidentify the input tensors, as shown in the following exmaples:\n\nFor a graph with input tensor aliases \"tag\" (string) and \"image\"\n(base64-encoded string):\n\u003cpre\u003e\n{\n \"instances\": [\n {\n \"tag\": \"beach\",\n \"image\": {\"b64\": \"ASa8asdf\"}\n },\n {\n \"tag\": \"car\",\n \"image\": {\"b64\": \"JLK7ljk3\"}\n }\n ]\n}\n\u003c/pre\u003e\nFor a graph with input tensor aliases \"tag\" (string) and \"image\"\n(3-dimensional array of 8-bit ints):\n\u003cpre\u003e\n{\n \"instances\": [\n {\n \"tag\": \"beach\",\n \"image\": [\n [\n [138, 30, 66],\n [130, 20, 56],\n ...\n ],\n [\n [126, 38, 61],\n [122, 24, 57],\n ...\n ],\n ...\n ]\n },\n {\n \"tag\": \"car\",\n \"image\": [\n [\n [255, 0, 102],\n [255, 0, 97],\n ...\n ],\n [\n [254, 1, 101],\n [254, 2, 93],\n ...\n ],\n ...\n ]\n },\n ...\n ]\n}\n\u003c/pre\u003e\nIf the call is successful, the response body will contain one prediction\nentry per instance in the request body. If prediction fails for any\ninstance, the response body will contain no predictions and will contian\na single error entry instead.", "type": "object", "properties": { "httpBody": { - "$ref": "GoogleApi__HttpBody", - "description": "\nRequired. The prediction request body." + "description": "\nRequired. The prediction request body.", + "$ref": "GoogleApi__HttpBody" } - } + }, + "id": "GoogleCloudMlV1__PredictRequest" }, "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric": { - "id": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric", "description": "An observed value of a metric.", "type": "object", "properties": { - "trainingStep": { - "format": "int64", - "description": "The global training step for this metric.", - "type": "string" - }, "objectiveValue": { "format": "double", "description": "The objective value at this training step.", "type": "number" + }, + "trainingStep": { + "format": "int64", + "description": "The global training step for this metric.", + "type": "string" } - } + }, + "id": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric" }, "GoogleCloudMlV1__Version": { "description": "Represents a version of the model.\n\nEach version is a trained model deployed in the cloud, ready to handle\nprediction requests. A model can have multiple versions. You can get\ninformation about all of the versions of a given model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).\n\nNext ID: 18", "type": "object", "properties": { - "runtimeVersion": { - "description": "Optional. The Google Cloud ML runtime version to use for this deployment.\nIf not set, Google Cloud ML will choose a version.", + "errorMessage": { + "description": "Output only. The details of a failure or a cancellation.", "type": "string" }, "lastUseTime": { @@ -227,6 +960,10 @@ "description": "Output only. The time the version was last used for prediction.", "type": "string" }, + "runtimeVersion": { + "description": "Optional. The Google Cloud ML runtime version to use for this deployment.\nIf not set, Google Cloud ML will choose a version.", + "type": "string" + }, "description": { "description": "Optional. The description specified for the version when it was created.", "type": "string" @@ -235,19 +972,23 @@ "description": "Required. The Google Cloud Storage location of the trained model used to\ncreate the version. See the\n[overview of model\ndeployment](/ml-engine/docs/concepts/deployment-overview) for more\ninformation.\n\nWhen passing Version to\n[projects.models.versions.create](/ml-engine/reference/rest/v1/projects.models.versions/create)\nthe model service uses the specified location as the source of the model.\nOnce deployed, the model version is hosted by the prediction service, so\nthis location is useful only as a historical record.\nThe total number of model files can't exceed 1000.", "type": "string" }, - "autoScaling": { - "$ref": "GoogleCloudMlV1__AutoScaling", - "description": "Automatically scale the number of nodes used to serve the model in\nresponse to increases and decreases in traffic. Care should be\ntaken to ramp up traffic according to the model's ability to scale\nor you will start seeing increases in latency and 429 response codes." - }, "isDefault": { "description": "Output only. If true, this version will be used to handle prediction\nrequests that do not specify a version.\n\nYou can change the default version by calling\n[projects.methods.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).", "type": "boolean" }, + "autoScaling": { + "$ref": "GoogleCloudMlV1__AutoScaling", + "description": "Automatically scale the number of nodes used to serve the model in\nresponse to increases and decreases in traffic. Care should be\ntaken to ramp up traffic according to the model's ability to scale\nor you will start seeing increases in latency and 429 response codes." + }, "createTime": { "format": "google-datetime", "description": "Output only. The time the version was created.", "type": "string" }, + "manualScaling": { + "$ref": "GoogleCloudMlV1__ManualScaling", + "description": "Manually select the number of nodes to use for serving the\nmodel. You should generally use `auto_scaling` with an appropriate\n`min_nodes` instead, but this option is available if you want more\npredictable billing. Beware that latency and error rates will increase\nif the traffic exceeds that capability of the system to serve it based\non the selected number of nodes." + }, "state": { "enumDescriptions": [ "The version state is unspecified.", @@ -266,23 +1007,14 @@ "description": "Output only. The state of a version.", "type": "string" }, - "manualScaling": { - "description": "Manually select the number of nodes to use for serving the\nmodel. You should generally use `auto_scaling` with an appropriate\n`min_nodes` instead, but this option is available if you want more\npredictable billing. Beware that latency and error rates will increase\nif the traffic exceeds that capability of the system to serve it based\non the selected number of nodes.", - "$ref": "GoogleCloudMlV1__ManualScaling" - }, "name": { "description": "Required.The name specified for the version when it was created.\n\nThe version name must be unique within the model it is created in.", "type": "string" - }, - "errorMessage": { - "description": "Output only. The details of a failure or a cancellation.", - "type": "string" } }, "id": "GoogleCloudMlV1__Version" }, "GoogleCloudMlV1__ParameterSpec": { - "id": "GoogleCloudMlV1__ParameterSpec", "description": "Represents a single hyperparameter to optimize.", "type": "object", "properties": { @@ -299,9 +1031,12 @@ }, "type": "array" }, + "maxValue": { + "format": "double", + "description": "Required if typeis `DOUBLE` or `INTEGER`. This field\nshould be unset if type is `CATEGORICAL`. This value should be integers if\ntype is `INTEGER`.", + "type": "number" + }, "scaleType": { - "description": "Optional. How the parameter should be scaled to the hypercube.\nLeave unset for categorical parameters.\nSome kind of scaling is strongly recommended for real or integral\nparameters (e.g., `UNIT_LINEAR_SCALE`).", - "type": "string", "enumDescriptions": [ "By default, no scaling is applied.", "Scales the feasible space to (0, 1) linearly.", @@ -313,12 +1048,9 @@ "UNIT_LINEAR_SCALE", "UNIT_LOG_SCALE", "UNIT_REVERSE_LOG_SCALE" - ] - }, - "maxValue": { - "format": "double", - "description": "Required if typeis `DOUBLE` or `INTEGER`. This field\nshould be unset if type is `CATEGORICAL`. This value should be integers if\ntype is `INTEGER`.", - "type": "number" + ], + "description": "Optional. How the parameter should be scaled to the hypercube.\nLeave unset for categorical parameters.\nSome kind of scaling is strongly recommended for real or integral\nparameters (e.g., `UNIT_LINEAR_SCALE`).", + "type": "string" }, "type": { "description": "Required. The type of the parameter.", @@ -349,13 +1081,38 @@ "description": "Required. The parameter name must be unique amongst all ParameterConfigs in\na HyperparameterSpec message. E.g., \"learning_rate\".", "type": "string" } - } + }, + "id": "GoogleCloudMlV1__ParameterSpec" }, "GoogleCloudMlV1__PredictionInput": { - "id": "GoogleCloudMlV1__PredictionInput", "description": "Represents input parameters for a prediction job.", "type": "object", "properties": { + "region": { + "description": "Required. The Google Compute Engine region to run the prediction job in.", + "type": "string" + }, + "versionName": { + "description": "Use this field if you want to specify a version of the model to use. The\nstring is formatted the same way as `model_version`, with the addition\nof the version information:\n\n`\"projects/\u003cvar\u003e[YOUR_PROJECT]\u003c/var\u003e/models/\u003cvar\u003eYOUR_MODEL/versions/\u003cvar\u003e[YOUR_VERSION]\u003c/var\u003e\"`", + "type": "string" + }, + "modelName": { + "description": "Use this field if you want to use the default version for the specified\nmodel. The string must use the following format:\n\n`\"projects/\u003cvar\u003e[YOUR_PROJECT]\u003c/var\u003e/models/\u003cvar\u003e[YOUR_MODEL]\u003c/var\u003e\"`", + "type": "string" + }, + "outputPath": { + "description": "Required. The output Google Cloud Storage location.", + "type": "string" + }, + "uri": { + "description": "Use this field if you want to specify a Google Cloud Storage path for\nthe model to use.", + "type": "string" + }, + "maxWorkerCount": { + "format": "int64", + "description": "Optional. The maximum number of workers to be used for parallel processing.\nDefaults to 10 if not specified.", + "type": "string" + }, "dataFormat": { "enumDescriptions": [ "Unspecified format.", @@ -387,87 +1144,9 @@ "type": "string" }, "type": "array" - }, - "region": { - "description": "Required. The Google Compute Engine region to run the prediction job in.", - "type": "string" - }, - "versionName": { - "description": "Use this field if you want to specify a version of the model to use. The\nstring is formatted the same way as `model_version`, with the addition\nof the version information:\n\n`\"projects/\u003cvar\u003e[YOUR_PROJECT]\u003c/var\u003e/models/\u003cvar\u003eYOUR_MODEL/versions/\u003cvar\u003e[YOUR_VERSION]\u003c/var\u003e\"`", - "type": "string" - }, - "modelName": { - "description": "Use this field if you want to use the default version for the specified\nmodel. The string must use the following format:\n\n`\"projects/\u003cvar\u003e[YOUR_PROJECT]\u003c/var\u003e/models/\u003cvar\u003e[YOUR_MODEL]\u003c/var\u003e\"`", - "type": "string" - }, - "outputPath": { - "description": "Required. The output Google Cloud Storage location.", - "type": "string" - }, - "uri": { - "description": "Use this field if you want to specify a Google Cloud Storage path for\nthe model to use.", - "type": "string" - }, - "maxWorkerCount": { - "format": "int64", - "description": "Optional. The maximum number of workers to be used for parallel processing.\nDefaults to 10 if not specified.", - "type": "string" } - } - }, - "GoogleCloudMlV1__OperationMetadata": { - "id": "GoogleCloudMlV1__OperationMetadata", - "description": "Represents the metadata of the long-running operation.\n\nNext ID: 9", - "type": "object", - "properties": { - "createTime": { - "format": "google-datetime", - "description": "The time the operation was submitted.", - "type": "string" - }, - "modelName": { - "description": "Contains the name of the model associated with the operation.", - "type": "string" - }, - "version": { - "description": "Contains the version associated with the operation.", - "$ref": "GoogleCloudMlV1__Version" - }, - "endTime": { - "format": "google-datetime", - "description": "The time operation processing completed.", - "type": "string" - }, - "operationType": { - "description": "The operation type.", - "type": "string", - "enumDescriptions": [ - "Unspecified operation type.", - "An operation to create a new version.", - "An operation to delete an existing version.", - "An operation to delete an existing model.", - "An operation to update an existing model.", - "An operation to update an existing version." - ], - "enum": [ - "OPERATION_TYPE_UNSPECIFIED", - "CREATE_VERSION", - "DELETE_VERSION", - "DELETE_MODEL", - "UPDATE_MODEL", - "UPDATE_VERSION" - ] - }, - "startTime": { - "format": "google-datetime", - "description": "The time operation processing started.", - "type": "string" - }, - "isCancellationRequested": { - "description": "Indicates whether a request to cancel this operation has been made.", - "type": "boolean" - } - } + }, + "id": "GoogleCloudMlV1__PredictionInput" }, "GoogleIamV1__AuditLogConfig": { "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", @@ -499,8 +1178,61 @@ }, "id": "GoogleIamV1__AuditLogConfig" }, + "GoogleCloudMlV1__OperationMetadata": { + "description": "Represents the metadata of the long-running operation.\n\nNext ID: 9", + "type": "object", + "properties": { + "isCancellationRequested": { + "description": "Indicates whether a request to cancel this operation has been made.", + "type": "boolean" + }, + "createTime": { + "format": "google-datetime", + "description": "The time the operation was submitted.", + "type": "string" + }, + "modelName": { + "description": "Contains the name of the model associated with the operation.", + "type": "string" + }, + "version": { + "$ref": "GoogleCloudMlV1__Version", + "description": "Contains the version associated with the operation." + }, + "endTime": { + "format": "google-datetime", + "description": "The time operation processing completed.", + "type": "string" + }, + "operationType": { + "enumDescriptions": [ + "Unspecified operation type.", + "An operation to create a new version.", + "An operation to delete an existing version.", + "An operation to delete an existing model.", + "An operation to update an existing model.", + "An operation to update an existing version." + ], + "enum": [ + "OPERATION_TYPE_UNSPECIFIED", + "CREATE_VERSION", + "DELETE_VERSION", + "DELETE_MODEL", + "UPDATE_MODEL", + "UPDATE_VERSION" + ], + "description": "The operation type.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The time operation processing started.", + "type": "string" + } + }, + "id": "GoogleCloudMlV1__OperationMetadata" + }, "GoogleType__Expr": { - "id": "GoogleType__Expr", "description": "Represents an expression text. Example:\n\n title: \"User account presence\"\n description: \"Determines whether the request has a user account\"\n expression: \"size(request.user) \u003e 0\"", "type": "object", "properties": { @@ -520,25 +1252,13 @@ "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.", "type": "string" } - } + }, + "id": "GoogleType__Expr" }, "GoogleCloudMlV1__HyperparameterSpec": { - "id": "GoogleCloudMlV1__HyperparameterSpec", "description": "Represents a set of hyperparameters to optimize.", "type": "object", "properties": { - "maxTrials": { - "format": "int32", - "description": "Optional. How many training trials should be attempted to optimize\nthe specified hyperparameters.\n\nDefaults to one.", - "type": "integer" - }, - "params": { - "description": "Required. The set of parameters to tune.", - "items": { - "$ref": "GoogleCloudMlV1__ParameterSpec" - }, - "type": "array" - }, "maxParallelTrials": { "format": "int32", "description": "Optional. The number of training trials to run concurrently.\nYou can reduce the time it takes to perform hyperparameter tuning by adding\ntrials in parallel. However, each trail only benefits from the information\ngained in completed trials. That means that a trial does not get access to\nthe results of trials running at the same time, which could reduce the\nquality of the overall optimization.\n\nEach trial will use the same scale tier and machine types.\n\nDefaults to one.", @@ -561,41 +1281,50 @@ ], "description": "Required. The type of goal to use for tuning. Available types are\n`MAXIMIZE` and `MINIMIZE`.\n\nDefaults to `MAXIMIZE`.", "type": "string" + }, + "maxTrials": { + "format": "int32", + "description": "Optional. How many training trials should be attempted to optimize\nthe specified hyperparameters.\n\nDefaults to one.", + "type": "integer" + }, + "params": { + "description": "Required. The set of parameters to tune.", + "items": { + "$ref": "GoogleCloudMlV1__ParameterSpec" + }, + "type": "array" } - } + }, + "id": "GoogleCloudMlV1__HyperparameterSpec" }, "GoogleCloudMlV1__ListJobsResponse": { "description": "Response message for the ListJobs method.", "type": "object", "properties": { + "nextPageToken": { + "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.", + "type": "string" + }, "jobs": { "description": "The list of jobs.", "items": { "$ref": "GoogleCloudMlV1__Job" }, "type": "array" - }, - "nextPageToken": { - "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.", - "type": "string" } }, "id": "GoogleCloudMlV1__ListJobsResponse" }, "GoogleCloudMlV1__SetDefaultVersionRequest": { - "id": "GoogleCloudMlV1__SetDefaultVersionRequest", "description": "Request message for the SetDefaultVersion request.", "type": "object", - "properties": {} + "properties": {}, + "id": "GoogleCloudMlV1__SetDefaultVersionRequest" }, "GoogleLongrunning__Operation": { "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, "error": { "$ref": "GoogleRpc__Status", "description": "The error result of the operation in case of failure or cancellation." @@ -619,15 +1348,22 @@ "description": "Properties of the object. Contains field @type with type URL.", "type": "any" } + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" } }, "id": "GoogleLongrunning__Operation" }, "GoogleIamV1__AuditConfig": { - "id": "GoogleIamV1__AuditConfig", "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", "type": "object", "properties": { + "service": { + "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", + "type": "string" + }, "auditLogConfigs": { "description": "The configuration for logging of each type of permission.\nNext ID: 4", "items": { @@ -640,17 +1376,22 @@ "type": "string" }, "type": "array" - }, - "service": { - "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", - "type": "string" } - } + }, + "id": "GoogleIamV1__AuditConfig" }, "GoogleCloudMlV1__Model": { "description": "Represents a machine learning solution.\n\nA model can have multiple versions, each of which is a deployed, trained\nmodel ready to receive prediction requests. The model itself is just a\ncontainer.\n\nNext ID: 8", "type": "object", "properties": { + "description": { + "description": "Optional. The description specified for the model when it was created.", + "type": "string" + }, + "onlinePredictionLogging": { + "description": "Optional. If true, enables StackDriver Logging for online prediction.\nDefault is false.", + "type": "boolean" + }, "defaultVersion": { "description": "Output only. The default version of the model. This version will be used to\nhandle prediction requests that do not specify a version.\n\nYou can change the default version by calling\n[projects.methods.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).", "$ref": "GoogleCloudMlV1__Version" @@ -665,14 +1406,6 @@ "name": { "description": "Required. The name specified for the model when it was created.\n\nThe model name must be unique within the project it is created in.", "type": "string" - }, - "description": { - "description": "Optional. The description specified for the model when it was created.", - "type": "string" - }, - "onlinePredictionLogging": { - "description": "Optional. If true, enables StackDriver Logging for online prediction.\nDefault is false.", - "type": "boolean" } }, "id": "GoogleCloudMlV1__Model" @@ -684,7 +1417,6 @@ "id": "GoogleProtobuf__Empty" }, "GoogleCloudMlV1__ListVersionsResponse": { - "id": "GoogleCloudMlV1__ListVersionsResponse", "description": "Response message for the ListVersions method.", "type": "object", "properties": { @@ -699,7 +1431,8 @@ "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.", "type": "string" } - } + }, + "id": "GoogleCloudMlV1__ListVersionsResponse" }, "GoogleCloudMlV1__CancelJobRequest": { "description": "Request message for the CancelJob method.", @@ -708,7 +1441,6 @@ "id": "GoogleCloudMlV1__CancelJobRequest" }, "GoogleIamV1__TestIamPermissionsRequest": { - "id": "GoogleIamV1__TestIamPermissionsRequest", "description": "Request message for `TestIamPermissions` method.", "type": "object", "properties": { @@ -719,22 +1451,13 @@ }, "type": "array" } - } + }, + "id": "GoogleIamV1__TestIamPermissionsRequest" }, "GoogleRpc__Status": { - "id": "GoogleRpc__Status", "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { @@ -745,8 +1468,18 @@ } }, "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" } - } + }, + "id": "GoogleRpc__Status" }, "GoogleCloudMlV1__AutoScaling": { "description": "Options for automatically scaling a model.", @@ -760,49 +1493,10 @@ }, "id": "GoogleCloudMlV1__AutoScaling" }, - "GoogleCloudMlV1__ListModelsResponse": { - "description": "Response message for the ListModels method.", - "type": "object", - "properties": { - "models": { - "description": "The list of models.", - "items": { - "$ref": "GoogleCloudMlV1__Model" - }, - "type": "array" - }, - "nextPageToken": { - "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.", - "type": "string" - } - }, - "id": "GoogleCloudMlV1__ListModelsResponse" - }, "GoogleCloudMlV1__TrainingInput": { "description": "Represents input parameters for a training job.", "type": "object", "properties": { - "parameterServerCount": { - "format": "int64", - "description": "Optional. The number of parameter server replicas to use for the training\njob. Each replica in the cluster will be of the type specified in\n`parameter_server_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`.If you\nset this value, you must also set `parameter_server_type`.", - "type": "string" - }, - "packageUris": { - "description": "Required. The Google Cloud Storage location of the packages with\nthe training program and any additional dependencies.\nThe maximum number of package URIs is 100.", - "items": { - "type": "string" - }, - "type": "array" - }, - "workerCount": { - "format": "int64", - "description": "Optional. The number of worker replicas to use for the training job. Each\nreplica in the cluster will be of the type specified in `worker_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`. If you\nset this value, you must also set `worker_type`.", - "type": "string" - }, - "masterType": { - "description": "Optional. Specifies the type of virtual machine to use for your training\njob's master worker.\n\nThe following types are supported:\n\n\u003cdl\u003e\n \u003cdt\u003estandard\u003c/dt\u003e\n \u003cdd\u003e\n A basic machine configuration suitable for training simple models with\n small to moderate datasets.\n \u003c/dd\u003e\n \u003cdt\u003elarge_model\u003c/dt\u003e\n \u003cdd\u003e\n A machine with a lot of memory, specially suited for parameter servers\n when your model is large (having many hidden layers or layers with very\n large numbers of nodes).\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_s\u003c/dt\u003e\n \u003cdd\u003e\n A machine suitable for the master and workers of the cluster when your\n model requires more computation than the standard machine can handle\n satisfactorily.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_m\u003c/dt\u003e\n \u003cdd\u003e\n A machine with roughly twice the number of cores and roughly double the\n memory of \u003ccode suppresswarning=\"true\"\u003ecomplex_model_s\u003c/code\u003e.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_l\u003c/dt\u003e\n \u003cdd\u003e\n A machine with roughly twice the number of cores and roughly double the\n memory of \u003ccode suppresswarning=\"true\"\u003ecomplex_model_m\u003c/code\u003e.\n \u003c/dd\u003e\n \u003cdt\u003estandard_gpu\u003c/dt\u003e\n \u003cdd\u003e\n A machine equivalent to \u003ccode suppresswarning=\"true\"\u003estandard\u003c/code\u003e that\n also includes a\n \u003ca href=\"/ml-engine/docs/how-tos/using-gpus\"\u003e\n GPU that you can use in your trainer\u003c/a\u003e.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_m_gpu\u003c/dt\u003e\n \u003cdd\u003e\n A machine equivalent to\n \u003ccode suppresswarning=\"true\"\u003ecomplex_model_m\u003c/code\u003e that also includes\n four GPUs.\n \u003c/dd\u003e\n\u003c/dl\u003e\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.", - "type": "string" - }, "runtimeVersion": { "description": "Optional. The Google Cloud ML runtime version to use for training. If not\nset, Google Cloud ML will choose the latest stable version.", "type": "string" @@ -855,48 +1549,63 @@ "hyperparameters": { "$ref": "GoogleCloudMlV1__HyperparameterSpec", "description": "Optional. The set of Hyperparameters to tune." + }, + "parameterServerCount": { + "format": "int64", + "description": "Optional. The number of parameter server replicas to use for the training\njob. Each replica in the cluster will be of the type specified in\n`parameter_server_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`.If you\nset this value, you must also set `parameter_server_type`.", + "type": "string" + }, + "packageUris": { + "description": "Required. The Google Cloud Storage location of the packages with\nthe training program and any additional dependencies.\nThe maximum number of package URIs is 100.", + "items": { + "type": "string" + }, + "type": "array" + }, + "workerCount": { + "format": "int64", + "description": "Optional. The number of worker replicas to use for the training job. Each\nreplica in the cluster will be of the type specified in `worker_type`.\n\nThis value can only be used when `scale_tier` is set to `CUSTOM`. If you\nset this value, you must also set `worker_type`.", + "type": "string" + }, + "masterType": { + "description": "Optional. Specifies the type of virtual machine to use for your training\njob's master worker.\n\nThe following types are supported:\n\n\u003cdl\u003e\n \u003cdt\u003estandard\u003c/dt\u003e\n \u003cdd\u003e\n A basic machine configuration suitable for training simple models with\n small to moderate datasets.\n \u003c/dd\u003e\n \u003cdt\u003elarge_model\u003c/dt\u003e\n \u003cdd\u003e\n A machine with a lot of memory, specially suited for parameter servers\n when your model is large (having many hidden layers or layers with very\n large numbers of nodes).\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_s\u003c/dt\u003e\n \u003cdd\u003e\n A machine suitable for the master and workers of the cluster when your\n model requires more computation than the standard machine can handle\n satisfactorily.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_m\u003c/dt\u003e\n \u003cdd\u003e\n A machine with roughly twice the number of cores and roughly double the\n memory of \u003ccode suppresswarning=\"true\"\u003ecomplex_model_s\u003c/code\u003e.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_l\u003c/dt\u003e\n \u003cdd\u003e\n A machine with roughly twice the number of cores and roughly double the\n memory of \u003ccode suppresswarning=\"true\"\u003ecomplex_model_m\u003c/code\u003e.\n \u003c/dd\u003e\n \u003cdt\u003estandard_gpu\u003c/dt\u003e\n \u003cdd\u003e\n A machine equivalent to \u003ccode suppresswarning=\"true\"\u003estandard\u003c/code\u003e that\n also includes a\n \u003ca href=\"/ml-engine/docs/how-tos/using-gpus\"\u003e\n GPU that you can use in your trainer\u003c/a\u003e.\n \u003c/dd\u003e\n \u003cdt\u003ecomplex_model_m_gpu\u003c/dt\u003e\n \u003cdd\u003e\n A machine equivalent to\n \u003ccode suppresswarning=\"true\"\u003ecomplex_model_m\u003c/code\u003e that also includes\n four GPUs.\n \u003c/dd\u003e\n\u003c/dl\u003e\n\nYou must set this value when `scaleTier` is set to `CUSTOM`.", + "type": "string" } }, "id": "GoogleCloudMlV1__TrainingInput" }, + "GoogleCloudMlV1__ListModelsResponse": { + "description": "Response message for the ListModels method.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Optional. Pass this token as the `page_token` field of the request for a\nsubsequent call.", + "type": "string" + }, + "models": { + "description": "The list of models.", + "items": { + "$ref": "GoogleCloudMlV1__Model" + }, + "type": "array" + } + }, + "id": "GoogleCloudMlV1__ListModelsResponse" + }, "GoogleCloudMlV1__Job": { "description": "Represents a training or prediction job.\n\nNext ID: 16", "type": "object", "properties": { - "endTime": { - "format": "google-datetime", - "description": "Output only. When the job processing was completed.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Output only. When the job processing was started.", - "type": "string" - }, - "predictionOutput": { - "$ref": "GoogleCloudMlV1__PredictionOutput", - "description": "The current prediction job result." - }, - "trainingOutput": { - "$ref": "GoogleCloudMlV1__TrainingOutput", - "description": "The current training job result." - }, "trainingInput": { - "$ref": "GoogleCloudMlV1__TrainingInput", - "description": "Input parameters to create a training job." + "description": "Input parameters to create a training job.", + "$ref": "GoogleCloudMlV1__TrainingInput" }, "createTime": { "format": "google-datetime", "description": "Output only. When the job was created.", "type": "string" }, - "predictionInput": { - "description": "Input parameters to create a prediction job.", - "$ref": "GoogleCloudMlV1__PredictionInput" - }, "state": { - "description": "Output only. The detailed state of a job.", - "type": "string", "enumDescriptions": [ "The job state is unspecified.", "The job has been just created and processing has not yet begun.", @@ -916,7 +1625,13 @@ "FAILED", "CANCELLING", "CANCELLED" - ] + ], + "description": "Output only. The detailed state of a job.", + "type": "string" + }, + "predictionInput": { + "description": "Input parameters to create a prediction job.", + "$ref": "GoogleCloudMlV1__PredictionInput" }, "errorMessage": { "description": "Output only. The details of a failure or a cancellation.", @@ -925,27 +1640,40 @@ "jobId": { "description": "Required. The user-specified id of the job.", "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "Output only. When the job processing was completed.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Output only. When the job processing was started.", + "type": "string" + }, + "predictionOutput": { + "$ref": "GoogleCloudMlV1__PredictionOutput", + "description": "The current prediction job result." + }, + "trainingOutput": { + "$ref": "GoogleCloudMlV1__TrainingOutput", + "description": "The current training job result." } }, "id": "GoogleCloudMlV1__Job" }, "GoogleApi__HttpBody": { - "id": "GoogleApi__HttpBody", "description": "Message that represents an arbitrary HTTP body. It should only be used for\npayload formats that can't be represented as JSON, such as raw binary or\nan HTML page.\n\n\nThis message can be used both in streaming and non-streaming API methods in\nthe request as well as the response.\n\nIt can be used as a top-level request field, which is convenient if one\nwants to extract parameters from either the URL or HTTP template into the\nrequest fields and also want access to the raw HTTP body.\n\nExample:\n\n message GetResourceRequest {\n // A unique request id.\n string request_id = 1;\n\n // The raw HTTP body is bound to this field.\n google.api.HttpBody http_body = 2;\n }\n\n service ResourceService {\n rpc GetResource(GetResourceRequest) returns (google.api.HttpBody);\n rpc UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty);\n }\n\nExample with streaming methods:\n\n service CaldavService {\n rpc GetCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n rpc UpdateCalendar(stream google.api.HttpBody)\n returns (stream google.api.HttpBody);\n }\n\nUse of this type only changes how the request and response bodies are\nhandled, all other features will continue to work unchanged.", "type": "object", "properties": { - "contentType": { - "description": "The HTTP Content-Type string representing the content type of the body.", - "type": "string" - }, "extensions": { "description": "Application specific response metadata. Must be set in the first response\nfor streaming APIs.", "items": { - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "type": "object" }, "type": "array" }, @@ -953,21 +1681,26 @@ "format": "byte", "description": "HTTP body binary data.", "type": "string" + }, + "contentType": { + "description": "The HTTP Content-Type string representing the content type of the body.", + "type": "string" } - } + }, + "id": "GoogleApi__HttpBody" }, "GoogleCloudMlV1__GetConfigResponse": { "description": "Returns service account information associated with a project.", "type": "object", "properties": { + "serviceAccount": { + "description": "The service account Cloud ML uses to access resources in the project.", + "type": "string" + }, "serviceAccountProject": { "format": "int64", "description": "The project number for `service_account`.", "type": "string" - }, - "serviceAccount": { - "description": "The service account Cloud ML uses to access resources in the project.", - "type": "string" } }, "id": "GoogleCloudMlV1__GetConfigResponse" @@ -985,13 +1718,118 @@ } }, "id": "GoogleIamV1__TestIamPermissionsResponse" + }, + "GoogleCloudMlV1__HyperparameterOutput": { + "description": "Represents the result of a single hyperparameter tuning trial from a\ntraining job. The TrainingOutput object that is returned on successful\ncompletion of a training job with hyperparameter tuning includes a list\nof HyperparameterOutput objects, one for each successful trial.", + "type": "object", + "properties": { + "hyperparameters": { + "description": "The hyperparameters given to this trial.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "trialId": { + "description": "The trial id for these results.", + "type": "string" + }, + "allMetrics": { + "description": "All recorded object metrics for this trial.", + "items": { + "$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric" + }, + "type": "array" + }, + "finalMetric": { + "$ref": "GoogleCloudMlV1_HyperparameterOutput_HyperparameterMetric", + "description": "The final objective metric seen for this trial." + } + }, + "id": "GoogleCloudMlV1__HyperparameterOutput" + }, + "GoogleIamV1__SetIamPolicyRequest": { + "description": "Request message for `SetIamPolicy` method.", + "type": "object", + "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "GoogleIamV1__Policy" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", + "type": "string" + } + }, + "id": "GoogleIamV1__SetIamPolicyRequest" + }, + "GoogleCloudMlV1__PredictionOutput": { + "description": "Represents results of a prediction job.", + "type": "object", + "properties": { + "errorCount": { + "format": "int64", + "description": "The number of data instances which resulted in errors.", + "type": "string" + }, + "nodeHours": { + "format": "double", + "description": "Node hours used by the batch prediction job.", + "type": "number" + }, + "outputPath": { + "description": "The output Google Cloud Storage location provided at the job creation time.", + "type": "string" + }, + "predictionCount": { + "format": "int64", + "description": "The number of generated predictions.", + "type": "string" + } + }, + "id": "GoogleCloudMlV1__PredictionOutput" + }, + "GoogleIamV1__Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", + "properties": { + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + }, + "auditConfigs": { + "description": "Specifies cloud audit logging configuration for this policy.", + "items": { + "$ref": "GoogleIamV1__AuditConfig" + }, + "type": "array" + }, + "bindings": { + "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "GoogleIamV1__Binding" + }, + "type": "array" + }, + "iamOwned": { + "type": "boolean" + } + }, + "id": "GoogleIamV1__Policy" } }, - "protocol": "rest", "icons": { "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "canonicalName": "Cloud Machine Learning Engine", "auth": { "oauth2": { @@ -1002,843 +1840,5 @@ } } }, - "rootUrl": "https://ml.googleapis.com/", - "ownerDomain": "google.com", - "name": "ml", - "batchPath": "batch", - "title": "Google Cloud Machine Learning Engine", - "ownerName": "Google", - "resources": { - "projects": { - "methods": { - "predict": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "GoogleApi__HttpBody" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "Required. The resource name of a model or a version.\n\nAuthorization: requires the `predict` permission on the specified resource.", - "type": "string", - "required": true, - "pattern": "^projects/.+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}:predict", - "path": "v1/{+name}:predict", - "id": "ml.projects.predict", - "request": { - "$ref": "GoogleCloudMlV1__PredictRequest" - }, - "description": "Performs prediction on the data in the request.\n\n**** REMOVE FROM GENERATED DOCUMENTATION" - }, - "getConfig": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The project name.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}:getConfig", - "id": "ml.projects.getConfig", - "path": "v1/{+name}:getConfig", - "description": "Get the service account information associated with your project. You need\nthis information in order to grant the service account persmissions for\nthe Google Cloud Storage location where you put your model training code\nfor training the model with Google Cloud Machine Learning.", - "response": { - "$ref": "GoogleCloudMlV1__GetConfigResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET" - } - }, - "resources": { - "jobs": { - "methods": { - "getIamPolicy": { - "httpMethod": "GET", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "GoogleIamV1__Policy" - }, - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/jobs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "ml.projects.jobs.getIamPolicy", - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset." - }, - "get": { - "response": { - "$ref": "GoogleCloudMlV1__Job" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "Required. The name of the job to get the description of.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/jobs/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}", - "id": "ml.projects.jobs.get", - "path": "v1/{+name}", - "description": "Describes a job." - }, - "testIamPermissions": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/jobs/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "ml.projects.jobs.testIamPermissions", - "request": { - "$ref": "GoogleIamV1__TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "GoogleIamV1__TestIamPermissionsResponse" - } - }, - "list": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageToken": { - "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The number of jobs to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The name of the project for which to list jobs.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "filter": { - "description": "Optional. Specifies the subset of jobs to retrieve.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/jobs", - "path": "v1/{+parent}/jobs", - "id": "ml.projects.jobs.list", - "description": "Lists the jobs in the project.", - "httpMethod": "GET", - "response": { - "$ref": "GoogleCloudMlV1__ListJobsResponse" - }, - "parameterOrder": [ - "parent" - ] - }, - "create": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "description": "Required. The project name.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/jobs", - "path": "v1/{+parent}/jobs", - "id": "ml.projects.jobs.create", - "request": { - "$ref": "GoogleCloudMlV1__Job" - }, - "description": "Creates a training or a batch prediction job.", - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "GoogleCloudMlV1__Job" - } - }, - "setIamPolicy": { - "path": "v1/{+resource}:setIamPolicy", - "id": "ml.projects.jobs.setIamPolicy", - "request": { - "$ref": "GoogleIamV1__SetIamPolicyRequest" - }, - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "GoogleIamV1__Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/jobs/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:setIamPolicy" - }, - "cancel": { - "parameters": { - "name": { - "description": "Required. The name of the job to cancel.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/jobs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/jobs/{jobsId}:cancel", - "id": "ml.projects.jobs.cancel", - "path": "v1/{+name}:cancel", - "description": "Cancels a running job.", - "request": { - "$ref": "GoogleCloudMlV1__CancelJobRequest" - }, - "response": { - "$ref": "GoogleProtobuf__Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST" - } - } - }, - "models": { - "methods": { - "getIamPolicy": { - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "response": { - "$ref": "GoogleIamV1__Policy" - }, - "httpMethod": "GET", - "parameterOrder": [ - "resource" - ], - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}:getIamPolicy", - "id": "ml.projects.models.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy" - }, - "get": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "Required. The name of the model.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/models/{modelsId}", - "id": "ml.projects.models.get", - "path": "v1/{+name}", - "description": "Gets information about a model, including its name, the description (if\nset), and the default version (if at least one version of the model has\nbeen deployed).", - "response": { - "$ref": "GoogleCloudMlV1__Model" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET" - }, - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "GoogleIamV1__TestIamPermissionsRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "GoogleIamV1__TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "ml.projects.models.testIamPermissions" - }, - "delete": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path", - "description": "Required. The name of the model.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/models/{modelsId}", - "id": "ml.projects.models.delete", - "path": "v1/{+name}", - "description": "Deletes a model.\n\nYou can only delete a model if there are no versions in it. You can delete\nversions by calling\n[projects.models.versions.delete](/ml-engine/reference/rest/v1/projects.models.versions/delete).", - "response": { - "$ref": "GoogleLongrunning__Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE" - }, - "list": { - "description": "Lists the models in a project.\n\nEach project can contain multiple models, and each model can have multiple\nversions.", - "httpMethod": "GET", - "response": { - "$ref": "GoogleCloudMlV1__ListModelsResponse" - }, - "parameterOrder": [ - "parent" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The name of the project whose models are to be listed.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The number of models to retrieve per \"page\" of results. If there\nare more remaining results than this number, the response message will\ncontain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models", - "path": "v1/{+parent}/models", - "id": "ml.projects.models.list" - }, - "setIamPolicy": { - "path": "v1/{+resource}:setIamPolicy", - "id": "ml.projects.models.setIamPolicy", - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "GoogleIamV1__SetIamPolicyRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "GoogleIamV1__Policy" - }, - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}:setIamPolicy" - }, - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "GoogleCloudMlV1__Model" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "Required. The project name.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/models", - "path": "v1/{+parent}/models", - "id": "ml.projects.models.create", - "request": { - "$ref": "GoogleCloudMlV1__Model" - }, - "description": "Creates a model which will later contain one or more versions.\n\nYou must add at least one version before you can request predictions from\nthe model. Add versions by calling\n[projects.models.versions.create](/ml-engine/reference/rest/v1/projects.models.versions/create)." - } - }, - "resources": { - "versions": { - "methods": { - "create": { - "response": { - "$ref": "GoogleLongrunning__Operation" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "description": "Required. The name of the model.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions", - "id": "ml.projects.models.versions.create", - "path": "v1/{+parent}/versions", - "description": "Creates a new version of a model from a trained TensorFlow model.\n\nIf the version created in the cloud by this call is the first deployed\nversion of the specified model, it will be made the default version of the\nmodel. When you add a version to a model that already has one or more\nversions, the default version does not automatically change. If you want a\nnew version to be the default, you must call\n[projects.models.versions.setDefault](/ml-engine/reference/rest/v1/projects.models.versions/setDefault).", - "request": { - "$ref": "GoogleCloudMlV1__Version" - } - }, - "setDefault": { - "description": "Designates a version to be the default for the model.\n\nThe default version is used for prediction requests made against the model\nthat don't specify a version.\n\nThe first version to be created for a model is automatically set as the\ndefault. You must make any subsequent changes to the default version\nsetting manually using this method.", - "request": { - "$ref": "GoogleCloudMlV1__SetDefaultVersionRequest" - }, - "response": { - "$ref": "GoogleCloudMlV1__Version" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "description": "Required. The name of the version to make the default for the model. You\ncan get the names of all the versions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}:setDefault", - "id": "ml.projects.models.versions.setDefault", - "path": "v1/{+name}:setDefault" - }, - "delete": { - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "Required. The name of the version. You can get the names of all the\nversions of a model by calling\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list).", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}", - "path": "v1/{+name}", - "id": "ml.projects.models.versions.delete", - "description": "Deletes a model version.\n\nEach model can have multiple versions deployed and in use at any given\ntime. Use this method to remove a single version.\n\nNote: You cannot delete the version that is set as the default version\nof the model unless it is the only remaining version.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "GoogleLongrunning__Operation" - } - }, - "get": { - "id": "ml.projects.models.versions.get", - "path": "v1/{+name}", - "description": "Gets information about a model version.\n\nModels can have multiple versions. You can call\n[projects.models.versions.list](/ml-engine/reference/rest/v1/projects.models.versions/list)\nto get the same information that this method returns for all of the\nversions of a model.", - "response": { - "$ref": "GoogleCloudMlV1__Version" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "description": "Required. The name of the version.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+/versions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions/{versionsId}" - }, - "list": { - "id": "ml.projects.models.versions.list", - "path": "v1/{+parent}/versions", - "description": "Gets basic information about all the versions of a model.\n\nIf you expect that a model has a lot of versions, or if you need to handle\nonly a limited number of results at a time, you can request that the list\nbe retrieved in batches (called pages):", - "response": { - "$ref": "GoogleCloudMlV1__ListVersionsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "pageToken": { - "description": "Optional. A page token to request the next page of results.\n\nYou get the token from the `next_page_token` field of the response from\nthe previous call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Optional. The number of versions to retrieve per \"page\" of results. If\nthere are more remaining results than this number, the response message\nwill contain a valid value in the `next_page_token` field.\n\nThe default value is 20, and the maximum page size is 100.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The name of the model for which to list the version.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/models/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/models/{modelsId}/versions" - } - } - } - } - }, - "operations": { - "methods": { - "delete": { - "parameters": { - "name": { - "pattern": "^projects/[^/]+/operations/[^/]+$", - "location": "path", - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", - "path": "v1/{+name}", - "id": "ml.projects.operations.delete", - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "GoogleProtobuf__Empty" - } - }, - "get": { - "response": { - "$ref": "GoogleLongrunning__Operation" - }, - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/operations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/operations/{operationsId}", - "id": "ml.projects.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", - "response": { - "$ref": "GoogleLongrunning__ListOperationsResponse" - }, - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "filter": { - "location": "query", - "description": "The standard list filter.", - "type": "string" - }, - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "name": { - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - } - }, - "flatPath": "v1/projects/{projectsId}/operations", - "path": "v1/{+name}/operations", - "id": "ml.projects.operations.list" - }, - "cancel": { - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", - "httpMethod": "POST", - "response": { - "$ref": "GoogleProtobuf__Empty" - }, - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^projects/[^/]+/operations/[^/]+$", - "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/operations/{operationsId}:cancel", - "path": "v1/{+name}:cancel", - "id": "ml.projects.operations.cancel" - } - } - } - } - } - }, - "parameters": { - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - } - }, - "version": "v1", - "baseUrl": "https://ml.googleapis.com/", - "kind": "discovery#restDescription", - "description": "An API to enable creating and using machine learning models.", - "servicePath": "", - "basePath": "", - "id": "ml:v1", - "revision": "20170825", - "documentationLink": "https://cloud.google.com/ml/", - "discoveryVersion": "v1" + "rootUrl": "https://ml.googleapis.com/" } diff --git a/vendor/google.golang.org/api/monitoring/v3/monitoring-api.json b/vendor/google.golang.org/api/monitoring/v3/monitoring-api.json index 85d3af5..180a110 100644 --- a/vendor/google.golang.org/api/monitoring/v3/monitoring-api.json +++ b/vendor/google.golang.org/api/monitoring/v3/monitoring-api.json @@ -1,11 +1,875 @@ { - "revision": "20170822", - "documentationLink": "https://cloud.google.com/monitoring/api/", + "resources": { + "projects": { + "resources": { + "timeSeries": { + "methods": { + "list": { + "flatPath": "v3/projects/{projectsId}/timeSeries", + "id": "monitoring.projects.timeSeries.list", + "path": "v3/{+name}/timeSeries", + "description": "Lists time series that match a filter. This method does not require a Stackdriver account.", + "response": { + "$ref": "ListTimeSeriesResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read" + ], + "parameters": { + "aggregation.crossSeriesReducer": { + "location": "query", + "enum": [ + "REDUCE_NONE", + "REDUCE_MEAN", + "REDUCE_MIN", + "REDUCE_MAX", + "REDUCE_SUM", + "REDUCE_STDDEV", + "REDUCE_COUNT", + "REDUCE_COUNT_TRUE", + "REDUCE_FRACTION_TRUE", + "REDUCE_PERCENTILE_99", + "REDUCE_PERCENTILE_95", + "REDUCE_PERCENTILE_50", + "REDUCE_PERCENTILE_05" + ], + "description": "The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.", + "type": "string" + }, + "filter": { + "location": "query", + "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n metric.label.instance_name = \"my-instance-name\"\n", + "type": "string" + }, + "pageToken": { + "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", + "type": "string", + "location": "query" + }, + "aggregation.perSeriesAligner": { + "description": "The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.", + "type": "string", + "location": "query", + "enum": [ + "ALIGN_NONE", + "ALIGN_DELTA", + "ALIGN_RATE", + "ALIGN_INTERPOLATE", + "ALIGN_NEXT_OLDER", + "ALIGN_MIN", + "ALIGN_MAX", + "ALIGN_MEAN", + "ALIGN_COUNT", + "ALIGN_SUM", + "ALIGN_STDDEV", + "ALIGN_COUNT_TRUE", + "ALIGN_FRACTION_TRUE", + "ALIGN_PERCENTILE_99", + "ALIGN_PERCENTILE_95", + "ALIGN_PERCENTILE_50", + "ALIGN_PERCENTILE_05" + ] + }, + "interval.startTime": { + "location": "query", + "format": "google-datetime", + "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.", + "type": "string" + }, + "view": { + "description": "Specifies which information is returned about the time series.", + "type": "string", + "location": "query", + "enum": [ + "FULL", + "HEADERS" + ] + }, + "name": { + "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "aggregation.groupByFields": { + "location": "query", + "description": "The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.", + "type": "string", + "repeated": true + }, + "interval.endTime": { + "format": "google-datetime", + "description": "Required. The end of the time interval.", + "type": "string", + "location": "query" + }, + "aggregation.alignmentPeriod": { + "format": "google-duration", + "description": "The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.", + "type": "string", + "location": "query" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "A positive number that is the maximum number of results to return. When view field sets to FULL, it limits the number of Points server will return; if view field is HEADERS, it limits the number of TimeSeries server will return.", + "type": "integer" + }, + "orderBy": { + "description": "Specifies the order in which the points of the time series should be returned. By default, results are not ordered. Currently, this field must be left blank.", + "type": "string", + "location": "query" + } + } + }, + "create": { + "description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response.", + "request": { + "$ref": "CreateTimeSeriesRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "location": "path", + "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.write" + ], + "flatPath": "v3/projects/{projectsId}/timeSeries", + "id": "monitoring.projects.timeSeries.create", + "path": "v3/{+name}/timeSeries" + } + } + }, + "metricDescriptors": { + "methods": { + "delete": { + "description": "Deletes a metric descriptor. Only user-created custom metrics can be deleted.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "name": { + "description": "The metric descriptor on which to execute the request. The format is \"projects/{project_id_or_number}/metricDescriptors/{metric_id}\". An example of {metric_id} is: \"custom.googleapis.com/my_test_metric\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/metricDescriptors/.+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring" + ], + "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}", + "path": "v3/{+name}", + "id": "monitoring.projects.metricDescriptors.delete" + }, + "get": { + "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}", + "path": "v3/{+name}", + "id": "monitoring.projects.metricDescriptors.get", + "description": "Gets a single metric descriptor. This method does not require a Stackdriver account.", + "httpMethod": "GET", + "response": { + "$ref": "MetricDescriptor" + }, + "parameterOrder": [ + "name" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read", + "https://www.googleapis.com/auth/monitoring.write" + ], + "parameters": { + "name": { + "description": "The metric descriptor on which to execute the request. The format is \"projects/{project_id_or_number}/metricDescriptors/{metric_id}\". An example value of {metric_id} is \"compute.googleapis.com/instance/disk/read_bytes_count\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/metricDescriptors/.+$", + "location": "path" + } + } + }, + "list": { + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ListMetricDescriptorsResponse" + }, + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "A positive number that is the maximum number of results to return.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics:\nmetric.type = starts_with(\"custom.googleapis.com/\")\n", + "type": "string" + }, + "pageToken": { + "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read", + "https://www.googleapis.com/auth/monitoring.write" + ], + "flatPath": "v3/projects/{projectsId}/metricDescriptors", + "path": "v3/{+name}/metricDescriptors", + "id": "monitoring.projects.metricDescriptors.list", + "description": "Lists metric descriptors that match a filter. This method does not require a Stackdriver account." + }, + "create": { + "flatPath": "v3/projects/{projectsId}/metricDescriptors", + "path": "v3/{+name}/metricDescriptors", + "id": "monitoring.projects.metricDescriptors.create", + "description": "Creates a new metric descriptor. User-created metric descriptors define custom metrics.", + "request": { + "$ref": "MetricDescriptor" + }, + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "MetricDescriptor" + }, + "parameters": { + "name": { + "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.write" + ] + } + } + }, + "monitoredResourceDescriptors": { + "methods": { + "get": { + "description": "Gets a single monitored resource descriptor. This method does not require a Stackdriver account.", + "response": { + "$ref": "MonitoredResourceDescriptor" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The monitored resource descriptor to get. The format is \"projects/{project_id_or_number}/monitoredResourceDescriptors/{resource_type}\". The {resource_type} is a predefined type, such as cloudsql_database.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/monitoredResourceDescriptors/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read", + "https://www.googleapis.com/auth/monitoring.write" + ], + "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors/{monitoredResourceDescriptorsId}", + "id": "monitoring.projects.monitoredResourceDescriptors.get", + "path": "v3/{+name}" + }, + "list": { + "description": "Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account.", + "response": { + "$ref": "ListMonitoredResourceDescriptorsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read", + "https://www.googleapis.com/auth/monitoring.write" + ], + "parameters": { + "filter": { + "location": "query", + "description": "An optional filter describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:\nresource.type = starts_with(\"gce_\") AND resource.label:id\n", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", + "type": "string" + }, + "name": { + "location": "path", + "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + }, + "pageSize": { + "format": "int32", + "description": "A positive number that is the maximum number of results to return.", + "type": "integer", + "location": "query" + } + }, + "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors", + "id": "monitoring.projects.monitoredResourceDescriptors.list", + "path": "v3/{+name}/monitoredResourceDescriptors" + } + } + }, + "groups": { + "methods": { + "get": { + "description": "Gets a single group.", + "response": { + "$ref": "Group" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "description": "The group to retrieve. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/groups/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read" + ], + "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", + "id": "monitoring.projects.groups.get", + "path": "v3/{+name}" + }, + "list": { + "description": "Lists the existing groups.", + "response": { + "$ref": "ListGroupsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "pageSize": { + "format": "int32", + "description": "A positive number that is the maximum number of results to return.", + "type": "integer", + "location": "query" + }, + "ancestorsOfGroup": { + "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The project whose groups are to be listed. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "childrenOfGroup": { + "location": "query", + "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns groups whose parentName field contains the group name. If no groups have this parent, the results are empty.", + "type": "string" + }, + "descendantsOfGroup": { + "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns the descendants of the specified group. This is a superset of the results returned by the childrenOfGroup filter, and includes children-of-children, and so forth.", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read" + ], + "flatPath": "v3/projects/{projectsId}/groups", + "id": "monitoring.projects.groups.list", + "path": "v3/{+name}/groups" + }, + "update": { + "description": "Updates an existing group. You can change any group attributes except name.", + "request": { + "$ref": "Group" + }, + "httpMethod": "PUT", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Group" + }, + "parameters": { + "validateOnly": { + "location": "query", + "description": "If true, validate this request but do not update the existing group.", + "type": "boolean" + }, + "name": { + "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/groups/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring" + ], + "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", + "path": "v3/{+name}", + "id": "monitoring.projects.groups.update" + }, + "create": { + "response": { + "$ref": "Group" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "validateOnly": { + "location": "query", + "description": "If true, validate this request but do not create the group.", + "type": "boolean" + }, + "name": { + "description": "The project in which to create the group. The format is \"projects/{project_id_or_number}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring" + ], + "flatPath": "v3/projects/{projectsId}/groups", + "id": "monitoring.projects.groups.create", + "path": "v3/{+name}/groups", + "description": "Creates a new group.", + "request": { + "$ref": "Group" + } + }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring" + ], + "parameters": { + "name": { + "location": "path", + "description": "The group to delete. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/groups/[^/]+$" + } + }, + "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", + "id": "monitoring.projects.groups.delete", + "path": "v3/{+name}", + "description": "Deletes an existing group." + } + }, + "resources": { + "members": { + "methods": { + "list": { + "description": "Lists the monitored resources that are members of a group.", + "response": { + "$ref": "ListGroupMembersResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "interval.startTime": { + "location": "query", + "format": "google-datetime", + "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time.", + "type": "string" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "A positive number that is the maximum number of results to return.", + "type": "integer" + }, + "name": { + "location": "path", + "description": "The group whose members are listed. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/groups/[^/]+$" + }, + "interval.endTime": { + "format": "google-datetime", + "description": "Required. The end of the time interval.", + "type": "string", + "location": "query" + }, + "filter": { + "location": "query", + "description": "An optional list filter describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter:\nresource.type = \"gce_instance\"\n", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.read" + ], + "flatPath": "v3/projects/{projectsId}/groups/{groupsId}/members", + "id": "monitoring.projects.groups.members.list", + "path": "v3/{+name}/members" + } + } + } + } + }, + "collectdTimeSeries": { + "methods": { + "create": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/monitoring", + "https://www.googleapis.com/auth/monitoring.write" + ], + "parameters": { + "name": { + "description": "The project in which to create the time series. The format is \"projects/PROJECT_ID_OR_NUMBER\".", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v3/projects/{projectsId}/collectdTimeSeries", + "id": "monitoring.projects.collectdTimeSeries.create", + "path": "v3/{+name}/collectdTimeSeries", + "request": { + "$ref": "CreateCollectdTimeSeriesRequest" + }, + "description": "Stackdriver Monitoring Agent only: Creates a new time series.\u003caside class=\"caution\"\u003eThis method is only for use by the Stackdriver Monitoring Agent. Use projects.timeSeries.create instead.\u003c/aside\u003e" + } + } + } + } + } + }, + "parameters": { + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + } + }, + "version": "v3", + "baseUrl": "https://monitoring.googleapis.com/", + "servicePath": "", + "description": "Manages your Stackdriver Monitoring data and configurations. Most projects must be associated with a Stackdriver account, with a few exceptions as noted on the individual method pages.", + "kind": "discovery#restDescription", + "basePath": "", "id": "monitoring:v3", + "documentationLink": "https://cloud.google.com/monitoring/api/", + "revision": "20170822", "discoveryVersion": "v1", "version_module": true, "schemas": { + "TypedValue": { + "description": "A single strongly-typed value.", + "type": "object", + "properties": { + "stringValue": { + "description": "A variable-length string value.", + "type": "string" + }, + "boolValue": { + "description": "A Boolean value: true or false.", + "type": "boolean" + }, + "doubleValue": { + "format": "double", + "description": "A 64-bit double-precision floating-point number. Its magnitude is approximately ±10\u003csup\u003e±300\u003c/sup\u003e and it has 16 significant digits of precision.", + "type": "number" + }, + "int64Value": { + "format": "int64", + "description": "A 64-bit integer. Its range is approximately ±9.2x10\u003csup\u003e18\u003c/sup\u003e.", + "type": "string" + }, + "distributionValue": { + "description": "A distribution value.", + "$ref": "Distribution" + } + }, + "id": "TypedValue" + }, + "CollectdPayload": { + "description": "A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.", + "type": "object", + "properties": { + "values": { + "description": "The measured values during this time interval. Each value must have a different dataSourceName.", + "items": { + "$ref": "CollectdValue" + }, + "type": "array" + }, + "typeInstance": { + "description": "The measurement type instance. Example: \"used\".", + "type": "string" + }, + "metadata": { + "description": "The measurement metadata. Example: \"process_id\" -\u003e 12345", + "type": "object", + "additionalProperties": { + "$ref": "TypedValue" + } + }, + "type": { + "description": "The measurement type. Example: \"memory\".", + "type": "string" + }, + "plugin": { + "description": "The name of the plugin. Example: \"disk\".", + "type": "string" + }, + "pluginInstance": { + "description": "The instance name of the plugin Example: \"hdcl\".", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "The end time of the interval.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The start time of the interval.", + "type": "string" + } + }, + "id": "CollectdPayload" + }, + "Linear": { + "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1)).", + "type": "object", + "properties": { + "offset": { + "format": "double", + "description": "Lower bound of the first bucket.", + "type": "number" + }, + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + }, + "width": { + "format": "double", + "description": "Must be greater than 0.", + "type": "number" + } + }, + "id": "Linear" + }, + "Option": { + "description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.", + "type": "object", + "properties": { + "value": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.", + "type": "object" + }, + "name": { + "description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, \"map_entry\". For custom options, it should be the fully-qualified name. For example, \"google.api.http\".", + "type": "string" + } + }, + "id": "Option" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", + "type": "object", + "properties": {}, + "id": "Empty" + }, "Explicit": { + "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): boundsi Lower bound (1 \u003c= i \u003c N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets.", "type": "object", "properties": { "bounds": { @@ -17,10 +881,10 @@ "type": "array" } }, - "id": "Explicit", - "description": "Specifies a set of buckets with arbitrary widths.There are size(bounds) + 1 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): boundsi Lower bound (1 \u003c= i \u003c N); boundsi - 1The bounds field must contain at least one element. If bounds has only one element, then there are no finite buckets, and that single element is the common boundary of the overflow and underflow buckets." + "id": "Explicit" }, "TimeInterval": { + "description": "A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time.", "type": "object", "properties": { "endTime": { @@ -34,12 +898,17 @@ "type": "string" } }, - "id": "TimeInterval", - "description": "A time interval extending just after a start time through an end time. If the start time is the same as the end time, then the interval represents a single point in time." + "id": "TimeInterval" }, "Exponential": { + "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1)).", "type": "object", "properties": { + "numFiniteBuckets": { + "format": "int32", + "description": "Must be greater than 0.", + "type": "integer" + }, "growthFactor": { "format": "double", "description": "Must be greater than 1.", @@ -49,45 +918,39 @@ "format": "double", "description": "Must be greater than 0.", "type": "number" - }, - "numFiniteBuckets": { - "format": "int32", - "description": "Must be greater than 0.", - "type": "integer" } }, - "id": "Exponential", - "description": "Specifies an exponential sequence of buckets that have a width that is proportional to the value of the lower bound. Each bucket represents a constant relative uncertainty on a specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): scale * (growth_factor ^ i). Lower bound (1 \u003c= i \u003c N): scale * (growth_factor ^ (i - 1))." + "id": "Exponential" }, "Point": { - "id": "Point", "description": "A single data point in a time series.", "type": "object", "properties": { - "value": { - "$ref": "TypedValue", - "description": "The value of the data point." - }, "interval": { "description": "The time interval to which the data point applies. For GAUGE metrics, only the end time of the interval is used. For DELTA metrics, the start and end time should specify a non-zero interval, with subsequent points specifying contiguous and non-overlapping intervals. For CUMULATIVE metrics, the start and end time should specify a non-zero interval, with subsequent points specifying the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points.", "$ref": "TimeInterval" + }, + "value": { + "$ref": "TypedValue", + "description": "The value of the data point." } - } + }, + "id": "Point" }, "Metric": { "description": "A specific metric, identified by specifying values for all of the labels of a MetricDescriptor.", "type": "object", "properties": { - "type": { - "description": "An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.", - "type": "string" - }, "labels": { - "type": "object", "additionalProperties": { "type": "string" }, - "description": "The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values." + "description": "The set of label values that uniquely identify this metric. All labels listed in the MetricDescriptor must be assigned values.", + "type": "object" + }, + "type": { + "description": "An existing metric type, see google.api.MetricDescriptor. For example, custom.googleapis.com/invoice/paid/amount.", + "type": "string" } }, "id": "Metric" @@ -96,12 +959,12 @@ "description": "A single field of a message type.", "type": "object", "properties": { - "number": { - "format": "int32", - "description": "The field number.", - "type": "integer" + "jsonName": { + "description": "The field JSON name.", + "type": "string" }, "kind": { + "description": "The field type.", "type": "string", "enumDescriptions": [ "Field type unknown.", @@ -144,19 +1007,14 @@ "TYPE_SFIXED64", "TYPE_SINT32", "TYPE_SINT64" - ], - "description": "The field type." - }, - "jsonName": { - "description": "The field JSON name.", - "type": "string" + ] }, "options": { + "description": "The protocol buffer options.", "items": { "$ref": "Option" }, - "type": "array", - "description": "The protocol buffer options." + "type": "array" }, "oneofIndex": { "format": "int32", @@ -164,8 +1022,8 @@ "type": "integer" }, "packed": { - "type": "boolean", - "description": "Whether to use alternative packed wire representation." + "description": "Whether to use alternative packed wire representation.", + "type": "boolean" }, "cardinality": { "enumDescriptions": [ @@ -194,16 +1052,37 @@ "typeUrl": { "description": "The field type URL, without the scheme, for message or enumeration types. Example: \"type.googleapis.com/google.protobuf.Timestamp\".", "type": "string" + }, + "number": { + "format": "int32", + "description": "The field number.", + "type": "integer" } }, "id": "Field" }, - "LabelDescriptor": { + "ListTimeSeriesResponse": { + "description": "The ListTimeSeries response.", + "type": "object", "properties": { - "key": { - "description": "The label key.", - "type": "string" + "timeSeries": { + "description": "One or more time series that match the filter included in the request.", + "items": { + "$ref": "TimeSeries" + }, + "type": "array" }, + "nextPageToken": { + "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.", + "type": "string" + } + }, + "id": "ListTimeSeriesResponse" + }, + "LabelDescriptor": { + "description": "A description of a label.", + "type": "object", + "properties": { "description": { "description": "A human-readable description for the label.", "type": "string" @@ -221,34 +1100,22 @@ "BOOL", "INT64" ] - } - }, - "id": "LabelDescriptor", - "description": "A description of a label.", - "type": "object" - }, - "ListTimeSeriesResponse": { - "properties": { - "timeSeries": { - "description": "One or more time series that match the filter included in the request.", - "items": { - "$ref": "TimeSeries" - }, - "type": "array" }, - "nextPageToken": { - "type": "string", - "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method." + "key": { + "description": "The label key.", + "type": "string" } }, - "id": "ListTimeSeriesResponse", - "description": "The ListTimeSeries response.", - "type": "object" + "id": "LabelDescriptor" }, "Group": { "description": "The description of a dynamic collection of monitored resources. Each group has a filter that is matched against monitored resources and their associated metadata. If a group's filter matches an available monitored resource, then that resource is a member of that group. Groups can contain any number of monitored resources, and each monitored resource can be a member of any number of groups.Groups can be nested in parent-child hierarchies. The parentName field identifies an optional parent for each group. If a group has a parent, then the only monitored resources available to be matched by the group's filter are the resources contained in the parent group. In other words, a group contains the monitored resources that match its filter and the filters of all the group's ancestors. A group without a parent can contain any monitored resource.For example, consider an infrastructure running a set of instances with two user-defined tags: \"environment\" and \"role\". A parent group has a filter, environment=\"production\". A child of that parent group has a filter, role=\"transcoder\". The parent group contains all instances in the production environment, regardless of their roles. The child group contains instances that have the transcoder role and are in the production environment.The monitored resources contained in a group can change at any moment, depending on what resources exist and what filters are associated with the group and its ancestors.", "type": "object", "properties": { + "filter": { + "description": "The filter used to determine which monitored resources belong to this group.", + "type": "string" + }, "parentName": { "description": "The name of the group's parent, if it has one. The format is \"projects/{project_id_or_number}/groups/{group_id}\". For groups with no parent, parentName is the empty string, \"\".", "type": "string" @@ -264,10 +1131,6 @@ "isCluster": { "description": "If true, the members of this group are considered to be a cluster. The system can perform additional analysis on groups that are clusters.", "type": "boolean" - }, - "filter": { - "type": "string", - "description": "The filter used to determine which monitored resources belong to this group." } }, "id": "Group" @@ -276,10 +1139,6 @@ "description": "A protocol buffer message type.", "type": "object", "properties": { - "name": { - "description": "The fully qualified message name.", - "type": "string" - }, "oneofs": { "description": "The list of types appearing in oneof definitions in this type.", "items": { @@ -288,10 +1147,12 @@ "type": "array" }, "sourceContext": { - "$ref": "SourceContext", - "description": "The source context." + "description": "The source context.", + "$ref": "SourceContext" }, "syntax": { + "description": "The source syntax.", + "type": "string", "enumDescriptions": [ "Syntax proto2.", "Syntax proto3." @@ -299,16 +1160,14 @@ "enum": [ "SYNTAX_PROTO2", "SYNTAX_PROTO3" - ], - "description": "The source syntax.", - "type": "string" + ] }, "options": { + "description": "The protocol buffer options.", "items": { "$ref": "Option" }, - "type": "array", - "description": "The protocol buffer options." + "type": "array" }, "fields": { "description": "The list of fields.", @@ -316,38 +1175,49 @@ "$ref": "Field" }, "type": "array" + }, + "name": { + "description": "The fully qualified message name.", + "type": "string" } }, "id": "Type" }, "BucketOptions": { - "id": "BucketOptions", "description": "BucketOptions describes the bucket boundaries used to create a histogram for the distribution. The buckets can be in a linear sequence, an exponential sequence, or each bucket can be specified explicitly. BucketOptions does not include the number of values in each bucket.A bucket has an inclusive lower bound and exclusive upper bound for the values that are counted for that bucket. The upper bound of a bucket must be strictly greater than the lower bound. The sequence of N buckets for a distribution consists of an underflow bucket (number 0), zero or more finite buckets (number 1 through N - 2) and an overflow bucket (number N - 1). The buckets are contiguous: the lower bound of bucket i (i \u003e 0) is the same as the upper bound of bucket i - 1. The buckets span the whole range of finite values: lower bound of the underflow bucket is -infinity and the upper bound of the overflow bucket is +infinity. The finite buckets are so-called because both bounds are finite.", "type": "object", "properties": { - "exponentialBuckets": { - "description": "The exponential buckets.", - "$ref": "Exponential" - }, "explicitBuckets": { - "$ref": "Explicit", - "description": "The explicit buckets." + "description": "The explicit buckets.", + "$ref": "Explicit" }, "linearBuckets": { - "description": "The linear bucket.", - "$ref": "Linear" + "$ref": "Linear", + "description": "The linear bucket." + }, + "exponentialBuckets": { + "$ref": "Exponential", + "description": "The exponential buckets." } - } + }, + "id": "BucketOptions" }, "CollectdValue": { "description": "A single data point from a collectd-based plugin.", "type": "object", "properties": { "value": { - "$ref": "TypedValue", - "description": "The measurement value." + "description": "The measurement value.", + "$ref": "TypedValue" }, "dataSourceType": { + "enumDescriptions": [ + "An unspecified data source type. This corresponds to google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.", + "An instantaneous measurement of a varying quantity. This corresponds to google.api.MetricDescriptor.MetricKind.GAUGE.", + "A cumulative value over time. This corresponds to google.api.MetricDescriptor.MetricKind.CUMULATIVE.", + "A rate of change of the measurement.", + "An amount of change since the last measurement interval. This corresponds to google.api.MetricDescriptor.MetricKind.DELTA." + ], "enum": [ "UNSPECIFIED_DATA_SOURCE_TYPE", "GAUGE", @@ -356,14 +1226,7 @@ "ABSOLUTE" ], "description": "The type of measurement.", - "type": "string", - "enumDescriptions": [ - "An unspecified data source type. This corresponds to google.api.MetricDescriptor.MetricKind.METRIC_KIND_UNSPECIFIED.", - "An instantaneous measurement of a varying quantity. This corresponds to google.api.MetricDescriptor.MetricKind.GAUGE.", - "A cumulative value over time. This corresponds to google.api.MetricDescriptor.MetricKind.CUMULATIVE.", - "A rate of change of the measurement.", - "An amount of change since the last measurement interval. This corresponds to google.api.MetricDescriptor.MetricKind.DELTA." - ] + "type": "string" }, "dataSourceName": { "description": "The data source for the collectd value. For example there are two data sources for network measurements: \"rx\" and \"tx\".", @@ -373,6 +1236,7 @@ "id": "CollectdValue" }, "SourceContext": { + "description": "SourceContext represents information about the source of a protobuf element, like the file in which it is defined.", "type": "object", "properties": { "fileName": { @@ -380,13 +1244,24 @@ "type": "string" } }, - "id": "SourceContext", - "description": "SourceContext represents information about the source of a protobuf element, like the file in which it is defined." + "id": "SourceContext" }, "MetricDescriptor": { "description": "Defines a metric type and its schema. Once a metric descriptor is created, deleting or altering it stops data collection and makes the metric type's existing data unusable.", "type": "object", "properties": { + "description": { + "description": "A detailed description of the metric, which can be used in documentation.", + "type": "string" + }, + "displayName": { + "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".", + "type": "string" + }, + "unit": { + "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is equivalent to 1 if it is used alone. For examples, {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not containing '{' or '}'.", + "type": "string" + }, "labels": { "description": "The set of labels that can be used to describe a specific instance of this metric type. For example, the appengine.googleapis.com/http/server/response_latencies metric type has a label for the HTTP response code, response_code, so you can look at latencies for successful responses or just for responses that failed.", "items": { @@ -395,14 +1270,16 @@ "type": "array" }, "name": { - "type": "string", - "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n" + "description": "The resource name of the metric descriptor. Depending on the implementation, the name typically includes: (1) the parent resource name that defines the scope of the metric type or of its data; and (2) the metric's URL-encoded type, which also appears in the type field of this descriptor. For example, following is the resource name of a custom metric within the GCP project my-project-id:\n\"projects/my-project-id/metricDescriptors/custom.googleapis.com%2Finvoice%2Fpaid%2Famount\"\n", + "type": "string" }, "type": { - "type": "string", - "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n" + "description": "The metric type, including its DNS name prefix. The type is not URL-encoded. All user-defined custom metric types have the DNS name custom.googleapis.com. Metric types should use a natural hierarchical grouping. For example:\n\"custom.googleapis.com/invoice/paid/amount\"\n\"appengine.googleapis.com/http/server/response_latencies\"\n", + "type": "string" }, "valueType": { + "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.", + "type": "string", "enumDescriptions": [ "Do not use this default value.", "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", @@ -420,9 +1297,7 @@ "STRING", "DISTRIBUTION", "MONEY" - ], - "description": "Whether the measurement is an integer, a floating-point number, etc. Some combinations of metric_kind and value_type might not be supported.", - "type": "string" + ] }, "metricKind": { "description": "Whether the metric records instantaneous values, changes to a value, etc. Some combinations of metric_kind and value_type might not be supported.", @@ -439,23 +1314,12 @@ "DELTA", "CUMULATIVE" ] - }, - "displayName": { - "description": "A concise name for the metric, which can be displayed in user interfaces. Use sentence case without an ending period, for example \"Request count\".", - "type": "string" - }, - "description": { - "description": "A detailed description of the metric, which can be used in documentation.", - "type": "string" - }, - "unit": { - "description": "The unit in which the metric value is reported. It is only applicable if the value_type is INT64, DOUBLE, or DISTRIBUTION. The supported units are a subset of The Unified Code for Units of Measure (http://unitsofmeasure.org/ucum.html) standard:Basic units (UNIT)\nbit bit\nBy byte\ns second\nmin minute\nh hour\nd dayPrefixes (PREFIX)\nk kilo (10**3)\nM mega (10**6)\nG giga (10**9)\nT tera (10**12)\nP peta (10**15)\nE exa (10**18)\nZ zetta (10**21)\nY yotta (10**24)\nm milli (10**-3)\nu micro (10**-6)\nn nano (10**-9)\np pico (10**-12)\nf femto (10**-15)\na atto (10**-18)\nz zepto (10**-21)\ny yocto (10**-24)\nKi kibi (2**10)\nMi mebi (2**20)\nGi gibi (2**30)\nTi tebi (2**40)GrammarThe grammar includes the dimensionless unit 1, such as 1/s.The grammar also includes these connectors:\n/ division (as an infix operator, e.g. 1/s).\n. multiplication (as an infix operator, e.g. GBy.d)The grammar for a unit is as follows:\nExpression = Component { \".\" Component } { \"/\" Component } ;\n\nComponent = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\nAnnotation = \"{\" NAME \"}\" ;\nNotes:\nAnnotation is just a comment if it follows a UNIT and is equivalent to 1 if it is used alone. For examples, {requests}/s == 1/s, By{transmitted}/s == By/s.\nNAME is a sequence of non-blank printable ASCII characters not containing '{' or '}'.", - "type": "string" } }, "id": "MetricDescriptor" }, "Range": { + "description": "The range of the population values.", "type": "object", "properties": { "min": { @@ -469,28 +1333,28 @@ "type": "number" } }, - "id": "Range", - "description": "The range of the population values." + "id": "Range" }, "ListGroupsResponse": { "description": "The ListGroups response.", "type": "object", "properties": { - "nextPageToken": { - "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.", - "type": "string" - }, "group": { "description": "The groups that match the specified filters.", "items": { "$ref": "Group" }, "type": "array" + }, + "nextPageToken": { + "description": "If there are more results than have been returned, then this field is set to a non-empty value. To see the additional results, use that value as pageToken in the next call to this method.", + "type": "string" } }, "id": "ListGroupsResponse" }, "ListGroupMembersResponse": { + "description": "The ListGroupMembers response.", "type": "object", "properties": { "members": { @@ -505,16 +1369,14 @@ "type": "string" }, "totalSize": { - "type": "integer", "format": "int32", - "description": "The total number of elements matching this request." + "description": "The total number of elements matching this request.", + "type": "integer" } }, - "id": "ListGroupMembersResponse", - "description": "The ListGroupMembers response." + "id": "ListGroupMembersResponse" }, "CreateCollectdTimeSeriesRequest": { - "id": "CreateCollectdTimeSeriesRequest", "description": "The CreateCollectdTimeSeries request.", "type": "object", "properties": { @@ -533,7 +1395,8 @@ "description": "The version of collectd that collected the data. Example: \"5.3.0-192.el6\".", "type": "string" } - } + }, + "id": "CreateCollectdTimeSeriesRequest" }, "ListMonitoredResourceDescriptorsResponse": { "description": "The ListMonitoredResourceDescriptors response.", @@ -557,39 +1420,11 @@ "description": "A collection of data points that describes the time-varying values of a metric. A time series is identified by a combination of a fully-specified monitored resource and a fully-specified metric. This type is used for both listing and creating time series.", "type": "object", "properties": { - "valueType": { - "enum": [ - "VALUE_TYPE_UNSPECIFIED", - "BOOL", - "INT64", - "DOUBLE", - "STRING", - "DISTRIBUTION", - "MONEY" - ], - "description": "The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.", - "type": "string", - "enumDescriptions": [ - "Do not use this default value.", - "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", - "The value is a signed 64-bit integer.", - "The value is a double precision floating point number.", - "The value is a text string. This value type can be used only if the metric kind is GAUGE.", - "The value is a Distribution.", - "The value is money." - ] - }, "resource": { "description": "The associated monitored resource. Custom metrics can use only certain monitored resource types in their time series data.", "$ref": "MonitoredResource" }, "metricKind": { - "enum": [ - "METRIC_KIND_UNSPECIFIED", - "GAUGE", - "DELTA", - "CUMULATIVE" - ], "description": "The metric kind of the time series. When listing time series, this metric kind might be different from the metric kind of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the metric kind of the associated metric. If the associated metric's descriptor must be auto-created, then this field specifies the metric kind of the new descriptor and must be either GAUGE (the default) or CUMULATIVE.", "type": "string", "enumDescriptions": [ @@ -597,6 +1432,12 @@ "An instantaneous measurement of a value.", "The change in a value during a time interval.", "A value accumulated over a time interval. Cumulative measurements in a time series should have the same start time and increasing end times, until an event resets the cumulative value to zero and sets a new start time for the following points." + ], + "enum": [ + "METRIC_KIND_UNSPECIFIED", + "GAUGE", + "DELTA", + "CUMULATIVE" ] }, "points": { @@ -607,8 +1448,30 @@ "type": "array" }, "metric": { - "$ref": "Metric", - "description": "The associated metric. A fully-specified metric used to identify the time series." + "description": "The associated metric. A fully-specified metric used to identify the time series.", + "$ref": "Metric" + }, + "valueType": { + "enumDescriptions": [ + "Do not use this default value.", + "The value is a boolean. This value type can be used only if the metric kind is GAUGE.", + "The value is a signed 64-bit integer.", + "The value is a double precision floating point number.", + "The value is a text string. This value type can be used only if the metric kind is GAUGE.", + "The value is a Distribution.", + "The value is money." + ], + "enum": [ + "VALUE_TYPE_UNSPECIFIED", + "BOOL", + "INT64", + "DOUBLE", + "STRING", + "DISTRIBUTION", + "MONEY" + ], + "description": "The value type of the time series. When listing time series, this value type might be different from the value type of the associated metric if this time series is an alignment or reduction of other time series.When creating a time series, this field is optional. If present, it must be the same as the type of the data in the points field.", + "type": "string" } }, "id": "TimeSeries" @@ -631,18 +1494,6 @@ "description": "Distribution contains summary statistics for a population of values. It optionally contains a histogram representing the distribution of those values across a set of buckets.The summary statistics are the count, mean, sum of the squared deviation from the mean, the minimum, and the maximum of the set of population of values. The histogram is based on a sequence of buckets and gives a count of values that fall into each bucket. The boundaries of the buckets are given either explicitly or by formulas for buckets of fixed or exponentially increasing widths.Although it is not forbidden, it is generally a bad idea to include non-finite values (infinities or NaNs) in the population of values, as this will render the mean and sum_of_squared_deviation fields meaningless.", "type": "object", "properties": { - "bucketCounts": { - "description": "Required in the Stackdriver Monitoring API v3. The values for each bucket specified in bucket_options. The sum of the values in bucketCounts must equal the value in the count field of the Distribution object. The order of the bucket counts follows the numbering schemes described for the three bucket types. The underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; and the overflow bucket has number N-1. The size of bucket_counts must not be greater than N. If the size is less than N, then the remaining buckets are assigned values of zero.", - "items": { - "format": "int64", - "type": "string" - }, - "type": "array" - }, - "bucketOptions": { - "$ref": "BucketOptions", - "description": "Required in the Stackdriver Monitoring API v3. Defines the histogram bucket boundaries." - }, "sumOfSquaredDeviation": { "format": "double", "description": "The sum of squared deviations from the mean of the values in the population. For values x_i this is:\nSum[i=1..n]((x_i - mean)^2)\nKnuth, \"The Art of Computer Programming\", Vol. 2, page 323, 3rd edition describes Welford's method for accumulating this sum in one pass.If count is zero then this field must be zero.", @@ -661,27 +1512,39 @@ "format": "double", "description": "The arithmetic mean of the values in the population. If count is zero then this field must be zero.", "type": "number" + }, + "bucketCounts": { + "description": "Required in the Stackdriver Monitoring API v3. The values for each bucket specified in bucket_options. The sum of the values in bucketCounts must equal the value in the count field of the Distribution object. The order of the bucket counts follows the numbering schemes described for the three bucket types. The underflow bucket has number 0; the finite buckets, if any, have numbers 1 through N-2; and the overflow bucket has number N-1. The size of bucket_counts must not be greater than N. If the size is less than N, then the remaining buckets are assigned values of zero.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "bucketOptions": { + "$ref": "BucketOptions", + "description": "Required in the Stackdriver Monitoring API v3. Defines the histogram bucket boundaries." } }, "id": "Distribution" }, "MonitoredResource": { + "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n", + "type": "object", "properties": { - "type": { - "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", - "type": "string" - }, "labels": { "additionalProperties": { "type": "string" }, "description": "Required. Values for all of the labels listed in the associated monitored resource descriptor. For example, Compute Engine VM instances use the labels \"project_id\", \"instance_id\", and \"zone\".", "type": "object" + }, + "type": { + "description": "Required. The monitored resource type. This field must match the type field of a MonitoredResourceDescriptor object. For example, the type of a Compute Engine VM instance is gce_instance.", + "type": "string" } }, - "id": "MonitoredResource", - "description": "An object representing a resource that can be used for monitoring, logging, billing, or other purposes. Examples include virtual machine instances, databases, and storage devices such as disks. The type field identifies a MonitoredResourceDescriptor object that describes the resource's schema. Information in the labels field identifies the actual resource and its attributes according to the schema. For example, a particular Compute Engine VM instance could be represented by the following object, because the MonitoredResourceDescriptor for \"gce_instance\" has labels \"instance_id\" and \"zone\":\n{ \"type\": \"gce_instance\",\n \"labels\": { \"instance_id\": \"12345678901234\",\n \"zone\": \"us-central1-a\" }}\n", - "type": "object" + "id": "MonitoredResource" }, "ListMetricDescriptorsResponse": { "description": "The ListMetricDescriptors response.", @@ -705,17 +1568,13 @@ "description": "An object that describes the schema of a MonitoredResource object using a type name and a set of labels. For example, the monitored resource descriptor for Google Compute Engine VM instances has a type of \"gce_instance\" and specifies the use of the labels \"instance_id\" and \"zone\" to identify particular VM instances.Different APIs can support different monitored resource types. APIs generally provide a list method that returns the monitored resource descriptors used by the API.", "type": "object", "properties": { - "name": { - "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", - "type": "string" - }, "description": { "description": "Optional. A detailed description of the monitored resource type that might be used in documentation.", "type": "string" }, "displayName": { - "type": "string", - "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\"." + "description": "Optional. A concise name for the monitored resource type that might be displayed in user interfaces. It should be a Title Cased Noun Phrase, without any article or other determiners. For example, \"Google Cloud SQL Database\".", + "type": "string" }, "type": { "description": "Required. The monitored resource type. For example, the type \"cloudsql_database\" represents databases in Google Cloud SQL. The maximum length of this value is 256 characters.", @@ -727,143 +1586,27 @@ "$ref": "LabelDescriptor" }, "type": "array" + }, + "name": { + "description": "Optional. The resource name of the monitored resource descriptor: \"projects/{project_id}/monitoredResourceDescriptors/{type}\" where {type} is the value of the type field in this object and {project_id} is a project ID that provides API-specific context for accessing the type. APIs that do not use project information can use the resource name format \"monitoredResourceDescriptors/{type}\".", + "type": "string" } }, "id": "MonitoredResourceDescriptor" - }, - "TypedValue": { - "description": "A single strongly-typed value.", - "type": "object", - "properties": { - "doubleValue": { - "type": "number", - "format": "double", - "description": "A 64-bit double-precision floating-point number. Its magnitude is approximately ±10\u003csup\u003e±300\u003c/sup\u003e and it has 16 significant digits of precision." - }, - "int64Value": { - "format": "int64", - "description": "A 64-bit integer. Its range is approximately ±9.2x10\u003csup\u003e18\u003c/sup\u003e.", - "type": "string" - }, - "distributionValue": { - "$ref": "Distribution", - "description": "A distribution value." - }, - "stringValue": { - "description": "A variable-length string value.", - "type": "string" - }, - "boolValue": { - "description": "A Boolean value: true or false.", - "type": "boolean" - } - }, - "id": "TypedValue" - }, - "CollectdPayload": { - "properties": { - "typeInstance": { - "type": "string", - "description": "The measurement type instance. Example: \"used\"." - }, - "type": { - "description": "The measurement type. Example: \"memory\".", - "type": "string" - }, - "metadata": { - "additionalProperties": { - "$ref": "TypedValue" - }, - "description": "The measurement metadata. Example: \"process_id\" -\u003e 12345", - "type": "object" - }, - "plugin": { - "description": "The name of the plugin. Example: \"disk\".", - "type": "string" - }, - "pluginInstance": { - "description": "The instance name of the plugin Example: \"hdcl\".", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "The end time of the interval.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "The start time of the interval.", - "type": "string" - }, - "values": { - "description": "The measured values during this time interval. Each value must have a different dataSourceName.", - "items": { - "$ref": "CollectdValue" - }, - "type": "array" - } - }, - "id": "CollectdPayload", - "description": "A collection of data points sent from a collectd-based plugin. See the collectd documentation for more information.", - "type": "object" - }, - "Linear": { - "description": "Specifies a linear sequence of buckets that all have the same width (except overflow and underflow). Each bucket represents a constant absolute uncertainty on the specific value in the bucket.There are num_finite_buckets + 2 (= N) buckets. Bucket i has the following boundaries:Upper bound (0 \u003c= i \u003c N-1): offset + (width * i). Lower bound (1 \u003c= i \u003c N): offset + (width * (i - 1)).", - "type": "object", - "properties": { - "offset": { - "format": "double", - "description": "Lower bound of the first bucket.", - "type": "number" - }, - "numFiniteBuckets": { - "format": "int32", - "description": "Must be greater than 0.", - "type": "integer" - }, - "width": { - "format": "double", - "description": "Must be greater than 0.", - "type": "number" - } - }, - "id": "Linear" - }, - "Option": { - "description": "A protocol buffer option, which can be attached to a message, field, enumeration, etc.", - "type": "object", - "properties": { - "name": { - "description": "The option's name. For protobuf built-in options (options defined in descriptor.proto), this is the short name. For example, \"map_entry\". For custom options, it should be the fully-qualified name. For example, \"google.api.http\".", - "type": "string" - }, - "value": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The option's value packed in an Any message. If the value is a primitive, the corresponding wrapper type defined in google/protobuf/wrappers.proto should be used. If the value is an enum, it should be stored as an int32 value using the google.protobuf.Int32Value type.", - "type": "object" - } - }, - "id": "Option" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance:\nservice Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n}\nThe JSON representation for Empty is empty JSON object {}.", - "type": "object", - "properties": {}, - "id": "Empty" } }, - "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "canonicalName": "Monitoring", "auth": { "oauth2": { "scopes": { + "https://www.googleapis.com/auth/monitoring": { + "description": "View and write monitoring data for all of your Google and third-party Cloud and API projects" + }, "https://www.googleapis.com/auth/monitoring.write": { "description": "Publish metric data to your Google Cloud projects" }, @@ -872,9 +1615,6 @@ }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/monitoring": { - "description": "View and write monitoring data for all of your Google and third-party Cloud and API projects" } } } @@ -885,745 +1625,5 @@ "batchPath": "batch", "fullyEncodeReservedExpansion": true, "title": "Stackdriver Monitoring API", - "ownerName": "Google", - "resources": { - "projects": { - "resources": { - "collectdTimeSeries": { - "methods": { - "create": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "description": "The project in which to create the time series. The format is \"projects/PROJECT_ID_OR_NUMBER\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.write" - ], - "flatPath": "v3/projects/{projectsId}/collectdTimeSeries", - "path": "v3/{+name}/collectdTimeSeries", - "id": "monitoring.projects.collectdTimeSeries.create", - "description": "Stackdriver Monitoring Agent only: Creates a new time series.\u003caside class=\"caution\"\u003eThis method is only for use by the Stackdriver Monitoring Agent. Use projects.timeSeries.create instead.\u003c/aside\u003e", - "request": { - "$ref": "CreateCollectdTimeSeriesRequest" - } - } - } - }, - "timeSeries": { - "methods": { - "create": { - "description": "Creates or adds data to one or more time series. The response is empty if all time series in the request were written. If any time series could not be written, a corresponding failure message is included in the error response.", - "request": { - "$ref": "CreateTimeSeriesRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.write" - ], - "flatPath": "v3/projects/{projectsId}/timeSeries", - "path": "v3/{+name}/timeSeries", - "id": "monitoring.projects.timeSeries.create" - }, - "list": { - "response": { - "$ref": "ListTimeSeriesResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "aggregation.perSeriesAligner": { - "type": "string", - "location": "query", - "enum": [ - "ALIGN_NONE", - "ALIGN_DELTA", - "ALIGN_RATE", - "ALIGN_INTERPOLATE", - "ALIGN_NEXT_OLDER", - "ALIGN_MIN", - "ALIGN_MAX", - "ALIGN_MEAN", - "ALIGN_COUNT", - "ALIGN_SUM", - "ALIGN_STDDEV", - "ALIGN_COUNT_TRUE", - "ALIGN_FRACTION_TRUE", - "ALIGN_PERCENTILE_99", - "ALIGN_PERCENTILE_95", - "ALIGN_PERCENTILE_50", - "ALIGN_PERCENTILE_05" - ], - "description": "The approach to be used to align individual time series. Not all alignment functions may be applied to all time series, depending on the metric type and value type of the original time series. Alignment may change the metric type or the value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned." - }, - "pageToken": { - "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", - "type": "string", - "location": "query" - }, - "interval.startTime": { - "type": "string", - "location": "query", - "format": "google-datetime", - "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time." - }, - "view": { - "enum": [ - "FULL", - "HEADERS" - ], - "description": "Specifies which information is returned about the time series.", - "type": "string", - "location": "query" - }, - "aggregation.groupByFields": { - "description": "The set of fields to preserve when crossSeriesReducer is specified. The groupByFields determine how the time series are partitioned into subsets prior to applying the aggregation function. Each subset contains time series that have the same value for each of the grouping fields. Each individual time series is a member of exactly one subset. The crossSeriesReducer is applied to each subset of time series. It is not possible to reduce across different resource types, so this field implicitly contains resource.type. Fields not specified in groupByFields are aggregated away. If groupByFields is not specified and all the time series have the same resource type, then the time series are aggregated into a single output time series. If crossSeriesReducer is not defined, this field is ignored.", - "type": "string", - "repeated": true, - "location": "query" - }, - "name": { - "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "interval.endTime": { - "format": "google-datetime", - "description": "Required. The end of the time interval.", - "type": "string", - "location": "query" - }, - "aggregation.alignmentPeriod": { - "location": "query", - "format": "google-duration", - "description": "The alignment period for per-time series alignment. If present, alignmentPeriod must be at least 60 seconds. After per-time series alignment, each time series will contain data points only on the period boundaries. If perSeriesAligner is not specified or equals ALIGN_NONE, then this field is ignored. If perSeriesAligner is specified and does not equal ALIGN_NONE, then this field must be defined; otherwise an error is returned.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "A positive number that is the maximum number of results to return. When view field sets to FULL, it limits the number of Points server will return; if view field is HEADERS, it limits the number of TimeSeries server will return.", - "type": "integer" - }, - "orderBy": { - "description": "Specifies the order in which the points of the time series should be returned. By default, results are not ordered. Currently, this field must be left blank.", - "type": "string", - "location": "query" - }, - "aggregation.crossSeriesReducer": { - "enum": [ - "REDUCE_NONE", - "REDUCE_MEAN", - "REDUCE_MIN", - "REDUCE_MAX", - "REDUCE_SUM", - "REDUCE_STDDEV", - "REDUCE_COUNT", - "REDUCE_COUNT_TRUE", - "REDUCE_FRACTION_TRUE", - "REDUCE_PERCENTILE_99", - "REDUCE_PERCENTILE_95", - "REDUCE_PERCENTILE_50", - "REDUCE_PERCENTILE_05" - ], - "description": "The approach to be used to combine time series. Not all reducer functions may be applied to all time series, depending on the metric type and the value type of the original time series. Reduction may change the metric type of value type of the time series.Time series data must be aligned in order to perform cross-time series reduction. If crossSeriesReducer is specified, then perSeriesAligner must be specified and not equal ALIGN_NONE and alignmentPeriod must be specified; otherwise, an error is returned.", - "type": "string", - "location": "query" - }, - "filter": { - "location": "query", - "description": "A monitoring filter that specifies which time series should be returned. The filter must specify a single metric type, and can additionally specify metric labels and other information. For example:\nmetric.type = \"compute.googleapis.com/instance/cpu/usage_time\" AND\n metric.label.instance_name = \"my-instance-name\"\n", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read" - ], - "flatPath": "v3/projects/{projectsId}/timeSeries", - "id": "monitoring.projects.timeSeries.list", - "path": "v3/{+name}/timeSeries", - "description": "Lists time series that match a filter. This method does not require a Stackdriver account." - } - } - }, - "metricDescriptors": { - "methods": { - "create": { - "response": { - "$ref": "MetricDescriptor" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.write" - ], - "parameters": { - "name": { - "location": "path", - "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - } - }, - "flatPath": "v3/projects/{projectsId}/metricDescriptors", - "id": "monitoring.projects.metricDescriptors.create", - "path": "v3/{+name}/metricDescriptors", - "request": { - "$ref": "MetricDescriptor" - }, - "description": "Creates a new metric descriptor. User-created metric descriptors define custom metrics." - }, - "delete": { - "description": "Deletes a metric descriptor. Only user-created custom metrics can be deleted.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "location": "path", - "description": "The metric descriptor on which to execute the request. The format is \"projects/{project_id_or_number}/metricDescriptors/{metric_id}\". An example of {metric_id} is: \"custom.googleapis.com/my_test_metric\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metricDescriptors/.+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring" - ], - "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}", - "id": "monitoring.projects.metricDescriptors.delete", - "path": "v3/{+name}" - }, - "get": { - "description": "Gets a single metric descriptor. This method does not require a Stackdriver account.", - "response": { - "$ref": "MetricDescriptor" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read", - "https://www.googleapis.com/auth/monitoring.write" - ], - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/metricDescriptors/.+$", - "location": "path", - "description": "The metric descriptor on which to execute the request. The format is \"projects/{project_id_or_number}/metricDescriptors/{metric_id}\". An example value of {metric_id} is \"compute.googleapis.com/instance/disk/read_bytes_count\"." - } - }, - "flatPath": "v3/projects/{projectsId}/metricDescriptors/{metricDescriptorsId}", - "id": "monitoring.projects.metricDescriptors.get", - "path": "v3/{+name}" - }, - "list": { - "response": { - "$ref": "ListMetricDescriptorsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "filter": { - "location": "query", - "description": "If this field is empty, all custom and system-defined metric descriptors are returned. Otherwise, the filter specifies which metric descriptors are to be returned. For example, the following filter matches all custom metrics:\nmetric.type = starts_with(\"custom.googleapis.com/\")\n", - "type": "string" - }, - "pageToken": { - "type": "string", - "location": "query", - "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call." - }, - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true - }, - "pageSize": { - "format": "int32", - "description": "A positive number that is the maximum number of results to return.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read", - "https://www.googleapis.com/auth/monitoring.write" - ], - "flatPath": "v3/projects/{projectsId}/metricDescriptors", - "id": "monitoring.projects.metricDescriptors.list", - "path": "v3/{+name}/metricDescriptors", - "description": "Lists metric descriptors that match a filter. This method does not require a Stackdriver account." - } - } - }, - "monitoredResourceDescriptors": { - "methods": { - "get": { - "description": "Gets a single monitored resource descriptor. This method does not require a Stackdriver account.", - "response": { - "$ref": "MonitoredResourceDescriptor" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read", - "https://www.googleapis.com/auth/monitoring.write" - ], - "parameters": { - "name": { - "location": "path", - "description": "The monitored resource descriptor to get. The format is \"projects/{project_id_or_number}/monitoredResourceDescriptors/{resource_type}\". The {resource_type} is a predefined type, such as cloudsql_database.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/monitoredResourceDescriptors/[^/]+$" - } - }, - "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors/{monitoredResourceDescriptorsId}", - "id": "monitoring.projects.monitoredResourceDescriptors.get", - "path": "v3/{+name}" - }, - "list": { - "response": { - "$ref": "ListMonitoredResourceDescriptorsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", - "type": "string", - "location": "query" - }, - "name": { - "location": "path", - "description": "The project on which to execute the request. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "A positive number that is the maximum number of results to return.", - "type": "integer" - }, - "filter": { - "location": "query", - "description": "An optional filter describing the descriptors to be returned. The filter can reference the descriptor's type and labels. For example, the following filter returns only Google Compute Engine descriptors that have an id label:\nresource.type = starts_with(\"gce_\") AND resource.label:id\n", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read", - "https://www.googleapis.com/auth/monitoring.write" - ], - "flatPath": "v3/projects/{projectsId}/monitoredResourceDescriptors", - "id": "monitoring.projects.monitoredResourceDescriptors.list", - "path": "v3/{+name}/monitoredResourceDescriptors", - "description": "Lists monitored resource descriptors that match a filter. This method does not require a Stackdriver account." - } - } - }, - "groups": { - "resources": { - "members": { - "methods": { - "list": { - "path": "v3/{+name}/members", - "id": "monitoring.projects.groups.members.list", - "description": "Lists the monitored resources that are members of a group.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListGroupMembersResponse" - }, - "parameters": { - "interval.endTime": { - "format": "google-datetime", - "description": "Required. The end of the time interval.", - "type": "string", - "location": "query" - }, - "filter": { - "location": "query", - "description": "An optional list filter describing the members to be returned. The filter may reference the type, labels, and metadata of monitored resources that comprise the group. For example, to return only resources representing Compute Engine VM instances, use this filter:\nresource.type = \"gce_instance\"\n", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "A positive number that is the maximum number of results to return.", - "type": "integer", - "location": "query" - }, - "interval.startTime": { - "type": "string", - "location": "query", - "format": "google-datetime", - "description": "Optional. The beginning of the time interval. The default value for the start time is the end time. The start time must not be later than the end time." - }, - "name": { - "description": "The group whose members are listed. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/groups/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read" - ], - "flatPath": "v3/projects/{projectsId}/groups/{groupsId}/members" - } - } - } - }, - "methods": { - "delete": { - "description": "Deletes an existing group.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "location": "path", - "description": "The group to delete. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/groups/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring" - ], - "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", - "id": "monitoring.projects.groups.delete", - "path": "v3/{+name}" - }, - "get": { - "description": "Gets a single group.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Group" - }, - "parameters": { - "name": { - "pattern": "^projects/[^/]+/groups/[^/]+$", - "location": "path", - "description": "The group to retrieve. The format is \"projects/{project_id_or_number}/groups/{group_id}\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read" - ], - "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", - "path": "v3/{+name}", - "id": "monitoring.projects.groups.get" - }, - "list": { - "path": "v3/{+name}/groups", - "id": "monitoring.projects.groups.list", - "description": "Lists the existing groups.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListGroupsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring", - "https://www.googleapis.com/auth/monitoring.read" - ], - "parameters": { - "pageToken": { - "description": "If this field is not empty then it must contain the nextPageToken value returned by a previous call to this method. Using this field causes the method to return additional results from the previous method call.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "A positive number that is the maximum number of results to return.", - "type": "integer" - }, - "ancestorsOfGroup": { - "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns groups that are ancestors of the specified group. The groups are returned in order, starting with the immediate parent and ending with the most distant ancestor. If the specified group has no immediate parent, the results are empty.", - "type": "string", - "location": "query" - }, - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The project whose groups are to be listed. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true - }, - "childrenOfGroup": { - "type": "string", - "location": "query", - "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns groups whose parentName field contains the group name. If no groups have this parent, the results are empty." - }, - "descendantsOfGroup": { - "location": "query", - "description": "A group name: \"projects/{project_id_or_number}/groups/{group_id}\". Returns the descendants of the specified group. This is a superset of the results returned by the childrenOfGroup filter, and includes children-of-children, and so forth.", - "type": "string" - } - }, - "flatPath": "v3/projects/{projectsId}/groups" - }, - "update": { - "response": { - "$ref": "Group" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "parameters": { - "validateOnly": { - "description": "If true, validate this request but do not update the existing group.", - "type": "boolean", - "location": "query" - }, - "name": { - "location": "path", - "description": "Output only. The name of this group. The format is \"projects/{project_id_or_number}/groups/{group_id}\". When creating a group, this field is ignored and a new name is created consisting of the project specified in the call to CreateGroup and a unique {group_id} that is generated automatically.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/groups/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring" - ], - "flatPath": "v3/projects/{projectsId}/groups/{groupsId}", - "id": "monitoring.projects.groups.update", - "path": "v3/{+name}", - "description": "Updates an existing group. You can change any group attributes except name.", - "request": { - "$ref": "Group" - } - }, - "create": { - "flatPath": "v3/projects/{projectsId}/groups", - "id": "monitoring.projects.groups.create", - "path": "v3/{+name}/groups", - "description": "Creates a new group.", - "request": { - "$ref": "Group" - }, - "response": { - "$ref": "Group" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "validateOnly": { - "description": "If true, validate this request but do not create the group.", - "type": "boolean", - "location": "query" - }, - "name": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The project in which to create the group. The format is \"projects/{project_id_or_number}\".", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/monitoring" - ] - } - } - } - } - } - }, - "parameters": { - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "type": "string", - "location": "query", - "description": "OAuth 2.0 token for the current user." - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" - }, - "$.xgafv": { - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format." - } - }, - "version": "v3", - "baseUrl": "https://monitoring.googleapis.com/", - "servicePath": "", - "description": "Manages your Stackdriver Monitoring data and configurations. Most projects must be associated with a Stackdriver account, with a few exceptions as noted on the individual method pages.", - "kind": "discovery#restDescription", - "basePath": "" + "ownerName": "Google" } diff --git a/vendor/google.golang.org/api/oslogin/v1alpha/oslogin-api.json b/vendor/google.golang.org/api/oslogin/v1alpha/oslogin-api.json index 7d5a895..d0d7558 100644 --- a/vendor/google.golang.org/api/oslogin/v1alpha/oslogin-api.json +++ b/vendor/google.golang.org/api/oslogin/v1alpha/oslogin-api.json @@ -1,124 +1,4 @@ { - "basePath": "", - "revision": "20170811", - "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/", - "id": "oslogin:v1alpha", - "discoveryVersion": "v1", - "version_module": true, - "schemas": { - "ImportSshPublicKeyResponse": { - "description": "A response message for importing an SSH public key.", - "type": "object", - "properties": { - "loginProfile": { - "$ref": "LoginProfile", - "description": "The login profile information for the user." - } - }, - "id": "ImportSshPublicKeyResponse" - }, - "PosixAccount": { - "description": "The POSIX account information associated with a Directory API User.", - "type": "object", - "properties": { - "homeDirectory": { - "description": "The path to the home directory for this account.", - "type": "string" - }, - "systemId": { - "type": "string", - "description": "System identifier for which account the username or uid applies to.\nBy default, the empty value is used." - }, - "gecos": { - "description": "The GECOS (user information) entry for this account.", - "type": "string" - }, - "primary": { - "description": "Only one POSIX account can be marked as primary.", - "type": "boolean" - }, - "gid": { - "format": "uint32", - "description": "The default group ID.", - "type": "integer" - }, - "uid": { - "format": "uint32", - "description": "The user ID.", - "type": "integer" - }, - "username": { - "description": "The username of the POSIX account.", - "type": "string" - }, - "shell": { - "type": "string", - "description": "The path to the logic shell for this account." - } - }, - "id": "PosixAccount" - }, - "LoginProfile": { - "description": "The Directory API profile information used for logging in to a virtual\nmachine on Google Compute Engine.", - "type": "object", - "properties": { - "sshPublicKeys": { - "type": "object", - "additionalProperties": { - "$ref": "SshPublicKey" - }, - "description": "A map from SSH public key fingerprint to the associated key object." - }, - "posixAccounts": { - "description": "The list of POSIX accounts associated with the Directory API user.", - "items": { - "$ref": "PosixAccount" - }, - "type": "array" - }, - "name": { - "description": "A unique user ID for identifying the user.", - "type": "string" - }, - "suspended": { - "description": "Indicates if the user is suspended.", - "type": "boolean" - } - }, - "id": "LoginProfile" - }, - "SshPublicKey": { - "description": "The SSH public key information associated with a Directory API User.", - "type": "object", - "properties": { - "expirationTimeUsec": { - "format": "int64", - "description": "An expiration time in microseconds since epoch.", - "type": "string" - }, - "fingerprint": { - "description": "[Output Only] The SHA-256 fingerprint of the SSH public key.", - "type": "string" - }, - "key": { - "description": "Public key text in SSH format, defined by\n\u003ca href=\"https://www.ietf.org/rfc/rfc4253.txt\" target=\"_blank\"\u003eRFC4253\u003c/a\u003e\nsection 6.6.", - "type": "string" - } - }, - "id": "SshPublicKey" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - } - }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, - "protocol": "rest", "canonicalName": "Cloud OS Login", "auth": { "oauth2": { @@ -149,35 +29,34 @@ "parent" ], "httpMethod": "POST", - "parameters": { - "parent": { - "location": "path", - "description": "The unique ID for the user in format `users/{user}`.", - "type": "string", - "required": true, - "pattern": "^users/[^/]+$" - } - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], + "parameters": { + "parent": { + "type": "string", + "required": true, + "pattern": "^users/[^/]+$", + "location": "path", + "description": "The unique ID for the user in format `users/{user}`." + } + }, "flatPath": "v1alpha/users/{usersId}:importSshPublicKey", "id": "oslogin.users.importSshPublicKey", "path": "v1alpha/{+parent}:importSshPublicKey", - "description": "Adds an SSH public key and returns the profile information. Default POSIX\naccount information is set when no username and UID exist as part of the\nlogin profile.", "request": { "$ref": "SshPublicKey" - } + }, + "description": "Adds an SSH public key and returns the profile information. Default POSIX\naccount information is set when no username and UID exist as part of the\nlogin profile." }, "getLoginProfile": { - "description": "Retrieves the profile information used for logging in to a virtual machine\non Google Compute Engine.", - "response": { - "$ref": "LoginProfile" - }, + "httpMethod": "GET", "parameterOrder": [ "name" ], - "httpMethod": "GET", + "response": { + "$ref": "LoginProfile" + }, "parameters": { "name": { "location": "path", @@ -192,21 +71,15 @@ "https://www.googleapis.com/auth/cloud-platform.read-only" ], "flatPath": "v1alpha/users/{usersId}/loginProfile", + "path": "v1alpha/{+name}/loginProfile", "id": "oslogin.users.getLoginProfile", - "path": "v1alpha/{+name}/loginProfile" + "description": "Retrieves the profile information used for logging in to a virtual machine\non Google Compute Engine." } }, "resources": { "sshPublicKeys": { "methods": { "patch": { - "flatPath": "v1alpha/users/{usersId}/sshPublicKeys/{sshPublicKeysId}", - "id": "oslogin.users.sshPublicKeys.patch", - "path": "v1alpha/{+name}", - "request": { - "$ref": "SshPublicKey" - }, - "description": "Updates an SSH public key and returns the profile information. This method\nsupports patch semantics.", "response": { "$ref": "SshPublicKey" }, @@ -219,28 +92,35 @@ ], "parameters": { "name": { - "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.", "type": "string", "required": true, "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$", - "location": "path" + "location": "path", + "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`." }, "updateMask": { - "format": "google-fieldmask", - "description": "Mask to control which fields get updated. Updates all if not present.", "type": "string", - "location": "query" + "location": "query", + "format": "google-fieldmask", + "description": "Mask to control which fields get updated. Updates all if not present." } - } - }, - "get": { - "response": { + }, + "flatPath": "v1alpha/users/{usersId}/sshPublicKeys/{sshPublicKeysId}", + "id": "oslogin.users.sshPublicKeys.patch", + "path": "v1alpha/{+name}", + "request": { "$ref": "SshPublicKey" }, + "description": "Updates an SSH public key and returns the profile information. This method\nsupports patch semantics." + }, + "get": { "httpMethod": "GET", "parameterOrder": [ "name" ], + "response": { + "$ref": "SshPublicKey" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -254,12 +134,11 @@ } }, "flatPath": "v1alpha/users/{usersId}/sshPublicKeys/{sshPublicKeysId}", - "id": "oslogin.users.sshPublicKeys.get", "path": "v1alpha/{+name}", + "id": "oslogin.users.sshPublicKeys.get", "description": "Retrieves an SSH public key." }, "delete": { - "description": "Deletes an SSH public key.", "response": { "$ref": "Empty" }, @@ -272,16 +151,17 @@ ], "parameters": { "name": { - "location": "path", - "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`.", "type": "string", "required": true, - "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$" + "pattern": "^users/[^/]+/sshPublicKeys/[^/]+$", + "location": "path", + "description": "The fingerprint of the public key to update. Public keys are identified by\ntheir SHA-256 fingerprint. The fingerprint of the public key is in format\n`users/{user}/sshPublicKeys/{fingerprint}`." } }, "flatPath": "v1alpha/users/{usersId}/sshPublicKeys/{sshPublicKeysId}", "id": "oslogin.users.sshPublicKeys.delete", - "path": "v1alpha/{+name}" + "path": "v1alpha/{+name}", + "description": "Deletes an SSH public key." } } } @@ -290,9 +170,9 @@ }, "parameters": { "upload_protocol": { + "type": "string", "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." }, "prettyPrint": { "location": "query", @@ -301,40 +181,34 @@ "type": "boolean" }, "uploadType": { + "type": "string", "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." }, "fields": { - "description": "Selector specifying which fields to include in a partial response.", "type": "string", - "location": "query" + "location": "query", + "description": "Selector specifying which fields to include in a partial response." }, "callback": { + "type": "string", "location": "query", - "description": "JSONP", - "type": "string" + "description": "JSONP" }, "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string" - }, - "alt": { "type": "string", "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], + "v1 error format", + "v2 error format" + ] + }, + "alt": { "location": "query", "description": "Data format for response.", "default": "json", @@ -342,22 +216,28 @@ "json", "media", "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" ] }, "access_token": { - "description": "OAuth access token.", "type": "string", - "location": "query" + "location": "query", + "description": "OAuth access token." }, "key": { + "type": "string", "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." }, "quotaUser": { + "location": "query", "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" + "type": "string" }, "pp": { "default": "true", @@ -366,19 +246,139 @@ "description": "Pretty-print response." }, "oauth_token": { - "description": "OAuth 2.0 token for the current user.", "type": "string", - "location": "query" + "location": "query", + "description": "OAuth 2.0 token for the current user." }, "bearer_token": { + "type": "string", "location": "query", - "description": "OAuth bearer token.", - "type": "string" + "description": "OAuth bearer token." } }, "version": "v1alpha", "baseUrl": "https://oslogin.googleapis.com/", "servicePath": "", + "kind": "discovery#restDescription", "description": "Manages OS login configuration for Directory API users.", - "kind": "discovery#restDescription" + "basePath": "", + "id": "oslogin:v1alpha", + "revision": "20170811", + "documentationLink": "https://cloud.google.com/compute/docs/oslogin/rest/", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "ImportSshPublicKeyResponse": { + "description": "A response message for importing an SSH public key.", + "type": "object", + "properties": { + "loginProfile": { + "$ref": "LoginProfile", + "description": "The login profile information for the user." + } + }, + "id": "ImportSshPublicKeyResponse" + }, + "PosixAccount": { + "description": "The POSIX account information associated with a Directory API User.", + "type": "object", + "properties": { + "homeDirectory": { + "description": "The path to the home directory for this account.", + "type": "string" + }, + "systemId": { + "type": "string", + "description": "System identifier for which account the username or uid applies to.\nBy default, the empty value is used." + }, + "gecos": { + "type": "string", + "description": "The GECOS (user information) entry for this account." + }, + "primary": { + "type": "boolean", + "description": "Only one POSIX account can be marked as primary." + }, + "gid": { + "format": "uint32", + "description": "The default group ID.", + "type": "integer" + }, + "uid": { + "type": "integer", + "format": "uint32", + "description": "The user ID." + }, + "username": { + "type": "string", + "description": "The username of the POSIX account." + }, + "shell": { + "type": "string", + "description": "The path to the logic shell for this account." + } + }, + "id": "PosixAccount" + }, + "LoginProfile": { + "type": "object", + "properties": { + "suspended": { + "type": "boolean", + "description": "Indicates if the user is suspended." + }, + "sshPublicKeys": { + "additionalProperties": { + "$ref": "SshPublicKey" + }, + "description": "A map from SSH public key fingerprint to the associated key object.", + "type": "object" + }, + "posixAccounts": { + "items": { + "$ref": "PosixAccount" + }, + "type": "array", + "description": "The list of POSIX accounts associated with the Directory API user." + }, + "name": { + "description": "A unique user ID for identifying the user.", + "type": "string" + } + }, + "id": "LoginProfile", + "description": "The Directory API profile information used for logging in to a virtual\nmachine on Google Compute Engine." + }, + "SshPublicKey": { + "description": "The SSH public key information associated with a Directory API User.", + "type": "object", + "properties": { + "expirationTimeUsec": { + "format": "int64", + "description": "An expiration time in microseconds since epoch.", + "type": "string" + }, + "fingerprint": { + "type": "string", + "description": "[Output Only] The SHA-256 fingerprint of the SSH public key." + }, + "key": { + "type": "string", + "description": "Public key text in SSH format, defined by\n\u003ca href=\"https://www.ietf.org/rfc/rfc4253.txt\" target=\"_blank\"\u003eRFC4253\u003c/a\u003e\nsection 6.6." + } + }, + "id": "SshPublicKey" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + } + }, + "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + } } diff --git a/vendor/google.golang.org/api/partners/v2/partners-api.json b/vendor/google.golang.org/api/partners/v2/partners-api.json index 6fa28ae..9149276 100644 --- a/vendor/google.golang.org/api/partners/v2/partners-api.json +++ b/vendor/google.golang.org/api/partners/v2/partners-api.json @@ -1,23 +1,138 @@ { + "canonicalName": "Partners", + "servicePath": "", + "description": "Searches certified companies and creates contact leads with them, and also audits the usage of clients.", + "kind": "discovery#restDescription", + "rootUrl": "https://partners.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "partners", "batchPath": "batch", - "id": "partners:v2", - "documentationLink": "https://developers.google.com/partners/", "revision": "20170822", + "documentationLink": "https://developers.google.com/partners/", + "id": "partners:v2", "title": "Google Partners API", "discoveryVersion": "v1", "ownerName": "Google", "version_module": true, "resources": { + "exams": { + "methods": { + "getToken": { + "description": "Gets an Exam Token for a Partner's user to take an exam in the Exams System", + "response": { + "$ref": "ExamToken" + }, + "parameterOrder": [ + "examType" + ], + "httpMethod": "GET", + "parameters": { + "requestMetadata.experimentIds": { + "description": "Experiment IDs the current request belongs to.", + "type": "string", + "repeated": true, + "location": "query" + }, + "requestMetadata.trafficSource.trafficSubId": { + "type": "string", + "location": "query", + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us." + }, + "examType": { + "location": "path", + "enum": [ + "CERTIFICATION_EXAM_TYPE_UNSPECIFIED", + "CET_ADWORDS_FUNDAMENTALS", + "CET_ADWORDS_ADVANCED_SEARCH", + "CET_ADWORDS_ADVANCED_DISPLAY", + "CET_VIDEO_ADS", + "CET_DOUBLECLICK", + "CET_ANALYTICS", + "CET_SHOPPING", + "CET_MOBILE", + "CET_DIGITAL_SALES", + "CET_MOBILE_SITES" + ], + "description": "The exam type we are requesting a token for.", + "type": "string", + "required": true + }, + "requestMetadata.userOverrides.userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string", + "location": "query" + }, + "requestMetadata.partnersSessionId": { + "description": "Google Partners session ID.", + "type": "string", + "location": "query" + }, + "requestMetadata.trafficSource.trafficSourceId": { + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + }, + "requestMetadata.locale": { + "description": "Locale to use for the current request.", + "type": "string", + "location": "query" + }, + "requestMetadata.userOverrides.ipAddress": { + "location": "query", + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string" + } + }, + "flatPath": "v2/exams/{examType}/token", + "id": "partners.exams.getToken", + "path": "v2/exams/{examType}/token" + } + } + }, "leads": { "methods": { "list": { + "path": "v2/leads", + "id": "partners.leads.list", "description": "Lists advertiser leads for a user's associated company.\nShould only be called within the context of an authorized logged in user.", + "httpMethod": "GET", "parameterOrder": [], "response": { "$ref": "ListLeadsResponse" }, - "httpMethod": "GET", "parameters": { + "requestMetadata.userOverrides.userId": { + "type": "string", + "location": "query", + "description": "Logged-in user ID to impersonate instead of the user's ID." + }, + "requestMetadata.partnersSessionId": { + "location": "query", + "description": "Google Partners session ID.", + "type": "string" + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListLeadsResponse.next_page_token`\nreturned from the previous call to\nListLeads." + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. Server may return fewer leads than requested.\nIf unspecified, server picks an appropriate default.", + "type": "integer", + "location": "query" + }, + "requestMetadata.trafficSource.trafficSourceId": { + "type": "string", + "location": "query", + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us." + }, + "requestMetadata.locale": { + "location": "query", + "description": "Locale to use for the current request.", + "type": "string" + }, "requestMetadata.userOverrides.ipAddress": { "location": "query", "description": "IP address to use instead of the user's geo-located IP address.", @@ -35,45 +150,12 @@ "type": "string" }, "orderBy": { - "location": "query", "description": "How to order Leads. Currently, only `create_time`\nand `create_time desc` are supported", - "type": "string" - }, - "requestMetadata.userOverrides.userId": { - "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - }, - "requestMetadata.partnersSessionId": { - "location": "query", - "description": "Google Partners session ID.", - "type": "string" - }, - "pageToken": { - "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListLeadsResponse.next_page_token`\nreturned from the previous call to\nListLeads.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. Server may return fewer leads than requested.\nIf unspecified, server picks an appropriate default.", - "type": "integer" - }, - "requestMetadata.trafficSource.trafficSourceId": { - "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "requestMetadata.locale": { - "description": "Locale to use for the current request.", "type": "string", "location": "query" } }, - "flatPath": "v2/leads", - "id": "partners.leads.list", - "path": "v2/leads" + "flatPath": "v2/leads" } } }, @@ -86,25 +168,15 @@ "parameterOrder": [], "httpMethod": "GET", "parameters": { - "requestMetadata.partnersSessionId": { - "location": "query", - "description": "Google Partners session ID.", - "type": "string" - }, - "requestMetadata.userOverrides.userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string", - "location": "query" - }, "requestMetadata.trafficSource.trafficSourceId": { + "location": "query", "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.locale": { - "location": "query", "description": "Locale to use for the current request.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.userOverrides.ipAddress": { "description": "IP address to use instead of the user's geo-located IP address.", @@ -112,15 +184,25 @@ "location": "query" }, "requestMetadata.experimentIds": { - "type": "string", - "repeated": true, "location": "query", - "description": "Experiment IDs the current request belongs to." + "description": "Experiment IDs the current request belongs to.", + "type": "string", + "repeated": true }, "requestMetadata.trafficSource.trafficSubId": { + "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "requestMetadata.userOverrides.userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", "type": "string", "location": "query" + }, + "requestMetadata.partnersSessionId": { + "location": "query", + "description": "Google Partners session ID.", + "type": "string" } }, "flatPath": "v2/offers", @@ -133,32 +215,55 @@ "history": { "methods": { "list": { + "id": "partners.offers.history.list", + "path": "v2/offers/history", + "description": "Lists the Historical Offers for the current user (or user's entire company)", "response": { "$ref": "ListOffersHistoryResponse" }, "parameterOrder": [], "httpMethod": "GET", "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum number of rows to return per page.", - "type": "integer", + "requestMetadata.userOverrides.userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string", "location": "query" }, - "requestMetadata.trafficSource.trafficSourceId": { + "requestMetadata.partnersSessionId": { + "description": "Google Partners session ID.", "type": "string", + "location": "query" + }, + "pageToken": { "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us." + "description": "Token to retrieve a specific page.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Maximum number of rows to return per page." + }, + "requestMetadata.trafficSource.trafficSourceId": { + "location": "query", + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" }, "requestMetadata.locale": { - "location": "query", "description": "Locale to use for the current request.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.userOverrides.ipAddress": { - "location": "query", "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" + "type": "string", + "location": "query" + }, + "entireCompany": { + "description": "if true, show history for the entire company. Requires user to be admin.", + "type": "boolean", + "location": "query" }, "requestMetadata.experimentIds": { "description": "Experiment IDs the current request belongs to.", @@ -166,41 +271,18 @@ "repeated": true, "location": "query" }, - "entireCompany": { - "location": "query", - "description": "if true, show history for the entire company. Requires user to be admin.", - "type": "boolean" + "orderBy": { + "description": "Comma-separated list of fields to order by, e.g.: \"foo,bar,baz\".\nUse \"foo desc\" to sort descending.\nList of valid field names is: name, offer_code, expiration_time, status,\n last_modified_time, sender_name, creation_time, country_code,\n offer_type.", + "type": "string", + "location": "query" }, "requestMetadata.trafficSource.trafficSubId": { "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", "type": "string" - }, - "orderBy": { - "location": "query", - "description": "Comma-separated list of fields to order by, e.g.: \"foo,bar,baz\".\nUse \"foo desc\" to sort descending.\nList of valid field names is: name, offer_code, expiration_time, status,\n last_modified_time, sender_name, creation_time, country_code,\n offer_type.", - "type": "string" - }, - "requestMetadata.partnersSessionId": { - "type": "string", - "location": "query", - "description": "Google Partners session ID." - }, - "requestMetadata.userOverrides.userId": { - "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - }, - "pageToken": { - "description": "Token to retrieve a specific page.", - "type": "string", - "location": "query" } }, - "flatPath": "v2/offers/history", - "id": "partners.offers.history.list", - "path": "v2/offers/history", - "description": "Lists the Historical Offers for the current user (or user's entire company)" + "flatPath": "v2/offers/history" } } } @@ -209,32 +291,43 @@ "analytics": { "methods": { "list": { - "httpMethod": "GET", - "response": { - "$ref": "ListAnalyticsResponse" - }, - "parameterOrder": [], "parameters": { - "requestMetadata.userOverrides.userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", + "requestMetadata.userOverrides.ipAddress": { + "type": "string", + "location": "query", + "description": "IP address to use instead of the user's geo-located IP address." + }, + "requestMetadata.experimentIds": { + "location": "query", + "description": "Experiment IDs the current request belongs to.", + "type": "string", + "repeated": true + }, + "requestMetadata.trafficSource.trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", "type": "string", "location": "query" }, + "requestMetadata.userOverrides.userId": { + "location": "query", + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string" + }, "requestMetadata.partnersSessionId": { "location": "query", "description": "Google Partners session ID.", "type": "string" }, "pageToken": { + "location": "query", "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListAnalyticsResponse.next_page_token`\nreturned from the previous call to\nListAnalytics.\nWill be a date string in `YYYY-MM-DD` format representing the end date\nof the date range of results to return.\nIf unspecified or set to \"\", default value is the current date.", - "type": "string", - "location": "query" + "type": "string" }, "pageSize": { + "type": "integer", "location": "query", "format": "int32", - "description": "Requested page size. Server may return fewer analytics than requested.\nIf unspecified or set to 0, default value is 30.\nSpecifies the number of days in the date range when querying analytics.\nThe `page_token` represents the end date of the date range\nand the start date is calculated using the `page_size` as the number\nof days BEFORE the end date.\nMust be a non-negative integer.", - "type": "integer" + "description": "Requested page size. Server may return fewer analytics than requested.\nIf unspecified or set to 0, default value is 30.\nSpecifies the number of days in the date range when querying analytics.\nThe `page_token` represents the end date of the date range\nand the start date is calculated using the `page_size` as the number\nof days BEFORE the end date.\nMust be a non-negative integer." }, "requestMetadata.trafficSource.trafficSourceId": { "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", @@ -245,224 +338,168 @@ "location": "query", "description": "Locale to use for the current request.", "type": "string" - }, - "requestMetadata.userOverrides.ipAddress": { - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string", - "location": "query" - }, - "requestMetadata.experimentIds": { - "description": "Experiment IDs the current request belongs to.", - "type": "string", - "repeated": true, - "location": "query" - }, - "requestMetadata.trafficSource.trafficSubId": { - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" } }, "flatPath": "v2/analytics", - "path": "v2/analytics", "id": "partners.analytics.list", - "description": "Lists analytics data for a user's associated company.\nShould only be called within the context of an authorized logged in user." + "path": "v2/analytics", + "description": "Lists analytics data for a user's associated company.\nShould only be called within the context of an authorized logged in user.", + "response": { + "$ref": "ListAnalyticsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET" } } }, "userStates": { "methods": { "list": { + "id": "partners.userStates.list", + "path": "v2/userStates", "description": "Lists states for current user.", - "parameterOrder": [], - "httpMethod": "GET", "response": { "$ref": "ListUserStatesResponse" }, + "parameterOrder": [], + "httpMethod": "GET", "parameters": { - "requestMetadata.partnersSessionId": { - "description": "Google Partners session ID.", - "type": "string", - "location": "query" - }, - "requestMetadata.userOverrides.userId": { - "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - }, "requestMetadata.trafficSource.trafficSourceId": { + "location": "query", "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.locale": { + "description": "Locale to use for the current request.", "type": "string", - "location": "query", - "description": "Locale to use for the current request." - }, - "requestMetadata.userOverrides.ipAddress": { - "location": "query", - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" - }, - "requestMetadata.experimentIds": { - "description": "Experiment IDs the current request belongs to.", - "type": "string", - "repeated": true, "location": "query" }, - "requestMetadata.trafficSource.trafficSubId": { + "requestMetadata.userOverrides.ipAddress": { + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string", + "location": "query" + }, + "requestMetadata.experimentIds": { + "repeated": true, "location": "query", - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "description": "Experiment IDs the current request belongs to.", "type": "string" + }, + "requestMetadata.trafficSource.trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + }, + "requestMetadata.partnersSessionId": { + "location": "query", + "description": "Google Partners session ID.", + "type": "string" + }, + "requestMetadata.userOverrides.userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string", + "location": "query" } }, - "flatPath": "v2/userStates", - "id": "partners.userStates.list", - "path": "v2/userStates" + "flatPath": "v2/userStates" } } }, "v2": { "methods": { + "updateCompanies": { + "description": "Update company.\nShould only be called within the context of an authorized logged in user.", + "request": { + "$ref": "Company" + }, + "httpMethod": "PATCH", + "parameterOrder": [], + "response": { + "$ref": "Company" + }, + "parameters": { + "requestMetadata.experimentIds": { + "repeated": true, + "location": "query", + "description": "Experiment IDs the current request belongs to.", + "type": "string" + }, + "requestMetadata.trafficSource.trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + }, + "requestMetadata.userOverrides.userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string", + "location": "query" + }, + "requestMetadata.partnersSessionId": { + "type": "string", + "location": "query", + "description": "Google Partners session ID." + }, + "requestMetadata.trafficSource.trafficSourceId": { + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + }, + "requestMetadata.locale": { + "location": "query", + "description": "Locale to use for the current request.", + "type": "string" + }, + "requestMetadata.userOverrides.ipAddress": { + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string", + "location": "query" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v2/companies", + "path": "v2/companies", + "id": "partners.updateCompanies" + }, "getPartnersstatus": { + "flatPath": "v2/partnersstatus", + "path": "v2/partnersstatus", + "id": "partners.getPartnersstatus", + "description": "Gets Partners Status of the logged in user's agency.\nShould only be called if the logged in user is the admin of the agency.", + "httpMethod": "GET", "response": { "$ref": "GetPartnersStatusResponse" }, "parameterOrder": [], - "httpMethod": "GET", "parameters": { - "requestMetadata.experimentIds": { - "description": "Experiment IDs the current request belongs to.", - "type": "string", - "repeated": true, - "location": "query" - }, - "requestMetadata.trafficSource.trafficSubId": { - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" + "requestMetadata.userOverrides.userId": { + "location": "query", + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string" }, "requestMetadata.partnersSessionId": { "location": "query", "description": "Google Partners session ID.", "type": "string" }, - "requestMetadata.userOverrides.userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string", - "location": "query" - }, "requestMetadata.trafficSource.trafficSourceId": { "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", "type": "string", "location": "query" }, - "requestMetadata.locale": { - "type": "string", - "location": "query", - "description": "Locale to use for the current request." - }, - "requestMetadata.userOverrides.ipAddress": { - "location": "query", - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" - } - }, - "flatPath": "v2/partnersstatus", - "id": "partners.getPartnersstatus", - "path": "v2/partnersstatus", - "description": "Gets Partners Status of the logged in user's agency.\nShould only be called if the logged in user is the admin of the agency." - }, - "updateLeads": { - "description": "Updates the specified lead.", - "request": { - "$ref": "Lead" - }, - "response": { - "$ref": "Lead" - }, - "parameterOrder": [], - "httpMethod": "PATCH", - "parameters": { - "requestMetadata.partnersSessionId": { - "description": "Google Partners session ID.", - "type": "string", - "location": "query" - }, - "requestMetadata.userOverrides.userId": { - "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - }, - "requestMetadata.trafficSource.trafficSourceId": { - "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "requestMetadata.locale": { - "location": "query", - "description": "Locale to use for the current request.", - "type": "string" - }, - "requestMetadata.userOverrides.ipAddress": { - "location": "query", - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" - }, - "updateMask": { - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.\nOnly `state` and `adwords_customer_id` are currently supported.", - "type": "string", - "location": "query" - }, - "requestMetadata.experimentIds": { - "repeated": true, - "location": "query", - "description": "Experiment IDs the current request belongs to.", - "type": "string" - }, - "requestMetadata.trafficSource.trafficSubId": { - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v2/leads", - "id": "partners.updateLeads", - "path": "v2/leads" - }, - "updateCompanies": { - "request": { - "$ref": "Company" - }, - "description": "Update company.\nShould only be called within the context of an authorized logged in user.", - "response": { - "$ref": "Company" - }, - "parameterOrder": [], - "httpMethod": "PATCH", - "parameters": { - "requestMetadata.trafficSource.trafficSourceId": { - "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, "requestMetadata.locale": { "description": "Locale to use for the current request.", "type": "string", "location": "query" }, "requestMetadata.userOverrides.ipAddress": { - "type": "string", "location": "query", - "description": "IP address to use instead of the user's geo-located IP address." - }, - "updateMask": { - "type": "string", - "location": "query", - "format": "google-fieldmask", - "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths." + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string" }, "requestMetadata.experimentIds": { "type": "string", @@ -471,8 +508,17 @@ "description": "Experiment IDs the current request belongs to." }, "requestMetadata.trafficSource.trafficSubId": { - "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + } + } + }, + "updateLeads": { + "parameters": { + "requestMetadata.userOverrides.userId": { + "location": "query", + "description": "Logged-in user ID to impersonate instead of the user's ID.", "type": "string" }, "requestMetadata.partnersSessionId": { @@ -480,49 +526,77 @@ "type": "string", "location": "query" }, - "requestMetadata.userOverrides.userId": { + "requestMetadata.trafficSource.trafficSourceId": { + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + }, + "requestMetadata.locale": { + "type": "string", "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", + "description": "Locale to use for the current request." + }, + "requestMetadata.userOverrides.ipAddress": { + "location": "query", + "description": "IP address to use instead of the user's geo-located IP address.", "type": "string" + }, + "updateMask": { + "type": "string", + "location": "query", + "format": "google-fieldmask", + "description": "Standard field mask for the set of fields to be updated.\nRequired with at least 1 value in FieldMask's paths.\nOnly `state` and `adwords_customer_id` are currently supported." + }, + "requestMetadata.experimentIds": { + "type": "string", + "repeated": true, + "location": "query", + "description": "Experiment IDs the current request belongs to." + }, + "requestMetadata.trafficSource.trafficSubId": { + "type": "string", + "location": "query", + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us." } }, - "flatPath": "v2/companies", - "id": "partners.updateCompanies", - "path": "v2/companies" + "flatPath": "v2/leads", + "path": "v2/leads", + "id": "partners.updateLeads", + "request": { + "$ref": "Lead" + }, + "description": "Updates the specified lead.", + "httpMethod": "PATCH", + "parameterOrder": [], + "response": { + "$ref": "Lead" + } } } }, "users": { "methods": { "deleteCompanyRelation": { + "path": "v2/users/{userId}/companyRelation", + "id": "partners.users.deleteCompanyRelation", + "description": "Deletes a user's company relation. Unaffiliaites the user from a company.", + "httpMethod": "DELETE", + "parameterOrder": [ + "userId" + ], "response": { "$ref": "Empty" }, - "parameterOrder": [ - "userId" - ], - "httpMethod": "DELETE", "parameters": { - "requestMetadata.trafficSource.trafficSubId": { - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" - }, - "userId": { - "location": "path", - "description": "The ID of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean\nthe currently authenticated user.", - "type": "string", - "required": true - }, "requestMetadata.partnersSessionId": { + "location": "query", "description": "Google Partners session ID.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.userOverrides.userId": { + "location": "query", "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.trafficSource.trafficSourceId": { "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", @@ -530,9 +604,9 @@ "location": "query" }, "requestMetadata.locale": { - "location": "query", "description": "Locale to use for the current request.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.userOverrides.ipAddress": { "location": "query", @@ -544,87 +618,95 @@ "type": "string", "repeated": true, "location": "query" + }, + "userId": { + "description": "The ID of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean\nthe currently authenticated user.", + "type": "string", + "required": true, + "location": "path" + }, + "requestMetadata.trafficSource.trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v2/users/{userId}/companyRelation" + }, + "createCompanyRelation": { + "response": { + "$ref": "CompanyRelation" + }, + "parameterOrder": [ + "userId" + ], + "httpMethod": "PUT", + "parameters": { + "requestMetadata.trafficSource.trafficSourceId": { + "location": "query", + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "requestMetadata.locale": { + "location": "query", + "description": "Locale to use for the current request.", + "type": "string" + }, + "requestMetadata.userOverrides.ipAddress": { + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string", + "location": "query" + }, + "requestMetadata.experimentIds": { + "description": "Experiment IDs the current request belongs to.", + "type": "string", + "repeated": true, + "location": "query" + }, + "requestMetadata.trafficSource.trafficSubId": { + "location": "query", + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "userId": { + "description": "The ID of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean\nthe currently authenticated user.", + "type": "string", + "required": true, + "location": "path" + }, + "requestMetadata.userOverrides.userId": { + "location": "query", + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string" + }, + "requestMetadata.partnersSessionId": { + "type": "string", + "location": "query", + "description": "Google Partners session ID." } }, "flatPath": "v2/users/{userId}/companyRelation", - "id": "partners.users.deleteCompanyRelation", + "id": "partners.users.createCompanyRelation", "path": "v2/users/{userId}/companyRelation", - "description": "Deletes a user's company relation. Unaffiliaites the user from a company." - }, - "createCompanyRelation": { "description": "Creates a user's company relation. Affiliates the user to a company.", "request": { "$ref": "CompanyRelation" - }, - "httpMethod": "PUT", - "parameterOrder": [ - "userId" - ], - "response": { - "$ref": "CompanyRelation" - }, - "parameters": { - "requestMetadata.userOverrides.userId": { - "location": "query", - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - }, - "requestMetadata.partnersSessionId": { - "description": "Google Partners session ID.", - "type": "string", - "location": "query" - }, - "requestMetadata.trafficSource.trafficSourceId": { - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" - }, - "requestMetadata.locale": { - "location": "query", - "description": "Locale to use for the current request.", - "type": "string" - }, - "requestMetadata.userOverrides.ipAddress": { - "location": "query", - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" - }, - "requestMetadata.experimentIds": { - "repeated": true, - "location": "query", - "description": "Experiment IDs the current request belongs to.", - "type": "string" - }, - "requestMetadata.trafficSource.trafficSubId": { - "location": "query", - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "userId": { - "location": "path", - "description": "The ID of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean\nthe currently authenticated user.", - "type": "string", - "required": true - } - }, - "flatPath": "v2/users/{userId}/companyRelation", - "path": "v2/users/{userId}/companyRelation", - "id": "partners.users.createCompanyRelation" + } }, "get": { "description": "Gets a user.", - "httpMethod": "GET", - "parameterOrder": [ - "userId" - ], "response": { "$ref": "User" }, + "parameterOrder": [ + "userId" + ], + "httpMethod": "GET", "parameters": { "requestMetadata.partnersSessionId": { - "location": "query", "description": "Google Partners session ID.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.userOverrides.userId": { "description": "Logged-in user ID to impersonate instead of the user's ID.", @@ -632,14 +714,14 @@ "location": "query" }, "userView": { + "description": "Specifies what parts of the user information to return.", + "type": "string", "location": "query", "enum": [ "BASIC", "PROFILE", "PUBLIC_PROFILE" - ], - "description": "Specifies what parts of the user information to return.", - "type": "string" + ] }, "requestMetadata.trafficSource.trafficSourceId": { "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", @@ -647,14 +729,14 @@ "location": "query" }, "requestMetadata.locale": { + "location": "query", "description": "Locale to use for the current request.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.userOverrides.ipAddress": { - "location": "query", "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.experimentIds": { "location": "query", @@ -662,49 +744,58 @@ "type": "string", "repeated": true }, - "userId": { - "location": "path", - "description": "Identifier of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean the currently\nauthenticated user.", - "type": "string", - "required": true - }, "requestMetadata.trafficSource.trafficSubId": { + "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "userId": { "type": "string", - "location": "query" + "required": true, + "location": "path", + "description": "Identifier of the user. Can be set to \u003ccode\u003eme\u003c/code\u003e to mean the currently\nauthenticated user." } }, "flatPath": "v2/users/{userId}", - "path": "v2/users/{userId}", - "id": "partners.users.get" + "id": "partners.users.get", + "path": "v2/users/{userId}" }, "updateProfile": { + "description": "Updates a user's profile. A user can only update their own profile and\nshould only be called within the context of a logged in user.", + "request": { + "$ref": "UserProfile" + }, "response": { "$ref": "UserProfile" }, "parameterOrder": [], "httpMethod": "PATCH", "parameters": { + "requestMetadata.locale": { + "location": "query", + "description": "Locale to use for the current request.", + "type": "string" + }, "requestMetadata.userOverrides.ipAddress": { "description": "IP address to use instead of the user's geo-located IP address.", "type": "string", "location": "query" }, "requestMetadata.experimentIds": { - "repeated": true, "location": "query", "description": "Experiment IDs the current request belongs to.", - "type": "string" + "type": "string", + "repeated": true }, "requestMetadata.trafficSource.trafficSubId": { + "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" + "type": "string" }, "requestMetadata.partnersSessionId": { - "location": "query", "description": "Google Partners session ID.", - "type": "string" + "type": "string", + "location": "query" }, "requestMetadata.userOverrides.userId": { "description": "Logged-in user ID to impersonate instead of the user's ID.", @@ -715,43 +806,63 @@ "location": "query", "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", "type": "string" - }, - "requestMetadata.locale": { - "location": "query", - "description": "Locale to use for the current request.", - "type": "string" } }, "flatPath": "v2/users/profile", "id": "partners.users.updateProfile", - "path": "v2/users/profile", - "description": "Updates a user's profile. A user can only update their own profile and\nshould only be called within the context of a logged in user.", - "request": { - "$ref": "UserProfile" - } + "path": "v2/users/profile" } } }, "companies": { "methods": { "list": { + "flatPath": "v2/companies", + "path": "v2/companies", + "id": "partners.companies.list", "description": "Lists companies.", + "httpMethod": "GET", "response": { "$ref": "ListCompaniesResponse" }, "parameterOrder": [], - "httpMethod": "GET", "parameters": { - "requestMetadata.trafficSource.trafficSubId": { + "services": { + "enum": [ + "SERVICE_UNSPECIFIED", + "S_ADVANCED_ADWORDS_SUPPORT", + "S_ADVERTISING_ON_GOOGLE", + "S_AN_ENHANCED_WEBSITE", + "S_AN_ONLINE_MARKETING_PLAN", + "S_MOBILE_AND_VIDEO_ADS", + "S_MOBILE_WEBSITE_SERVICES" + ], + "description": "List of services that the returned agencies should provide. If this is\nnot empty, any returned agency must have at least one of these services,\nor one of the specializations in the \"specializations\" field.", + "type": "string", + "repeated": true, + "location": "query" + }, + "requestMetadata.trafficSource.trafficSourceId": { "location": "query", - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "maxMonthlyBudget.units": { + "location": "query", + "format": "int64", + "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.", "type": "string" }, "minMonthlyBudget.nanos": { - "location": "query", "format": "int32", "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", - "type": "integer" + "type": "integer", + "location": "query" + }, + "requestMetadata.trafficSource.trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string", + "location": "query" }, "requestMetadata.partnersSessionId": { "location": "query", @@ -764,9 +875,9 @@ "location": "query" }, "pageToken": { + "location": "query", "description": "A token identifying a page of results that the server returns.\nTypically, this is the value of `ListCompaniesResponse.next_page_token`\nreturned from the previous call to\nListCompanies.", - "type": "string", - "location": "query" + "type": "string" }, "industries": { "enum": [ @@ -805,10 +916,10 @@ ] }, "languageCodes": { - "location": "query", "description": "List of language codes that company can support. Only primary language\nsubtags are accepted as defined by\n\u003ca href=\"https://tools.ietf.org/html/bcp47\"\u003eBCP 47\u003c/a\u003e\n(IETF BCP 47, \"Tags for Identifying Languages\").", "type": "string", - "repeated": true + "repeated": true, + "location": "query" }, "pageSize": { "location": "query", @@ -833,9 +944,6 @@ "type": "string" }, "specializations": { - "description": "List of specializations that the returned agencies should provide. If this\nis not empty, any returned agency must have at least one of these\nspecializations, or one of the services in the \"services\" field.", - "type": "string", - "repeated": true, "location": "query", "enum": [ "BADGE_SPECIALIZATION_UNKNOWN", @@ -844,34 +952,32 @@ "BADGE_SPECIALIZATION_ADWORDS_MOBILE", "BADGE_SPECIALIZATION_ADWORDS_VIDEO", "BADGE_SPECIALIZATION_ADWORDS_SHOPPING" - ] + ], + "description": "List of specializations that the returned agencies should provide. If this\nis not empty, any returned agency must have at least one of these\nspecializations, or one of the services in the \"services\" field.", + "type": "string", + "repeated": true }, "maxMonthlyBudget.currencyCode": { + "description": "The 3-letter currency code defined in ISO 4217.", "type": "string", + "location": "query" + }, + "requestMetadata.userOverrides.userId": { "location": "query", - "description": "The 3-letter currency code defined in ISO 4217." + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string" }, "minMonthlyBudget.currencyCode": { "location": "query", "description": "The 3-letter currency code defined in ISO 4217.", "type": "string" }, - "requestMetadata.userOverrides.userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string", - "location": "query" - }, "view": { - "type": "string", - "location": "query", "enum": [ "COMPANY_VIEW_UNSPECIFIED", "CV_GOOGLE_PARTNER_SEARCH" ], - "description": "The view of the `Company` resource to be returned. This must not be\n`COMPANY_VIEW_UNSPECIFIED`." - }, - "requestMetadata.locale": { - "description": "Locale to use for the current request.", + "description": "The view of the `Company` resource to be returned. This must not be\n`COMPANY_VIEW_UNSPECIFIED`.", "type": "string", "location": "query" }, @@ -880,61 +986,33 @@ "description": "The address to use when searching for companies.\nIf not given, the geo-located address of the request is used.", "type": "string" }, + "requestMetadata.locale": { + "location": "query", + "description": "Locale to use for the current request.", + "type": "string" + }, "minMonthlyBudget.units": { - "location": "query", - "format": "int64", - "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.", - "type": "string" - }, - "maxMonthlyBudget.nanos": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000." - }, - "services": { - "enum": [ - "SERVICE_UNSPECIFIED", - "S_ADVANCED_ADWORDS_SUPPORT", - "S_ADVERTISING_ON_GOOGLE", - "S_AN_ENHANCED_WEBSITE", - "S_AN_ONLINE_MARKETING_PLAN", - "S_MOBILE_AND_VIDEO_ADS", - "S_MOBILE_WEBSITE_SERVICES" - ], - "description": "List of services that the returned agencies should provide. If this is\nnot empty, any returned agency must have at least one of these services,\nor one of the specializations in the \"specializations\" field.", - "type": "string", - "repeated": true, - "location": "query" - }, - "requestMetadata.trafficSource.trafficSourceId": { - "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "maxMonthlyBudget.units": { "type": "string", "location": "query", "format": "int64", "description": "The whole units of the amount.\nFor example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar." + }, + "maxMonthlyBudget.nanos": { + "location": "query", + "format": "int32", + "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", + "type": "integer" } - }, - "flatPath": "v2/companies", - "id": "partners.companies.list", - "path": "v2/companies" + } }, "get": { - "flatPath": "v2/companies/{companyId}", - "id": "partners.companies.get", - "path": "v2/companies/{companyId}", - "description": "Gets a company.", - "response": { - "$ref": "GetCompanyResponse" - }, + "httpMethod": "GET", "parameterOrder": [ "companyId" ], - "httpMethod": "GET", + "response": { + "$ref": "GetCompanyResponse" + }, "parameters": { "requestMetadata.trafficSource.trafficSourceId": { "location": "query", @@ -947,35 +1025,30 @@ "type": "string" }, "companyId": { - "type": "string", - "required": true, "location": "path", - "description": "The ID of the company to retrieve." - }, - "requestMetadata.experimentIds": { - "description": "Experiment IDs the current request belongs to.", + "description": "The ID of the company to retrieve.", "type": "string", - "repeated": true, - "location": "query" + "required": true }, "currencyCode": { + "location": "query", "description": "If the company's budget is in a different currency code than this one, then\nthe converted budget is converted to this currency code.", + "type": "string" + }, + "requestMetadata.experimentIds": { + "location": "query", + "description": "Experiment IDs the current request belongs to.", + "type": "string", + "repeated": true + }, + "orderBy": { + "description": "How to order addresses within the returned company. Currently, only\n`address` and `address desc` is supported which will sorted by closest to\nfarthest in distance from given address and farthest to closest distance\nfrom given address respectively.", "type": "string", "location": "query" }, "requestMetadata.trafficSource.trafficSubId": { + "location": "query", "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string", - "location": "query" - }, - "orderBy": { - "type": "string", - "location": "query", - "description": "How to order addresses within the returned company. Currently, only\n`address` and `address desc` is supported which will sorted by closest to\nfarthest in distance from given address and farthest to closest distance\nfrom given address respectively." - }, - "requestMetadata.partnersSessionId": { - "location": "query", - "description": "Google Partners session ID.", "type": "string" }, "requestMetadata.userOverrides.userId": { @@ -983,6 +1056,11 @@ "type": "string", "location": "query" }, + "requestMetadata.partnersSessionId": { + "location": "query", + "description": "Google Partners session ID.", + "type": "string" + }, "view": { "location": "query", "enum": [ @@ -993,26 +1071,26 @@ "type": "string" }, "requestMetadata.locale": { - "type": "string", - "location": "query", - "description": "Locale to use for the current request." - }, - "address": { - "description": "The address to use for sorting the company's addresses by proximity.\nIf not given, the geo-located address of the request is used.\nUsed when order_by is set.", + "description": "Locale to use for the current request.", "type": "string", "location": "query" + }, + "address": { + "location": "query", + "description": "The address to use for sorting the company's addresses by proximity.\nIf not given, the geo-located address of the request is used.\nUsed when order_by is set.", + "type": "string" } - } + }, + "flatPath": "v2/companies/{companyId}", + "path": "v2/companies/{companyId}", + "id": "partners.companies.get", + "description": "Gets a company." } }, "resources": { "leads": { "methods": { "create": { - "request": { - "$ref": "CreateLeadRequest" - }, - "description": "Creates an advertiser lead for the given company ID.", "response": { "$ref": "CreateLeadResponse" }, @@ -1022,15 +1100,19 @@ "httpMethod": "POST", "parameters": { "companyId": { + "description": "The ID of the company to contact.", "type": "string", "required": true, - "location": "path", - "description": "The ID of the company to contact." + "location": "path" } }, "flatPath": "v2/companies/{companyId}/leads", "id": "partners.companies.leads.create", - "path": "v2/companies/{companyId}/leads" + "path": "v2/companies/{companyId}/leads", + "description": "Creates an advertiser lead for the given company ID.", + "request": { + "$ref": "CreateLeadRequest" + } } } } @@ -1039,25 +1121,29 @@ "userEvents": { "methods": { "log": { - "id": "partners.userEvents.log", - "path": "v2/userEvents:log", - "description": "Logs a user event.", - "request": { - "$ref": "LogUserEventRequest" - }, "response": { "$ref": "LogUserEventResponse" }, "parameterOrder": [], "httpMethod": "POST", "parameters": {}, - "flatPath": "v2/userEvents:log" + "flatPath": "v2/userEvents:log", + "id": "partners.userEvents.log", + "path": "v2/userEvents:log", + "description": "Logs a user event.", + "request": { + "$ref": "LogUserEventRequest" + } } } }, "clientMessages": { "methods": { "log": { + "request": { + "$ref": "LogMessageRequest" + }, + "description": "Logs a generic message from the client, such as\n`Failed to render component`, `Profile page is running slow`,\n`More than 500 users have accessed this result.`, etc.", "httpMethod": "POST", "parameterOrder": [], "response": { @@ -1066,98 +1152,34 @@ "parameters": {}, "flatPath": "v2/clientMessages:log", "path": "v2/clientMessages:log", - "id": "partners.clientMessages.log", - "description": "Logs a generic message from the client, such as\n`Failed to render component`, `Profile page is running slow`,\n`More than 500 users have accessed this result.`, etc.", - "request": { - "$ref": "LogMessageRequest" - } - } - } - }, - "exams": { - "methods": { - "getToken": { - "httpMethod": "GET", - "parameterOrder": [ - "examType" - ], - "response": { - "$ref": "ExamToken" - }, - "parameters": { - "requestMetadata.locale": { - "location": "query", - "description": "Locale to use for the current request.", - "type": "string" - }, - "requestMetadata.userOverrides.ipAddress": { - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string", - "location": "query" - }, - "requestMetadata.experimentIds": { - "description": "Experiment IDs the current request belongs to.", - "type": "string", - "repeated": true, - "location": "query" - }, - "requestMetadata.trafficSource.trafficSubId": { - "location": "query", - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "examType": { - "location": "path", - "enum": [ - "CERTIFICATION_EXAM_TYPE_UNSPECIFIED", - "CET_ADWORDS_FUNDAMENTALS", - "CET_ADWORDS_ADVANCED_SEARCH", - "CET_ADWORDS_ADVANCED_DISPLAY", - "CET_VIDEO_ADS", - "CET_DOUBLECLICK", - "CET_ANALYTICS", - "CET_SHOPPING", - "CET_MOBILE", - "CET_DIGITAL_SALES", - "CET_MOBILE_SITES" - ], - "description": "The exam type we are requesting a token for.", - "type": "string", - "required": true - }, - "requestMetadata.partnersSessionId": { - "description": "Google Partners session ID.", - "type": "string", - "location": "query" - }, - "requestMetadata.userOverrides.userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string", - "location": "query" - }, - "requestMetadata.trafficSource.trafficSourceId": { - "type": "string", - "location": "query", - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us." - } - }, - "flatPath": "v2/exams/{examType}/token", - "path": "v2/exams/{examType}/token", - "id": "partners.exams.getToken", - "description": "Gets an Exam Token for a Partner's user to take an exam in the Exams System" + "id": "partners.clientMessages.log" } } } }, "parameters": { - "callback": { - "description": "JSONP", + "upload_protocol": { + "type": "string", + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." + }, + "prettyPrint": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Returns response with indentations and line breaks." + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, "$.xgafv": { - "description": "V1 error format.", - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -1166,7 +1188,14 @@ "enum": [ "1", "2" - ] + ], + "description": "V1 error format.", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" }, "alt": { "enum": [ @@ -1185,9 +1214,9 @@ "default": "json" }, "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", - "location": "query" + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." }, "access_token": { "description": "OAuth access token.", @@ -1205,512 +1234,37 @@ "type": "boolean", "location": "query" }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, "bearer_token": { "location": "query", "description": "OAuth bearer token.", "type": "string" }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "fields": { + "oauth_token": { "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "description": "OAuth 2.0 token for the current user.", "type": "string" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" } }, "schemas": { - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "TrafficSource": { - "type": "object", - "properties": { - "trafficSourceId": { - "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - }, - "trafficSubId": { - "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", - "type": "string" - } - }, - "id": "TrafficSource", - "description": "Source of traffic for the current request." - }, - "RequestMetadata": { - "description": "Common data that is in each API request.", - "type": "object", - "properties": { - "trafficSource": { - "description": "Source of traffic for the current request.", - "$ref": "TrafficSource" - }, - "experimentIds": { - "description": "Experiment IDs the current request belongs to.", - "items": { - "type": "string" - }, - "type": "array" - }, - "locale": { - "description": "Locale to use for the current request.", - "type": "string" - }, - "partnersSessionId": { - "description": "Google Partners session ID.", - "type": "string" - }, - "userOverrides": { - "$ref": "UserOverrides", - "description": "Values to use instead of the user's respective defaults for the current\nrequest. These are only honored by whitelisted products." - } - }, - "id": "RequestMetadata" - }, - "CreateLeadRequest": { - "description": "Request message for CreateLead.", - "type": "object", - "properties": { - "requestMetadata": { - "$ref": "RequestMetadata", - "description": "Current request metadata." - }, - "recaptchaChallenge": { - "description": "\u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e challenge info.", - "$ref": "RecaptchaChallenge" - }, - "lead": { - "description": "The lead resource. The `LeadType` must not be `LEAD_TYPE_UNSPECIFIED`\nand either `email` or `phone_number` must be provided.", - "$ref": "Lead" - } - }, - "id": "CreateLeadRequest" - }, - "EventData": { - "id": "EventData", - "description": "Key value data pair for an event.", - "type": "object", - "properties": { - "key": { - "enumDescriptions": [ - "Unchosen.", - "Action data.", - "Agency ID data.", - "Agency name data.", - "Agency phone number data.", - "Agency website data.", - "Budget data.", - "Center-point data.", - "Certification data.", - "Comment data.", - "Country data.", - "Currency data.", - "Currently viewed agency ID data.", - "Distance data.", - "Distance type data.", - "Exam data.", - "History token data.", - "Identifier data.", - "Industry data.", - "Insight tag data.", - "Language data.", - "Location data.", - "Marketing opt-in data.", - "Query data.", - "Search start index data.", - "Service data.", - "Show vow data.", - "Solution data.", - "Traffic source ID data.", - "Traffic sub ID data.", - "Viewport data.", - "Website data.", - "Details data.", - "Experiment ID data.", - "Google Partner Search motivation data.", - "URL data.", - "Element we wanted user to focus on.", - "Progress when viewing an item \\[0-100\\]." - ], - "enum": [ - "EVENT_DATA_TYPE_UNSPECIFIED", - "ACTION", - "AGENCY_ID", - "AGENCY_NAME", - "AGENCY_PHONE_NUMBER", - "AGENCY_WEBSITE", - "BUDGET", - "CENTER_POINT", - "CERTIFICATION", - "COMMENT", - "COUNTRY", - "CURRENCY", - "CURRENTLY_VIEWED_AGENCY_ID", - "DISTANCE", - "DISTANCE_TYPE", - "EXAM", - "HISTORY_TOKEN", - "ID", - "INDUSTRY", - "INSIGHT_TAG", - "LANGUAGE", - "LOCATION", - "MARKETING_OPT_IN", - "QUERY", - "SEARCH_START_INDEX", - "SERVICE", - "SHOW_VOW", - "SOLUTION", - "TRAFFIC_SOURCE_ID", - "TRAFFIC_SUB_ID", - "VIEW_PORT", - "WEBSITE", - "DETAILS", - "EXPERIMENT_ID", - "GPS_MOTIVATION", - "URL", - "ELEMENT_FOCUS", - "PROGRESS" - ], - "description": "Data type.", - "type": "string" - }, - "values": { - "description": "Data values.", - "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "ExamStatus": { - "type": "object", - "properties": { - "lastPassed": { - "format": "google-datetime", - "description": "The date the user last passed this exam.", - "type": "string" - }, - "examType": { - "enum": [ - "CERTIFICATION_EXAM_TYPE_UNSPECIFIED", - "CET_ADWORDS_FUNDAMENTALS", - "CET_ADWORDS_ADVANCED_SEARCH", - "CET_ADWORDS_ADVANCED_DISPLAY", - "CET_VIDEO_ADS", - "CET_DOUBLECLICK", - "CET_ANALYTICS", - "CET_SHOPPING", - "CET_MOBILE", - "CET_DIGITAL_SALES", - "CET_MOBILE_SITES" - ], - "description": "The type of the exam.", - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "Adwords Fundamentals exam.", - "AdWords advanced search exam.", - "AdWords advanced display exam.", - "VideoAds exam.", - "DoubleClick exam.", - "Analytics exam.", - "Shopping exam.", - "Mobile exam.", - "Digital Sales exam.", - "Mobile Sites exam." - ] - }, - "passed": { - "description": "Whether this exam has been passed and not expired.", - "type": "boolean" - }, - "taken": { - "format": "google-datetime", - "description": "The date the user last taken this exam.", - "type": "string" - }, - "warning": { - "type": "boolean", - "description": "Whether this exam is in the state of warning." - }, - "expiration": { - "format": "google-datetime", - "description": "Date this exam is due to expire.", - "type": "string" - } - }, - "id": "ExamStatus", - "description": "A user's information on a specific exam." - }, - "ListOffersResponse": { - "properties": { - "availableOffers": { - "description": "Available Offers to be distributed.", - "items": { - "$ref": "AvailableOffer" - }, - "type": "array" - }, - "responseMetadata": { - "$ref": "ResponseMetadata", - "description": "Current response metadata." - }, - "noOfferReason": { - "type": "string", - "enumDescriptions": [ - "Unset.", - "Not an MCC.", - "Offer limit has been reached.", - "Ineligible for offers." - ], - "enum": [ - "NO_OFFER_REASON_UNSPECIFIED", - "NO_OFFER_REASON_NO_MCC", - "NO_OFFER_REASON_LIMIT_REACHED", - "NO_OFFER_REASON_INELIGIBLE" - ], - "description": "Reason why no Offers are available." - } - }, - "id": "ListOffersResponse", - "description": "Response for ListOffer.", - "type": "object" - }, - "CountryOfferInfo": { - "type": "object", - "properties": { - "spendXAmount": { - "description": "(localized) Spend X amount for that country's offer.", - "type": "string" - }, - "offerCountryCode": { - "description": "Country code for which offer codes may be requested.", - "type": "string" - }, - "offerType": { - "enum": [ - "OFFER_TYPE_UNSPECIFIED", - "OFFER_TYPE_SPEND_X_GET_Y", - "OFFER_TYPE_VIDEO", - "OFFER_TYPE_SPEND_MATCH" - ], - "description": "Type of offer country is eligible for.", - "type": "string", - "enumDescriptions": [ - "Unset.", - "AdWords spend X get Y.", - "Youtube video.", - "Spend Match up to Y." - ] - }, - "getYAmount": { - "type": "string", - "description": "(localized) Get Y amount for that country's offer." - } - }, - "id": "CountryOfferInfo", - "description": "Offer info by country." - }, - "ListCompaniesResponse": { - "properties": { - "nextPageToken": { - "type": "string", - "description": "A token to retrieve next page of results.\nPass this value in the `ListCompaniesRequest.page_token` field in the\nsubsequent call to\nListCompanies to retrieve the\nnext page of results." - }, - "responseMetadata": { - "description": "Current response metadata.", - "$ref": "ResponseMetadata" - }, - "companies": { - "description": "The list of companies.", - "items": { - "$ref": "Company" - }, - "type": "array" - } - }, - "id": "ListCompaniesResponse", - "description": "Response message for\nListCompanies.", - "type": "object" - }, - "OfferCustomer": { - "description": "Customers qualified for an offer.", - "type": "object", - "properties": { - "name": { - "description": "Name of the customer.", - "type": "string" - }, - "spendXAmount": { - "description": "Formatted Spend X amount with currency code.", - "type": "string" - }, - "adwordsUrl": { - "description": "URL to the customer's AdWords page.", - "type": "string" - }, - "creationTime": { - "format": "google-datetime", - "description": "Time the customer was created.", - "type": "string" - }, - "eligibilityDaysLeft": { - "format": "int32", - "description": "Days the customer is still eligible.", - "type": "integer" - }, - "offerType": { - "description": "Type of the offer", - "type": "string", - "enumDescriptions": [ - "Unset.", - "AdWords spend X get Y.", - "Youtube video.", - "Spend Match up to Y." - ], - "enum": [ - "OFFER_TYPE_UNSPECIFIED", - "OFFER_TYPE_SPEND_X_GET_Y", - "OFFER_TYPE_VIDEO", - "OFFER_TYPE_SPEND_MATCH" - ] - }, - "externalCid": { - "format": "int64", - "description": "External CID for the customer.", - "type": "string" - }, - "countryCode": { - "description": "Country code of the customer.", - "type": "string" - }, - "getYAmount": { - "description": "Formatted Get Y amount with currency code.", - "type": "string" - } - }, - "id": "OfferCustomer" - }, - "CertificationStatus": { - "description": "Google Partners certification status.", - "type": "object", - "properties": { - "examStatuses": { - "description": "List of certification exam statuses.", - "items": { - "$ref": "CertificationExamStatus" - }, - "type": "array" - }, - "type": { - "description": "The type of the certification.", - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "AdWords certified.", - "YouTube certified.", - "VideoAds certified.", - "Analytics certified.", - "DoubleClick certified.", - "Shopping certified.", - "Mobile certified.", - "Digital sales certified.", - "AdWords Search certified.", - "AdWords Display certified.", - "Mobile Sites certified." - ], - "enum": [ - "CERTIFICATION_TYPE_UNSPECIFIED", - "CT_ADWORDS", - "CT_YOUTUBE", - "CT_VIDEOADS", - "CT_ANALYTICS", - "CT_DOUBLECLICK", - "CT_SHOPPING", - "CT_MOBILE", - "CT_DIGITAL_SALES", - "CT_ADWORDS_SEARCH", - "CT_ADWORDS_DISPLAY", - "CT_MOBILE_SITES" - ] - }, - "userCount": { - "format": "int32", - "description": "Number of people who are certified,", - "type": "integer" - }, - "isCertified": { - "description": "Whether certification is passing.", - "type": "boolean" - } - }, - "id": "CertificationStatus" - }, - "LocalizedCompanyInfo": { - "description": "The localized company information.", - "type": "object", - "properties": { - "displayName": { - "description": "Localized display name.", - "type": "string" - }, - "languageCode": { - "description": "Language code of the localized company info, as defined by\n\u003ca href=\"https://tools.ietf.org/html/bcp47\"\u003eBCP 47\u003c/a\u003e\n(IETF BCP 47, \"Tags for Identifying Languages\").", - "type": "string" - }, - "countryCodes": { - "items": { - "type": "string" - }, - "type": "array", - "description": "List of country codes for the localized company info." - }, - "overview": { - "description": "Localized brief description that the company uses to advertise themselves.", - "type": "string" - } - }, - "id": "LocalizedCompanyInfo" - }, "LogUserEventResponse": { + "description": "Response message for\nLogUserEvent.", + "type": "object", "properties": { "responseMetadata": { "description": "Current response metadata.", "$ref": "ResponseMetadata" } }, - "id": "LogUserEventResponse", - "description": "Response message for\nLogUserEvent.", - "type": "object" + "id": "LogUserEventResponse" }, "ListOffersHistoryResponse": { "description": "Response for ListOfferHistory.", "type": "object", "properties": { + "responseMetadata": { + "$ref": "ResponseMetadata", + "description": "Current response metadata." + }, "canShowEntireCompany": { "description": "True if the user has the option to show entire company history.", "type": "boolean" @@ -1734,38 +1288,24 @@ "nextPageToken": { "description": "Supply this token in a ListOffersHistoryRequest to retrieve the next page.", "type": "string" - }, - "responseMetadata": { - "$ref": "ResponseMetadata", - "description": "Current response metadata." } }, "id": "ListOffersHistoryResponse" }, "LogMessageResponse": { - "id": "LogMessageResponse", "description": "Response message for\nLogClientMessage.", "type": "object", "properties": { "responseMetadata": { - "description": "Current response metadata.", - "$ref": "ResponseMetadata" + "$ref": "ResponseMetadata", + "description": "Current response metadata." } - } + }, + "id": "LogMessageResponse" }, "SpecializationStatus": { - "description": "Agency specialization status", - "type": "object", "properties": { "badgeSpecialization": { - "enum": [ - "BADGE_SPECIALIZATION_UNKNOWN", - "BADGE_SPECIALIZATION_ADWORDS_SEARCH", - "BADGE_SPECIALIZATION_ADWORDS_DISPLAY", - "BADGE_SPECIALIZATION_ADWORDS_MOBILE", - "BADGE_SPECIALIZATION_ADWORDS_VIDEO", - "BADGE_SPECIALIZATION_ADWORDS_SHOPPING" - ], "description": "The specialization this status is for.", "type": "string", "enumDescriptions": [ @@ -1775,9 +1315,23 @@ "AdWords Mobile specialization", "AdWords Video specialization", "AdWords Shopping specialization" + ], + "enum": [ + "BADGE_SPECIALIZATION_UNKNOWN", + "BADGE_SPECIALIZATION_ADWORDS_SEARCH", + "BADGE_SPECIALIZATION_ADWORDS_DISPLAY", + "BADGE_SPECIALIZATION_ADWORDS_MOBILE", + "BADGE_SPECIALIZATION_ADWORDS_VIDEO", + "BADGE_SPECIALIZATION_ADWORDS_SHOPPING" ] }, "badgeSpecializationState": { + "enum": [ + "BADGE_SPECIALIZATION_STATE_UNKNOWN", + "BADGE_SPECIALIZATION_STATE_PASSED", + "BADGE_SPECIALIZATION_STATE_NOT_PASSED", + "BADGE_SPECIALIZATION_STATE_IN_GRACE" + ], "description": "State of agency specialization.", "type": "string", "enumDescriptions": [ @@ -1785,53 +1339,17 @@ "Specialization passed", "Specialization not passed", "Specialization in grace" - ], - "enum": [ - "BADGE_SPECIALIZATION_STATE_UNKNOWN", - "BADGE_SPECIALIZATION_STATE_PASSED", - "BADGE_SPECIALIZATION_STATE_NOT_PASSED", - "BADGE_SPECIALIZATION_STATE_IN_GRACE" ] } }, - "id": "SpecializationStatus" + "id": "SpecializationStatus", + "description": "Agency specialization status", + "type": "object" }, "Certification": { "description": "A user's information on a specific certification.", "type": "object", "properties": { - "certificationType": { - "enum": [ - "CERTIFICATION_TYPE_UNSPECIFIED", - "CT_ADWORDS", - "CT_YOUTUBE", - "CT_VIDEOADS", - "CT_ANALYTICS", - "CT_DOUBLECLICK", - "CT_SHOPPING", - "CT_MOBILE", - "CT_DIGITAL_SALES", - "CT_ADWORDS_SEARCH", - "CT_ADWORDS_DISPLAY", - "CT_MOBILE_SITES" - ], - "description": "The type of certification, the area of expertise.", - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "AdWords certified.", - "YouTube certified.", - "VideoAds certified.", - "Analytics certified.", - "DoubleClick certified.", - "Shopping certified.", - "Mobile certified.", - "Digital sales certified.", - "AdWords Search certified.", - "AdWords Display certified.", - "Mobile Sites certified." - ] - }, "lastAchieved": { "format": "google-datetime", "description": "The date the user last achieved certification.", @@ -1849,59 +1367,56 @@ "achieved": { "description": "Whether this certification has been achieved.", "type": "boolean" + }, + "certificationType": { + "description": "The type of certification, the area of expertise.", + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "AdWords certified.", + "YouTube certified.", + "VideoAds certified.", + "Analytics certified.", + "DoubleClick certified.", + "Shopping certified.", + "Mobile certified.", + "Digital sales certified.", + "AdWords Search certified.", + "AdWords Display certified.", + "Mobile Sites certified." + ], + "enum": [ + "CERTIFICATION_TYPE_UNSPECIFIED", + "CT_ADWORDS", + "CT_YOUTUBE", + "CT_VIDEOADS", + "CT_ANALYTICS", + "CT_DOUBLECLICK", + "CT_SHOPPING", + "CT_MOBILE", + "CT_DIGITAL_SALES", + "CT_ADWORDS_SEARCH", + "CT_ADWORDS_DISPLAY", + "CT_MOBILE_SITES" + ] } }, "id": "Certification" }, "User": { - "description": "A resource representing a user of the Partners platform.", - "type": "object", "properties": { - "examStatus": { - "description": "The list of exams the user ever taken. For each type of exam, only one\nentry is listed.", - "items": { - "$ref": "ExamStatus" - }, - "type": "array" - }, - "id": { - "type": "string", - "description": "The ID of the user." - }, - "publicProfile": { - "$ref": "PublicProfile", - "description": "Information about a user's external public profile outside Google Partners." - }, - "companyVerificationEmail": { - "description": "The email address used by the user used for company verification.\n@OutputOnly", - "type": "string" - }, - "certificationStatus": { - "items": { - "$ref": "Certification" - }, - "type": "array", - "description": "The list of achieved certifications. These are calculated based on exam\nresults and other requirements.\n@OutputOnly" - }, "profile": { "description": "The profile information of a Partners user, contains all the directly\neditable user information.", "$ref": "UserProfile" }, "company": { - "$ref": "CompanyRelation", - "description": "The company that the user is associated with.\nIf not present, the user is not associated with any company." + "description": "The company that the user is associated with.\nIf not present, the user is not associated with any company.", + "$ref": "CompanyRelation" }, "lastAccessTime": { - "type": "string", "format": "google-datetime", - "description": "The most recent time the user interacted with the Partners site.\n@OutputOnly" - }, - "primaryEmails": { - "description": "The list of emails the user has access to/can select as primary.\n@OutputOnly", - "items": { - "type": "string" - }, - "type": "array" + "description": "The most recent time the user interacted with the Partners site.\n@OutputOnly", + "type": "string" }, "availableAdwordsManagerAccounts": { "description": "This is the list of AdWords Manager Accounts the user has edit access to.\nIf the user has edit access to multiple accounts, the user can choose the\npreferred account and we use this when a personal account is needed. Can\nbe empty meaning the user has access to no accounts.\n@OutputOnly", @@ -1910,12 +1425,47 @@ }, "type": "array" }, + "primaryEmails": { + "description": "The list of emails the user has access to/can select as primary.\n@OutputOnly", + "items": { + "type": "string" + }, + "type": "array" + }, "internalId": { - "description": "The internal user ID.\nOnly available for a whitelisted set of api clients.", + "type": "string", + "description": "The internal user ID.\nOnly available for a whitelisted set of api clients." + }, + "examStatus": { + "items": { + "$ref": "ExamStatus" + }, + "type": "array", + "description": "The list of exams the user ever taken. For each type of exam, only one\nentry is listed." + }, + "id": { + "description": "The ID of the user.", + "type": "string" + }, + "publicProfile": { + "$ref": "PublicProfile", + "description": "Information about a user's external public profile outside Google Partners." + }, + "certificationStatus": { + "description": "The list of achieved certifications. These are calculated based on exam\nresults and other requirements.\n@OutputOnly", + "items": { + "$ref": "Certification" + }, + "type": "array" + }, + "companyVerificationEmail": { + "description": "The email address used by the user used for company verification.\n@OutputOnly", "type": "string" } }, - "id": "User" + "id": "User", + "description": "A resource representing a user of the Partners platform.", + "type": "object" }, "ListAnalyticsResponse": { "description": "Response message for\nListAnalytics.", @@ -1933,12 +1483,12 @@ "type": "string" }, "analyticsSummary": { - "description": "Aggregated information across the response's\nanalytics.", - "$ref": "AnalyticsSummary" + "$ref": "AnalyticsSummary", + "description": "Aggregated information across the response's\nanalytics." }, "responseMetadata": { - "$ref": "ResponseMetadata", - "description": "Current response metadata." + "description": "Current response metadata.", + "$ref": "ResponseMetadata" } }, "id": "ListAnalyticsResponse" @@ -1948,8 +1498,8 @@ "type": "object", "properties": { "nextPageToken": { - "description": "A token to retrieve next page of results.\nPass this value in the `ListLeadsRequest.page_token` field in the\nsubsequent call to\nListLeads to retrieve the\nnext page of results.", - "type": "string" + "type": "string", + "description": "A token to retrieve next page of results.\nPass this value in the `ListLeadsRequest.page_token` field in the\nsubsequent call to\nListLeads to retrieve the\nnext page of results." }, "totalSize": { "format": "int32", @@ -1971,28 +1521,20 @@ "id": "ListLeadsResponse" }, "Company": { - "description": "A company resource in the Google Partners API. Once certified, it qualifies\nfor being searched by advertisers.", "type": "object", "properties": { - "industries": { - "description": "Industries the company can help with.", + "locations": { + "description": "The list of all company locations.\nIf set, must include the\nprimary_location\nin the list.", "items": { - "enum": [ - "INDUSTRY_UNSPECIFIED", - "I_AUTOMOTIVE", - "I_BUSINESS_TO_BUSINESS", - "I_CONSUMER_PACKAGED_GOODS", - "I_EDUCATION", - "I_FINANCE", - "I_HEALTHCARE", - "I_MEDIA_AND_ENTERTAINMENT", - "I_RETAIL", - "I_TECHNOLOGY", - "I_TRAVEL" - ], - "type": "string" + "$ref": "Location" }, - "type": "array", + "type": "array" + }, + "convertedMinMonthlyBudget": { + "description": "The minimum monthly budget that the company accepts for partner business,\nconverted to the requested currency code.", + "$ref": "Money" + }, + "industries": { "enumDescriptions": [ "Unchosen.", "The automotive industry.", @@ -2005,7 +1547,29 @@ "The retail industry.", "The technology industry.", "The travel industry." - ] + ], + "description": "Industries the company can help with.", + "items": { + "type": "string", + "enum": [ + "INDUSTRY_UNSPECIFIED", + "I_AUTOMOTIVE", + "I_BUSINESS_TO_BUSINESS", + "I_CONSUMER_PACKAGED_GOODS", + "I_EDUCATION", + "I_FINANCE", + "I_HEALTHCARE", + "I_MEDIA_AND_ENTERTAINMENT", + "I_RETAIL", + "I_TECHNOLOGY", + "I_TRAVEL" + ] + }, + "type": "array" + }, + "websiteUrl": { + "description": "URL of the company's website.", + "type": "string" }, "additionalWebsites": { "description": "URL of the company's additional websites used to verify the dynamic badges.\nThese are stored as full URLs as entered by the user, but only the TLD will\nbe used for the actual verification.", @@ -2014,10 +1578,6 @@ }, "type": "array" }, - "websiteUrl": { - "description": "URL of the company's website.", - "type": "string" - }, "primaryAdwordsManagerAccountId": { "format": "int64", "description": "The Primary AdWords Manager Account id.", @@ -2034,6 +1594,10 @@ }, "type": "array" }, + "id": { + "description": "The ID of the company.", + "type": "string" + }, "certificationStatuses": { "description": "The list of Google Partners certification statuses for the company.", "items": { @@ -2041,26 +1605,9 @@ }, "type": "array" }, - "id": { - "type": "string", - "description": "The ID of the company." - }, - "publicProfile": { - "description": "Basic information from the company's public profile.", - "$ref": "PublicProfile" - }, - "originalMinMonthlyBudget": { - "$ref": "Money", - "description": "The unconverted minimum monthly budget that the company accepts for partner\nbusiness." - }, - "primaryLocation": { - "$ref": "Location", - "description": "The primary location of the company." - }, "services": { "description": "Services the company can help with.", "items": { - "type": "string", "enum": [ "SERVICE_UNSPECIFIED", "S_ADVANCED_ADWORDS_SUPPORT", @@ -2069,7 +1616,8 @@ "S_AN_ONLINE_MARKETING_PLAN", "S_MOBILE_AND_VIDEO_ADS", "S_MOBILE_WEBSITE_SERVICES" - ] + ], + "type": "string" }, "type": "array", "enumDescriptions": [ @@ -2082,6 +1630,18 @@ "Help with mobile websites." ] }, + "originalMinMonthlyBudget": { + "description": "The unconverted minimum monthly budget that the company accepts for partner\nbusiness.", + "$ref": "Money" + }, + "publicProfile": { + "$ref": "PublicProfile", + "description": "Basic information from the company's public profile." + }, + "primaryLocation": { + "$ref": "Location", + "description": "The primary location of the company." + }, "ranks": { "description": "Information related to the ranking of the company within the list of\ncompanies.", "items": { @@ -2090,18 +1650,18 @@ "type": "array" }, "badgeTier": { - "type": "string", - "enumDescriptions": [ - "Tier badge is not set.", - "Agency has regular partner badge.", - "Agency has premier badge." - ], "enum": [ "BADGE_TIER_NONE", "BADGE_TIER_REGULAR", "BADGE_TIER_PREMIER" ], - "description": "Partner badge tier" + "description": "Partner badge tier", + "type": "string", + "enumDescriptions": [ + "Tier badge is not set.", + "Agency has regular partner badge.", + "Agency has premier badge." + ] }, "specializationStatus": { "description": "The list of Google Partners specialization statuses for the company.", @@ -2110,13 +1670,6 @@ }, "type": "array" }, - "autoApprovalEmailDomains": { - "description": "Email domains that allow users with a matching email address to get\nauto-approved for associating with this company.", - "items": { - "type": "string" - }, - "type": "array" - }, "companyTypes": { "enumDescriptions": [ "Unchosen.", @@ -2150,6 +1703,13 @@ }, "type": "array" }, + "autoApprovalEmailDomains": { + "description": "Email domains that allow users with a matching email address to get\nauto-approved for associating with this company.", + "items": { + "type": "string" + }, + "type": "array" + }, "profileStatus": { "description": "The public viewability status of the company's profile.", "type": "string", @@ -2169,25 +1729,17 @@ "primaryLanguageCode": { "description": "The primary language code of the company, as defined by\n\u003ca href=\"https://tools.ietf.org/html/bcp47\"\u003eBCP 47\u003c/a\u003e\n(IETF BCP 47, \"Tags for Identifying Languages\").", "type": "string" - }, - "locations": { - "items": { - "$ref": "Location" - }, - "type": "array", - "description": "The list of all company locations.\nIf set, must include the\nprimary_location\nin the list." - }, - "convertedMinMonthlyBudget": { - "$ref": "Money", - "description": "The minimum monthly budget that the company accepts for partner business,\nconverted to the requested currency code." } }, - "id": "Company" + "id": "Company", + "description": "A company resource in the Google Partners API. Once certified, it qualifies\nfor being searched by advertisers." }, "CreateLeadResponse": { "type": "object", "properties": { "recaptchaStatus": { + "description": "The outcome of \u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e\nvalidation.", + "type": "string", "enumDescriptions": [ "Unchosen.", "No reCaptcha validation needed.", @@ -2199,9 +1751,7 @@ "RS_NOT_NEEDED", "RS_PASSED", "RS_FAILED" - ], - "description": "The outcome of \u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e\nvalidation.", - "type": "string" + ] }, "lead": { "$ref": "Lead", @@ -2216,48 +1766,47 @@ "description": "Response message for CreateLead." }, "GetCompanyResponse": { + "id": "GetCompanyResponse", "description": "Response message for GetCompany.", "type": "object", "properties": { "company": { - "description": "The company.", - "$ref": "Company" + "$ref": "Company", + "description": "The company." }, "responseMetadata": { "$ref": "ResponseMetadata", "description": "Current response metadata." } - }, - "id": "GetCompanyResponse" + } }, "Location": { - "description": "A location with address and geographic coordinates. May optionally contain a\ndetailed (multi-field) version of the address.", "type": "object", "properties": { - "address": { - "description": "The single string version of the address.", - "type": "string" + "dependentLocality": { + "type": "string", + "description": "Dependent locality or sublocality. Used for UK dependent localities, or\nneighborhoods or boroughs in other locations." }, "regionCode": { "description": "CLDR (Common Locale Data Repository) region code .", "type": "string" }, - "dependentLocality": { - "description": "Dependent locality or sublocality. Used for UK dependent localities, or\nneighborhoods or boroughs in other locations.", + "address": { + "description": "The single string version of the address.", "type": "string" }, "postalCode": { - "type": "string", - "description": "Values are frequently alphanumeric." - }, - "languageCode": { - "description": "Language code of the address. Should be in BCP 47 format.", + "description": "Values are frequently alphanumeric.", "type": "string" }, "sortingCode": { "description": "Use of this code is very country-specific, but will refer to a secondary\nclassification code for sorting mail.", "type": "string" }, + "languageCode": { + "description": "Language code of the address. Should be in BCP 47 format.", + "type": "string" + }, "addressLine": { "description": "The following address lines represent the most specific part of any\naddress.", "items": { @@ -2278,15 +1827,21 @@ "description": "The latitude and longitude of the location, in degrees." } }, - "id": "Location" + "id": "Location", + "description": "A location with address and geographic coordinates. May optionally contain a\ndetailed (multi-field) version of the address." }, "ExamToken": { "description": "A token that allows a user to take an exam.", "type": "object", "properties": { + "examId": { + "format": "int64", + "description": "The id of the exam the token is for.", + "type": "string" + }, "token": { - "type": "string", - "description": "The token, only present if the user has access to the exam." + "description": "The token, only present if the user has access to the exam.", + "type": "string" }, "examType": { "enumDescriptions": [ @@ -2317,11 +1872,6 @@ ], "description": "The type of the exam the token belongs to.", "type": "string" - }, - "examId": { - "type": "string", - "format": "int64", - "description": "The id of the exam the token is for." } }, "id": "ExamToken" @@ -2336,20 +1886,6 @@ "type": "integer" }, "type": { - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "Adwords Fundamentals exam.", - "AdWords advanced search exam.", - "AdWords advanced display exam.", - "VideoAds exam.", - "DoubleClick exam.", - "Analytics exam.", - "Shopping exam.", - "Mobile exam.", - "Digital Sales exam.", - "Mobile Sites exam." - ], "enum": [ "CERTIFICATION_EXAM_TYPE_UNSPECIFIED", "CET_ADWORDS_FUNDAMENTALS", @@ -2363,7 +1899,21 @@ "CET_DIGITAL_SALES", "CET_MOBILE_SITES" ], - "description": "The type of certification exam." + "description": "The type of certification exam.", + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "Adwords Fundamentals exam.", + "AdWords advanced search exam.", + "AdWords advanced display exam.", + "VideoAds exam.", + "DoubleClick exam.", + "Analytics exam.", + "Shopping exam.", + "Mobile exam.", + "Digital Sales exam.", + "Mobile Sites exam." + ] } }, "id": "CertificationExamStatus" @@ -2399,22 +1949,22 @@ "description": "Information related to ranking of results.", "type": "object", "properties": { + "value": { + "format": "double", + "description": "The numerical value of the rank.", + "type": "number" + }, "type": { - "enumDescriptions": [ - "Unchosen.", - "Total final score." - ], "enum": [ "RANK_TYPE_UNSPECIFIED", "RT_FINAL_SCORE" ], "description": "The type of rank.", - "type": "string" - }, - "value": { - "format": "double", - "description": "The numerical value of the rank.", - "type": "number" + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "Total final score." + ] } }, "id": "Rank" @@ -2423,13 +1973,6 @@ "description": "The profile information of a Partners user.", "type": "object", "properties": { - "markets": { - "description": "A list of ids representing which markets the user was interested in.", - "items": { - "type": "string" - }, - "type": "array" - }, "adwordsManagerAccount": { "format": "int64", "description": "If the user has edit access to multiple accounts, the user can choose the\npreferred account and it is used when a personal account is needed. Can\nbe empty.", @@ -2440,8 +1983,8 @@ "type": "string" }, "primaryCountryCode": { - "description": "The user's primary country, an ISO 2-character code.", - "type": "string" + "type": "string", + "description": "The user's primary country, an ISO 2-character code." }, "emailAddress": { "description": "The email address the user has selected on the Partners site as primary.", @@ -2474,15 +2017,15 @@ "description": "The user's mailing address, contains multiple fields." }, "industries": { - "description": "A list of ids representing which industries the user selected.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "A list of ids representing which industries the user selected." }, "emailOptIns": { - "$ref": "OptIns", - "description": "The list of opt-ins for the user, related to communication preferences." + "description": "The list of opt-ins for the user, related to communication preferences.", + "$ref": "OptIns" }, "languages": { "description": "The list of languages this user understands.", @@ -2494,6 +2037,13 @@ "familyName": { "description": "The user's family name.", "type": "string" + }, + "markets": { + "description": "A list of ids representing which markets the user was interested in.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "UserProfile" @@ -2513,6 +2063,35 @@ "description": "Historical information about a Google Partners Offer.", "type": "object", "properties": { + "lastModifiedTime": { + "format": "google-datetime", + "description": "Time last action was taken.", + "type": "string" + }, + "adwordsUrl": { + "description": "Client's AdWords page URL.", + "type": "string" + }, + "offerType": { + "enum": [ + "OFFER_TYPE_UNSPECIFIED", + "OFFER_TYPE_SPEND_X_GET_Y", + "OFFER_TYPE_VIDEO", + "OFFER_TYPE_SPEND_MATCH" + ], + "description": "Type of offer.", + "type": "string", + "enumDescriptions": [ + "Unset.", + "AdWords spend X get Y.", + "Youtube video.", + "Spend Match up to Y." + ] + }, + "senderName": { + "description": "Name (First + Last) of the partners user to whom the incentive is allocated.", + "type": "string" + }, "offerCountryCode": { "description": "Country Code for the offer country.", "type": "string" @@ -2531,19 +2110,7 @@ "description": "Time offer was first created.", "type": "string" }, - "clientEmail": { - "description": "Email address for client.", - "type": "string" - }, "status": { - "type": "string", - "enumDescriptions": [ - "Unset.", - "Offer distributed.", - "Offer redeemed.", - "Offer awarded.", - "Offer expired." - ], "enum": [ "OFFER_STATUS_UNSPECIFIED", "OFFER_STATUS_DISTRIBUTED", @@ -2551,7 +2118,19 @@ "OFFER_STATUS_AWARDED", "OFFER_STATUS_EXPIRED" ], - "description": "Status of the offer." + "description": "Status of the offer.", + "type": "string", + "enumDescriptions": [ + "Unset.", + "Offer distributed.", + "Offer redeemed.", + "Offer awarded.", + "Offer expired." + ] + }, + "clientEmail": { + "description": "Email address for client.", + "type": "string" }, "clientId": { "format": "int64", @@ -2561,62 +2140,28 @@ "clientName": { "description": "Name of the client.", "type": "string" - }, - "lastModifiedTime": { - "format": "google-datetime", - "description": "Time last action was taken.", - "type": "string" - }, - "adwordsUrl": { - "description": "Client's AdWords page URL.", - "type": "string" - }, - "offerType": { - "description": "Type of offer.", - "type": "string", - "enumDescriptions": [ - "Unset.", - "AdWords spend X get Y.", - "Youtube video.", - "Spend Match up to Y." - ], - "enum": [ - "OFFER_TYPE_UNSPECIFIED", - "OFFER_TYPE_SPEND_X_GET_Y", - "OFFER_TYPE_VIDEO", - "OFFER_TYPE_SPEND_MATCH" - ] - }, - "senderName": { - "description": "Name (First + Last) of the partners user to whom the incentive is allocated.", - "type": "string" } }, "id": "HistoricalOffer" }, + "UserOverrides": { + "properties": { + "userId": { + "description": "Logged-in user ID to impersonate instead of the user's ID.", + "type": "string" + }, + "ipAddress": { + "description": "IP address to use instead of the user's geo-located IP address.", + "type": "string" + } + }, + "id": "UserOverrides", + "description": "Values to use instead of the user's respective defaults. These are only\nhonored by whitelisted products.", + "type": "object" + }, "LogUserEventRequest": { - "type": "object", "properties": { "eventCategory": { - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "Google Partner Search category.", - "Google Partner sign-up flow category.", - "Google Partner portal category.", - "Google Partner portal my-profile category.", - "Google Partner portal certifications category.", - "Google Partner portal community category.", - "Google Partner portal insights category.", - "Google Partner portal clients category.", - "Google Partner portal public user profile category.", - "Google Partner panel category.", - "Google Partner portal last admin dialog category.", - "Google Partner client category.", - "Google Partner portal company profile category.", - "External links category.", - "Google Partner landing category." - ], "enum": [ "EVENT_CATEGORY_UNSPECIFIED", "GOOGLE_PARTNER_SEARCH", @@ -2635,13 +2180,33 @@ "EXTERNAL_LINKS", "GOOGLE_PARTNER_LANDING" ], - "description": "The category the action belongs to." + "description": "The category the action belongs to.", + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "Google Partner Search category.", + "Google Partner sign-up flow category.", + "Google Partner portal category.", + "Google Partner portal my-profile category.", + "Google Partner portal certifications category.", + "Google Partner portal community category.", + "Google Partner portal insights category.", + "Google Partner portal clients category.", + "Google Partner portal public user profile category.", + "Google Partner panel category.", + "Google Partner portal last admin dialog category.", + "Google Partner client category.", + "Google Partner portal company profile category.", + "External links category.", + "Google Partner landing category." + ] }, "lead": { "$ref": "Lead", "description": "Advertiser lead information." }, "eventAction": { + "description": "The action that occurred.", "type": "string", "enumDescriptions": [ "Unchosen.", @@ -2960,25 +2525,23 @@ "AGENCY_PROGRESS_INSIGHTS_VIEW_CONTENT", "AGENCY_CLICKED_CANCEL_ACCEPT_TOS_BUTTON", "SMB_ENTERED_WEBSITE_IN_CONTACT_PARTNER_FORM" - ], - "description": "The action that occurred." + ] }, "url": { - "type": "string", - "description": "The URL where the event occurred." + "description": "The URL where the event occurred.", + "type": "string" }, "requestMetadata": { - "$ref": "RequestMetadata", - "description": "Current request metadata." - }, - "eventDatas": { - "description": "List of event data for the event.", - "items": { - "$ref": "EventData" - }, - "type": "array" + "description": "Current request metadata.", + "$ref": "RequestMetadata" }, "eventScope": { + "enumDescriptions": [ + "Unchosen.", + "Based on visitor.", + "Based on session.", + "Based on page visit." + ], "enum": [ "EVENT_SCOPE_UNSPECIFIED", "VISITOR", @@ -2986,92 +2549,64 @@ "PAGE" ], "description": "The scope of the event.", - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "Based on visitor.", - "Based on session.", - "Based on page visit." - ] + "type": "string" + }, + "eventDatas": { + "description": "List of event data for the event.", + "items": { + "$ref": "EventData" + }, + "type": "array" } }, "id": "LogUserEventRequest", - "description": "Request message for\nLogUserEvent." - }, - "UserOverrides": { - "description": "Values to use instead of the user's respective defaults. These are only\nhonored by whitelisted products.", - "type": "object", - "properties": { - "ipAddress": { - "description": "IP address to use instead of the user's geo-located IP address.", - "type": "string" - }, - "userId": { - "description": "Logged-in user ID to impersonate instead of the user's ID.", - "type": "string" - } - }, - "id": "UserOverrides" + "description": "Request message for\nLogUserEvent.", + "type": "object" }, "AnalyticsDataPoint": { "description": "Details of the analytics events for a `Company` within a single day.", "type": "object", "properties": { - "eventLocations": { - "items": { - "$ref": "LatLng" - }, - "type": "array", - "description": "Location information of where these events occurred." - }, "eventCount": { "format": "int32", "description": "Number of times the type of event occurred.\nMeaning depends on context (e.g. profile views, contacts, etc.).", "type": "integer" + }, + "eventLocations": { + "description": "Location information of where these events occurred.", + "items": { + "$ref": "LatLng" + }, + "type": "array" } }, "id": "AnalyticsDataPoint" }, "Analytics": { + "type": "object", "properties": { "searchViews": { - "description": "Instances of users seeing the `Company` in Google Partners Search results\non the specified date.", - "$ref": "AnalyticsDataPoint" + "$ref": "AnalyticsDataPoint", + "description": "Instances of users seeing the `Company` in Google Partners Search results\non the specified date." }, "profileViews": { - "description": "Instances of users viewing the `Company` profile\non the specified date.", - "$ref": "AnalyticsDataPoint" + "$ref": "AnalyticsDataPoint", + "description": "Instances of users viewing the `Company` profile\non the specified date." }, "eventDate": { "description": "Date on which these events occurred.", "$ref": "Date" }, "contacts": { - "description": "Instances of users contacting the `Company`\non the specified date.", - "$ref": "AnalyticsDataPoint" + "$ref": "AnalyticsDataPoint", + "description": "Instances of users contacting the `Company`\non the specified date." } }, "id": "Analytics", - "description": "Analytics data for a `Company` within a single day.", - "type": "object" - }, - "AdWordsManagerAccountInfo": { - "description": "Information about a particular AdWords Manager Account.\nRead more at https://support.google.com/adwords/answer/6139186", - "type": "object", - "properties": { - "customerName": { - "description": "Name of the customer this account represents.", - "type": "string" - }, - "id": { - "format": "int64", - "description": "The AdWords Manager Account id.", - "type": "string" - } - }, - "id": "AdWordsManagerAccountInfo" + "description": "Analytics data for a `Company` within a single day." }, "PublicProfile": { + "id": "PublicProfile", "description": "Basic information from a public profile.", "type": "object", "properties": { @@ -3088,110 +2623,61 @@ "type": "string" }, "url": { - "type": "string", - "description": "The URL of the public profile." + "description": "The URL of the public profile.", + "type": "string" }, "id": { "description": "The ID which can be used to retrieve more details about the public profile.", "type": "string" } - }, - "id": "PublicProfile" + } }, - "ResponseMetadata": { - "properties": { - "debugInfo": { - "$ref": "DebugInfo", - "description": "Debug information about this request." - } - }, - "id": "ResponseMetadata", - "description": "Common data that is in each API response.", - "type": "object" - }, - "RecaptchaChallenge": { - "id": "RecaptchaChallenge", - "description": "\u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e challenge info.", + "AdWordsManagerAccountInfo": { + "description": "Information about a particular AdWords Manager Account.\nRead more at https://support.google.com/adwords/answer/6139186", "type": "object", "properties": { "id": { - "description": "The ID of the reCaptcha challenge.", + "format": "int64", + "description": "The AdWords Manager Account id.", "type": "string" }, - "response": { - "type": "string", - "description": "The response to the reCaptcha challenge." + "customerName": { + "description": "Name of the customer this account represents.", + "type": "string" } - } + }, + "id": "AdWordsManagerAccountInfo" + }, + "ResponseMetadata": { + "description": "Common data that is in each API response.", + "type": "object", + "properties": { + "debugInfo": { + "description": "Debug information about this request.", + "$ref": "DebugInfo" + } + }, + "id": "ResponseMetadata" + }, + "RecaptchaChallenge": { + "description": "\u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e challenge info.", + "type": "object", + "properties": { + "response": { + "description": "The response to the reCaptcha challenge.", + "type": "string" + }, + "id": { + "description": "The ID of the reCaptcha challenge.", + "type": "string" + } + }, + "id": "RecaptchaChallenge" }, "AvailableOffer": { "description": "Available Offers to be distributed.", "type": "object", "properties": { - "description": { - "description": "Description of the offer.", - "type": "string" - }, - "offerLevel": { - "enum": [ - "OFFER_LEVEL_UNSPECIFIED", - "OFFER_LEVEL_DENY_PROBLEM", - "OFFER_LEVEL_DENY_CONTRACT", - "OFFER_LEVEL_MANUAL", - "OFFER_LEVEL_LIMIT_0", - "OFFER_LEVEL_LIMIT_5", - "OFFER_LEVEL_LIMIT_15", - "OFFER_LEVEL_LIMIT_50" - ], - "description": "Level of this offer.", - "type": "string", - "enumDescriptions": [ - "Unset.", - "Users/Agencies that have no offers because of a problem.", - "Users/Agencies that have no offers due to contractural agreements.", - "Users/Agencies that have a manually-configured limit.", - "Some Agencies don't get any offers.", - "Basic level gets 5 per month.", - "Agencies with adequate AHI and spend get 15/month.", - "Badged partners (even in grace) get 50 per month." - ] - }, - "name": { - "description": "Name of the offer.", - "type": "string" - }, - "id": { - "format": "int64", - "description": "ID of this offer.", - "type": "string" - }, - "qualifiedCustomersComplete": { - "description": "Whether or not the list of qualified customers is definitely complete.", - "type": "boolean" - }, - "countryOfferInfos": { - "description": "Offer info by country.", - "items": { - "$ref": "CountryOfferInfo" - }, - "type": "array" - }, - "offerType": { - "description": "Type of offer.", - "type": "string", - "enumDescriptions": [ - "Unset.", - "AdWords spend X get Y.", - "Youtube video.", - "Spend Match up to Y." - ], - "enum": [ - "OFFER_TYPE_UNSPECIFIED", - "OFFER_TYPE_SPEND_X_GET_Y", - "OFFER_TYPE_VIDEO", - "OFFER_TYPE_SPEND_MATCH" - ] - }, "maxAccountAge": { "format": "int32", "description": "The maximum age of an account [in days] to be eligible.", @@ -3205,17 +2691,81 @@ "type": "array" }, "terms": { - "description": "Terms of the offer.", - "type": "string" + "type": "string", + "description": "Terms of the offer." }, "showSpecialOfferCopy": { "description": "Should special text be shown on the offers page.", "type": "boolean" }, "available": { + "type": "integer", "format": "int32", - "description": "The number of codes for this offer that are available for distribution.", - "type": "integer" + "description": "The number of codes for this offer that are available for distribution." + }, + "description": { + "type": "string", + "description": "Description of the offer." + }, + "offerLevel": { + "enumDescriptions": [ + "Unset.", + "Users/Agencies that have no offers because of a problem.", + "Users/Agencies that have no offers due to contractural agreements.", + "Users/Agencies that have a manually-configured limit.", + "Some Agencies don't get any offers.", + "Basic level gets 5 per month.", + "Agencies with adequate AHI and spend get 15/month.", + "Badged partners (even in grace) get 50 per month." + ], + "enum": [ + "OFFER_LEVEL_UNSPECIFIED", + "OFFER_LEVEL_DENY_PROBLEM", + "OFFER_LEVEL_DENY_CONTRACT", + "OFFER_LEVEL_MANUAL", + "OFFER_LEVEL_LIMIT_0", + "OFFER_LEVEL_LIMIT_5", + "OFFER_LEVEL_LIMIT_15", + "OFFER_LEVEL_LIMIT_50" + ], + "description": "Level of this offer.", + "type": "string" + }, + "name": { + "description": "Name of the offer.", + "type": "string" + }, + "qualifiedCustomersComplete": { + "description": "Whether or not the list of qualified customers is definitely complete.", + "type": "boolean" + }, + "id": { + "format": "int64", + "description": "ID of this offer.", + "type": "string" + }, + "countryOfferInfos": { + "description": "Offer info by country.", + "items": { + "$ref": "CountryOfferInfo" + }, + "type": "array" + }, + "offerType": { + "enum": [ + "OFFER_TYPE_UNSPECIFIED", + "OFFER_TYPE_SPEND_X_GET_Y", + "OFFER_TYPE_VIDEO", + "OFFER_TYPE_SPEND_MATCH" + ], + "description": "Type of offer.", + "type": "string", + "enumDescriptions": [ + "Unset.", + "AdWords spend X get Y.", + "Youtube video.", + "Spend Match up to Y." + ] } }, "id": "AvailableOffer" @@ -3224,21 +2774,20 @@ "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", "type": "object", "properties": { - "latitude": { - "format": "double", - "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", - "type": "number" - }, "longitude": { "format": "double", "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", "type": "number" + }, + "latitude": { + "format": "double", + "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", + "type": "number" } }, "id": "LatLng" }, "Money": { - "id": "Money", "description": "Represents an amount of money with its currency type.", "type": "object", "properties": { @@ -3256,10 +2805,18 @@ "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", "type": "integer" } - } + }, + "id": "Money" }, "AnalyticsSummary": { + "description": "Analytics aggregated data for a `Company` for a given date range.", + "type": "object", "properties": { + "contactsCount": { + "format": "int32", + "description": "Aggregated number of times users contacted the `Company`\nfor given date range.", + "type": "integer" + }, "profileViewsCount": { "format": "int32", "description": "Aggregated number of profile views for the `Company` for given date range.", @@ -3269,31 +2826,20 @@ "format": "int32", "description": "Aggregated number of times users saw the `Company`\nin Google Partners Search results for given date range.", "type": "integer" - }, - "contactsCount": { - "format": "int32", - "description": "Aggregated number of times users contacted the `Company`\nfor given date range.", - "type": "integer" } }, - "id": "AnalyticsSummary", - "description": "Analytics aggregated data for a `Company` for a given date range.", - "type": "object" + "id": "AnalyticsSummary" }, "LogMessageRequest": { "description": "Request message for\nLogClientMessage.", "type": "object", "properties": { - "details": { - "description": "Details about the client message.", - "type": "string" - }, "clientInfo": { - "description": "Map of client info, such as URL, browser navigator, browser platform, etc.", - "type": "object", "additionalProperties": { "type": "string" - } + }, + "description": "Map of client info, such as URL, browser navigator, browser platform, etc.", + "type": "object" }, "requestMetadata": { "$ref": "RequestMetadata", @@ -3316,33 +2862,51 @@ "ML_WARNING", "ML_SEVERE" ] + }, + "details": { + "description": "Details about the client message.", + "type": "string" } }, "id": "LogMessageRequest" }, "DebugInfo": { - "id": "DebugInfo", - "description": "Debug information about this request.", "type": "object", "properties": { - "serverTraceInfo": { - "description": "Server-side debug stack trace.", + "serviceUrl": { + "description": "URL of the service that handled this request.", "type": "string" }, + "serverTraceInfo": { + "type": "string", + "description": "Server-side debug stack trace." + }, "serverInfo": { "description": "Info about the server that serviced this request.", "type": "string" - }, - "serviceUrl": { - "description": "URL of the service that handled this request.", - "type": "string" } - } + }, + "id": "DebugInfo", + "description": "Debug information about this request." }, "Lead": { "description": "A lead resource that represents an advertiser contact for a `Company`. These\nare usually generated via Google Partner Search (the advertiser portal).", "type": "object", "properties": { + "adwordsCustomerId": { + "format": "int64", + "description": "The AdWords Customer ID of the lead.", + "type": "string" + }, + "phoneNumber": { + "description": "Phone number of lead source.", + "type": "string" + }, + "createTime": { + "format": "google-datetime", + "description": "Timestamp of when this lead was created.", + "type": "string" + }, "marketingOptIn": { "description": "Whether or not the lead signed up for marketing emails", "type": "boolean" @@ -3359,23 +2923,42 @@ "description": "Type of lead.", "type": "string" }, + "givenName": { + "description": "First name of lead source.", + "type": "string" + }, "minMonthlyBudget": { "description": "The minimum monthly budget lead source is willing to spend.", "$ref": "Money" }, - "givenName": { - "description": "First name of lead source.", + "websiteUrl": { + "description": "Website URL of lead source.", "type": "string" }, "languageCode": { "description": "Language code of the lead's language preference, as defined by\n\u003ca href=\"https://tools.ietf.org/html/bcp47\"\u003eBCP 47\u003c/a\u003e\n(IETF BCP 47, \"Tags for Identifying Languages\").", "type": "string" }, - "websiteUrl": { - "type": "string", - "description": "Website URL of lead source." + "state": { + "enumDescriptions": [ + "Unchosen.", + "Lead not yet contacted.", + "Lead has been contacted.", + "Lead has become a client.", + "Lead in a state not covered by other options." + ], + "enum": [ + "LEAD_STATE_UNSPECIFIED", + "LEAD", + "CONTACTED", + "CLIENT", + "OTHER" + ], + "description": "The lead's state in relation to the company.", + "type": "string" }, "gpsMotivations": { + "description": "List of reasons for using Google Partner Search and creating a lead.", "items": { "enum": [ "GPS_MOTIVATION_UNSPECIFIED", @@ -3391,26 +2974,7 @@ "Advertiser needs help with their advertising.", "Advertiser needs help with their website.", "Advertiser does not have a website." - ], - "description": "List of reasons for using Google Partner Search and creating a lead." - }, - "state": { - "type": "string", - "enumDescriptions": [ - "Unchosen.", - "Lead not yet contacted.", - "Lead has been contacted.", - "Lead has become a client.", - "Lead in a state not covered by other options." - ], - "enum": [ - "LEAD_STATE_UNSPECIFIED", - "LEAD", - "CONTACTED", - "CLIENT", - "OTHER" - ], - "description": "The lead's state in relation to the company." + ] }, "email": { "description": "Email address of lead source.", @@ -3420,61 +2984,118 @@ "description": "Last name of lead source.", "type": "string" }, - "comments": { - "description": "Comments lead source gave.", - "type": "string" - }, "id": { "description": "ID of the lead.", "type": "string" }, - "adwordsCustomerId": { + "comments": { "type": "string", - "format": "int64", - "description": "The AdWords Customer ID of the lead." - }, - "phoneNumber": { - "description": "Phone number of lead source.", - "type": "string" - }, - "createTime": { - "format": "google-datetime", - "description": "Timestamp of when this lead was created.", - "type": "string" + "description": "Comments lead source gave." } }, "id": "Lead" }, "ListUserStatesResponse": { + "description": "Response message for\nListUserStates.", + "type": "object", "properties": { "userStates": { + "description": "User's states.", "items": { + "type": "string", "enum": [ "USER_STATE_UNSPECIFIED", "US_REQUIRES_RECAPTCHA_FOR_GPS_CONTACT" - ], - "type": "string" + ] }, "type": "array", "enumDescriptions": [ "Unchosen.", "User must pass \u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e to\ncontact a Partner via Google Partner Search." - ], - "description": "User's states." + ] }, "responseMetadata": { "$ref": "ResponseMetadata", "description": "Current response metadata." } }, - "id": "ListUserStatesResponse", - "description": "Response message for\nListUserStates.", - "type": "object" + "id": "ListUserStatesResponse" }, "CompanyRelation": { + "id": "CompanyRelation", "description": "A CompanyRelation resource representing information about a user's\naffiliation and standing with a company in Partners.", "type": "object", "properties": { + "resolvedTimestamp": { + "format": "google-datetime", + "description": "The timestamp when the user was approved.\n@OutputOnly", + "type": "string" + }, + "companyAdmin": { + "description": "Indicates if the user is an admin for this company.", + "type": "boolean" + }, + "isPending": { + "description": "The flag that indicates if the company is pending verification.", + "type": "boolean" + }, + "address": { + "description": "The primary address for this company.", + "type": "string" + }, + "creationTime": { + "type": "string", + "format": "google-datetime", + "description": "The timestamp of when affiliation was requested.\n@OutputOnly" + }, + "primaryAddress": { + "description": "The primary location of the company.", + "$ref": "Location" + }, + "state": { + "enum": [ + "USER_COMPANY_REATION_STATE_NONE_SPECIFIED", + "USER_COMPANY_RELATION_STATE_AWAIT_EMAIL", + "USER_COMPANY_RELATION_STATE_AWAIT_ADMIN", + "USER_COMPANY_RELATION_STATE_APPROVED" + ], + "description": "The state of relationship, in terms of approvals.", + "type": "string", + "enumDescriptions": [ + "Default unspecified value.", + "User has filled in a request to be associated with an company.\nNow waiting email confirmation.", + "Pending approval from company.\nEmail confirmation will not approve this one.", + "Approved by company." + ] + }, + "name": { + "description": "The name (in the company's primary language) for the company.", + "type": "string" + }, + "managerAccount": { + "format": "int64", + "description": "The AdWords manager account # associated this company.", + "type": "string" + }, + "segment": { + "description": "The segment the company is classified as.", + "items": { + "enum": [ + "COMPANY_SEGMENT_UNKNOWN", + "COMPANY_SEGMENT_NAL", + "COMPANY_SEGMENT_PSP", + "COMPANY_SEGMENT_PPSP" + ], + "type": "string" + }, + "type": "array", + "enumDescriptions": [ + "Default segment indicates an unknown.", + "Segment representing a selected group of Partners", + "Segment representing Premier SMB Partners, an AdWords partnership program.", + "A segment of Premier SMB Partners that have relationship with Google." + ] + }, "internalCompanyId": { "description": "The internal company ID.\nOnly available for a whitelisted set of api clients.", "type": "string" @@ -3487,17 +3108,17 @@ "type": "array" }, "badgeTier": { - "enum": [ - "BADGE_TIER_NONE", - "BADGE_TIER_REGULAR", - "BADGE_TIER_PREMIER" - ], "description": "Whether the company is a Partner.", "type": "string", "enumDescriptions": [ "Tier badge is not set.", "Agency has regular partner badge.", "Agency has premier badge." + ], + "enum": [ + "BADGE_TIER_NONE", + "BADGE_TIER_REGULAR", + "BADGE_TIER_PREMIER" ] }, "website": { @@ -3523,88 +3144,16 @@ "logoUrl": { "description": "A URL to a profile photo, e.g. a G+ profile photo.", "type": "string" - }, - "resolvedTimestamp": { - "format": "google-datetime", - "description": "The timestamp when the user was approved.\n@OutputOnly", - "type": "string" - }, - "companyAdmin": { - "description": "Indicates if the user is an admin for this company.", - "type": "boolean" - }, - "isPending": { - "description": "The flag that indicates if the company is pending verification.", - "type": "boolean" - }, - "address": { - "description": "The primary address for this company.", - "type": "string" - }, - "creationTime": { - "format": "google-datetime", - "description": "The timestamp of when affiliation was requested.\n@OutputOnly", - "type": "string" - }, - "primaryAddress": { - "description": "The primary location of the company.", - "$ref": "Location" - }, - "state": { - "type": "string", - "enumDescriptions": [ - "Default unspecified value.", - "User has filled in a request to be associated with an company.\nNow waiting email confirmation.", - "Pending approval from company.\nEmail confirmation will not approve this one.", - "Approved by company." - ], - "enum": [ - "USER_COMPANY_REATION_STATE_NONE_SPECIFIED", - "USER_COMPANY_RELATION_STATE_AWAIT_EMAIL", - "USER_COMPANY_RELATION_STATE_AWAIT_ADMIN", - "USER_COMPANY_RELATION_STATE_APPROVED" - ], - "description": "The state of relationship, in terms of approvals." - }, - "name": { - "description": "The name (in the company's primary language) for the company.", - "type": "string" - }, - "managerAccount": { - "format": "int64", - "description": "The AdWords manager account # associated this company.", - "type": "string" - }, - "segment": { - "description": "The segment the company is classified as.", - "items": { - "type": "string", - "enum": [ - "COMPANY_SEGMENT_UNKNOWN", - "COMPANY_SEGMENT_NAL", - "COMPANY_SEGMENT_PSP", - "COMPANY_SEGMENT_PPSP" - ] - }, - "type": "array", - "enumDescriptions": [ - "Default segment indicates an unknown.", - "Segment representing a selected group of Partners", - "Segment representing Premier SMB Partners, an AdWords partnership program.", - "A segment of Premier SMB Partners that have relationship with Google." - ] } - }, - "id": "CompanyRelation" + } }, "Date": { - "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", "type": "object", "properties": { "day": { - "type": "integer", "format": "int32", - "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant." + "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", + "type": "integer" }, "year": { "format": "int32", @@ -3617,22 +3166,473 @@ "type": "integer" } }, - "id": "Date" + "id": "Date", + "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`." + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "TrafficSource": { + "description": "Source of traffic for the current request.", + "type": "object", + "properties": { + "trafficSourceId": { + "description": "Identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + }, + "trafficSubId": { + "description": "Second level identifier to indicate where the traffic comes from.\nAn identifier has multiple letters created by a team which redirected the\ntraffic to us.", + "type": "string" + } + }, + "id": "TrafficSource" + }, + "CreateLeadRequest": { + "description": "Request message for CreateLead.", + "type": "object", + "properties": { + "requestMetadata": { + "$ref": "RequestMetadata", + "description": "Current request metadata." + }, + "recaptchaChallenge": { + "$ref": "RecaptchaChallenge", + "description": "\u003ca href=\"https://www.google.com/recaptcha/\"\u003ereCaptcha\u003c/a\u003e challenge info." + }, + "lead": { + "$ref": "Lead", + "description": "The lead resource. The `LeadType` must not be `LEAD_TYPE_UNSPECIFIED`\nand either `email` or `phone_number` must be provided." + } + }, + "id": "CreateLeadRequest" + }, + "RequestMetadata": { + "description": "Common data that is in each API request.", + "type": "object", + "properties": { + "trafficSource": { + "description": "Source of traffic for the current request.", + "$ref": "TrafficSource" + }, + "experimentIds": { + "description": "Experiment IDs the current request belongs to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "locale": { + "description": "Locale to use for the current request.", + "type": "string" + }, + "partnersSessionId": { + "description": "Google Partners session ID.", + "type": "string" + }, + "userOverrides": { + "$ref": "UserOverrides", + "description": "Values to use instead of the user's respective defaults for the current\nrequest. These are only honored by whitelisted products." + } + }, + "id": "RequestMetadata" + }, + "EventData": { + "description": "Key value data pair for an event.", + "type": "object", + "properties": { + "key": { + "enum": [ + "EVENT_DATA_TYPE_UNSPECIFIED", + "ACTION", + "AGENCY_ID", + "AGENCY_NAME", + "AGENCY_PHONE_NUMBER", + "AGENCY_WEBSITE", + "BUDGET", + "CENTER_POINT", + "CERTIFICATION", + "COMMENT", + "COUNTRY", + "CURRENCY", + "CURRENTLY_VIEWED_AGENCY_ID", + "DISTANCE", + "DISTANCE_TYPE", + "EXAM", + "HISTORY_TOKEN", + "ID", + "INDUSTRY", + "INSIGHT_TAG", + "LANGUAGE", + "LOCATION", + "MARKETING_OPT_IN", + "QUERY", + "SEARCH_START_INDEX", + "SERVICE", + "SHOW_VOW", + "SOLUTION", + "TRAFFIC_SOURCE_ID", + "TRAFFIC_SUB_ID", + "VIEW_PORT", + "WEBSITE", + "DETAILS", + "EXPERIMENT_ID", + "GPS_MOTIVATION", + "URL", + "ELEMENT_FOCUS", + "PROGRESS" + ], + "description": "Data type.", + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "Action data.", + "Agency ID data.", + "Agency name data.", + "Agency phone number data.", + "Agency website data.", + "Budget data.", + "Center-point data.", + "Certification data.", + "Comment data.", + "Country data.", + "Currency data.", + "Currently viewed agency ID data.", + "Distance data.", + "Distance type data.", + "Exam data.", + "History token data.", + "Identifier data.", + "Industry data.", + "Insight tag data.", + "Language data.", + "Location data.", + "Marketing opt-in data.", + "Query data.", + "Search start index data.", + "Service data.", + "Show vow data.", + "Solution data.", + "Traffic source ID data.", + "Traffic sub ID data.", + "Viewport data.", + "Website data.", + "Details data.", + "Experiment ID data.", + "Google Partner Search motivation data.", + "URL data.", + "Element we wanted user to focus on.", + "Progress when viewing an item \\[0-100\\]." + ] + }, + "values": { + "description": "Data values.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "EventData" + }, + "ExamStatus": { + "description": "A user's information on a specific exam.", + "type": "object", + "properties": { + "warning": { + "description": "Whether this exam is in the state of warning.", + "type": "boolean" + }, + "expiration": { + "format": "google-datetime", + "description": "Date this exam is due to expire.", + "type": "string" + }, + "lastPassed": { + "format": "google-datetime", + "description": "The date the user last passed this exam.", + "type": "string" + }, + "examType": { + "enumDescriptions": [ + "Unchosen.", + "Adwords Fundamentals exam.", + "AdWords advanced search exam.", + "AdWords advanced display exam.", + "VideoAds exam.", + "DoubleClick exam.", + "Analytics exam.", + "Shopping exam.", + "Mobile exam.", + "Digital Sales exam.", + "Mobile Sites exam." + ], + "enum": [ + "CERTIFICATION_EXAM_TYPE_UNSPECIFIED", + "CET_ADWORDS_FUNDAMENTALS", + "CET_ADWORDS_ADVANCED_SEARCH", + "CET_ADWORDS_ADVANCED_DISPLAY", + "CET_VIDEO_ADS", + "CET_DOUBLECLICK", + "CET_ANALYTICS", + "CET_SHOPPING", + "CET_MOBILE", + "CET_DIGITAL_SALES", + "CET_MOBILE_SITES" + ], + "description": "The type of the exam.", + "type": "string" + }, + "taken": { + "format": "google-datetime", + "description": "The date the user last taken this exam.", + "type": "string" + }, + "passed": { + "description": "Whether this exam has been passed and not expired.", + "type": "boolean" + } + }, + "id": "ExamStatus" + }, + "ListOffersResponse": { + "description": "Response for ListOffer.", + "type": "object", + "properties": { + "responseMetadata": { + "$ref": "ResponseMetadata", + "description": "Current response metadata." + }, + "noOfferReason": { + "enumDescriptions": [ + "Unset.", + "Not an MCC.", + "Offer limit has been reached.", + "Ineligible for offers." + ], + "enum": [ + "NO_OFFER_REASON_UNSPECIFIED", + "NO_OFFER_REASON_NO_MCC", + "NO_OFFER_REASON_LIMIT_REACHED", + "NO_OFFER_REASON_INELIGIBLE" + ], + "description": "Reason why no Offers are available.", + "type": "string" + }, + "availableOffers": { + "description": "Available Offers to be distributed.", + "items": { + "$ref": "AvailableOffer" + }, + "type": "array" + } + }, + "id": "ListOffersResponse" + }, + "CountryOfferInfo": { + "id": "CountryOfferInfo", + "description": "Offer info by country.", + "type": "object", + "properties": { + "offerType": { + "enumDescriptions": [ + "Unset.", + "AdWords spend X get Y.", + "Youtube video.", + "Spend Match up to Y." + ], + "enum": [ + "OFFER_TYPE_UNSPECIFIED", + "OFFER_TYPE_SPEND_X_GET_Y", + "OFFER_TYPE_VIDEO", + "OFFER_TYPE_SPEND_MATCH" + ], + "description": "Type of offer country is eligible for.", + "type": "string" + }, + "getYAmount": { + "description": "(localized) Get Y amount for that country's offer.", + "type": "string" + }, + "spendXAmount": { + "description": "(localized) Spend X amount for that country's offer.", + "type": "string" + }, + "offerCountryCode": { + "description": "Country code for which offer codes may be requested.", + "type": "string" + } + } + }, + "ListCompaniesResponse": { + "properties": { + "nextPageToken": { + "description": "A token to retrieve next page of results.\nPass this value in the `ListCompaniesRequest.page_token` field in the\nsubsequent call to\nListCompanies to retrieve the\nnext page of results.", + "type": "string" + }, + "responseMetadata": { + "description": "Current response metadata.", + "$ref": "ResponseMetadata" + }, + "companies": { + "description": "The list of companies.", + "items": { + "$ref": "Company" + }, + "type": "array" + } + }, + "id": "ListCompaniesResponse", + "description": "Response message for\nListCompanies.", + "type": "object" + }, + "OfferCustomer": { + "description": "Customers qualified for an offer.", + "type": "object", + "properties": { + "adwordsUrl": { + "description": "URL to the customer's AdWords page.", + "type": "string" + }, + "creationTime": { + "format": "google-datetime", + "description": "Time the customer was created.", + "type": "string" + }, + "countryCode": { + "description": "Country code of the customer.", + "type": "string" + }, + "eligibilityDaysLeft": { + "format": "int32", + "description": "Days the customer is still eligible.", + "type": "integer" + }, + "offerType": { + "enumDescriptions": [ + "Unset.", + "AdWords spend X get Y.", + "Youtube video.", + "Spend Match up to Y." + ], + "enum": [ + "OFFER_TYPE_UNSPECIFIED", + "OFFER_TYPE_SPEND_X_GET_Y", + "OFFER_TYPE_VIDEO", + "OFFER_TYPE_SPEND_MATCH" + ], + "description": "Type of the offer", + "type": "string" + }, + "externalCid": { + "format": "int64", + "description": "External CID for the customer.", + "type": "string" + }, + "getYAmount": { + "description": "Formatted Get Y amount with currency code.", + "type": "string" + }, + "name": { + "description": "Name of the customer.", + "type": "string" + }, + "spendXAmount": { + "description": "Formatted Spend X amount with currency code.", + "type": "string" + } + }, + "id": "OfferCustomer" + }, + "CertificationStatus": { + "id": "CertificationStatus", + "description": "Google Partners certification status.", + "type": "object", + "properties": { + "type": { + "enum": [ + "CERTIFICATION_TYPE_UNSPECIFIED", + "CT_ADWORDS", + "CT_YOUTUBE", + "CT_VIDEOADS", + "CT_ANALYTICS", + "CT_DOUBLECLICK", + "CT_SHOPPING", + "CT_MOBILE", + "CT_DIGITAL_SALES", + "CT_ADWORDS_SEARCH", + "CT_ADWORDS_DISPLAY", + "CT_MOBILE_SITES" + ], + "description": "The type of the certification.", + "type": "string", + "enumDescriptions": [ + "Unchosen.", + "AdWords certified.", + "YouTube certified.", + "VideoAds certified.", + "Analytics certified.", + "DoubleClick certified.", + "Shopping certified.", + "Mobile certified.", + "Digital sales certified.", + "AdWords Search certified.", + "AdWords Display certified.", + "Mobile Sites certified." + ] + }, + "userCount": { + "format": "int32", + "description": "Number of people who are certified,", + "type": "integer" + }, + "isCertified": { + "description": "Whether certification is passing.", + "type": "boolean" + }, + "examStatuses": { + "items": { + "$ref": "CertificationExamStatus" + }, + "type": "array", + "description": "List of certification exam statuses." + } + } + }, + "LocalizedCompanyInfo": { + "description": "The localized company information.", + "type": "object", + "properties": { + "countryCodes": { + "description": "List of country codes for the localized company info.", + "items": { + "type": "string" + }, + "type": "array" + }, + "overview": { + "description": "Localized brief description that the company uses to advertise themselves.", + "type": "string" + }, + "displayName": { + "type": "string", + "description": "Localized display name." + }, + "languageCode": { + "description": "Language code of the localized company info, as defined by\n\u003ca href=\"https://tools.ietf.org/html/bcp47\"\u003eBCP 47\u003c/a\u003e\n(IETF BCP 47, \"Tags for Identifying Languages\").", + "type": "string" + } + }, + "id": "LocalizedCompanyInfo" } }, - "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "version": "v2", - "baseUrl": "https://partners.googleapis.com/", - "canonicalName": "Partners", - "servicePath": "", - "description": "Searches certified companies and creates contact leads with them, and also audits the usage of clients.", - "kind": "discovery#restDescription", - "rootUrl": "https://partners.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "partners" + "baseUrl": "https://partners.googleapis.com/" } diff --git a/vendor/google.golang.org/api/people/v1/people-api.json b/vendor/google.golang.org/api/people/v1/people-api.json index b3a399e..00b9864 100644 --- a/vendor/google.golang.org/api/people/v1/people-api.json +++ b/vendor/google.golang.org/api/people/v1/people-api.json @@ -1,1741 +1,7 @@ { - "canonicalName": "People Service", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/user.birthday.read": { - "description": "View your complete date of birth" - }, - "https://www.googleapis.com/auth/contacts.readonly": { - "description": "View your contacts" - }, - "https://www.googleapis.com/auth/plus.login": { - "description": "Know the list of people in your circles, your age range, and language" - }, - "https://www.googleapis.com/auth/userinfo.profile": { - "description": "View your basic profile info" - }, - "https://www.googleapis.com/auth/user.emails.read": { - "description": "View your email addresses" - }, - "https://www.googleapis.com/auth/contacts": { - "description": "Manage your contacts" - }, - "https://www.googleapis.com/auth/user.addresses.read": { - "description": "View your street addresses" - }, - "https://www.googleapis.com/auth/user.phonenumbers.read": { - "description": "View your phone numbers" - }, - "https://www.googleapis.com/auth/userinfo.email": { - "description": "View your email address" - } - } - } - }, - "rootUrl": "https://people.googleapis.com/", - "ownerDomain": "google.com", - "name": "people", - "batchPath": "batch", - "title": "Google People API", - "ownerName": "Google", - "resources": { - "people": { - "methods": { - "getBatchGet": { - "flatPath": "v1/people:batchGet", - "id": "people.people.getBatchGet", - "path": "v1/people:batchGet", - "description": "Provides information about a list of specific people by specifying a list\nof requested resource names. Use `people/me` to indicate the authenticated\nuser.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified.", - "httpMethod": "GET", - "response": { - "$ref": "GetPeopleResponse" - }, - "parameterOrder": [], - "parameters": { - "personFields": { - "location": "query", - "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", - "format": "google-fieldmask", - "type": "string" - }, - "requestMask.includeField": { - "location": "query", - "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", - "format": "google-fieldmask", - "type": "string" - }, - "resourceNames": { - "description": "The resource names of the people to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`\u003cvar\u003eaccount_id\u003c/var\u003e.\n- To get information about a contact, specify the resource name that\n identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).\n\nYou can include up to 50 resource names in one request.", - "type": "string", - "repeated": true, - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly", - "https://www.googleapis.com/auth/plus.login", - "https://www.googleapis.com/auth/user.addresses.read", - "https://www.googleapis.com/auth/user.birthday.read", - "https://www.googleapis.com/auth/user.emails.read", - "https://www.googleapis.com/auth/user.phonenumbers.read", - "https://www.googleapis.com/auth/userinfo.email", - "https://www.googleapis.com/auth/userinfo.profile" - ] - }, - "get": { - "description": "Provides information about a person by specifying a resource name. Use\n`people/me` to indicate the authenticated user.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified.", - "response": { - "$ref": "Person" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "GET", - "parameters": { - "resourceName": { - "location": "path", - "description": "The resource name of the person to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`\u003cvar\u003eaccount_id\u003c/var\u003e.\n- To get information about a contact, specify the resource name that\n identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).", - "required": true, - "type": "string", - "pattern": "^people/[^/]+$" - }, - "personFields": { - "location": "query", - "description": "**Required.** A field mask to restrict which fields on the person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", - "format": "google-fieldmask", - "type": "string" - }, - "requestMask.includeField": { - "location": "query", - "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", - "format": "google-fieldmask", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly", - "https://www.googleapis.com/auth/plus.login", - "https://www.googleapis.com/auth/user.addresses.read", - "https://www.googleapis.com/auth/user.birthday.read", - "https://www.googleapis.com/auth/user.emails.read", - "https://www.googleapis.com/auth/user.phonenumbers.read", - "https://www.googleapis.com/auth/userinfo.email", - "https://www.googleapis.com/auth/userinfo.profile" - ], - "flatPath": "v1/people/{peopleId}", - "path": "v1/{+resourceName}", - "id": "people.people.get" - }, - "updateContact": { - "request": { - "$ref": "Person" - }, - "description": "Update contact data for an existing contact person. Any non-contact data\nwill not be modified.\n\nThe request throws a 400 error if `updatePersonFields` is not specified.\n\u003cbr\u003e\nThe request throws a 400 error if `person.metadata.sources` is not\nspecified for the contact to be updated.\n\u003cbr\u003e\nThe request throws a 412 error if `person.metadata.sources.etag` is\ndifferent than the contact's etag, which indicates the contact has changed\nsince its data was read. Clients should get the latest person and re-apply\ntheir updates to the latest person.", - "httpMethod": "PATCH", - "parameterOrder": [ - "resourceName" - ], - "response": { - "$ref": "Person" - }, - "parameters": { - "updatePersonFields": { - "location": "query", - "description": "**Required.** A field mask to restrict which fields on the person are\nupdated. Valid values are:\n\n* addresses\n* biographies\n* birthdays\n* braggingRights\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* relations\n* residences\n* skills\n* urls", - "format": "google-fieldmask", - "type": "string" - }, - "resourceName": { - "pattern": "^people/[^/]+$", - "location": "path", - "description": "The resource name for the person, assigned by the server. An ASCII string\nwith a max length of 27 characters, in the form of\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e.", - "required": true, - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "flatPath": "v1/people/{peopleId}:updateContact", - "id": "people.people.updateContact", - "path": "v1/{+resourceName}:updateContact" - }, - "createContact": { - "description": "Create a new contact and return the person resource for that contact.", - "request": { - "$ref": "Person" - }, - "response": { - "$ref": "Person" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "parameters": { - "parent": { - "description": "The resource name of the owning person resource.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/people:createContact", - "path": "v1/people:createContact", - "id": "people.people.createContact" - }, - "deleteContact": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "parameters": { - "resourceName": { - "location": "path", - "description": "The resource name of the contact to delete.", - "required": true, - "type": "string", - "pattern": "^people/[^/]+$" - } - }, - "flatPath": "v1/people/{peopleId}:deleteContact", - "path": "v1/{+resourceName}:deleteContact", - "id": "people.people.deleteContact", - "description": "Delete a contact person. Any non-contact data will not be deleted." - } - }, - "resources": { - "connections": { - "methods": { - "list": { - "flatPath": "v1/people/{peopleId}/connections", - "path": "v1/{+resourceName}/connections", - "id": "people.people.connections.list", - "description": "Provides a list of the authenticated user's contacts merged with any\nconnected profiles.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified.", - "response": { - "$ref": "ListConnectionsResponse" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly" - ], - "parameters": { - "requestSyncToken": { - "description": "Whether the response should include a sync token, which can be used to get\nall changes since the last request.", - "type": "boolean", - "location": "query" - }, - "pageToken": { - "description": "The token of the page to be returned.", - "type": "string", - "location": "query" - }, - "resourceName": { - "description": "The resource name to return connections for. Only `people/me` is valid.", - "required": true, - "type": "string", - "pattern": "^people/[^/]+$", - "location": "path" - }, - "pageSize": { - "location": "query", - "description": "The number of connections to include in the response. Valid values are\nbetween 1 and 2000, inclusive. Defaults to 100.", - "format": "int32", - "type": "integer" - }, - "requestMask.includeField": { - "location": "query", - "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", - "format": "google-fieldmask", - "type": "string" - }, - "syncToken": { - "description": "A sync token, returned by a previous call to `people.connections.list`.\nOnly resources changed since the sync token was created will be returned.", - "type": "string", - "location": "query" - }, - "personFields": { - "location": "query", - "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", - "format": "google-fieldmask", - "type": "string" - }, - "sortOrder": { - "location": "query", - "enum": [ - "LAST_MODIFIED_ASCENDING", - "FIRST_NAME_ASCENDING", - "LAST_NAME_ASCENDING" - ], - "description": "The order in which the connections should be sorted. Defaults to\n`LAST_MODIFIED_ASCENDING`.", - "type": "string" - } - } - } - } - } - } - }, - "contactGroups": { - "methods": { - "update": { - "flatPath": "v1/contactGroups/{contactGroupsId}", - "path": "v1/{+resourceName}", - "id": "people.contactGroups.update", - "request": { - "$ref": "UpdateContactGroupRequest" - }, - "description": "Update the name of an existing contact group owned by the authenticated\nuser.", - "response": { - "$ref": "ContactGroup" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "PUT", - "parameters": { - "resourceName": { - "location": "path", - "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`\u003cvar\u003econtact_group_id\u003c/var\u003e.", - "required": true, - "type": "string", - "pattern": "^contactGroups/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ] - }, - "delete": { - "description": "Delete an existing contact group owned by the authenticated user by\nspecifying a contact group resource name.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "DELETE", - "parameters": { - "deleteContacts": { - "location": "query", - "description": "Set to true to also delete the contacts in the specified group.", - "type": "boolean" - }, - "resourceName": { - "description": "The resource name of the contact group to delete.", - "required": true, - "type": "string", - "pattern": "^contactGroups/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "flatPath": "v1/contactGroups/{contactGroupsId}", - "path": "v1/{+resourceName}", - "id": "people.contactGroups.delete" - }, - "batchGet": { - "description": "Get a list of contact groups owned by the authenticated user by specifying\na list of contact group resource names.", - "response": { - "$ref": "BatchGetContactGroupsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly" - ], - "parameters": { - "maxMembers": { - "location": "query", - "description": "Specifies the maximum number of members to return for each group.", - "format": "int32", - "type": "integer" - }, - "resourceNames": { - "description": "The resource names of the contact groups to get.", - "type": "string", - "repeated": true, - "location": "query" - } - }, - "flatPath": "v1/contactGroups:batchGet", - "path": "v1/contactGroups:batchGet", - "id": "people.contactGroups.batchGet" - }, - "list": { - "description": "List all contact groups owned by the authenticated user. Members of the\ncontact groups are not populated.", - "response": { - "$ref": "ListContactGroupsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly" - ], - "parameters": { - "syncToken": { - "location": "query", - "description": "A sync token, returned by a previous call to `contactgroups.list`.\nOnly resources changed since the sync token was created will be returned.", - "type": "string" - }, - "pageToken": { - "description": "The next_page_token value returned from a previous call to\n[ListContactGroups](/people/api/rest/v1/contactgroups/list).\nRequests the next page of resources.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "description": "The maximum number of resources to return.", - "format": "int32", - "type": "integer" - } - }, - "flatPath": "v1/contactGroups", - "path": "v1/contactGroups", - "id": "people.contactGroups.list" - }, - "create": { - "response": { - "$ref": "ContactGroup" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "parameters": {}, - "flatPath": "v1/contactGroups", - "path": "v1/contactGroups", - "id": "people.contactGroups.create", - "description": "Create a new contact group owned by the authenticated user.", - "request": { - "$ref": "CreateContactGroupRequest" - } - }, - "get": { - "description": "Get a specific contact group owned by the authenticated user by specifying\na contact group resource name.", - "response": { - "$ref": "ContactGroup" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "GET", - "parameters": { - "maxMembers": { - "description": "Specifies the maximum number of members to return.", - "format": "int32", - "type": "integer", - "location": "query" - }, - "resourceName": { - "pattern": "^contactGroups/[^/]+$", - "location": "path", - "description": "The resource name of the contact group to get.", - "required": true, - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/contacts", - "https://www.googleapis.com/auth/contacts.readonly" - ], - "flatPath": "v1/contactGroups/{contactGroupsId}", - "path": "v1/{+resourceName}", - "id": "people.contactGroups.get" - } - }, - "resources": { - "members": { - "methods": { - "modify": { - "description": "Modify the members of a contact group owned by the authenticated user.", - "request": { - "$ref": "ModifyContactGroupMembersRequest" - }, - "response": { - "$ref": "ModifyContactGroupMembersResponse" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/contacts" - ], - "parameters": { - "resourceName": { - "pattern": "^contactGroups/[^/]+$", - "location": "path", - "description": "The resource name of the contact group to modify.", - "required": true, - "type": "string" - } - }, - "flatPath": "v1/contactGroups/{contactGroupsId}/members:modify", - "path": "v1/{+resourceName}/members:modify", - "id": "people.contactGroups.members.modify" - } - } - } - } - } - }, - "parameters": { - "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "type": "boolean", - "default": "true" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "type": "boolean", - "default": "true", - "location": "query" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - } - }, - "version": "v1", - "baseUrl": "https://people.googleapis.com/", - "kind": "discovery#restDescription", - "description": "Provides access to information about profiles and contacts.", - "servicePath": "", - "basePath": "", - "revision": "20170828", - "documentationLink": "https://developers.google.com/people/", - "id": "people:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "Name": { - "description": "A person's name. If the name is a mononym, the family name is empty.", - "type": "object", - "properties": { - "honorificPrefix": { - "description": "The honorific prefixes, such as `Mrs.` or `Dr.`", - "type": "string" - }, - "phoneticHonorificSuffix": { - "description": "The honorific suffixes spelled as they sound.", - "type": "string" - }, - "givenName": { - "description": "The given name.", - "type": "string" - }, - "middleName": { - "description": "The middle name(s).", - "type": "string" - }, - "phoneticHonorificPrefix": { - "description": "The honorific prefixes spelled as they sound.", - "type": "string" - }, - "phoneticGivenName": { - "description": "The given name spelled as it sounds.", - "type": "string" - }, - "phoneticFamilyName": { - "description": "The family name spelled as it sounds.", - "type": "string" - }, - "familyName": { - "description": "The family name.", - "type": "string" - }, - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the name." - }, - "phoneticMiddleName": { - "description": "The middle name(s) spelled as they sound.", - "type": "string" - }, - "phoneticFullName": { - "description": "The full name spelled as it sounds.", - "type": "string" - }, - "displayNameLastFirst": { - "description": "The read-only display name with the last name first formatted according to\nthe locale specified by the viewer's account or the\n`Accept-Language` HTTP header.", - "type": "string" - }, - "displayName": { - "description": "The read-only display name formatted according to the locale specified by\nthe viewer's account or the `Accept-Language` HTTP header.", - "type": "string" - }, - "honorificSuffix": { - "description": "The honorific suffixes, such as `Jr.`", - "type": "string" - } - }, - "id": "Name" - }, - "Locale": { - "description": "A person's locale preference.", - "type": "object", - "properties": { - "metadata": { - "description": "Metadata about the locale.", - "$ref": "FieldMetadata" - }, - "value": { - "description": "The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47)\nlanguage tag representing the locale.", - "type": "string" - } - }, - "id": "Locale" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" - }, - "Biography": { - "description": "A person's short biography.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the biography." - }, - "value": { - "description": "The short biography.", - "type": "string" - }, - "contentType": { - "enum": [ - "CONTENT_TYPE_UNSPECIFIED", - "TEXT_PLAIN", - "TEXT_HTML" - ], - "description": "The content type of the biography.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Plain text.", - "HTML text." - ] - } - }, - "id": "Biography" - }, - "FieldMetadata": { - "description": "Metadata about a field.", - "type": "object", - "properties": { - "verified": { - "description": "True if the field is verified; false if the field is unverified. A\nverified field is typically a name, email address, phone number, or\nwebsite that has been confirmed to be owned by the person.", - "type": "boolean" - }, - "primary": { - "description": "True if the field is the primary field; false if the field is a secondary\nfield.", - "type": "boolean" - }, - "source": { - "description": "The source of the field.", - "$ref": "Source" - } - }, - "id": "FieldMetadata" - }, - "Source": { - "properties": { - "updateTime": { - "description": "**Only populated in `person.metadata.sources`.**\n\nLast update timestamp of this source.", - "format": "google-datetime", - "type": "string" - }, - "type": { - "enum": [ - "SOURCE_TYPE_UNSPECIFIED", - "ACCOUNT", - "PROFILE", - "DOMAIN_PROFILE", - "CONTACT" - ], - "description": "The source type.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "[Google Account](https://accounts.google.com).", - "[Google profile](https://profiles.google.com). You can view the\nprofile at https://profiles.google.com/\u003cvar\u003eid\u003c/var\u003e where\n\u003cvar\u003eid\u003c/var\u003e is the source id.", - "[Google Apps domain profile](https://admin.google.com).", - "[Google contact](https://contacts.google.com). You can view the\ncontact at https://contact.google.com/\u003cvar\u003eid\u003c/var\u003e where \u003cvar\u003eid\u003c/var\u003e\nis the source id." - ] - }, - "etag": { - "description": "**Only populated in `person.metadata.sources`.**\n\nThe [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nsource. Used for web cache validation.", - "type": "string" - }, - "id": { - "description": "The unique identifier within the source type generated by the server.", - "type": "string" - }, - "profileMetadata": { - "description": "**Only populated in `person.metadata.sources`.**\n\nMetadata about a source of type PROFILE.", - "$ref": "ProfileMetadata" - } - }, - "id": "Source", - "description": "The source of a field.", - "type": "object" - }, - "RelationshipInterest": { - "description": "A person's read-only relationship interest .", - "type": "object", - "properties": { - "metadata": { - "description": "Metadata about the relationship interest.", - "$ref": "FieldMetadata" - }, - "value": { - "description": "The kind of relationship the person is looking for. The value can be custom\nor predefined. Possible values include, but are not limited to, the\nfollowing values:\n\n* `friend`\n* `date`\n* `relationship`\n* `networking`", - "type": "string" - }, - "formattedValue": { - "description": "The value of the relationship interest translated and formatted in the\nviewer's account locale or the locale specified in the Accept-Language\nHTTP header.", - "type": "string" - } - }, - "id": "RelationshipInterest" - }, - "GetPeopleResponse": { - "properties": { - "responses": { - "description": "The response for each requested resource name.", - "type": "array", - "items": { - "$ref": "PersonResponse" - } - } - }, - "id": "GetPeopleResponse", - "type": "object" - }, - "Photo": { - "description": "A person's read-only photo. A picture shown next to the person's name to\nhelp others recognize the person.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the photo." - }, - "url": { - "description": "The URL of the photo. You can change the desired size by appending a query\nparameter `sz=`\u003cvar\u003esize\u003c/var\u003e at the end of the url. Example:\n`https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50`", - "type": "string" - } - }, - "id": "Photo" - }, - "PhoneNumber": { - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the phone number." - }, - "type": { - "description": "The type of the phone number. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `mobile`\n* `homeFax`\n* `workFax`\n* `otherFax`\n* `pager`\n* `workMobile`\n* `workPager`\n* `main`\n* `googleVoice`\n* `other`", - "type": "string" - }, - "value": { - "description": "The phone number.", - "type": "string" - }, - "formattedType": { - "description": "The read-only type of the phone number translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "canonicalForm": { - "description": "The read-only canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf)\nform of the phone number.", - "type": "string" - } - }, - "id": "PhoneNumber", - "description": "A person's phone number.", - "type": "object" - }, - "ListConnectionsResponse": { - "type": "object", - "properties": { - "nextPageToken": { - "description": "The token that can be used to retrieve the next page of results.", - "type": "string" - }, - "connections": { - "description": "The list of people that the requestor is connected to.", - "type": "array", - "items": { - "$ref": "Person" - } - }, - "nextSyncToken": { - "description": "The token that can be used to retrieve changes since the last request.", - "type": "string" - }, - "totalItems": { - "description": "The total number of items in the list without pagination.", - "format": "int32", - "type": "integer" - }, - "totalPeople": { - "description": "**DEPRECATED** (Please use totalItems)\nThe total number of people in the list without pagination.", - "format": "int32", - "type": "integer" - } - }, - "id": "ListConnectionsResponse" - }, - "Birthday": { - "description": "A person's birthday. At least one of the `date` and `text` fields are\nspecified. The `date` and `text` fields typically represent the same\ndate, but are not guaranteed to.", - "type": "object", - "properties": { - "metadata": { - "description": "Metadata about the birthday.", - "$ref": "FieldMetadata" - }, - "text": { - "description": "A free-form string representing the user's birthday.", - "type": "string" - }, - "date": { - "$ref": "Date", - "description": "The date of the birthday." - } - }, - "id": "Birthday" - }, - "CreateContactGroupRequest": { - "properties": { - "contactGroup": { - "$ref": "ContactGroup", - "description": "The contact group to create." - } - }, - "id": "CreateContactGroupRequest", - "description": "A request to create a new contact group.", - "type": "object" - }, - "Address": { - "properties": { - "formattedValue": { - "description": "The unstructured value of the address. If this is not set by the user it\nwill be automatically constructed from structured values.", - "type": "string" - }, - "country": { - "description": "The country of the address.", - "type": "string" - }, - "type": { - "description": "The type of the address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`", - "type": "string" - }, - "extendedAddress": { - "description": "The extended address of the address; for example, the apartment number.", - "type": "string" - }, - "poBox": { - "description": "The P.O. box of the address.", - "type": "string" - }, - "postalCode": { - "description": "The postal code of the address.", - "type": "string" - }, - "region": { - "description": "The region of the address; for example, the state or province.", - "type": "string" - }, - "streetAddress": { - "description": "The street address.", - "type": "string" - }, - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the address." - }, - "countryCode": { - "description": "The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country\ncode of the address.", - "type": "string" - }, - "formattedType": { - "description": "The read-only type of the address translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "city": { - "description": "The city of the address.", - "type": "string" - } - }, - "id": "Address", - "description": "A person's physical address. May be a P.O. box or street address. All fields\nare optional.", - "type": "object" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "code": { - "description": "The status code, which should be an enum value of google.rpc.Code.", - "format": "int32", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "type": "array", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - } - } - }, - "id": "Status" - }, - "ContactGroupMembership": { - "properties": { - "contactGroupId": { - "description": "The contact group ID for the contact group membership. The contact group\nID can be custom or predefined. Possible values include, but are not\nlimited to, the following:\n\n* `myContacts`\n* `starred`\n* A numerical ID for user-created groups.", - "type": "string" - } - }, - "id": "ContactGroupMembership", - "description": "A Google contact group membership.", - "type": "object" - }, - "PersonMetadata": { - "description": "The read-only metadata about a person.", - "type": "object", - "properties": { - "objectType": { - "description": "**DEPRECATED** (Please use\n`person.metadata.sources.profileMetadata.objectType` instead)\n\nThe type of the person object.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Person.", - "[Google+ Page.](http://www.google.com/+/brands/)" - ], - "enum": [ - "OBJECT_TYPE_UNSPECIFIED", - "PERSON", - "PAGE" - ] - }, - "linkedPeopleResourceNames": { - "description": "Resource names of people linked to this resource.", - "type": "array", - "items": { - "type": "string" - } - }, - "sources": { - "description": "The sources of data for the person.", - "type": "array", - "items": { - "$ref": "Source" - } - }, - "previousResourceNames": { - "description": "Any former resource names this person has had. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.\n\nThe resource name may change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or\nprofile URL.", - "type": "array", - "items": { - "type": "string" - } - }, - "deleted": { - "description": "True if the person resource has been deleted. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.", - "type": "boolean" - } - }, - "id": "PersonMetadata" - }, - "ModifyContactGroupMembersRequest": { - "description": "A request to modify an existing contact group's members.", - "type": "object", - "properties": { - "resourceNamesToAdd": { - "description": "The resource names of the contact people to add in the form of in the form\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e.", - "type": "array", - "items": { - "type": "string" - } - }, - "resourceNamesToRemove": { - "description": "The resource names of the contact people to remove in the form of in the\nform of `people/`\u003cvar\u003eperson_id\u003c/var\u003e.", - "type": "array", - "items": { - "type": "string" - } - } - }, - "id": "ModifyContactGroupMembersRequest" - }, - "ContactGroupResponse": { - "description": "The response for a specific contact group.", - "type": "object", - "properties": { - "requestedResourceName": { - "description": "The original requested resource name.", - "type": "string" - }, - "contactGroup": { - "$ref": "ContactGroup", - "description": "The contact group." - }, - "status": { - "description": "The status of the response.", - "$ref": "Status" - } - }, - "id": "ContactGroupResponse" - }, - "Url": { - "description": "A person's associated URLs.", - "type": "object", - "properties": { - "metadata": { - "description": "Metadata about the URL.", - "$ref": "FieldMetadata" - }, - "type": { - "description": "The type of the URL. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `blog`\n* `profile`\n* `homePage`\n* `ftp`\n* `reservations`\n* `appInstallPage`: website for a Google+ application.\n* `other`", - "type": "string" - }, - "value": { - "description": "The URL.", - "type": "string" - }, - "formattedType": { - "description": "The read-only type of the URL translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.", - "type": "string" - } - }, - "id": "Url" - }, - "ImClient": { - "description": "A person's instant messaging client.", - "type": "object", - "properties": { - "username": { - "description": "The user name used in the IM client.", - "type": "string" - }, - "formattedProtocol": { - "description": "The read-only protocol of the IM client formatted in the viewer's account\nlocale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "formattedType": { - "description": "The read-only type of the IM client translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the IM client." - }, - "type": { - "description": "The type of the IM client. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`", - "type": "string" - }, - "protocol": { - "description": "The protocol of the IM client. The protocol can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `aim`\n* `msn`\n* `yahoo`\n* `skype`\n* `qq`\n* `googleTalk`\n* `icq`\n* `jabber`\n* `netMeeting`", - "type": "string" - } - }, - "id": "ImClient" - }, - "DomainMembership": { - "properties": { - "inViewerDomain": { - "description": "True if the person is in the viewer's Google Apps domain.", - "type": "boolean" - } - }, - "id": "DomainMembership", - "description": "A Google Apps Domain membership.", - "type": "object" - }, - "Membership": { - "description": "A person's read-only membership in a group.", - "type": "object", - "properties": { - "contactGroupMembership": { - "$ref": "ContactGroupMembership", - "description": "The contact group membership." - }, - "domainMembership": { - "$ref": "DomainMembership", - "description": "The domain membership." - }, - "metadata": { - "description": "Metadata about the membership.", - "$ref": "FieldMetadata" - } - }, - "id": "Membership" - }, - "BatchGetContactGroupsResponse": { - "description": "The response to a batch get contact groups request.", - "type": "object", - "properties": { - "responses": { - "description": "The list of responses for each requested contact group resource.", - "type": "array", - "items": { - "$ref": "ContactGroupResponse" - } - } - }, - "id": "BatchGetContactGroupsResponse" - }, - "RelationshipStatus": { - "description": "A person's read-only relationship status.", - "type": "object", - "properties": { - "formattedValue": { - "description": "The read-only value of the relationship status translated and formatted in\nthe viewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the relationship status." - }, - "value": { - "description": "The relationship status. The value can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `single`\n* `inARelationship`\n* `engaged`\n* `married`\n* `itsComplicated`\n* `openRelationship`\n* `widowed`\n* `inDomesticPartnership`\n* `inCivilUnion`", - "type": "string" - } - }, - "id": "RelationshipStatus" - }, - "BraggingRights": { - "description": "A person's bragging rights.", - "type": "object", - "properties": { - "metadata": { - "description": "Metadata about the bragging rights.", - "$ref": "FieldMetadata" - }, - "value": { - "description": "The bragging rights; for example, `climbed mount everest`.", - "type": "string" - } - }, - "id": "BraggingRights" - }, - "Organization": { - "description": "A person's past or current organization. Overlapping date ranges are\npermitted.", - "type": "object", - "properties": { - "formattedType": { - "description": "The read-only type of the organization translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - }, - "startDate": { - "description": "The start date when the person joined the organization.", - "$ref": "Date" - }, - "domain": { - "description": "The domain name associated with the organization; for example, `google.com`.", - "type": "string" - }, - "department": { - "description": "The person's department at the organization.", - "type": "string" - }, - "type": { - "description": "The type of the organization. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `work`\n* `school`", - "type": "string" - }, - "phoneticName": { - "description": "The phonetic name of the organization.", - "type": "string" - }, - "jobDescription": { - "description": "The person's job description at the organization.", - "type": "string" - }, - "endDate": { - "$ref": "Date", - "description": "The end date when the person left the organization." - }, - "symbol": { - "description": "The symbol associated with the organization; for example, a stock ticker\nsymbol, abbreviation, or acronym.", - "type": "string" - }, - "name": { - "description": "The name of the organization.", - "type": "string" - }, - "metadata": { - "description": "Metadata about the organization.", - "$ref": "FieldMetadata" - }, - "title": { - "description": "The person's job title at the organization.", - "type": "string" - }, - "location": { - "description": "The location of the organization office the person works at.", - "type": "string" - }, - "current": { - "description": "True if the organization is the person's current organization;\nfalse if the organization is a past organization.", - "type": "boolean" - } - }, - "id": "Organization" - }, - "AgeRangeType": { - "description": "A person's age range.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the age range." - }, - "ageRange": { - "enumDescriptions": [ - "Unspecified.", - "Younger than eighteen.", - "Between eighteen and twenty.", - "Twenty-one and older." - ], - "enum": [ - "AGE_RANGE_UNSPECIFIED", - "LESS_THAN_EIGHTEEN", - "EIGHTEEN_TO_TWENTY", - "TWENTY_ONE_OR_OLDER" - ], - "description": "The age range.", - "type": "string" - } - }, - "id": "AgeRangeType" - }, - "ListContactGroupsResponse": { - "properties": { - "contactGroups": { - "description": "The list of contact groups. Members of the contact groups are not\npopulated.", - "type": "array", - "items": { - "$ref": "ContactGroup" - } - }, - "nextPageToken": { - "description": "The token that can be used to retrieve the next page of results.", - "type": "string" - }, - "totalItems": { - "description": "The total number of items in the list without pagination.", - "format": "int32", - "type": "integer" - }, - "nextSyncToken": { - "description": "The token that can be used to retrieve changes since the last request.", - "type": "string" - } - }, - "id": "ListContactGroupsResponse", - "description": "The response to a list contact groups request.", - "type": "object" - }, - "PersonResponse": { - "properties": { - "person": { - "$ref": "Person", - "description": "The person." - }, - "status": { - "description": "The status of the response.", - "$ref": "Status" - }, - "httpStatusCode": { - "description": "**DEPRECATED** (Please use status instead)\n\n[HTTP 1.1 status code]\n(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).", - "format": "int32", - "type": "integer" - }, - "requestedResourceName": { - "description": "The original requested resource name. May be different than the resource\nname on the returned person.\n\nThe resource name can change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or a\nprofile URL.", - "type": "string" - } - }, - "id": "PersonResponse", - "description": "The response for a single person", - "type": "object" - }, - "Relation": { - "description": "A person's relation to another person.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the relation." - }, - "type": { - "description": "The person's relation to the other person. The type can be custom or predefined.\nPossible values include, but are not limited to, the following values:\n\n* `spouse`\n* `child`\n* `mother`\n* `father`\n* `parent`\n* `brother`\n* `sister`\n* `friend`\n* `relative`\n* `domesticPartner`\n* `manager`\n* `assistant`\n* `referredBy`\n* `partner`", - "type": "string" - }, - "person": { - "description": "The name of the other person this relation refers to.", - "type": "string" - }, - "formattedType": { - "description": "The type of the relation translated and formatted in the viewer's account\nlocale or the locale specified in the Accept-Language HTTP header.", - "type": "string" - } - }, - "id": "Relation" - }, - "Occupation": { - "description": "A person's occupation.", - "type": "object", - "properties": { - "value": { - "description": "The occupation; for example, `carpenter`.", - "type": "string" - }, - "metadata": { - "description": "Metadata about the occupation.", - "$ref": "FieldMetadata" - } - }, - "id": "Occupation" - }, - "ContactGroup": { - "description": "A contact group.", - "type": "object", - "properties": { - "etag": { - "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation.", - "type": "string" - }, - "formattedName": { - "description": "The read-only name translated and formatted in the viewer's account locale\nor the `Accept-Language` HTTP header locale for system groups names.\nGroup names set by the owner are the same as name.", - "type": "string" - }, - "groupType": { - "description": "The read-only contact group type.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "User defined contact group.", - "System defined contact group." - ], - "enum": [ - "GROUP_TYPE_UNSPECIFIED", - "USER_CONTACT_GROUP", - "SYSTEM_CONTACT_GROUP" - ] - }, - "memberResourceNames": { - "description": "The list of contact person resource names that are members of the contact\ngroup. The field is not populated for LIST requests and can only be updated\nthrough the\n[ModifyContactGroupMembers](/people/api/rest/v1/contactgroups/members/modify).", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "The contact group name set by the group owner or a system provided name\nfor system groups.", - "type": "string" - }, - "metadata": { - "$ref": "ContactGroupMetadata", - "description": "Metadata about the contact group." - }, - "memberCount": { - "description": "The total number of contacts in the group irrespective of max members in\nspecified in the request.", - "format": "int32", - "type": "integer" - }, - "resourceName": { - "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`\u003cvar\u003econtact_group_id\u003c/var\u003e.", - "type": "string" - } - }, - "id": "ContactGroup" - }, - "Person": { - "description": "Information about a person merged from various data sources such as the\nauthenticated user's contacts and profile data.\n\nMost fields can have multiple items. The items in a field have no guaranteed\norder, but each non-empty field is guaranteed to have exactly one field with\n`metadata.primary` set to true.", - "type": "object", - "properties": { - "ageRange": { - "enumDescriptions": [ - "Unspecified.", - "Younger than eighteen.", - "Between eighteen and twenty.", - "Twenty-one and older." - ], - "enum": [ - "AGE_RANGE_UNSPECIFIED", - "LESS_THAN_EIGHTEEN", - "EIGHTEEN_TO_TWENTY", - "TWENTY_ONE_OR_OLDER" - ], - "description": "**DEPRECATED** (Please use `person.ageRanges` instead)**\n\nThe person's read-only age range.", - "type": "string" - }, - "taglines": { - "description": "The person's read-only taglines.", - "type": "array", - "items": { - "$ref": "Tagline" - } - }, - "ageRanges": { - "description": "The person's read-only age ranges.", - "type": "array", - "items": { - "$ref": "AgeRangeType" - } - }, - "addresses": { - "description": "The person's street addresses.", - "type": "array", - "items": { - "$ref": "Address" - } - }, - "events": { - "description": "The person's events.", - "type": "array", - "items": { - "$ref": "Event" - } - }, - "memberships": { - "description": "The person's read-only group memberships.", - "type": "array", - "items": { - "$ref": "Membership" - } - }, - "phoneNumbers": { - "description": "The person's phone numbers.", - "type": "array", - "items": { - "$ref": "PhoneNumber" - } - }, - "coverPhotos": { - "description": "The person's read-only cover photos.", - "type": "array", - "items": { - "$ref": "CoverPhoto" - } - }, - "imClients": { - "description": "The person's instant messaging clients.", - "type": "array", - "items": { - "$ref": "ImClient" - } - }, - "birthdays": { - "description": "The person's birthdays.", - "type": "array", - "items": { - "$ref": "Birthday" - } - }, - "locales": { - "description": "The person's locale preferences.", - "type": "array", - "items": { - "$ref": "Locale" - } - }, - "relationshipInterests": { - "description": "The person's read-only relationship interests.", - "type": "array", - "items": { - "$ref": "RelationshipInterest" - } - }, - "urls": { - "description": "The person's associated URLs.", - "type": "array", - "items": { - "$ref": "Url" - } - }, - "nicknames": { - "description": "The person's nicknames.", - "type": "array", - "items": { - "$ref": "Nickname" - } - }, - "names": { - "description": "The person's names.", - "type": "array", - "items": { - "$ref": "Name" - } - }, - "relations": { - "description": "The person's relations.", - "type": "array", - "items": { - "$ref": "Relation" - } - }, - "occupations": { - "description": "The person's occupations.", - "type": "array", - "items": { - "$ref": "Occupation" - } - }, - "emailAddresses": { - "description": "The person's email addresses.", - "type": "array", - "items": { - "$ref": "EmailAddress" - } - }, - "organizations": { - "description": "The person's past or current organizations.", - "type": "array", - "items": { - "$ref": "Organization" - } - }, - "etag": { - "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation.", - "type": "string" - }, - "braggingRights": { - "description": "The person's bragging rights.", - "type": "array", - "items": { - "$ref": "BraggingRights" - } - }, - "metadata": { - "$ref": "PersonMetadata", - "description": "Read-only metadata about the person." - }, - "residences": { - "description": "The person's residences.", - "type": "array", - "items": { - "$ref": "Residence" - } - }, - "genders": { - "description": "The person's genders.", - "type": "array", - "items": { - "$ref": "Gender" - } - }, - "interests": { - "description": "The person's interests.", - "type": "array", - "items": { - "$ref": "Interest" - } - }, - "resourceName": { - "description": "The resource name for the person, assigned by the server. An ASCII string\nwith a max length of 27 characters, in the form of\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e.", - "type": "string" - }, - "biographies": { - "description": "The person's biographies.", - "type": "array", - "items": { - "$ref": "Biography" - } - }, - "skills": { - "description": "The person's skills.", - "type": "array", - "items": { - "$ref": "Skill" - } - }, - "relationshipStatuses": { - "description": "The person's read-only relationship statuses.", - "type": "array", - "items": { - "$ref": "RelationshipStatus" - } - }, - "photos": { - "description": "The person's read-only photos.", - "type": "array", - "items": { - "$ref": "Photo" - } - } - }, - "id": "Person" - }, - "UpdateContactGroupRequest": { - "properties": { - "contactGroup": { - "description": "The contact group to update.", - "$ref": "ContactGroup" - } - }, - "id": "UpdateContactGroupRequest", - "description": "A request to update an existing contact group. Only the name can be updated.", - "type": "object" - }, - "ContactGroupMetadata": { - "description": "The read-only metadata about a contact group.", - "type": "object", - "properties": { - "updateTime": { - "description": "The time the group was last updated.", - "format": "google-datetime", - "type": "string" - }, - "deleted": { - "description": "True if the contact group resource has been deleted. Populated only for\n[`ListContactGroups`](/people/api/rest/v1/contactgroups/list) requests\nthat include a sync token.", - "type": "boolean" - } - }, - "id": "ContactGroupMetadata" - }, - "Residence": { - "description": "A person's past or current residence.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the residence." - }, - "current": { - "description": "True if the residence is the person's current residence;\nfalse if the residence is a past residence.", - "type": "boolean" - }, - "value": { - "description": "The address of the residence.", - "type": "string" - } - }, - "id": "Residence" - }, - "Event": { - "description": "An event related to the person.", - "type": "object", - "properties": { - "metadata": { - "$ref": "FieldMetadata", - "description": "Metadata about the event." - }, - "type": { - "description": "The type of the event. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `anniversary`\n* `other`", - "type": "string" - }, - "date": { - "description": "The date of the event.", - "$ref": "Date" - }, - "formattedType": { - "description": "The read-only type of the event translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - } - }, - "id": "Event" - }, "ModifyContactGroupMembersResponse": { "description": "The response to a modify contact group members request.", "type": "object", @@ -1751,26 +17,10 @@ "id": "ModifyContactGroupMembersResponse" }, "ProfileMetadata": { + "id": "ProfileMetadata", + "description": "The read-only metadata about a profile.", + "type": "object", "properties": { - "userTypes": { - "description": "The user types.", - "type": "array", - "items": { - "type": "string", - "enum": [ - "USER_TYPE_UNKNOWN", - "GOOGLE_USER", - "GPLUS_USER", - "GOOGLE_APPS_USER" - ] - }, - "enumDescriptions": [ - "The user type is not known.", - "The user is a Google user.", - "The user is a Google+ user.", - "The user is a Google Apps for Work user." - ] - }, "objectType": { "enumDescriptions": [ "Unspecified.", @@ -1784,11 +34,27 @@ ], "description": "The profile object type.", "type": "string" + }, + "userTypes": { + "description": "The user types.", + "type": "array", + "items": { + "enum": [ + "USER_TYPE_UNKNOWN", + "GOOGLE_USER", + "GPLUS_USER", + "GOOGLE_APPS_USER" + ], + "type": "string" + }, + "enumDescriptions": [ + "The user type is not known.", + "The user is a Google user.", + "The user is a Google+ user.", + "The user is a Google Apps for Work user." + ] } - }, - "id": "ProfileMetadata", - "description": "The read-only metadata about a profile.", - "type": "object" + } }, "Gender": { "description": "A person's gender.", @@ -1803,16 +69,19 @@ "type": "string" }, "metadata": { - "description": "Metadata about the gender.", - "$ref": "FieldMetadata" + "$ref": "FieldMetadata", + "description": "Metadata about the gender." } }, "id": "Gender" }, "CoverPhoto": { - "description": "A person's read-only cover photo. A large image shown on the person's\nprofile page that represents who they are or what they care about.", "type": "object", "properties": { + "url": { + "description": "The URL of the cover photo.", + "type": "string" + }, "metadata": { "description": "Metadata about the cover photo.", "$ref": "FieldMetadata" @@ -1820,15 +89,13 @@ "default": { "description": "True if the cover photo is the default cover photo;\nfalse if the cover photo is a user-provided cover photo.", "type": "boolean" - }, - "url": { - "description": "The URL of the cover photo.", - "type": "string" } }, - "id": "CoverPhoto" + "id": "CoverPhoto", + "description": "A person's read-only cover photo. A large image shown on the person's\nprofile page that represents who they are or what they care about." }, "Interest": { + "type": "object", "properties": { "metadata": { "$ref": "FieldMetadata", @@ -1840,51 +107,16 @@ } }, "id": "Interest", - "description": "One of the person's interests.", - "type": "object" - }, - "EmailAddress": { - "description": "A person's email address.", - "type": "object", - "properties": { - "displayName": { - "description": "The display name of the email.", - "type": "string" - }, - "metadata": { - "description": "Metadata about the email address.", - "$ref": "FieldMetadata" - }, - "type": { - "description": "The type of the email address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`", - "type": "string" - }, - "value": { - "description": "The email address.", - "type": "string" - }, - "formattedType": { - "description": "The read-only type of the email address translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", - "type": "string" - } - }, - "id": "EmailAddress" + "description": "One of the person's interests." }, "Nickname": { - "description": "A person's nickname.", "type": "object", "properties": { - "value": { - "description": "The nickname.", - "type": "string" - }, "metadata": { - "description": "Metadata about the nickname.", - "$ref": "FieldMetadata" + "$ref": "FieldMetadata", + "description": "Metadata about the nickname." }, "type": { - "description": "The type of the nickname.", - "type": "string", "enumDescriptions": [ "Generic nickname.", "Maiden name or birth family name. Used when the person's family name has\nchanged as a result of marriage.", @@ -1898,10 +130,44 @@ "INITIALS", "GPLUS", "OTHER_NAME" - ] + ], + "description": "The type of the nickname.", + "type": "string" + }, + "value": { + "description": "The nickname.", + "type": "string" } }, - "id": "Nickname" + "id": "Nickname", + "description": "A person's nickname." + }, + "EmailAddress": { + "id": "EmailAddress", + "description": "A person's email address.", + "type": "object", + "properties": { + "displayName": { + "description": "The display name of the email.", + "type": "string" + }, + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the email address." + }, + "type": { + "type": "string", + "description": "The type of the email address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`" + }, + "value": { + "type": "string", + "description": "The email address." + }, + "formattedType": { + "description": "The read-only type of the email address translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", + "type": "string" + } + } }, "Skill": { "description": "A skill that the person has.", @@ -1954,11 +220,1771 @@ } }, "id": "Tagline" + }, + "Name": { + "description": "A person's name. If the name is a mononym, the family name is empty.", + "type": "object", + "properties": { + "displayName": { + "description": "The read-only display name formatted according to the locale specified by\nthe viewer's account or the `Accept-Language` HTTP header.", + "type": "string" + }, + "honorificSuffix": { + "type": "string", + "description": "The honorific suffixes, such as `Jr.`" + }, + "honorificPrefix": { + "description": "The honorific prefixes, such as `Mrs.` or `Dr.`", + "type": "string" + }, + "phoneticHonorificSuffix": { + "type": "string", + "description": "The honorific suffixes spelled as they sound." + }, + "middleName": { + "type": "string", + "description": "The middle name(s)." + }, + "givenName": { + "description": "The given name.", + "type": "string" + }, + "phoneticHonorificPrefix": { + "description": "The honorific prefixes spelled as they sound.", + "type": "string" + }, + "phoneticGivenName": { + "description": "The given name spelled as it sounds.", + "type": "string" + }, + "phoneticFamilyName": { + "description": "The family name spelled as it sounds.", + "type": "string" + }, + "familyName": { + "description": "The family name.", + "type": "string" + }, + "phoneticMiddleName": { + "description": "The middle name(s) spelled as they sound.", + "type": "string" + }, + "metadata": { + "description": "Metadata about the name.", + "$ref": "FieldMetadata" + }, + "phoneticFullName": { + "description": "The full name spelled as it sounds.", + "type": "string" + }, + "displayNameLastFirst": { + "description": "The read-only display name with the last name first formatted according to\nthe locale specified by the viewer's account or the\n`Accept-Language` HTTP header.", + "type": "string" + } + }, + "id": "Name" + }, + "Locale": { + "description": "A person's locale preference.", + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the locale." + }, + "value": { + "description": "The well-formed [IETF BCP 47](https://tools.ietf.org/html/bcp47)\nlanguage tag representing the locale.", + "type": "string" + } + }, + "id": "Locale" + }, + "Empty": { + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" + }, + "UserDefined": { + "description": "Arbitrary user data that is populated by the end users.", + "type": "object", + "properties": { + "key": { + "type": "string", + "description": "The end user specified key of the user defined data." + }, + "metadata": { + "description": "Metadata about the user defined data.", + "$ref": "FieldMetadata" + }, + "value": { + "description": "The end user specified value of the user defined data.", + "type": "string" + } + }, + "id": "UserDefined" + }, + "Biography": { + "properties": { + "contentType": { + "enumDescriptions": [ + "Unspecified.", + "Plain text.", + "HTML text." + ], + "enum": [ + "CONTENT_TYPE_UNSPECIFIED", + "TEXT_PLAIN", + "TEXT_HTML" + ], + "description": "The content type of the biography.", + "type": "string" + }, + "metadata": { + "description": "Metadata about the biography.", + "$ref": "FieldMetadata" + }, + "value": { + "description": "The short biography.", + "type": "string" + } + }, + "id": "Biography", + "description": "A person's short biography.", + "type": "object" + }, + "FieldMetadata": { + "description": "Metadata about a field.", + "type": "object", + "properties": { + "source": { + "$ref": "Source", + "description": "The source of the field." + }, + "verified": { + "description": "True if the field is verified; false if the field is unverified. A\nverified field is typically a name, email address, phone number, or\nwebsite that has been confirmed to be owned by the person.", + "type": "boolean" + }, + "primary": { + "description": "True if the field is the primary field; false if the field is a secondary\nfield.", + "type": "boolean" + } + }, + "id": "FieldMetadata" + }, + "Source": { + "description": "The source of a field.", + "type": "object", + "properties": { + "profileMetadata": { + "$ref": "ProfileMetadata", + "description": "**Only populated in `person.metadata.sources`.**\n\nMetadata about a source of type PROFILE." + }, + "updateTime": { + "description": "**Only populated in `person.metadata.sources`.**\n\nLast update timestamp of this source.", + "format": "google-datetime", + "type": "string" + }, + "type": { + "description": "The source type.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "[Google Account](https://accounts.google.com).", + "[Google profile](https://profiles.google.com). You can view the\nprofile at https://profiles.google.com/\u003cvar\u003eid\u003c/var\u003e where\n\u003cvar\u003eid\u003c/var\u003e is the source id.", + "[Google Apps domain profile](https://admin.google.com).", + "[Google contact](https://contacts.google.com). You can view the\ncontact at https://contact.google.com/\u003cvar\u003eid\u003c/var\u003e where \u003cvar\u003eid\u003c/var\u003e\nis the source id." + ], + "enum": [ + "SOURCE_TYPE_UNSPECIFIED", + "ACCOUNT", + "PROFILE", + "DOMAIN_PROFILE", + "CONTACT" + ] + }, + "etag": { + "description": "**Only populated in `person.metadata.sources`.**\n\nThe [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nsource. Used for web cache validation.", + "type": "string" + }, + "id": { + "description": "The unique identifier within the source type generated by the server.", + "type": "string" + } + }, + "id": "Source" + }, + "RelationshipInterest": { + "description": "A person's read-only relationship interest .", + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the relationship interest." + }, + "value": { + "description": "The kind of relationship the person is looking for. The value can be custom\nor predefined. Possible values include, but are not limited to, the\nfollowing values:\n\n* `friend`\n* `date`\n* `relationship`\n* `networking`", + "type": "string" + }, + "formattedValue": { + "description": "The value of the relationship interest translated and formatted in the\nviewer's account locale or the locale specified in the Accept-Language\nHTTP header.", + "type": "string" + } + }, + "id": "RelationshipInterest" + }, + "GetPeopleResponse": { + "type": "object", + "properties": { + "responses": { + "description": "The response for each requested resource name.", + "type": "array", + "items": { + "$ref": "PersonResponse" + } + } + }, + "id": "GetPeopleResponse" + }, + "PhoneNumber": { + "description": "A person's phone number.", + "type": "object", + "properties": { + "metadata": { + "description": "Metadata about the phone number.", + "$ref": "FieldMetadata" + }, + "type": { + "description": "The type of the phone number. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `mobile`\n* `homeFax`\n* `workFax`\n* `otherFax`\n* `pager`\n* `workMobile`\n* `workPager`\n* `main`\n* `googleVoice`\n* `other`", + "type": "string" + }, + "value": { + "description": "The phone number.", + "type": "string" + }, + "formattedType": { + "type": "string", + "description": "The read-only type of the phone number translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale." + }, + "canonicalForm": { + "description": "The read-only canonicalized [ITU-T E.164](https://law.resource.org/pub/us/cfr/ibr/004/itu-t.E.164.1.2008.pdf)\nform of the phone number.", + "type": "string" + } + }, + "id": "PhoneNumber" + }, + "Photo": { + "description": "A person's read-only photo. A picture shown next to the person's name to\nhelp others recognize the person.", + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the photo." + }, + "url": { + "description": "The URL of the photo. You can change the desired size by appending a query\nparameter `sz=`\u003cvar\u003esize\u003c/var\u003e at the end of the url. Example:\n`https://lh3.googleusercontent.com/-T_wVWLlmg7w/AAAAAAAAAAI/AAAAAAAABa8/00gzXvDBYqw/s100/photo.jpg?sz=50`", + "type": "string" + } + }, + "id": "Photo" + }, + "ListConnectionsResponse": { + "type": "object", + "properties": { + "nextPageToken": { + "description": "The token that can be used to retrieve the next page of results.", + "type": "string" + }, + "connections": { + "description": "The list of people that the requestor is connected to.", + "type": "array", + "items": { + "$ref": "Person" + } + }, + "nextSyncToken": { + "description": "The token that can be used to retrieve changes since the last request.", + "type": "string" + }, + "totalItems": { + "description": "The total number of items in the list without pagination.", + "format": "int32", + "type": "integer" + }, + "totalPeople": { + "description": "**DEPRECATED** (Please use totalItems)\nThe total number of people in the list without pagination.", + "format": "int32", + "type": "integer" + } + }, + "id": "ListConnectionsResponse" + }, + "Birthday": { + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the birthday." + }, + "text": { + "description": "A free-form string representing the user's birthday.", + "type": "string" + }, + "date": { + "$ref": "Date", + "description": "The date of the birthday." + } + }, + "id": "Birthday", + "description": "A person's birthday. At least one of the `date` and `text` fields are\nspecified. The `date` and `text` fields typically represent the same\ndate, but are not guaranteed to." + }, + "CreateContactGroupRequest": { + "description": "A request to create a new contact group.", + "type": "object", + "properties": { + "contactGroup": { + "description": "The contact group to create.", + "$ref": "ContactGroup" + } + }, + "id": "CreateContactGroupRequest" + }, + "Address": { + "description": "A person's physical address. May be a P.O. box or street address. All fields\nare optional.", + "type": "object", + "properties": { + "countryCode": { + "description": "The [ISO 3166-1 alpha-2](http://www.iso.org/iso/country_codes.htm) country\ncode of the address.", + "type": "string" + }, + "formattedType": { + "description": "The read-only type of the address translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.", + "type": "string" + }, + "city": { + "description": "The city of the address.", + "type": "string" + }, + "formattedValue": { + "description": "The unstructured value of the address. If this is not set by the user it\nwill be automatically constructed from structured values.", + "type": "string" + }, + "country": { + "description": "The country of the address.", + "type": "string" + }, + "type": { + "description": "The type of the address. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`", + "type": "string" + }, + "extendedAddress": { + "description": "The extended address of the address; for example, the apartment number.", + "type": "string" + }, + "poBox": { + "description": "The P.O. box of the address.", + "type": "string" + }, + "postalCode": { + "type": "string", + "description": "The postal code of the address." + }, + "region": { + "description": "The region of the address; for example, the state or province.", + "type": "string" + }, + "streetAddress": { + "description": "The street address.", + "type": "string" + }, + "metadata": { + "description": "Metadata about the address.", + "$ref": "FieldMetadata" + } + }, + "id": "Address" + }, + "ContactGroupMembership": { + "type": "object", + "properties": { + "contactGroupId": { + "description": "The contact group ID for the contact group membership. The contact group\nID can be custom or predefined. Possible values include, but are not\nlimited to, the following:\n\n* `myContacts`\n* `starred`\n* A numerical ID for user-created groups.", + "type": "string" + } + }, + "id": "ContactGroupMembership", + "description": "A Google contact group membership." + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "type": "array", + "items": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "type": "object" + } + }, + "code": { + "description": "The status code, which should be an enum value of google.rpc.Code.", + "format": "int32", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "PersonMetadata": { + "id": "PersonMetadata", + "description": "The read-only metadata about a person.", + "type": "object", + "properties": { + "objectType": { + "enum": [ + "OBJECT_TYPE_UNSPECIFIED", + "PERSON", + "PAGE" + ], + "description": "**DEPRECATED** (Please use\n`person.metadata.sources.profileMetadata.objectType` instead)\n\nThe type of the person object.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "Person.", + "[Google+ Page.](http://www.google.com/+/brands/)" + ] + }, + "linkedPeopleResourceNames": { + "description": "Resource names of people linked to this resource.", + "type": "array", + "items": { + "type": "string" + } + }, + "sources": { + "description": "The sources of data for the person.", + "type": "array", + "items": { + "$ref": "Source" + } + }, + "previousResourceNames": { + "description": "Any former resource names this person has had. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.\n\nThe resource name may change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or\nprofile URL.", + "type": "array", + "items": { + "type": "string" + } + }, + "deleted": { + "description": "True if the person resource has been deleted. Populated only for\n[`connections.list`](/people/api/rest/v1/people.connections/list) requests\nthat include a sync token.", + "type": "boolean" + } + } + }, + "ModifyContactGroupMembersRequest": { + "description": "A request to modify an existing contact group's members.", + "type": "object", + "properties": { + "resourceNamesToRemove": { + "description": "The resource names of the contact people to remove in the form of in the\nform of `people/`\u003cvar\u003eperson_id\u003c/var\u003e.", + "type": "array", + "items": { + "type": "string" + } + }, + "resourceNamesToAdd": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The resource names of the contact people to add in the form of in the form\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e." + } + }, + "id": "ModifyContactGroupMembersRequest" + }, + "ContactGroupResponse": { + "type": "object", + "properties": { + "status": { + "$ref": "Status", + "description": "The status of the response." + }, + "requestedResourceName": { + "description": "The original requested resource name.", + "type": "string" + }, + "contactGroup": { + "$ref": "ContactGroup", + "description": "The contact group." + } + }, + "id": "ContactGroupResponse", + "description": "The response for a specific contact group." + }, + "Url": { + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the URL." + }, + "type": { + "description": "The type of the URL. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `blog`\n* `profile`\n* `homePage`\n* `ftp`\n* `reservations`\n* `appInstallPage`: website for a Google+ application.\n* `other`", + "type": "string" + }, + "value": { + "description": "The URL.", + "type": "string" + }, + "formattedType": { + "description": "The read-only type of the URL translated and formatted in the viewer's\naccount locale or the `Accept-Language` HTTP header locale.", + "type": "string" + } + }, + "id": "Url", + "description": "A person's associated URLs." + }, + "ImClient": { + "description": "A person's instant messaging client.", + "type": "object", + "properties": { + "formattedProtocol": { + "description": "The read-only protocol of the IM client formatted in the viewer's account\nlocale or the `Accept-Language` HTTP header locale.", + "type": "string" + }, + "formattedType": { + "description": "The read-only type of the IM client translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", + "type": "string" + }, + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the IM client." + }, + "type": { + "description": "The type of the IM client. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `home`\n* `work`\n* `other`", + "type": "string" + }, + "protocol": { + "description": "The protocol of the IM client. The protocol can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `aim`\n* `msn`\n* `yahoo`\n* `skype`\n* `qq`\n* `googleTalk`\n* `icq`\n* `jabber`\n* `netMeeting`", + "type": "string" + }, + "username": { + "description": "The user name used in the IM client.", + "type": "string" + } + }, + "id": "ImClient" + }, + "DomainMembership": { + "description": "A Google Apps Domain membership.", + "type": "object", + "properties": { + "inViewerDomain": { + "description": "True if the person is in the viewer's Google Apps domain.", + "type": "boolean" + } + }, + "id": "DomainMembership" + }, + "Membership": { + "id": "Membership", + "description": "A person's read-only membership in a group.", + "type": "object", + "properties": { + "contactGroupMembership": { + "$ref": "ContactGroupMembership", + "description": "The contact group membership." + }, + "domainMembership": { + "$ref": "DomainMembership", + "description": "The domain membership." + }, + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the membership." + } + } + }, + "BatchGetContactGroupsResponse": { + "description": "The response to a batch get contact groups request.", + "type": "object", + "properties": { + "responses": { + "description": "The list of responses for each requested contact group resource.", + "type": "array", + "items": { + "$ref": "ContactGroupResponse" + } + } + }, + "id": "BatchGetContactGroupsResponse" + }, + "RelationshipStatus": { + "description": "A person's read-only relationship status.", + "type": "object", + "properties": { + "metadata": { + "description": "Metadata about the relationship status.", + "$ref": "FieldMetadata" + }, + "value": { + "type": "string", + "description": "The relationship status. The value can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `single`\n* `inARelationship`\n* `engaged`\n* `married`\n* `itsComplicated`\n* `openRelationship`\n* `widowed`\n* `inDomesticPartnership`\n* `inCivilUnion`" + }, + "formattedValue": { + "description": "The read-only value of the relationship status translated and formatted in\nthe viewer's account locale or the `Accept-Language` HTTP header locale.", + "type": "string" + } + }, + "id": "RelationshipStatus" + }, + "BraggingRights": { + "description": "A person's bragging rights.", + "type": "object", + "properties": { + "metadata": { + "description": "Metadata about the bragging rights.", + "$ref": "FieldMetadata" + }, + "value": { + "description": "The bragging rights; for example, `climbed mount everest`.", + "type": "string" + } + }, + "id": "BraggingRights" + }, + "Organization": { + "description": "A person's past or current organization. Overlapping date ranges are\npermitted.", + "type": "object", + "properties": { + "startDate": { + "description": "The start date when the person joined the organization.", + "$ref": "Date" + }, + "formattedType": { + "description": "The read-only type of the organization translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", + "type": "string" + }, + "domain": { + "description": "The domain name associated with the organization; for example, `google.com`.", + "type": "string" + }, + "department": { + "description": "The person's department at the organization.", + "type": "string" + }, + "phoneticName": { + "type": "string", + "description": "The phonetic name of the organization." + }, + "type": { + "description": "The type of the organization. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `work`\n* `school`", + "type": "string" + }, + "jobDescription": { + "description": "The person's job description at the organization.", + "type": "string" + }, + "endDate": { + "$ref": "Date", + "description": "The end date when the person left the organization." + }, + "symbol": { + "description": "The symbol associated with the organization; for example, a stock ticker\nsymbol, abbreviation, or acronym.", + "type": "string" + }, + "name": { + "description": "The name of the organization.", + "type": "string" + }, + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the organization." + }, + "location": { + "description": "The location of the organization office the person works at.", + "type": "string" + }, + "title": { + "type": "string", + "description": "The person's job title at the organization." + }, + "current": { + "description": "True if the organization is the person's current organization;\nfalse if the organization is a past organization.", + "type": "boolean" + } + }, + "id": "Organization" + }, + "AgeRangeType": { + "description": "A person's age range.", + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the age range." + }, + "ageRange": { + "enumDescriptions": [ + "Unspecified.", + "Younger than eighteen.", + "Between eighteen and twenty.", + "Twenty-one and older." + ], + "enum": [ + "AGE_RANGE_UNSPECIFIED", + "LESS_THAN_EIGHTEEN", + "EIGHTEEN_TO_TWENTY", + "TWENTY_ONE_OR_OLDER" + ], + "description": "The age range.", + "type": "string" + } + }, + "id": "AgeRangeType" + }, + "ListContactGroupsResponse": { + "properties": { + "nextPageToken": { + "description": "The token that can be used to retrieve the next page of results.", + "type": "string" + }, + "totalItems": { + "description": "The total number of items in the list without pagination.", + "format": "int32", + "type": "integer" + }, + "nextSyncToken": { + "description": "The token that can be used to retrieve changes since the last request.", + "type": "string" + }, + "contactGroups": { + "description": "The list of contact groups. Members of the contact groups are not\npopulated.", + "type": "array", + "items": { + "$ref": "ContactGroup" + } + } + }, + "id": "ListContactGroupsResponse", + "description": "The response to a list contact groups request.", + "type": "object" + }, + "PersonResponse": { + "description": "The response for a single person", + "type": "object", + "properties": { + "person": { + "$ref": "Person", + "description": "The person." + }, + "status": { + "description": "The status of the response.", + "$ref": "Status" + }, + "httpStatusCode": { + "description": "**DEPRECATED** (Please use status instead)\n\n[HTTP 1.1 status code]\n(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).", + "format": "int32", + "type": "integer" + }, + "requestedResourceName": { + "description": "The original requested resource name. May be different than the resource\nname on the returned person.\n\nThe resource name can change when adding or removing fields that link a\ncontact and profile such as a verified email, verified phone number, or a\nprofile URL.", + "type": "string" + } + }, + "id": "PersonResponse" + }, + "Relation": { + "description": "A person's relation to another person.", + "type": "object", + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the relation." + }, + "type": { + "description": "The person's relation to the other person. The type can be custom or predefined.\nPossible values include, but are not limited to, the following values:\n\n* `spouse`\n* `child`\n* `mother`\n* `father`\n* `parent`\n* `brother`\n* `sister`\n* `friend`\n* `relative`\n* `domesticPartner`\n* `manager`\n* `assistant`\n* `referredBy`\n* `partner`", + "type": "string" + }, + "person": { + "description": "The name of the other person this relation refers to.", + "type": "string" + }, + "formattedType": { + "type": "string", + "description": "The type of the relation translated and formatted in the viewer's account\nlocale or the locale specified in the Accept-Language HTTP header." + } + }, + "id": "Relation" + }, + "Occupation": { + "description": "A person's occupation.", + "type": "object", + "properties": { + "metadata": { + "description": "Metadata about the occupation.", + "$ref": "FieldMetadata" + }, + "value": { + "description": "The occupation; for example, `carpenter`.", + "type": "string" + } + }, + "id": "Occupation" + }, + "ContactGroup": { + "description": "A contact group.", + "type": "object", + "properties": { + "resourceName": { + "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`\u003cvar\u003econtact_group_id\u003c/var\u003e.", + "type": "string" + }, + "etag": { + "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation.", + "type": "string" + }, + "groupType": { + "enum": [ + "GROUP_TYPE_UNSPECIFIED", + "USER_CONTACT_GROUP", + "SYSTEM_CONTACT_GROUP" + ], + "description": "The read-only contact group type.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "User defined contact group.", + "System defined contact group." + ] + }, + "formattedName": { + "description": "The read-only name translated and formatted in the viewer's account locale\nor the `Accept-Language` HTTP header locale for system groups names.\nGroup names set by the owner are the same as name.", + "type": "string" + }, + "name": { + "type": "string", + "description": "The contact group name set by the group owner or a system provided name\nfor system groups." + }, + "memberResourceNames": { + "description": "The list of contact person resource names that are members of the contact\ngroup. The field is not populated for LIST requests and can only be updated\nthrough the\n[ModifyContactGroupMembers](/people/api/rest/v1/contactgroups/members/modify).", + "type": "array", + "items": { + "type": "string" + } + }, + "memberCount": { + "description": "The total number of contacts in the group irrespective of max members in\nspecified in the request.", + "format": "int32", + "type": "integer" + }, + "metadata": { + "$ref": "ContactGroupMetadata", + "description": "Metadata about the contact group." + } + }, + "id": "ContactGroup" + }, + "Person": { + "description": "Information about a person merged from various data sources such as the\nauthenticated user's contacts and profile data.\n\nMost fields can have multiple items. The items in a field have no guaranteed\norder, but each non-empty field is guaranteed to have exactly one field with\n`metadata.primary` set to true.", + "type": "object", + "properties": { + "residences": { + "description": "The person's residences.", + "type": "array", + "items": { + "$ref": "Residence" + } + }, + "genders": { + "description": "The person's genders.", + "type": "array", + "items": { + "$ref": "Gender" + } + }, + "interests": { + "type": "array", + "items": { + "$ref": "Interest" + }, + "description": "The person's interests." + }, + "resourceName": { + "description": "The resource name for the person, assigned by the server. An ASCII string\nwith a max length of 27 characters, in the form of\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e.", + "type": "string" + }, + "biographies": { + "description": "The person's biographies.", + "type": "array", + "items": { + "$ref": "Biography" + } + }, + "skills": { + "description": "The person's skills.", + "type": "array", + "items": { + "$ref": "Skill" + } + }, + "relationshipStatuses": { + "description": "The person's read-only relationship statuses.", + "type": "array", + "items": { + "$ref": "RelationshipStatus" + } + }, + "photos": { + "description": "The person's read-only photos.", + "type": "array", + "items": { + "$ref": "Photo" + } + }, + "ageRange": { + "enumDescriptions": [ + "Unspecified.", + "Younger than eighteen.", + "Between eighteen and twenty.", + "Twenty-one and older." + ], + "enum": [ + "AGE_RANGE_UNSPECIFIED", + "LESS_THAN_EIGHTEEN", + "EIGHTEEN_TO_TWENTY", + "TWENTY_ONE_OR_OLDER" + ], + "description": "**DEPRECATED** (Please use `person.ageRanges` instead)**\n\nThe person's read-only age range.", + "type": "string" + }, + "taglines": { + "description": "The person's read-only taglines.", + "type": "array", + "items": { + "$ref": "Tagline" + } + }, + "ageRanges": { + "type": "array", + "items": { + "$ref": "AgeRangeType" + }, + "description": "The person's read-only age ranges." + }, + "addresses": { + "description": "The person's street addresses.", + "type": "array", + "items": { + "$ref": "Address" + } + }, + "events": { + "type": "array", + "items": { + "$ref": "Event" + }, + "description": "The person's events." + }, + "memberships": { + "type": "array", + "items": { + "$ref": "Membership" + }, + "description": "The person's read-only group memberships." + }, + "phoneNumbers": { + "description": "The person's phone numbers.", + "type": "array", + "items": { + "$ref": "PhoneNumber" + } + }, + "coverPhotos": { + "description": "The person's read-only cover photos.", + "type": "array", + "items": { + "$ref": "CoverPhoto" + } + }, + "imClients": { + "description": "The person's instant messaging clients.", + "type": "array", + "items": { + "$ref": "ImClient" + } + }, + "birthdays": { + "type": "array", + "items": { + "$ref": "Birthday" + }, + "description": "The person's birthdays." + }, + "userDefined": { + "description": "The person's user defined data.", + "type": "array", + "items": { + "$ref": "UserDefined" + } + }, + "locales": { + "description": "The person's locale preferences.", + "type": "array", + "items": { + "$ref": "Locale" + } + }, + "relationshipInterests": { + "description": "The person's read-only relationship interests.", + "type": "array", + "items": { + "$ref": "RelationshipInterest" + } + }, + "urls": { + "description": "The person's associated URLs.", + "type": "array", + "items": { + "$ref": "Url" + } + }, + "nicknames": { + "description": "The person's nicknames.", + "type": "array", + "items": { + "$ref": "Nickname" + } + }, + "names": { + "description": "The person's names.", + "type": "array", + "items": { + "$ref": "Name" + } + }, + "relations": { + "type": "array", + "items": { + "$ref": "Relation" + }, + "description": "The person's relations." + }, + "occupations": { + "description": "The person's occupations.", + "type": "array", + "items": { + "$ref": "Occupation" + } + }, + "emailAddresses": { + "description": "The person's email addresses.", + "type": "array", + "items": { + "$ref": "EmailAddress" + } + }, + "organizations": { + "description": "The person's past or current organizations.", + "type": "array", + "items": { + "$ref": "Organization" + } + }, + "etag": { + "type": "string", + "description": "The [HTTP entity tag](https://en.wikipedia.org/wiki/HTTP_ETag) of the\nresource. Used for web cache validation." + }, + "braggingRights": { + "description": "The person's bragging rights.", + "type": "array", + "items": { + "$ref": "BraggingRights" + } + }, + "metadata": { + "$ref": "PersonMetadata", + "description": "Read-only metadata about the person." + } + }, + "id": "Person" + }, + "UpdateContactGroupRequest": { + "properties": { + "contactGroup": { + "$ref": "ContactGroup", + "description": "The contact group to update." + } + }, + "id": "UpdateContactGroupRequest", + "description": "A request to update an existing contact group. Only the name can be updated.", + "type": "object" + }, + "ContactGroupMetadata": { + "description": "The read-only metadata about a contact group.", + "type": "object", + "properties": { + "updateTime": { + "description": "The time the group was last updated.", + "format": "google-datetime", + "type": "string" + }, + "deleted": { + "description": "True if the contact group resource has been deleted. Populated only for\n[`ListContactGroups`](/people/api/rest/v1/contactgroups/list) requests\nthat include a sync token.", + "type": "boolean" + } + }, + "id": "ContactGroupMetadata" + }, + "Residence": { + "properties": { + "metadata": { + "$ref": "FieldMetadata", + "description": "Metadata about the residence." + }, + "current": { + "description": "True if the residence is the person's current residence;\nfalse if the residence is a past residence.", + "type": "boolean" + }, + "value": { + "description": "The address of the residence.", + "type": "string" + } + }, + "id": "Residence", + "description": "A person's past or current residence.", + "type": "object" + }, + "Event": { + "type": "object", + "properties": { + "formattedType": { + "description": "The read-only type of the event translated and formatted in the\nviewer's account locale or the `Accept-Language` HTTP header locale.", + "type": "string" + }, + "metadata": { + "description": "Metadata about the event.", + "$ref": "FieldMetadata" + }, + "type": { + "type": "string", + "description": "The type of the event. The type can be custom or predefined.\nPossible values include, but are not limited to, the following:\n\n* `anniversary`\n* `other`" + }, + "date": { + "$ref": "Date", + "description": "The date of the event." + } + }, + "id": "Event", + "description": "An event related to the person." } }, - "protocol": "rest", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" - } + }, + "protocol": "rest", + "canonicalName": "People Service", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/plus.login": { + "description": "Know the list of people in your circles, your age range, and language" + }, + "https://www.googleapis.com/auth/userinfo.profile": { + "description": "View your basic profile info" + }, + "https://www.googleapis.com/auth/user.emails.read": { + "description": "View your email addresses" + }, + "https://www.googleapis.com/auth/contacts": { + "description": "Manage your contacts" + }, + "https://www.googleapis.com/auth/user.addresses.read": { + "description": "View your street addresses" + }, + "https://www.googleapis.com/auth/user.phonenumbers.read": { + "description": "View your phone numbers" + }, + "https://www.googleapis.com/auth/userinfo.email": { + "description": "View your email address" + }, + "https://www.googleapis.com/auth/user.birthday.read": { + "description": "View your complete date of birth" + }, + "https://www.googleapis.com/auth/contacts.readonly": { + "description": "View your contacts" + } + } + } + }, + "rootUrl": "https://people.googleapis.com/", + "ownerDomain": "google.com", + "name": "people", + "batchPath": "batch", + "title": "Google People API", + "ownerName": "Google", + "resources": { + "people": { + "methods": { + "deleteContact": { + "description": "Delete a contact person. Any non-contact data will not be deleted.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "DELETE", + "parameters": { + "resourceName": { + "location": "path", + "description": "The resource name of the contact to delete.", + "required": true, + "type": "string", + "pattern": "^people/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "flatPath": "v1/people/{peopleId}:deleteContact", + "path": "v1/{+resourceName}:deleteContact", + "id": "people.people.deleteContact" + }, + "getBatchGet": { + "path": "v1/people:batchGet", + "id": "people.people.getBatchGet", + "description": "Provides information about a list of specific people by specifying a list\nof requested resource names. Use `people/me` to indicate the authenticated\nuser.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified.", + "response": { + "$ref": "GetPeopleResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "personFields": { + "type": "string", + "location": "query", + "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", + "format": "google-fieldmask" + }, + "requestMask.includeField": { + "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", + "format": "google-fieldmask", + "type": "string", + "location": "query" + }, + "resourceNames": { + "repeated": true, + "location": "query", + "description": "The resource names of the people to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`\u003cvar\u003eaccount_id\u003c/var\u003e.\n- To get information about a contact, specify the resource name that\n identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).\n\nYou can include up to 50 resource names in one request.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly", + "https://www.googleapis.com/auth/plus.login", + "https://www.googleapis.com/auth/user.addresses.read", + "https://www.googleapis.com/auth/user.birthday.read", + "https://www.googleapis.com/auth/user.emails.read", + "https://www.googleapis.com/auth/user.phonenumbers.read", + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/userinfo.profile" + ], + "flatPath": "v1/people:batchGet" + }, + "get": { + "flatPath": "v1/people/{peopleId}", + "id": "people.people.get", + "path": "v1/{+resourceName}", + "description": "Provides information about a person by specifying a resource name. Use\n`people/me` to indicate the authenticated user.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified.", + "httpMethod": "GET", + "parameterOrder": [ + "resourceName" + ], + "response": { + "$ref": "Person" + }, + "parameters": { + "resourceName": { + "location": "path", + "description": "The resource name of the person to provide information about.\n\n- To get information about the authenticated user, specify `people/me`.\n- To get information about a google account, specify\n `people/`\u003cvar\u003eaccount_id\u003c/var\u003e.\n- To get information about a contact, specify the resource name that\n identifies the contact as returned by\n[`people.connections.list`](/people/api/rest/v1/people.connections/list).", + "required": true, + "type": "string", + "pattern": "^people/[^/]+$" + }, + "personFields": { + "location": "query", + "description": "**Required.** A field mask to restrict which fields on the person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", + "format": "google-fieldmask", + "type": "string" + }, + "requestMask.includeField": { + "location": "query", + "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", + "format": "google-fieldmask", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly", + "https://www.googleapis.com/auth/plus.login", + "https://www.googleapis.com/auth/user.addresses.read", + "https://www.googleapis.com/auth/user.birthday.read", + "https://www.googleapis.com/auth/user.emails.read", + "https://www.googleapis.com/auth/user.phonenumbers.read", + "https://www.googleapis.com/auth/userinfo.email", + "https://www.googleapis.com/auth/userinfo.profile" + ] + }, + "updateContact": { + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "parameters": { + "updatePersonFields": { + "location": "query", + "description": "**Required.** A field mask to restrict which fields on the person are\nupdated. Valid values are:\n\n* addresses\n* biographies\n* birthdays\n* braggingRights\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* relations\n* residences\n* skills\n* urls", + "format": "google-fieldmask", + "type": "string" + }, + "resourceName": { + "description": "The resource name for the person, assigned by the server. An ASCII string\nwith a max length of 27 characters, in the form of\n`people/`\u003cvar\u003eperson_id\u003c/var\u003e.", + "required": true, + "type": "string", + "pattern": "^people/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/people/{peopleId}:updateContact", + "path": "v1/{+resourceName}:updateContact", + "id": "people.people.updateContact", + "description": "Update contact data for an existing contact person. Any non-contact data\nwill not be modified.\n\nThe request throws a 400 error if `updatePersonFields` is not specified.\n\u003cbr\u003e\nThe request throws a 400 error if `person.metadata.sources` is not\nspecified for the contact to be updated.\n\u003cbr\u003e\nThe request throws a 412 error if `person.metadata.sources.etag` is\ndifferent than the contact's etag, which indicates the contact has changed\nsince its data was read. Clients should get the latest person and re-apply\ntheir updates to the latest person.", + "request": { + "$ref": "Person" + }, + "response": { + "$ref": "Person" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "PATCH" + }, + "createContact": { + "flatPath": "v1/people:createContact", + "path": "v1/people:createContact", + "id": "people.people.createContact", + "description": "Create a new contact and return the person resource for that contact.", + "request": { + "$ref": "Person" + }, + "response": { + "$ref": "Person" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "parameters": { + "parent": { + "location": "query", + "description": "The resource name of the owning person resource.", + "type": "string" + } + } + } + }, + "resources": { + "connections": { + "methods": { + "list": { + "response": { + "$ref": "ListConnectionsResponse" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly" + ], + "parameters": { + "requestSyncToken": { + "type": "boolean", + "location": "query", + "description": "Whether the response should include a sync token, which can be used to get\nall changes since the last request." + }, + "pageToken": { + "location": "query", + "description": "The token of the page to be returned.", + "type": "string" + }, + "resourceName": { + "description": "The resource name to return connections for. Only `people/me` is valid.", + "required": true, + "type": "string", + "pattern": "^people/[^/]+$", + "location": "path" + }, + "pageSize": { + "location": "query", + "description": "The number of connections to include in the response. Valid values are\nbetween 1 and 2000, inclusive. Defaults to 100.", + "format": "int32", + "type": "integer" + }, + "requestMask.includeField": { + "location": "query", + "description": "**Required.** Comma-separated list of person fields to be included in the\nresponse. Each path should start with `person.`: for example,\n`person.names` or `person.photos`.", + "format": "google-fieldmask", + "type": "string" + }, + "syncToken": { + "description": "A sync token, returned by a previous call to `people.connections.list`.\nOnly resources changed since the sync token was created will be returned.", + "type": "string", + "location": "query" + }, + "personFields": { + "type": "string", + "location": "query", + "description": "**Required.** A field mask to restrict which fields on each person are\nreturned. Valid values are:\n\n* addresses\n* ageRanges\n* biographies\n* birthdays\n* braggingRights\n* coverPhotos\n* emailAddresses\n* events\n* genders\n* imClients\n* interests\n* locales\n* memberships\n* metadata\n* names\n* nicknames\n* occupations\n* organizations\n* phoneNumbers\n* photos\n* relations\n* relationshipInterests\n* relationshipStatuses\n* residences\n* skills\n* taglines\n* urls", + "format": "google-fieldmask" + }, + "sortOrder": { + "enum": [ + "LAST_MODIFIED_ASCENDING", + "FIRST_NAME_ASCENDING", + "LAST_NAME_ASCENDING" + ], + "description": "The order in which the connections should be sorted. Defaults to\n`LAST_MODIFIED_ASCENDING`.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1/people/{peopleId}/connections", + "path": "v1/{+resourceName}/connections", + "id": "people.people.connections.list", + "description": "Provides a list of the authenticated user's contacts merged with any\nconnected profiles.\n\u003cbr\u003e\nThe request throws a 400 error if 'personFields' is not specified." + } + } + } + } + }, + "contactGroups": { + "methods": { + "get": { + "httpMethod": "GET", + "parameterOrder": [ + "resourceName" + ], + "response": { + "$ref": "ContactGroup" + }, + "parameters": { + "maxMembers": { + "location": "query", + "description": "Specifies the maximum number of members to return.", + "format": "int32", + "type": "integer" + }, + "resourceName": { + "pattern": "^contactGroups/[^/]+$", + "location": "path", + "description": "The resource name of the contact group to get.", + "required": true, + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly" + ], + "flatPath": "v1/contactGroups/{contactGroupsId}", + "id": "people.contactGroups.get", + "path": "v1/{+resourceName}", + "description": "Get a specific contact group owned by the authenticated user by specifying\na contact group resource name." + }, + "update": { + "response": { + "$ref": "ContactGroup" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "PUT", + "parameters": { + "resourceName": { + "required": true, + "type": "string", + "pattern": "^contactGroups/[^/]+$", + "location": "path", + "description": "The resource name for the contact group, assigned by the server. An ASCII\nstring, in the form of `contactGroups/`\u003cvar\u003econtact_group_id\u003c/var\u003e." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "flatPath": "v1/contactGroups/{contactGroupsId}", + "path": "v1/{+resourceName}", + "id": "people.contactGroups.update", + "request": { + "$ref": "UpdateContactGroupRequest" + }, + "description": "Update the name of an existing contact group owned by the authenticated\nuser." + }, + "batchGet": { + "httpMethod": "GET", + "parameterOrder": [], + "response": { + "$ref": "BatchGetContactGroupsResponse" + }, + "parameters": { + "maxMembers": { + "location": "query", + "description": "Specifies the maximum number of members to return for each group.", + "format": "int32", + "type": "integer" + }, + "resourceNames": { + "description": "The resource names of the contact groups to get.", + "type": "string", + "repeated": true, + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly" + ], + "flatPath": "v1/contactGroups:batchGet", + "id": "people.contactGroups.batchGet", + "path": "v1/contactGroups:batchGet", + "description": "Get a list of contact groups owned by the authenticated user by specifying\na list of contact group resource names." + }, + "delete": { + "path": "v1/{+resourceName}", + "id": "people.contactGroups.delete", + "description": "Delete an existing contact group owned by the authenticated user by\nspecifying a contact group resource name.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "DELETE", + "parameters": { + "resourceName": { + "location": "path", + "description": "The resource name of the contact group to delete.", + "required": true, + "type": "string", + "pattern": "^contactGroups/[^/]+$" + }, + "deleteContacts": { + "description": "Set to true to also delete the contacts in the specified group.", + "type": "boolean", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "flatPath": "v1/contactGroups/{contactGroupsId}" + }, + "list": { + "path": "v1/contactGroups", + "id": "people.contactGroups.list", + "description": "List all contact groups owned by the authenticated user. Members of the\ncontact groups are not populated.", + "response": { + "$ref": "ListContactGroupsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/contacts", + "https://www.googleapis.com/auth/contacts.readonly" + ], + "parameters": { + "pageSize": { + "type": "integer", + "location": "query", + "description": "The maximum number of resources to return.", + "format": "int32" + }, + "syncToken": { + "description": "A sync token, returned by a previous call to `contactgroups.list`.\nOnly resources changed since the sync token was created will be returned.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The next_page_token value returned from a previous call to\n[ListContactGroups](/people/api/rest/v1/contactgroups/list).\nRequests the next page of resources.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1/contactGroups" + }, + "create": { + "response": { + "$ref": "ContactGroup" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "parameters": {}, + "flatPath": "v1/contactGroups", + "path": "v1/contactGroups", + "id": "people.contactGroups.create", + "description": "Create a new contact group owned by the authenticated user.", + "request": { + "$ref": "CreateContactGroupRequest" + } + } + }, + "resources": { + "members": { + "methods": { + "modify": { + "request": { + "$ref": "ModifyContactGroupMembersRequest" + }, + "description": "Modify the members of a contact group owned by the authenticated user.", + "response": { + "$ref": "ModifyContactGroupMembersResponse" + }, + "parameterOrder": [ + "resourceName" + ], + "httpMethod": "POST", + "parameters": { + "resourceName": { + "pattern": "^contactGroups/[^/]+$", + "location": "path", + "description": "The resource name of the contact group to modify.", + "required": true, + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/contacts" + ], + "flatPath": "v1/contactGroups/{contactGroupsId}/members:modify", + "path": "v1/{+resourceName}/members:modify", + "id": "people.contactGroups.members.modify" + } + } + } + } + } + }, + "parameters": { + "upload_protocol": { + "type": "string", + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "type": "boolean", + "default": "true", + "location": "query" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "type": "string", + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "type": "boolean", + "default": "true" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + } + }, + "version": "v1", + "baseUrl": "https://people.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Provides access to information about profiles and contacts.", + "servicePath": "", + "basePath": "", + "revision": "20170829", + "documentationLink": "https://developers.google.com/people/", + "id": "people:v1" } diff --git a/vendor/google.golang.org/api/people/v1/people-gen.go b/vendor/google.golang.org/api/people/v1/people-gen.go index 47ff5bd..a6b90db 100644 --- a/vendor/google.golang.org/api/people/v1/people-gen.go +++ b/vendor/google.golang.org/api/people/v1/people-gen.go @@ -1633,6 +1633,9 @@ type Person struct { // Urls: The person's associated URLs. Urls []*Url `json:"urls,omitempty"` + // UserDefined: The person's user defined data. + UserDefined []*UserDefined `json:"userDefined,omitempty"` + // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` @@ -2433,6 +2436,40 @@ func (s *Url) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UserDefined: Arbitrary user data that is populated by the end users. +type UserDefined struct { + // Key: The end user specified key of the user defined data. + Key string `json:"key,omitempty"` + + // Metadata: Metadata about the user defined data. + Metadata *FieldMetadata `json:"metadata,omitempty"` + + // Value: The end user specified value of the user defined data. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UserDefined) MarshalJSON() ([]byte, error) { + type noMethod UserDefined + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // method id "people.contactGroups.batchGet": type ContactGroupsBatchGetCall struct { diff --git a/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-api.json b/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-api.json new file mode 100644 index 0000000..da307cf --- /dev/null +++ b/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-api.json @@ -0,0 +1,149 @@ +{ + "kind": "discovery#restDescription", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/S9A8Fvkyeh8EMNMlBREkvuFfFUI\"", + "discoveryVersion": "v1", + "id": "playcustomapp:v1", + "name": "playcustomapp", + "version": "v1", + "revision": "20170622", + "title": "Google Play Custom App Publishing API", + "description": "An API to publish custom Android apps.", + "ownerDomain": "google.com", + "ownerName": "Google", + "icons": { + "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png", + "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png" + }, + "documentationLink": "https://developers.google.com/android/work/play/custom-app-api", + "protocol": "rest", + "baseUrl": "https://www.googleapis.com/playcustomapp/v1/accounts/", + "basePath": "/playcustomapp/v1/accounts/", + "rootUrl": "https://www.googleapis.com/", + "servicePath": "playcustomapp/v1/accounts/", + "batchPath": "batch", + "parameters": { + "alt": { + "type": "string", + "description": "Data format for the response.", + "default": "json", + "enum": [ + "json" + ], + "enumDescriptions": [ + "Responses with Content-Type of application/json" + ], + "location": "query" + }, + "fields": { + "type": "string", + "description": "Selector specifying which fields to include in a partial response.", + "location": "query" + }, + "key": { + "type": "string", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "location": "query" + }, + "oauth_token": { + "type": "string", + "description": "OAuth 2.0 token for the current user.", + "location": "query" + }, + "prettyPrint": { + "type": "boolean", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "location": "query" + }, + "quotaUser": { + "type": "string", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.", + "location": "query" + }, + "userIp": { + "type": "string", + "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.", + "location": "query" + } + }, + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/androidpublisher": { + "description": "View and manage your Google Play Developer account" + } + } + } + }, + "schemas": { + "CustomApp": { + "id": "CustomApp", + "type": "object", + "description": "This resource represents a custom app.", + "properties": { + "languageCode": { + "type": "string", + "description": "Default listing language in BCP 47 format." + }, + "title": { + "type": "string", + "description": "Title for the Android app." + } + } + } + }, + "resources": { + "accounts": { + "resources": { + "customApps": { + "methods": { + "create": { + "id": "playcustomapp.accounts.customApps.create", + "path": "{account}/customApps", + "httpMethod": "POST", + "description": "Create and publish a new custom app.", + "parameters": { + "account": { + "type": "string", + "description": "Developer account ID.", + "required": true, + "format": "int64", + "location": "path" + } + }, + "parameterOrder": [ + "account" + ], + "request": { + "$ref": "CustomApp" + }, + "response": { + "$ref": "CustomApp" + }, + "scopes": [ + "https://www.googleapis.com/auth/androidpublisher" + ], + "supportsMediaUpload": true, + "mediaUpload": { + "accept": [ + "*/*" + ], + "maxSize": "100MB", + "protocols": { + "simple": { + "multipart": true, + "path": "/upload/playcustomapp/v1/accounts/{account}/customApps" + }, + "resumable": { + "multipart": true, + "path": "/resumable/upload/playcustomapp/v1/accounts/{account}/customApps" + } + } + } + } + } + } + } + } + } +} diff --git a/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-gen.go b/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-gen.go new file mode 100644 index 0000000..e2d3ee2 --- /dev/null +++ b/vendor/google.golang.org/api/playcustomapp/v1/playcustomapp-gen.go @@ -0,0 +1,384 @@ +// Package playcustomapp provides access to the Google Play Custom App Publishing API. +// +// See https://developers.google.com/android/work/play/custom-app-api +// +// Usage example: +// +// import "google.golang.org/api/playcustomapp/v1" +// ... +// playcustomappService, err := playcustomapp.New(oauthHttpClient) +package playcustomapp // import "google.golang.org/api/playcustomapp/v1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "playcustomapp:v1" +const apiName = "playcustomapp" +const apiVersion = "v1" +const basePath = "https://www.googleapis.com/playcustomapp/v1/accounts/" + +// OAuth2 scopes used by this API. +const ( + // View and manage your Google Play Developer account + AndroidpublisherScope = "https://www.googleapis.com/auth/androidpublisher" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Accounts = NewAccountsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Accounts *AccountsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewAccountsService(s *Service) *AccountsService { + rs := &AccountsService{s: s} + rs.CustomApps = NewAccountsCustomAppsService(s) + return rs +} + +type AccountsService struct { + s *Service + + CustomApps *AccountsCustomAppsService +} + +func NewAccountsCustomAppsService(s *Service) *AccountsCustomAppsService { + rs := &AccountsCustomAppsService{s: s} + return rs +} + +type AccountsCustomAppsService struct { + s *Service +} + +// CustomApp: This resource represents a custom app. +type CustomApp struct { + // LanguageCode: Default listing language in BCP 47 format. + LanguageCode string `json:"languageCode,omitempty"` + + // Title: Title for the Android app. + Title string `json:"title,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "LanguageCode") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LanguageCode") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CustomApp) MarshalJSON() ([]byte, error) { + type noMethod CustomApp + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "playcustomapp.accounts.customApps.create": + +type AccountsCustomAppsCreateCall struct { + s *Service + account int64 + customapp *CustomApp + urlParams_ gensupport.URLParams + media_ io.Reader + mediaBuffer_ *gensupport.MediaBuffer + mediaType_ string + mediaSize_ int64 // mediaSize, if known. Used only for calls to progressUpdater_. + progressUpdater_ googleapi.ProgressUpdater + ctx_ context.Context + header_ http.Header +} + +// Create: Create and publish a new custom app. +func (r *AccountsCustomAppsService) Create(account int64, customapp *CustomApp) *AccountsCustomAppsCreateCall { + c := &AccountsCustomAppsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.account = account + c.customapp = customapp + return c +} + +// Media specifies the media to upload in one or more chunks. The chunk +// size may be controlled by supplying a MediaOption generated by +// googleapi.ChunkSize. The chunk size defaults to +// googleapi.DefaultUploadChunkSize.The Content-Type header used in the +// upload request will be determined by sniffing the contents of r, +// unless a MediaOption generated by googleapi.ContentType is +// supplied. +// At most one of Media and ResumableMedia may be set. +func (c *AccountsCustomAppsCreateCall) Media(r io.Reader, options ...googleapi.MediaOption) *AccountsCustomAppsCreateCall { + opts := googleapi.ProcessMediaOptions(options) + chunkSize := opts.ChunkSize + if !opts.ForceEmptyContentType { + r, c.mediaType_ = gensupport.DetermineContentType(r, opts.ContentType) + } + c.media_, c.mediaBuffer_ = gensupport.PrepareUpload(r, chunkSize) + return c +} + +// ResumableMedia specifies the media to upload in chunks and can be +// canceled with ctx. +// +// Deprecated: use Media instead. +// +// At most one of Media and ResumableMedia may be set. mediaType +// identifies the MIME media type of the upload, such as "image/png". If +// mediaType is "", it will be auto-detected. The provided ctx will +// supersede any context previously provided to the Context method. +func (c *AccountsCustomAppsCreateCall) ResumableMedia(ctx context.Context, r io.ReaderAt, size int64, mediaType string) *AccountsCustomAppsCreateCall { + c.ctx_ = ctx + rdr := gensupport.ReaderAtToReader(r, size) + rdr, c.mediaType_ = gensupport.DetermineContentType(rdr, mediaType) + c.mediaBuffer_ = gensupport.NewMediaBuffer(rdr, googleapi.DefaultUploadChunkSize) + c.media_ = nil + c.mediaSize_ = size + return c +} + +// ProgressUpdater provides a callback function that will be called +// after every chunk. It should be a low-latency function in order to +// not slow down the upload operation. This should only be called when +// using ResumableMedia (as opposed to Media). +func (c *AccountsCustomAppsCreateCall) ProgressUpdater(pu googleapi.ProgressUpdater) *AccountsCustomAppsCreateCall { + c.progressUpdater_ = pu + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *AccountsCustomAppsCreateCall) Fields(s ...googleapi.Field) *AccountsCustomAppsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +// This context will supersede any context previously provided to the +// ResumableMedia method. +func (c *AccountsCustomAppsCreateCall) Context(ctx context.Context) *AccountsCustomAppsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *AccountsCustomAppsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *AccountsCustomAppsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.customapp) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{account}/customApps") + if c.media_ != nil || c.mediaBuffer_ != nil { + urls = strings.Replace(urls, "https://www.googleapis.com/", "https://www.googleapis.com/upload/", 1) + protocol := "multipart" + if c.mediaBuffer_ != nil { + protocol = "resumable" + } + c.urlParams_.Set("uploadType", protocol) + } + if body == nil { + body = new(bytes.Buffer) + reqHeaders.Set("Content-Type", "application/json") + } + if c.media_ != nil { + combined, ctype := gensupport.CombineBodyMedia(body, "application/json", c.media_, c.mediaType_) + defer combined.Close() + reqHeaders.Set("Content-Type", ctype) + body = combined + } + if c.mediaBuffer_ != nil && c.mediaType_ != "" { + reqHeaders.Set("X-Upload-Content-Type", c.mediaType_) + } + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "account": strconv.FormatInt(c.account, 10), + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "playcustomapp.accounts.customApps.create" call. +// Exactly one of *CustomApp or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *CustomApp.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *AccountsCustomAppsCreateCall) Do(opts ...googleapi.CallOption) (*CustomApp, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + if c.mediaBuffer_ != nil { + loc := res.Header.Get("Location") + rx := &gensupport.ResumableUpload{ + Client: c.s.client, + UserAgent: c.s.userAgent(), + URI: loc, + Media: c.mediaBuffer_, + MediaType: c.mediaType_, + Callback: func(curr int64) { + if c.progressUpdater_ != nil { + c.progressUpdater_(curr, c.mediaSize_) + } + }, + } + ctx := c.ctx_ + if ctx == nil { + ctx = context.TODO() + } + res, err = rx.Upload(ctx) + if err != nil { + return nil, err + } + defer res.Body.Close() + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + } + ret := &CustomApp{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Create and publish a new custom app.", + // "httpMethod": "POST", + // "id": "playcustomapp.accounts.customApps.create", + // "mediaUpload": { + // "accept": [ + // "*/*" + // ], + // "maxSize": "100MB", + // "protocols": { + // "resumable": { + // "multipart": true, + // "path": "/resumable/upload/playcustomapp/v1/accounts/{account}/customApps" + // }, + // "simple": { + // "multipart": true, + // "path": "/upload/playcustomapp/v1/accounts/{account}/customApps" + // } + // } + // }, + // "parameterOrder": [ + // "account" + // ], + // "parameters": { + // "account": { + // "description": "Developer account ID.", + // "format": "int64", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{account}/customApps", + // "request": { + // "$ref": "CustomApp" + // }, + // "response": { + // "$ref": "CustomApp" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/androidpublisher" + // ], + // "supportsMediaUpload": true + // } + +} diff --git a/vendor/google.golang.org/api/playmoviespartner/v1/playmoviespartner-api.json b/vendor/google.golang.org/api/playmoviespartner/v1/playmoviespartner-api.json index 1152280..f678bc5 100644 --- a/vendor/google.golang.org/api/playmoviespartner/v1/playmoviespartner-api.json +++ b/vendor/google.golang.org/api/playmoviespartner/v1/playmoviespartner-api.json @@ -1,4 +1,13 @@ { + "rootUrl": "https://playmoviespartner.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "playmoviespartner", + "batchPath": "batch", + "id": "playmoviespartner:v1", + "documentationLink": "https://developers.google.com/playmoviespartner/", + "revision": "20170822", + "title": "Google Play Movies Partner API", "ownerName": "Google", "discoveryVersion": "v1", "resources": { @@ -15,8 +24,35 @@ ], "httpMethod": "GET", "parameters": { + "pageToken": { + "location": "query", + "description": "See _List methods rules_ for info about this field.", + "type": "string" + }, + "customId": { + "location": "query", + "description": "Filter Orders that match a case-insensitive, partner-specific custom id.", + "type": "string" + }, + "videoIds": { + "type": "string", + "repeated": true, + "location": "query", + "description": "Filter Orders that match any of the given `video_id`s." + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "See _List methods rules_ for info about this field." + }, + "pphNames": { + "location": "query", + "description": "See _List methods rules_ for info about this field.", + "type": "string", + "repeated": true + }, "status": { - "description": "Filter Orders that match one of the given status.", "type": "string", "repeated": true, "location": "query", @@ -27,52 +63,25 @@ "STATUS_PROCESSING", "STATUS_UNFULFILLED", "STATUS_NOT_AVAILABLE" - ] - }, - "name": { - "description": "Filter that matches Orders with a `name`, `show`, `season` or `episode`\nthat contains the given case-insensitive name.", - "type": "string", - "location": "query" + ], + "description": "Filter Orders that match one of the given status." }, "studioNames": { - "description": "See _List methods rules_ for info about this field.", "type": "string", "repeated": true, - "location": "query" + "location": "query", + "description": "See _List methods rules_ for info about this field." + }, + "name": { + "type": "string", + "location": "query", + "description": "Filter that matches Orders with a `name`, `show`, `season` or `episode`\nthat contains the given case-insensitive name." }, "accountId": { + "type": "string", + "required": true, "location": "path", - "description": "REQUIRED. See _General rules_ for more information about this field.", - "type": "string", - "required": true - }, - "videoIds": { - "description": "Filter Orders that match any of the given `video_id`s.", - "type": "string", - "repeated": true, - "location": "query" - }, - "customId": { - "description": "Filter Orders that match a case-insensitive, partner-specific custom id.", - "type": "string", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "See _List methods rules_ for info about this field.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "See _List methods rules_ for info about this field.", - "type": "integer", - "location": "query" - }, - "pphNames": { - "description": "See _List methods rules_ for info about this field.", - "type": "string", - "repeated": true, - "location": "query" + "description": "REQUIRED. See _General rules_ for more information about this field." } }, "scopes": [ @@ -84,8 +93,6 @@ "description": "List Orders owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method." }, "get": { - "description": "Get an Order given its id.\n\nSee _Authentication and Authorization rules_ and\n_Get methods rules_ for more information about this method.", - "httpMethod": "GET", "response": { "$ref": "Order" }, @@ -93,12 +100,13 @@ "accountId", "orderId" ], + "httpMethod": "GET", "parameters": { "orderId": { + "location": "path", "description": "REQUIRED. Order ID.", "type": "string", - "required": true, - "location": "path" + "required": true }, "accountId": { "type": "string", @@ -111,14 +119,16 @@ "https://www.googleapis.com/auth/playmovies_partner.readonly" ], "flatPath": "v1/accounts/{accountId}/orders/{orderId}", + "id": "playmoviespartner.accounts.orders.get", "path": "v1/accounts/{accountId}/orders/{orderId}", - "id": "playmoviespartner.accounts.orders.get" + "description": "Get an Order given its id.\n\nSee _Authentication and Authorization rules_ and\n_Get methods rules_ for more information about this method." } } }, "avails": { "methods": { "list": { + "description": "List Avails owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method.", "response": { "$ref": "ListAvailsResponse" }, @@ -131,9 +141,9 @@ ], "parameters": { "altId": { - "description": "Filter Avails that match a case-insensitive, partner-specific custom id.\nNOTE: this field is deprecated and will be removed on V2; `alt_ids`\nshould be used instead.", "type": "string", - "location": "query" + "location": "query", + "description": "Filter Avails that match a case-insensitive, partner-specific custom id.\nNOTE: this field is deprecated and will be removed on V2; `alt_ids`\nshould be used instead." }, "studioNames": { "location": "query", @@ -148,26 +158,26 @@ "required": true }, "territories": { - "location": "query", - "description": "Filter Avails that match (case-insensitive) any of the given country codes,\nusing the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\").", "type": "string", - "repeated": true - }, - "title": { - "location": "query", - "description": "Filter that matches Avails with a `title_internal_alias`,\n`series_title_internal_alias`, `season_title_internal_alias`,\nor `episode_title_internal_alias` that contains the given\ncase-insensitive title.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "See _List methods rules_ for info about this field.", - "type": "string" - }, - "videoIds": { "repeated": true, "location": "query", - "description": "Filter Avails that match any of the given `video_id`s.", - "type": "string" + "description": "Filter Avails that match (case-insensitive) any of the given country codes,\nusing the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\")." + }, + "title": { + "type": "string", + "location": "query", + "description": "Filter that matches Avails with a `title_internal_alias`,\n`series_title_internal_alias`, `season_title_internal_alias`,\nor `episode_title_internal_alias` that contains the given\ncase-insensitive title." + }, + "videoIds": { + "type": "string", + "repeated": true, + "location": "query", + "description": "Filter Avails that match any of the given `video_id`s." + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "See _List methods rules_ for info about this field." }, "pageSize": { "location": "query", @@ -176,39 +186,41 @@ "type": "integer" }, "altIds": { + "location": "query", "description": "Filter Avails that match (case-insensitive) any of the given partner-specific custom ids.", "type": "string", - "repeated": true, - "location": "query" + "repeated": true }, "pphNames": { - "type": "string", - "repeated": true, "location": "query", - "description": "See _List methods rules_ for info about this field." + "description": "See _List methods rules_ for info about this field.", + "type": "string", + "repeated": true } }, "flatPath": "v1/accounts/{accountId}/avails", "id": "playmoviespartner.accounts.avails.list", - "path": "v1/accounts/{accountId}/avails", - "description": "List Avails owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method." + "path": "v1/accounts/{accountId}/avails" }, "get": { "description": "Get an Avail given its avail group id and avail id.", - "httpMethod": "GET", + "response": { + "$ref": "Avail" + }, "parameterOrder": [ "accountId", "availId" ], - "response": { - "$ref": "Avail" - }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/playmovies_partner.readonly" + ], "parameters": { "availId": { - "description": "REQUIRED. Avail ID.", "type": "string", "required": true, - "location": "path" + "location": "path", + "description": "REQUIRED. Avail ID." }, "accountId": { "location": "path", @@ -217,96 +229,93 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/playmovies_partner.readonly" - ], "flatPath": "v1/accounts/{accountId}/avails/{availId}", - "path": "v1/accounts/{accountId}/avails/{availId}", - "id": "playmoviespartner.accounts.avails.get" + "id": "playmoviespartner.accounts.avails.get", + "path": "v1/accounts/{accountId}/avails/{availId}" } } }, "storeInfos": { "methods": { "list": { - "httpMethod": "GET", "response": { "$ref": "ListStoreInfosResponse" }, "parameterOrder": [ "accountId" ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/playmovies_partner.readonly" + ], "parameters": { + "mids": { + "location": "query", + "description": "Filter StoreInfos that match any of the given `mid`s.", + "type": "string", + "repeated": true + }, + "pphNames": { + "type": "string", + "repeated": true, + "location": "query", + "description": "See _List methods rules_ for info about this field." + }, + "countries": { + "type": "string", + "repeated": true, + "location": "query", + "description": "Filter StoreInfos that match (case-insensitive) any of the given country\ncodes, using the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\")." + }, "name": { "location": "query", "description": "Filter that matches StoreInfos with a `name` or `show_name`\nthat contains the given case-insensitive name.", "type": "string" }, "studioNames": { - "location": "query", - "description": "See _List methods rules_ for info about this field.", - "type": "string", - "repeated": true - }, - "accountId": { - "description": "REQUIRED. See _General rules_ for more information about this field.", - "type": "string", - "required": true, - "location": "path" - }, - "seasonIds": { - "location": "query", - "description": "Filter StoreInfos that match any of the given `season_id`s.", - "type": "string", - "repeated": true - }, - "videoIds": { - "description": "Filter StoreInfos that match any of the given `video_id`s.", "type": "string", "repeated": true, - "location": "query" + "location": "query", + "description": "See _List methods rules_ for info about this field." }, - "videoId": { - "description": "Filter StoreInfos that match a given `video_id`.\nNOTE: this field is deprecated and will be removed on V2; `video_ids`\nshould be used instead.", + "accountId": { + "location": "path", + "description": "REQUIRED. See _General rules_ for more information about this field.", "type": "string", - "location": "query" + "required": true + }, + "seasonIds": { + "type": "string", + "repeated": true, + "location": "query", + "description": "Filter StoreInfos that match any of the given `season_id`s." }, "pageToken": { "location": "query", "description": "See _List methods rules_ for info about this field.", "type": "string" }, + "videoId": { + "type": "string", + "location": "query", + "description": "Filter StoreInfos that match a given `video_id`.\nNOTE: this field is deprecated and will be removed on V2; `video_ids`\nshould be used instead." + }, + "videoIds": { + "location": "query", + "description": "Filter StoreInfos that match any of the given `video_id`s.", + "type": "string", + "repeated": true + }, "pageSize": { - "format": "int32", - "description": "See _List methods rules_ for info about this field.", "type": "integer", - "location": "query" - }, - "mids": { - "description": "Filter StoreInfos that match any of the given `mid`s.", - "type": "string", - "repeated": true, - "location": "query" - }, - "pphNames": { - "description": "See _List methods rules_ for info about this field.", - "type": "string", - "repeated": true, - "location": "query" - }, - "countries": { - "description": "Filter StoreInfos that match (case-insensitive) any of the given country\ncodes, using the \"ISO 3166-1 alpha-2\" format (examples: \"US\", \"us\", \"Us\").", - "type": "string", - "repeated": true, - "location": "query" + "location": "query", + "format": "int32", + "description": "See _List methods rules_ for info about this field." } }, - "scopes": [ - "https://www.googleapis.com/auth/playmovies_partner.readonly" - ], "flatPath": "v1/accounts/{accountId}/storeInfos", - "path": "v1/accounts/{accountId}/storeInfos", "id": "playmoviespartner.accounts.storeInfos.list", + "path": "v1/accounts/{accountId}/storeInfos", "description": "List StoreInfos owned or managed by the partner.\n\nSee _Authentication and Authorization rules_ and\n_List methods rules_ for more information about this method." } }, @@ -319,14 +328,14 @@ "id": "playmoviespartner.accounts.storeInfos.country.get", "description": "Get a StoreInfo given its video id and country.\n\nSee _Authentication and Authorization rules_ and\n_Get methods rules_ for more information about this method.", "httpMethod": "GET", - "response": { - "$ref": "StoreInfo" - }, "parameterOrder": [ "accountId", "videoId", "country" ], + "response": { + "$ref": "StoreInfo" + }, "scopes": [ "https://www.googleapis.com/auth/playmovies_partner.readonly" ], @@ -344,10 +353,10 @@ "required": true }, "accountId": { - "location": "path", - "description": "REQUIRED. See _General rules_ for more information about this field.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "REQUIRED. See _General rules_ for more information about this field." } } } @@ -359,28 +368,55 @@ } }, "parameters": { - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "quotaUser": { "type": "string", - "location": "query" + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", + "pp": { "default": "true", "type": "boolean", - "location": "query" + "location": "query", + "description": "Pretty-print response." + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, + "bearer_token": { + "type": "string", + "location": "query", + "description": "OAuth bearer token." + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" }, "fields": { - "description": "Selector specifying which fields to include in a partial response.", "type": "string", - "location": "query" + "location": "query", + "description": "Selector specifying which fields to include in a partial response." }, "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", - "location": "query" + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" }, "$.xgafv": { + "location": "query", "enum": [ "1", "2" @@ -390,29 +426,23 @@ "enumDescriptions": [ "v1 error format", "v2 error format" - ], - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + ] }, "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] }, "key": { "location": "query", @@ -420,42 +450,113 @@ "type": "string" }, "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "description": "OAuth bearer token.", "type": "string", - "location": "query" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" + "location": "query", + "description": "OAuth access token." } }, "schemas": { "Order": { - "description": "An Order tracks the fulfillment of an Edit when delivered using the\nlegacy, non-component-based delivery.\n\nEach Order is uniquely identified by an `order_id`, which is generated\nby Google.\n\nExternally, Orders can also be identified by partners using its `custom_id`\n(when provided).", "type": "object", "properties": { - "showName": { - "description": "Default Show name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The\".", + "episodeName": { + "type": "string", + "description": "Default Episode name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - Pilot\"." + }, + "countries": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Countries where the Order is available,\nusing the \"ISO 3166-1 alpha-2\" format (example: \"US\")." + }, + "statusDetail": { + "enum": [ + "ORDER_STATUS_UNSPECIFIED", + "ORDER_STATUS_QC_APPROVED", + "ORDER_STATUS_QC_REJECTION", + "ORDER_STATUS_INTERNAL_FIX", + "ORDER_STATUS_OPEN_ORDER", + "ORDER_STATUS_NOT_AVAILABLE", + "ORDER_STATUS_AWAITING_REDELIVERY", + "ORDER_STATUS_READY_FOR_QC", + "ORDER_STATUS_FILE_PROCESSING" + ], + "description": "Detailed status of the order", + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "Approved by Google's Quality Control team.", + "Rejected by Google's Quality Control team, pending partner redelivery.", + "Internal error while processing the Order.", + "Waiting for initial delivery from partner.", + "Used on Orders that do not have Status, like TV Seasons.", + "Waiting for re-delivery from partner.", + "Asset was delivered by partner, but is being reviewed by Google's\nQuality Control team.", + "Waiting for Google to process the asset." + ] + }, + "status": { + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "Approved by Google.", + "Waiting for partner to re-deliver the asset after a rejection by Google.", + "Waiting for Google to process the asset.", + "Waiting for partner to deliver the asset.", + "Used when Status is not available (i.e: Orders for TV Seasons)." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "STATUS_APPROVED", + "STATUS_FAILED", + "STATUS_PROCESSING", + "STATUS_UNFULFILLED", + "STATUS_NOT_AVAILABLE" + ], + "description": "High-level status of the order." + }, + "earliestAvailStartTime": { + "type": "string", + "format": "google-datetime", + "description": "Timestamp of the earliest start date of the Avails\nlinked to this Order." + }, + "name": { + "type": "string", + "description": "Default Edit name,\nusually in the language of the country of origin.\nExample: \"Googlers, The\"." + }, + "studioName": { + "description": "Name of the studio that owns the Edit ordered.", "type": "string" }, + "receivedTime": { + "type": "string", + "format": "google-datetime", + "description": "Timestamp when the Order was fulfilled." + }, + "seasonName": { + "description": "Default Season name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".", + "type": "string" + }, + "customId": { + "description": "ID that can be used to externally identify an Order.\nThis ID is provided by partners when submitting the Avails.\nExample: 'GOOGLER_2006'", + "type": "string" + }, + "channelName": { + "description": "YouTube Channel Name that should be used to fulfill the Order.\nExample: \"Google_channel\".", + "type": "string" + }, + "approvedTime": { + "format": "google-datetime", + "description": "Timestamp when the Order was approved.", + "type": "string" + }, + "showName": { + "type": "string", + "description": "Default Show name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The\"." + }, "normalizedPriority": { + "type": "string", "enumDescriptions": [ "Value could not be determined, please contact technical support if\nit should.", "A low-priority asset, typically from a library movie.", @@ -466,21 +567,13 @@ "LOW_PRIORITY", "HIGH_PRIORITY" ], - "description": "A simpler representation of the priority.", - "type": "string" + "description": "A simpler representation of the priority." }, "orderId": { - "description": "ID internally generated by Google to uniquely identify an Order.\nExample: 'abcde12_x'", - "type": "string" + "type": "string", + "description": "ID internally generated by Google to uniquely identify an Order.\nExample: 'abcde12_x'" }, "type": { - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "A movie picture.", - "A season of a TV show.", - "An episode of a TV show.", - "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\"" - ], "enum": [ "TITLE_TYPE_UNSPECIFIED", "MOVIE", @@ -489,11 +582,18 @@ "BUNDLE" ], "description": "Type of the Edit linked to the Order.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "A movie picture.", + "A season of a TV show.", + "An episode of a TV show.", + "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\"" + ] }, "rejectionNote": { - "description": "Field explaining why an Order has been rejected.\nExample: \"Trailer audio is 2ch mono, please re-deliver in stereo\".", - "type": "string" + "type": "string", + "description": "Field explaining why an Order has been rejected.\nExample: \"Trailer audio is 2ch mono, please re-deliver in stereo\"." }, "channelId": { "description": "YouTube Channel ID that should be used to fulfill the Order.\nExample: \"UCRG64darCZhb\".", @@ -508,9 +608,9 @@ "type": "string" }, "priority": { + "type": "number", "format": "double", - "description": "Order priority, as defined by Google.\nThe higher the value, the higher the priority.\nExample: 90", - "type": "number" + "description": "Order priority, as defined by Google.\nThe higher the value, the higher the priority.\nExample: 90" }, "orderedTime": { "format": "google-datetime", @@ -518,112 +618,20 @@ "type": "string" }, "videoId": { - "description": "Google-generated ID identifying the video linked to this Order, once\ndelivered.\nExample: 'gtry456_xc'.", - "type": "string" - }, - "episodeName": { - "description": "Default Episode name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - Pilot\".", - "type": "string" - }, - "countries": { - "description": "Countries where the Order is available,\nusing the \"ISO 3166-1 alpha-2\" format (example: \"US\").", - "items": { - "type": "string" - }, - "type": "array" - }, - "earliestAvailStartTime": { "type": "string", - "format": "google-datetime", - "description": "Timestamp of the earliest start date of the Avails\nlinked to this Order." - }, - "status": { - "enum": [ - "STATUS_UNSPECIFIED", - "STATUS_APPROVED", - "STATUS_FAILED", - "STATUS_PROCESSING", - "STATUS_UNFULFILLED", - "STATUS_NOT_AVAILABLE" - ], - "description": "High-level status of the order.", - "type": "string", - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "Approved by Google.", - "Waiting for partner to re-deliver the asset after a rejection by Google.", - "Waiting for Google to process the asset.", - "Waiting for partner to deliver the asset.", - "Used when Status is not available (i.e: Orders for TV Seasons)." - ] - }, - "statusDetail": { - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "Approved by Google's Quality Control team.", - "Rejected by Google's Quality Control team, pending partner redelivery.", - "Internal error while processing the Order.", - "Waiting for initial delivery from partner.", - "Used on Orders that do not have Status, like TV Seasons.", - "Waiting for re-delivery from partner.", - "Asset was delivered by partner, but is being reviewed by Google's\nQuality Control team.", - "Waiting for Google to process the asset." - ], - "enum": [ - "ORDER_STATUS_UNSPECIFIED", - "ORDER_STATUS_QC_APPROVED", - "ORDER_STATUS_QC_REJECTION", - "ORDER_STATUS_INTERNAL_FIX", - "ORDER_STATUS_OPEN_ORDER", - "ORDER_STATUS_NOT_AVAILABLE", - "ORDER_STATUS_AWAITING_REDELIVERY", - "ORDER_STATUS_READY_FOR_QC", - "ORDER_STATUS_FILE_PROCESSING" - ], - "description": "Detailed status of the order", - "type": "string" - }, - "name": { - "description": "Default Edit name,\nusually in the language of the country of origin.\nExample: \"Googlers, The\".", - "type": "string" - }, - "studioName": { - "description": "Name of the studio that owns the Edit ordered.", - "type": "string" - }, - "receivedTime": { - "format": "google-datetime", - "description": "Timestamp when the Order was fulfilled.", - "type": "string" - }, - "seasonName": { - "description": "Default Season name,\nusually in the language of the country of origin.\nOnly available for TV Edits\nExample: \"Googlers, The - A Brave New World\".", - "type": "string" - }, - "customId": { - "description": "ID that can be used to externally identify an Order.\nThis ID is provided by partners when submitting the Avails.\nExample: 'GOOGLER_2006'", - "type": "string" - }, - "channelName": { - "type": "string", - "description": "YouTube Channel Name that should be used to fulfill the Order.\nExample: \"Google_channel\"." - }, - "approvedTime": { - "format": "google-datetime", - "description": "Timestamp when the Order was approved.", - "type": "string" + "description": "Google-generated ID identifying the video linked to this Order, once\ndelivered.\nExample: 'gtry456_xc'." } }, - "id": "Order" + "id": "Order", + "description": "An Order tracks the fulfillment of an Edit when delivered using the\nlegacy, non-component-based delivery.\n\nEach Order is uniquely identified by an `order_id`, which is generated\nby Google.\n\nExternally, Orders can also be identified by partners using its `custom_id`\n(when provided)." }, "ListStoreInfosResponse": { - "id": "ListStoreInfosResponse", "description": "Response to the 'ListStoreInfos' method.", "type": "object", "properties": { "nextPageToken": { - "description": "See 'List methods rules' for info about this field.", - "type": "string" + "type": "string", + "description": "See 'List methods rules' for info about this field." }, "totalSize": { "format": "int32", @@ -631,272 +639,44 @@ "type": "integer" }, "storeInfos": { + "description": "List of StoreInfos that match the request criteria.", "items": { "$ref": "StoreInfo" }, - "type": "array", - "description": "List of StoreInfos that match the request criteria." + "type": "array" } - } + }, + "id": "ListStoreInfosResponse" }, "ListAvailsResponse": { "description": "Response to the 'ListAvails' method.", "type": "object", "properties": { "avails": { + "description": "List of Avails that match the request criteria.", "items": { "$ref": "Avail" }, - "type": "array", - "description": "List of Avails that match the request criteria." + "type": "array" }, "nextPageToken": { - "description": "See _List methods rules_ for info about this field.", - "type": "string" + "type": "string", + "description": "See _List methods rules_ for info about this field." }, "totalSize": { + "type": "integer", "format": "int32", - "description": "See _List methods rules_ for more information about this field.", - "type": "integer" + "description": "See _List methods rules_ for more information about this field." } }, "id": "ListAvailsResponse" }, - "Avail": { - "type": "object", - "properties": { - "suppressionLiftDate": { - "description": "First date an Edit could be publically announced as becoming\navailable at a specific future date in territory of Avail.\n*Not* the Avail start date or pre-order start date.\nFormat is YYYY-MM-DD.\nOnly available for pre-orders.\nExample: \"2012-12-10\"", - "type": "string" - }, - "seasonAltId": { - "description": "Other identifier referring to the season, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1\".", - "type": "string" - }, - "encodeId": { - "description": "Manifestation Identifier. This should be the Manifestation\nLevel EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-7\"", - "type": "string" - }, - "priceType": { - "description": "Type of pricing that should be applied to this Avail\nbased on how the partner classify them.\nExample: \"Tier\", \"WSP\", \"SRP\", or \"Category\".", - "type": "string" - }, - "captionIncluded": { - "description": "Communicating if caption file will be delivered.", - "type": "boolean" - }, - "seasonNumber": { - "description": "The number assigned to the season within a series.\nOnly available on TV Avails.\nExample: \"1\".", - "type": "string" - }, - "licenseType": { - "enum": [ - "LICENSE_TYPE_UNSPECIFIED", - "EST", - "VOD", - "SVOD", - "POEST" - ], - "description": "Type of transaction.", - "type": "string", - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "Electronic Sell Through - purchase policy for unlimited viewing.", - "Video On Demand - rental policy for temporary viewing.", - "Subscription Video On Demand - used for subscription platforms.\nNot supported on Google Play.", - "Pre-order Electronic Sell Through - pre-order purchase only window." - ] - }, - "releaseDate": { - "description": "Release date of the Title in earliest released territory.\nTypically it is just the year, but it is free-form as per EMA spec.\nExamples: \"1979\", \"Oct 2014\"", - "type": "string" - }, - "end": { - "description": "End of term in YYYY-MM-DD format in the timezone of the country\nof the Avail.\n\"Open\" if no end date is available.\nExample: \"2019-02-17\"", - "type": "string" - }, - "videoId": { - "description": "Google-generated ID identifying the video linked to this Avail, once\ndelivered.\nNot part of EMA Specs.\nExample: 'gtry456_xc'", - "type": "string" - }, - "start": { - "description": "Start of term in YYYY-MM-DD format in the timezone of the\ncountry of the Avail.\nExample: \"2013-05-14\".", - "type": "string" - }, - "ratingSystem": { - "description": "Rating system applied to the version of title within territory\nof Avail.\nRating systems should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nExample: \"MPAA\"", - "type": "string" - }, - "pphNames": { - "description": "Name of the post-production houses that manage the Avail.\nNot part of EMA Specs.", - "items": { - "type": "string" - }, - "type": "array" - }, - "seriesAltId": { - "description": "Other identifier referring to the series, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers\".", - "type": "string" - }, - "altId": { - "type": "string", - "description": "Other identifier referring to the Edit, as defined by partner.\nExample: \"GOOGLER_2006\"" - }, - "episodeNumber": { - "description": "The number assigned to the episode within a season.\nOnly available on TV Avails.\nExample: \"3\".", - "type": "string" - }, - "seriesTitleInternalAlias": { - "description": "Title used by involved parties to refer to this series.\nOnly available on TV Avails.\nExample: \"Googlers, The\".", - "type": "string" - }, - "formatProfile": { - "enum": [ - "FORMAT_PROFILE_UNSPECIFIED", - "SD", - "HD", - "UHD" - ], - "description": "Indicates the format profile covered by the transaction.", - "type": "string", - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "Standard-definition format.", - "High-definition format.", - "4K UHD." - ] - }, - "ratingValue": { - "description": "Value representing the rating.\nRatings should be formatted as per http://www.movielabs.com/md/ratings/\nExample: \"PG\"", - "type": "string" - }, - "titleInternalAlias": { - "description": "Title used by involved parties to refer to this content.\nExample: \"Googlers, The\".\nOnly available on Movie Avails.", - "type": "string" - }, - "contentId": { - "description": "Title Identifier. This should be the Title Level EIDR.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".", - "type": "string" - }, - "storeLanguage": { - "description": "Spoken language of the intended audience.\nLanguage shall be encoded in accordance with RFC 5646.\nExample: \"fr\".", - "type": "string" - }, - "displayName": { - "description": "The name of the studio that owns the Edit referred in the Avail.\nThis is the equivalent of `studio_name` in other resources, but it follows\nthe EMA nomenclature.\nExample: \"Google Films\".", - "type": "string" - }, - "captionExemption": { - "description": "Communicating an exempt category as defined by FCC regulations.\nIt is not required for non-US Avails.\nExample: \"1\"", - "type": "string" - }, - "productId": { - "description": "Edit Identifier. This should be the Edit Level EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-6\"", - "type": "string" - }, - "seasonTitleInternalAlias": { - "description": "Title used by involved parties to refer to this season.\nOnly available on TV Avails.\nExample: \"Googlers, The\".", - "type": "string" - }, - "episodeAltId": { - "description": "Other identifier referring to the episode, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1_3\".", - "type": "string" - }, - "priceValue": { - "description": "Value to be applied to the pricing type.\nExample: \"4\" or \"2.99\"", - "type": "string" - }, - "territory": { - "description": "ISO 3166-1 alpha-2 country code for the country or territory\nof this Avail.\nFor Avails, we use Territory in lieu of Country to comply with\nEMA specifications.\nBut please note that Territory and Country identify the same thing.\nExample: \"US\".", - "type": "string" - }, - "workType": { - "description": "Work type as enumerated in EMA.", - "type": "string", - "enumDescriptions": [ - "Value could not be determined, please contact technical support if\nit should.", - "A movie picture.", - "A season of a TV show.", - "An episode of a TV show.", - "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\"" - ], - "enum": [ - "TITLE_TYPE_UNSPECIFIED", - "MOVIE", - "SEASON", - "EPISODE", - "BUNDLE" - ] - }, - "availId": { - "description": "ID internally generated by Google to uniquely identify an Avail.\nNot part of EMA Specs.", - "type": "string" - }, - "ratingReason": { - "description": "Value representing the rating reason.\nRating reasons should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nand comma-separated for inclusion of multiple reasons.\nExample: \"L, S, V\"", - "type": "string" - }, - "episodeTitleInternalAlias": { - "type": "string", - "description": "OPTIONAL.TV Only. Title used by involved parties to refer to this episode.\nOnly available on TV Avails.\nExample: \"Coding at Google\"." - } - }, - "id": "Avail", - "description": "An Avail describes the Availability Window of a specific Edit in a given\ncountry, which means the period Google is allowed to sell or rent the Edit.\n\nAvails are exposed in EMA format Version 1.6b (available at\nhttp://www.movielabs.com/md/avails/)\n\nStudios can see the Avails for the Titles they own.\nPost-production houses cannot see any Avails." - }, - "ListOrdersResponse": { - "description": "Response to the 'ListOrders' method.", - "type": "object", - "properties": { - "orders": { - "description": "List of Orders that match the request criteria.", - "items": { - "$ref": "Order" - }, - "type": "array" - }, - "nextPageToken": { - "description": "See _List methods rules_ for info about this field.", - "type": "string" - }, - "totalSize": { - "format": "int32", - "description": "See _List methods rules_ for more information about this field.", - "type": "integer" - } - }, - "id": "ListOrdersResponse" - }, "StoreInfo": { + "description": "Information about a playable sequence (video) associated with an Edit\nand available at the Google Play Store.\n\nInternally, each StoreInfo is uniquely identified by a `video_id`\nand `country`.\n\nExternally, Title-level EIDR or Edit-level EIDR, if provided,\ncan also be used to identify a specific title or edit in a country.", "type": "object", "properties": { - "subtitles": { - "description": "Subtitles available for this Edit.", - "items": { - "type": "string" - }, - "type": "array" - }, - "audioTracks": { - "description": "Audio tracks available for this Edit.", - "items": { - "type": "string" - }, - "type": "array" - }, - "showName": { - "description": "Default Show name, usually in the language of the country of\norigin.\nOnly available for TV Edits\nExample: \"Googlers, The\".", - "type": "string" - }, - "country": { - "description": "Country where Edit is available in ISO 3166-1 alpha-2 country\ncode.\nExample: \"US\".", - "type": "string" - }, - "showId": { - "description": "Google-generated ID identifying the show linked to the Edit.\nOnly available for TV Edits.\nExample: 'et2hsue_x'", - "type": "string" - }, "type": { + "type": "string", "enumDescriptions": [ "Value could not be determined, please contact technical support if\nit should.", "A movie picture.", @@ -911,12 +691,11 @@ "EPISODE", "BUNDLE" ], - "description": "Edit type, like Movie, Episode or Season.", - "type": "string" + "description": "Edit type, like Movie, Episode or Season." }, "trailerId": { - "description": "Google-generated ID identifying the trailer linked to the Edit.\nExample: 'bhd_4e_cx'", - "type": "string" + "type": "string", + "description": "Google-generated ID identifying the trailer linked to the Edit.\nExample: 'bhd_4e_cx'" }, "hasHdOffer": { "description": "Whether the Edit has a HD offer.", @@ -927,16 +706,16 @@ "type": "string" }, "hasAudio51": { - "description": "Whether the Edit has a 5.1 channel audio track.", - "type": "boolean" + "type": "boolean", + "description": "Whether the Edit has a 5.1 channel audio track." }, "name": { - "type": "string", - "description": "Default Edit name, usually in the language of the country of\norigin.\nExample: \"Googlers, The\"." + "description": "Default Edit name, usually in the language of the country of\norigin.\nExample: \"Googlers, The\".", + "type": "string" }, "seasonId": { - "description": "Google-generated ID identifying the season linked to the Edit.\nOnly available for TV Edits.\nExample: 'ster23ex'", - "type": "string" + "type": "string", + "description": "Google-generated ID identifying the season linked to the Edit.\nOnly available for TV Edits.\nExample: 'ster23ex'" }, "titleLevelEidr": { "description": "Title-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".", @@ -950,60 +729,290 @@ "description": "The number assigned to the season within a show.\nOnly available on TV Edits.\nExample: \"1\".", "type": "string" }, - "editLevelEidr": { - "type": "string", - "description": "Edit-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-6\"." - }, "hasEstOffer": { "description": "Whether the Edit has a EST offer.", "type": "boolean" }, - "hasSdOffer": { - "description": "Whether the Edit has a SD offer.", - "type": "boolean" + "editLevelEidr": { + "type": "string", + "description": "Edit-level EIDR ID.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-6\"." }, - "videoId": { - "description": "Google-generated ID identifying the video linked to the Edit.\nExample: 'gtry456_xc'", - "type": "string" + "hasSdOffer": { + "type": "boolean", + "description": "Whether the Edit has a SD offer." }, "liveTime": { + "type": "string", "format": "google-datetime", - "description": "Timestamp when the Edit went live on the Store.", - "type": "string" + "description": "Timestamp when the Edit went live on the Store." + }, + "videoId": { + "type": "string", + "description": "Google-generated ID identifying the video linked to the Edit.\nExample: 'gtry456_xc'" }, "hasInfoCards": { "description": "Whether the Edit has info cards.", "type": "boolean" }, "hasVodOffer": { - "description": "Whether the Edit has a VOD offer.", - "type": "boolean" + "type": "boolean", + "description": "Whether the Edit has a VOD offer." }, "pphNames": { - "description": "Name of the post-production houses that manage the Edit.", + "items": { + "type": "string" + }, + "type": "array", + "description": "Name of the post-production houses that manage the Edit." + }, + "episodeNumber": { + "type": "string", + "description": "The number assigned to the episode within a season.\nOnly available on TV Edits.\nExample: \"1\"." + }, + "studioName": { + "type": "string", + "description": "Name of the studio that owns the Edit ordered." + }, + "subtitles": { + "description": "Subtitles available for this Edit.", "items": { "type": "string" }, "type": "array" }, - "episodeNumber": { - "description": "The number assigned to the episode within a season.\nOnly available on TV Edits.\nExample: \"1\".", + "audioTracks": { + "items": { + "type": "string" + }, + "type": "array", + "description": "Audio tracks available for this Edit." + }, + "showName": { + "description": "Default Show name, usually in the language of the country of\norigin.\nOnly available for TV Edits\nExample: \"Googlers, The\".", "type": "string" }, - "studioName": { + "country": { + "description": "Country where Edit is available in ISO 3166-1 alpha-2 country\ncode.\nExample: \"US\".", + "type": "string" + }, + "showId": { "type": "string", - "description": "Name of the studio that owns the Edit ordered." + "description": "Google-generated ID identifying the show linked to the Edit.\nOnly available for TV Edits.\nExample: 'et2hsue_x'" } }, - "id": "StoreInfo", - "description": "Information about a playable sequence (video) associated with an Edit\nand available at the Google Play Store.\n\nInternally, each StoreInfo is uniquely identified by a `video_id`\nand `country`.\n\nExternally, Title-level EIDR or Edit-level EIDR, if provided,\ncan also be used to identify a specific title or edit in a country." + "id": "StoreInfo" + }, + "Avail": { + "type": "object", + "properties": { + "ratingReason": { + "description": "Value representing the rating reason.\nRating reasons should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nand comma-separated for inclusion of multiple reasons.\nExample: \"L, S, V\"", + "type": "string" + }, + "availId": { + "description": "ID internally generated by Google to uniquely identify an Avail.\nNot part of EMA Specs.", + "type": "string" + }, + "workType": { + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "A movie picture.", + "A season of a TV show.", + "An episode of a TV show.", + "A collection of movies, i.e. \"Googlers 1 and Googlers, the return\"" + ], + "enum": [ + "TITLE_TYPE_UNSPECIFIED", + "MOVIE", + "SEASON", + "EPISODE", + "BUNDLE" + ], + "description": "Work type as enumerated in EMA." + }, + "episodeTitleInternalAlias": { + "type": "string", + "description": "OPTIONAL.TV Only. Title used by involved parties to refer to this episode.\nOnly available on TV Avails.\nExample: \"Coding at Google\"." + }, + "suppressionLiftDate": { + "description": "First date an Edit could be publically announced as becoming\navailable at a specific future date in territory of Avail.\n*Not* the Avail start date or pre-order start date.\nFormat is YYYY-MM-DD.\nOnly available for pre-orders.\nExample: \"2012-12-10\"", + "type": "string" + }, + "seasonAltId": { + "type": "string", + "description": "Other identifier referring to the season, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1\"." + }, + "encodeId": { + "description": "Manifestation Identifier. This should be the Manifestation\nLevel EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-7\"", + "type": "string" + }, + "priceType": { + "description": "Type of pricing that should be applied to this Avail\nbased on how the partner classify them.\nExample: \"Tier\", \"WSP\", \"SRP\", or \"Category\".", + "type": "string" + }, + "captionIncluded": { + "type": "boolean", + "description": "Communicating if caption file will be delivered." + }, + "licenseType": { + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "Electronic Sell Through - purchase policy for unlimited viewing.", + "Video On Demand - rental policy for temporary viewing.", + "Subscription Video On Demand - used for subscription platforms.\nNot supported on Google Play.", + "Pre-order Electronic Sell Through - pre-order purchase only window." + ], + "enum": [ + "LICENSE_TYPE_UNSPECIFIED", + "EST", + "VOD", + "SVOD", + "POEST" + ], + "description": "Type of transaction." + }, + "seasonNumber": { + "type": "string", + "description": "The number assigned to the season within a series.\nOnly available on TV Avails.\nExample: \"1\"." + }, + "releaseDate": { + "type": "string", + "description": "Release date of the Title in earliest released territory.\nTypically it is just the year, but it is free-form as per EMA spec.\nExamples: \"1979\", \"Oct 2014\"" + }, + "end": { + "type": "string", + "description": "End of term in YYYY-MM-DD format in the timezone of the country\nof the Avail.\n\"Open\" if no end date is available.\nExample: \"2019-02-17\"" + }, + "videoId": { + "description": "Google-generated ID identifying the video linked to this Avail, once\ndelivered.\nNot part of EMA Specs.\nExample: 'gtry456_xc'", + "type": "string" + }, + "start": { + "type": "string", + "description": "Start of term in YYYY-MM-DD format in the timezone of the\ncountry of the Avail.\nExample: \"2013-05-14\"." + }, + "ratingSystem": { + "type": "string", + "description": "Rating system applied to the version of title within territory\nof Avail.\nRating systems should be formatted as per\n[EMA ratings spec](http://www.movielabs.com/md/ratings/)\nExample: \"MPAA\"" + }, + "pphNames": { + "description": "Name of the post-production houses that manage the Avail.\nNot part of EMA Specs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "seriesAltId": { + "type": "string", + "description": "Other identifier referring to the series, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers\"." + }, + "altId": { + "type": "string", + "description": "Other identifier referring to the Edit, as defined by partner.\nExample: \"GOOGLER_2006\"" + }, + "episodeNumber": { + "type": "string", + "description": "The number assigned to the episode within a season.\nOnly available on TV Avails.\nExample: \"3\"." + }, + "seriesTitleInternalAlias": { + "description": "Title used by involved parties to refer to this series.\nOnly available on TV Avails.\nExample: \"Googlers, The\".", + "type": "string" + }, + "formatProfile": { + "type": "string", + "enumDescriptions": [ + "Value could not be determined, please contact technical support if\nit should.", + "Standard-definition format.", + "High-definition format.", + "4K UHD." + ], + "enum": [ + "FORMAT_PROFILE_UNSPECIFIED", + "SD", + "HD", + "UHD" + ], + "description": "Indicates the format profile covered by the transaction." + }, + "contentId": { + "description": "Title Identifier. This should be the Title Level EIDR.\nExample: \"10.5240/1489-49A2-3956-4B2D-FE16-5\".", + "type": "string" + }, + "titleInternalAlias": { + "description": "Title used by involved parties to refer to this content.\nExample: \"Googlers, The\".\nOnly available on Movie Avails.", + "type": "string" + }, + "ratingValue": { + "description": "Value representing the rating.\nRatings should be formatted as per http://www.movielabs.com/md/ratings/\nExample: \"PG\"", + "type": "string" + }, + "storeLanguage": { + "type": "string", + "description": "Spoken language of the intended audience.\nLanguage shall be encoded in accordance with RFC 5646.\nExample: \"fr\"." + }, + "productId": { + "description": "Edit Identifier. This should be the Edit Level EIDR.\nExample: \"10.2340/1489-49A2-3956-4B2D-FE16-6\"", + "type": "string" + }, + "displayName": { + "description": "The name of the studio that owns the Edit referred in the Avail.\nThis is the equivalent of `studio_name` in other resources, but it follows\nthe EMA nomenclature.\nExample: \"Google Films\".", + "type": "string" + }, + "captionExemption": { + "description": "Communicating an exempt category as defined by FCC regulations.\nIt is not required for non-US Avails.\nExample: \"1\"", + "type": "string" + }, + "seasonTitleInternalAlias": { + "description": "Title used by involved parties to refer to this season.\nOnly available on TV Avails.\nExample: \"Googlers, The\".", + "type": "string" + }, + "priceValue": { + "type": "string", + "description": "Value to be applied to the pricing type.\nExample: \"4\" or \"2.99\"" + }, + "episodeAltId": { + "type": "string", + "description": "Other identifier referring to the episode, as defined by partner.\nOnly available on TV avails.\nExample: \"rs_googlers_s1_3\"." + }, + "territory": { + "description": "ISO 3166-1 alpha-2 country code for the country or territory\nof this Avail.\nFor Avails, we use Territory in lieu of Country to comply with\nEMA specifications.\nBut please note that Territory and Country identify the same thing.\nExample: \"US\".", + "type": "string" + } + }, + "id": "Avail", + "description": "An Avail describes the Availability Window of a specific Edit in a given\ncountry, which means the period Google is allowed to sell or rent the Edit.\n\nAvails are exposed in EMA format Version 1.6b (available at\nhttp://www.movielabs.com/md/avails/)\n\nStudios can see the Avails for the Titles they own.\nPost-production houses cannot see any Avails." + }, + "ListOrdersResponse": { + "type": "object", + "properties": { + "orders": { + "description": "List of Orders that match the request criteria.", + "items": { + "$ref": "Order" + }, + "type": "array" + }, + "nextPageToken": { + "type": "string", + "description": "See _List methods rules_ for info about this field." + }, + "totalSize": { + "type": "integer", + "format": "int32", + "description": "See _List methods rules_ for more information about this field." + } + }, + "id": "ListOrdersResponse", + "description": "Response to the 'ListOrders' method." } }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, "version": "v1", "baseUrl": "https://playmoviespartner.googleapis.com/", "canonicalName": "Play Movies", @@ -1016,16 +1025,7 @@ } } }, - "kind": "discovery#restDescription", - "description": "Gets the delivery status of titles for Google Play Movies Partners.", "servicePath": "", - "rootUrl": "https://playmoviespartner.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "playmoviespartner", - "batchPath": "batch", - "id": "playmoviespartner:v1", - "documentationLink": "https://developers.google.com/playmoviespartner/", - "revision": "20170822", - "title": "Google Play Movies Partner API" + "description": "Gets the delivery status of titles for Google Play Movies Partners.", + "kind": "discovery#restDescription" } diff --git a/vendor/google.golang.org/api/proximitybeacon/v1beta1/proximitybeacon-api.json b/vendor/google.golang.org/api/proximitybeacon/v1beta1/proximitybeacon-api.json index 30dc655..a61b5d8 100644 --- a/vendor/google.golang.org/api/proximitybeacon/v1beta1/proximitybeacon-api.json +++ b/vendor/google.golang.org/api/proximitybeacon/v1beta1/proximitybeacon-api.json @@ -6,77 +6,77 @@ "beaconinfo": { "methods": { "getforobserved": { + "path": "v1beta1/beaconinfo:getforobserved", + "id": "proximitybeacon.beaconinfo.getforobserved", + "description": "Given one or more beacon observations, returns any beacon information\nand attachments accessible to your application. Authorize by using the\n[API key](https://developers.google.com/beacons/proximity/get-started#request_a_browser_api_key)\nfor the application.", + "request": { + "$ref": "GetInfoForObservedBeaconsRequest" + }, "httpMethod": "POST", "parameterOrder": [], "response": { "$ref": "GetInfoForObservedBeaconsResponse" }, "parameters": {}, - "flatPath": "v1beta1/beaconinfo:getforobserved", - "path": "v1beta1/beaconinfo:getforobserved", - "id": "proximitybeacon.beaconinfo.getforobserved", - "description": "Given one or more beacon observations, returns any beacon information\nand attachments accessible to your application. Authorize by using the\n[API key](https://developers.google.com/beacons/proximity/get-started#request_a_browser_api_key)\nfor the application.", - "request": { - "$ref": "GetInfoForObservedBeaconsRequest" - } + "flatPath": "v1beta1/beaconinfo:getforobserved" } } }, "namespaces": { "methods": { - "list": { - "response": { - "$ref": "ListNamespacesResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], - "parameters": { - "projectId": { - "location": "query", - "description": "The project id to list namespaces under.\nOptional.", - "type": "string" - } - }, - "flatPath": "v1beta1/namespaces", - "id": "proximitybeacon.namespaces.list", - "path": "v1beta1/namespaces", - "description": "Lists all attachment namespaces owned by your Google Developers Console\nproject. Attachment data associated with a beacon must include a\nnamespaced type, and the namespace must be owned by your project.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project." - }, "update": { + "flatPath": "v1beta1/namespaces/{namespacesId}", + "id": "proximitybeacon.namespaces.update", + "path": "v1beta1/{+namespaceName}", "request": { "$ref": "Namespace" }, "description": "Updates the information about the specified namespace. Only the namespace\nvisibility can be updated.", - "httpMethod": "PUT", - "parameterOrder": [ - "namespaceName" - ], "response": { "$ref": "Namespace" }, + "parameterOrder": [ + "namespaceName" + ], + "httpMethod": "PUT", "scopes": [ "https://www.googleapis.com/auth/userlocation.beacon.registry" ], "parameters": { "namespaceName": { - "pattern": "^namespaces/[^/]+$", - "location": "path", "description": "Resource name of this namespace. Namespaces names have the format:\n\u003ccode\u003enamespaces/\u003cvar\u003enamespace\u003c/var\u003e\u003c/code\u003e.", "type": "string", - "required": true + "required": true, + "pattern": "^namespaces/[^/]+$", + "location": "path" }, "projectId": { "description": "The project id of the namespace to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", "type": "string", "location": "query" } + } + }, + "list": { + "httpMethod": "GET", + "response": { + "$ref": "ListNamespacesResponse" }, - "flatPath": "v1beta1/namespaces/{namespacesId}", - "path": "v1beta1/{+namespaceName}", - "id": "proximitybeacon.namespaces.update" + "parameterOrder": [], + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "parameters": { + "projectId": { + "description": "The project id to list namespaces under.\nOptional.", + "type": "string", + "location": "query" + } + }, + "flatPath": "v1beta1/namespaces", + "path": "v1beta1/namespaces", + "id": "proximitybeacon.namespaces.list", + "description": "Lists all attachment namespaces owned by your Google Developers Console\nproject. Attachment data associated with a beacon must include a\nnamespaced type, and the namespace must be owned by your project.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project." } } }, @@ -101,6 +101,99 @@ }, "beacons": { "methods": { + "activate": { + "description": "Activates a beacon. A beacon that is active will return information\nand attachment data when queried via `beaconinfo.getforobserved`.\nCalling this method on an already active beacon will do nothing (but\nwill return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "beaconName" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "parameters": { + "beaconName": { + "type": "string", + "required": true, + "pattern": "^beacons/[^/]+$", + "location": "path", + "description": "Beacon that should be activated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired." + }, + "projectId": { + "location": "query", + "description": "The project id of the beacon to activate. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", + "type": "string" + } + }, + "flatPath": "v1beta1/beacons/{beaconsId}:activate", + "id": "proximitybeacon.beacons.activate", + "path": "v1beta1/{+beaconName}:activate" + }, + "get": { + "flatPath": "v1beta1/beacons/{beaconsId}", + "path": "v1beta1/{+beaconName}", + "id": "proximitybeacon.beacons.get", + "description": "Returns detailed information about the specified beacon.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.\n\nRequests may supply an Eddystone-EID beacon name in the form:\n`beacons/4!beaconId` where the `beaconId` is the base16 ephemeral ID\nbroadcast by the beacon. The returned `Beacon` object will contain the\nbeacon's stable Eddystone-UID. Clients not authorized to resolve the\nbeacon's ephemeral Eddystone-EID broadcast will receive an error.", + "httpMethod": "GET", + "response": { + "$ref": "Beacon" + }, + "parameterOrder": [ + "beaconName" + ], + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The project id of the beacon to request. If the project id is not specified\nthen the project making the request is used. The project id must match the\nproject that owns the beacon.\nOptional.", + "type": "string" + }, + "beaconName": { + "location": "path", + "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", + "type": "string", + "required": true, + "pattern": "^beacons/[^/]+$" + } + } + }, + "update": { + "httpMethod": "PUT", + "parameterOrder": [ + "beaconName" + ], + "response": { + "$ref": "Beacon" + }, + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The project id of the beacon to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", + "type": "string" + }, + "beaconName": { + "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.\n\nThis field must be left empty when registering. After reading a beacon,\nclients can use the name for future operations.", + "type": "string", + "required": true, + "pattern": "^beacons/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/beacons/{beaconsId}", + "path": "v1beta1/{+beaconName}", + "id": "proximitybeacon.beacons.update", + "request": { + "$ref": "Beacon" + }, + "description": "Updates the information about the specified beacon. **Any field that you do\nnot populate in the submitted beacon will be permanently erased**, so you\nshould follow the \"read, modify, write\" pattern to avoid inadvertently\ndestroying data.\n\nChanges to the beacon status via this method will be silently ignored.\nTo update beacon status, use the separate methods on this API for\nactivation, deactivation, and decommissioning.\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." + }, "decommission": { "flatPath": "v1beta1/beacons/{beaconsId}:decommission", "id": "proximitybeacon.beacons.decommission", @@ -113,32 +206,58 @@ "beaconName" ], "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], "parameters": { "beaconName": { - "location": "path", - "description": "Beacon that should be decommissioned. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID of the beacon's \"stable\" UID.\nRequired.", "type": "string", "required": true, - "pattern": "^beacons/[^/]+$" + "pattern": "^beacons/[^/]+$", + "location": "path", + "description": "Beacon that should be decommissioned. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID of the beacon's \"stable\" UID.\nRequired." }, "projectId": { "location": "query", "description": "The project id of the beacon to decommission. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", "type": "string" } - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ] + } }, - "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "beaconName" - ], + "deactivate": { + "httpMethod": "POST", "response": { "$ref": "Empty" }, + "parameterOrder": [ + "beaconName" + ], + "parameters": { + "projectId": { + "location": "query", + "description": "The project id of the beacon to deactivate. If the project id is not\nspecified then the project making the request is used. The project id must\nmatch the project that owns the beacon.\nOptional.", + "type": "string" + }, + "beaconName": { + "description": "Beacon that should be deactivated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", + "type": "string", + "required": true, + "pattern": "^beacons/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "flatPath": "v1beta1/beacons/{beaconsId}:deactivate", + "path": "v1beta1/{+beaconName}:deactivate", + "id": "proximitybeacon.beacons.deactivate", + "description": "Deactivates a beacon. Once deactivated, the API will not return\ninformation nor attachment data for the beacon when queried via\n`beaconinfo.getforobserved`. Calling this method on an already inactive\nbeacon will do nothing (but will return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." + }, + "delete": { + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], "parameters": { "beaconName": { "location": "path", @@ -153,62 +272,29 @@ "type": "string" } }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], "flatPath": "v1beta1/beacons/{beaconsId}", - "path": "v1beta1/{+beaconName}", "id": "proximitybeacon.beacons.delete", - "description": "Deletes the specified beacon including all diagnostics data for the beacon\nas well as any attachments on the beacon (including those belonging to\nother projects). This operation cannot be undone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." - }, - "deactivate": { - "httpMethod": "POST", - "parameterOrder": [ - "beaconName" - ], + "path": "v1beta1/{+beaconName}", + "description": "Deletes the specified beacon including all diagnostics data for the beacon\nas well as any attachments on the beacon (including those belonging to\nother projects). This operation cannot be undone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", "response": { "$ref": "Empty" }, - "parameters": { - "beaconName": { - "description": "Beacon that should be deactivated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", - "type": "string", - "required": true, - "pattern": "^beacons/[^/]+$", - "location": "path" - }, - "projectId": { - "location": "query", - "description": "The project id of the beacon to deactivate. If the project id is not\nspecified then the project making the request is used. The project id must\nmatch the project that owns the beacon.\nOptional.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" + "parameterOrder": [ + "beaconName" ], - "flatPath": "v1beta1/beacons/{beaconsId}:deactivate", - "path": "v1beta1/{+beaconName}:deactivate", - "id": "proximitybeacon.beacons.deactivate", - "description": "Deactivates a beacon. Once deactivated, the API will not return\ninformation nor attachment data for the beacon when queried via\n`beaconinfo.getforobserved`. Calling this method on an already inactive\nbeacon will do nothing (but will return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." + "httpMethod": "DELETE" }, "list": { - "flatPath": "v1beta1/beacons", - "id": "proximitybeacon.beacons.list", - "path": "v1beta1/beacons", - "description": "Searches the beacon registry for beacons that match the given search\ncriteria. Only those beacons that the client has permission to list\nwill be returned.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.", + "httpMethod": "GET", + "parameterOrder": [], "response": { "$ref": "ListBeaconsResponse" }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], "parameters": { "pageToken": { - "description": "A pagination token obtained from a previous request to list beacons.", "type": "string", - "location": "query" + "location": "query", + "description": "A pagination token obtained from a previous request to list beacons." }, "pageSize": { "location": "query", @@ -217,146 +303,64 @@ "type": "integer" }, "q": { + "location": "query", "description": "Filter query string that supports the following field filters:\n\n* **description:`\"\u003cstring\u003e\"`**\n For example: **description:\"Room 3\"**\n Returns beacons whose description matches tokens in the string \"Room 3\"\n (not necessarily that exact string).\n The string must be double-quoted.\n* **status:`\u003cenum\u003e`**\n For example: **status:active**\n Returns beacons whose status matches the given value. Values must be\n one of the Beacon.Status enum values (case insensitive). Accepts\n multiple filters which will be combined with OR logic.\n* **stability:`\u003cenum\u003e`**\n For example: **stability:mobile**\n Returns beacons whose expected stability matches the given value.\n Values must be one of the Beacon.Stability enum values (case\n insensitive). Accepts multiple filters which will be combined with\n OR logic.\n* **place\\_id:`\"\u003cstring\u003e\"`**\n For example: **place\\_id:\"ChIJVSZzVR8FdkgRXGmmm6SslKw=\"**\n Returns beacons explicitly registered at the given place, expressed as\n a Place ID obtained from [Google Places API](/places/place-id). Does not\n match places inside the given place. Does not consider the beacon's\n actual location (which may be different from its registered place).\n Accepts multiple filters that will be combined with OR logic. The place\n ID must be double-quoted.\n* **registration\\_time`[\u003c|\u003e|\u003c=|\u003e=]\u003cinteger\u003e`**\n For example: **registration\\_time\u003e=1433116800**\n Returns beacons whose registration time matches the given filter.\n Supports the operators: \u003c, \u003e, \u003c=, and \u003e=. Timestamp must be expressed as\n an integer number of seconds since midnight January 1, 1970 UTC. Accepts\n at most two filters that will be combined with AND logic, to support\n \"between\" semantics. If more than two are supplied, the latter ones are\n ignored.\n* **lat:`\u003cdouble\u003e lng:\u003cdouble\u003e radius:\u003cinteger\u003e`**\n For example: **lat:51.1232343 lng:-1.093852 radius:1000**\n Returns beacons whose registered location is within the given circle.\n When any of these fields are given, all are required. Latitude and\n longitude must be decimal degrees between -90.0 and 90.0 and between\n -180.0 and 180.0 respectively. Radius must be an integer number of\n meters between 10 and 1,000,000 (1000 km).\n* **property:`\"\u003cstring\u003e=\u003cstring\u003e\"`**\n For example: **property:\"battery-type=CR2032\"**\n Returns beacons which have a property of the given name and value.\n Supports multiple filters which will be combined with OR logic.\n The entire name=value string must be double-quoted as one string.\n* **attachment\\_type:`\"\u003cstring\u003e\"`**\n For example: **attachment_type:\"my-namespace/my-type\"**\n Returns beacons having at least one attachment of the given namespaced\n type. Supports \"any within this namespace\" via the partial wildcard\n syntax: \"my-namespace/*\". Supports multiple filters which will be\n combined with OR logic. The string must be double-quoted.\n* **indoor\\_level:`\"\u003cstring\u003e\"`**\n For example: **indoor\\_level:\"1\"**\n Returns beacons which are located on the given indoor level. Accepts\n multiple filters that will be combined with OR logic.\n\nMultiple filters on the same field are combined with OR logic (except\nregistration_time which is combined with AND logic).\nMultiple filters on different fields are combined with AND logic.\nFilters should be separated by spaces.\n\nAs with any HTTP query string parameter, the whole filter expression must\nbe URL-encoded.\n\nExample REST request:\n`GET /v1beta1/beacons?q=status:active%20lat:51.123%20lng:-1.095%20radius:1000`", - "type": "string", - "location": "query" - }, - "projectId": { - "description": "The project id to list beacons under. If not present then the project\ncredential that made the request is used as the project.\nOptional.", - "type": "string", - "location": "query" - } - } - }, - "register": { - "flatPath": "v1beta1/beacons:register", - "path": "v1beta1/beacons:register", - "id": "proximitybeacon.beacons.register", - "description": "Registers a previously unregistered beacon given its `advertisedId`.\nThese IDs are unique within the system. An ID can be registered only once.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", - "request": { - "$ref": "Beacon" - }, - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "Beacon" - }, - "parameters": { - "projectId": { - "description": "The project id of the project the beacon will be registered to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ] - }, - "activate": { - "description": "Activates a beacon. A beacon that is active will return information\nand attachment data when queried via `beaconinfo.getforobserved`.\nCalling this method on an already active beacon will do nothing (but\nwill return a successful response code).\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "beaconName" - ], - "httpMethod": "POST", - "parameters": { - "beaconName": { - "location": "path", - "description": "Beacon that should be activated. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", - "type": "string", - "required": true, - "pattern": "^beacons/[^/]+$" - }, - "projectId": { - "description": "The project id of the beacon to activate. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], - "flatPath": "v1beta1/beacons/{beaconsId}:activate", - "id": "proximitybeacon.beacons.activate", - "path": "v1beta1/{+beaconName}:activate" - }, - "get": { - "path": "v1beta1/{+beaconName}", - "id": "proximitybeacon.beacons.get", - "description": "Returns detailed information about the specified beacon.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.\n\nRequests may supply an Eddystone-EID beacon name in the form:\n`beacons/4!beaconId` where the `beaconId` is the base16 ephemeral ID\nbroadcast by the beacon. The returned `Beacon` object will contain the\nbeacon's stable Eddystone-UID. Clients not authorized to resolve the\nbeacon's ephemeral Eddystone-EID broadcast will receive an error.", - "httpMethod": "GET", - "response": { - "$ref": "Beacon" - }, - "parameterOrder": [ - "beaconName" - ], - "parameters": { - "beaconName": { - "pattern": "^beacons/[^/]+$", - "location": "path", - "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", - "type": "string", - "required": true - }, - "projectId": { - "description": "The project id of the beacon to request. If the project id is not specified\nthen the project making the request is used. The project id must match the\nproject that owns the beacon.\nOptional.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], - "flatPath": "v1beta1/beacons/{beaconsId}" - }, - "update": { - "httpMethod": "PUT", - "parameterOrder": [ - "beaconName" - ], - "response": { - "$ref": "Beacon" - }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], - "parameters": { - "beaconName": { - "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.\n\nThis field must be left empty when registering. After reading a beacon,\nclients can use the name for future operations.", - "type": "string", - "required": true, - "pattern": "^beacons/[^/]+$", - "location": "path" + "type": "string" }, "projectId": { "location": "query", - "description": "The project id of the beacon to update. If the project id is not\nspecified then the project making the request is used. The project id\nmust match the project that owns the beacon.\nOptional.", + "description": "The project id to list beacons under. If not present then the project\ncredential that made the request is used as the project.\nOptional.", "type": "string" } }, - "flatPath": "v1beta1/beacons/{beaconsId}", - "path": "v1beta1/{+beaconName}", - "id": "proximitybeacon.beacons.update", + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "flatPath": "v1beta1/beacons", + "path": "v1beta1/beacons", + "id": "proximitybeacon.beacons.list", + "description": "Searches the beacon registry for beacons that match the given search\ncriteria. Only those beacons that the client has permission to list\nwill be returned.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project." + }, + "register": { "request": { "$ref": "Beacon" }, - "description": "Updates the information about the specified beacon. **Any field that you do\nnot populate in the submitted beacon will be permanently erased**, so you\nshould follow the \"read, modify, write\" pattern to avoid inadvertently\ndestroying data.\n\nChanges to the beacon status via this method will be silently ignored.\nTo update beacon status, use the separate methods on this API for\nactivation, deactivation, and decommissioning.\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." + "description": "Registers a previously unregistered beacon given its `advertisedId`.\nThese IDs are unique within the system. An ID can be registered only once.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", + "response": { + "$ref": "Beacon" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], + "parameters": { + "projectId": { + "type": "string", + "location": "query", + "description": "The project id of the project the beacon will be registered to. If\nthe project id is not specified then the project making the request\nis used.\nOptional." + } + }, + "flatPath": "v1beta1/beacons:register", + "id": "proximitybeacon.beacons.register", + "path": "v1beta1/beacons:register" } }, "resources": { "attachments": { "methods": { "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "attachmentName" - ], + "description": "Deletes the specified attachment for the given beacon. Each attachment has\na unique attachment name (`attachmentName`) which is returned when you\nfetch the attachment data via this API. You specify this with the delete\nrequest to control which attachment is removed. This operation cannot be\nundone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", "response": { "$ref": "Empty" }, + "parameterOrder": [ + "attachmentName" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], "parameters": { "projectId": { "description": "The project id of the attachment to delete. If not provided, the project\nthat is making the request is used.\nOptional.", @@ -364,58 +368,53 @@ "location": "query" }, "attachmentName": { - "description": "The attachment name (`attachmentName`) of\nthe attachment to remove. For example:\n`beacons/3!893737abc9/attachments/c5e937-af0-494-959-ec49d12738`. For\nEddystone-EID beacons, the beacon ID portion (`3!893737abc9`) may be the\nbeacon's current EID, or its \"stable\" Eddystone-UID.\nRequired.", "type": "string", "required": true, "pattern": "^beacons/[^/]+/attachments/[^/]+$", - "location": "path" + "location": "path", + "description": "The attachment name (`attachmentName`) of\nthe attachment to remove. For example:\n`beacons/3!893737abc9/attachments/c5e937-af0-494-959-ec49d12738`. For\nEddystone-EID beacons, the beacon ID portion (`3!893737abc9`) may be the\nbeacon's current EID, or its \"stable\" Eddystone-UID.\nRequired." } }, - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], "flatPath": "v1beta1/beacons/{beaconsId}/attachments/{attachmentsId}", - "path": "v1beta1/{+attachmentName}", "id": "proximitybeacon.beacons.attachments.delete", - "description": "Deletes the specified attachment for the given beacon. Each attachment has\na unique attachment name (`attachmentName`) which is returned when you\nfetch the attachment data via this API. You specify this with the delete\nrequest to control which attachment is removed. This operation cannot be\nundone.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." + "path": "v1beta1/{+attachmentName}" }, "list": { - "description": "Returns the attachments for the specified beacon that match the specified\nnamespaced-type pattern.\n\nTo control which namespaced types are returned, you add the\n`namespacedType` query parameter to the request. You must either use\n`*/*`, to return all attachments, or the namespace must be one of\nthe ones returned from the `namespaces` endpoint.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.", + "httpMethod": "GET", "response": { "$ref": "ListBeaconAttachmentsResponse" }, "parameterOrder": [ "beaconName" ], - "httpMethod": "GET", "parameters": { + "projectId": { + "description": "The project id to list beacon attachments under. This field can be\nused when \"*\" is specified to mean all attachment namespaces. Projects\nmay have multiple attachments with multiple namespaces. If \"*\" is\nspecified and the projectId string is empty, then the project\nmaking the request is used.\nOptional.", + "type": "string", + "location": "query" + }, "namespacedType": { - "location": "query", "description": "Specifies the namespace and type of attachment to include in response in\n\u003cvar\u003enamespace/type\u003c/var\u003e format. Accepts `*/*` to specify\n\"all types in all namespaces\".", - "type": "string" + "type": "string", + "location": "query" }, "beaconName": { + "location": "path", "description": "Beacon whose attachments should be fetched. A beacon name has the\nformat \"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast\nby the beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", "type": "string", "required": true, - "pattern": "^beacons/[^/]+$", - "location": "path" - }, - "projectId": { - "location": "query", - "description": "The project id to list beacon attachments under. This field can be\nused when \"*\" is specified to mean all attachment namespaces. Projects\nmay have multiple attachments with multiple namespaces. If \"*\" is\nspecified and the projectId string is empty, then the project\nmaking the request is used.\nOptional.", - "type": "string" + "pattern": "^beacons/[^/]+$" } }, "scopes": [ "https://www.googleapis.com/auth/userlocation.beacon.registry" ], "flatPath": "v1beta1/beacons/{beaconsId}/attachments", + "path": "v1beta1/{+beaconName}/attachments", "id": "proximitybeacon.beacons.attachments.list", - "path": "v1beta1/{+beaconName}/attachments" + "description": "Returns the attachments for the specified beacon that match the specified\nnamespaced-type pattern.\n\nTo control which namespaced types are returned, you add the\n`namespacedType` query parameter to the request. You must either use\n`*/*`, to return all attachments, or the namespace must be one of\nthe ones returned from the `namespaces` endpoint.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project." }, "batchDelete": { - "description": "Deletes multiple attachments on a given beacon. This operation is\npermanent and cannot be undone.\n\nYou can optionally specify `namespacedType` to choose which attachments\nshould be deleted. If you do not specify `namespacedType`, all your\nattachments on the given beacon will be deleted. You also may explicitly\nspecify `*/*` to delete all.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", "httpMethod": "POST", "response": { "$ref": "DeleteAttachmentsResponse" @@ -428,14 +427,14 @@ ], "parameters": { "projectId": { - "location": "query", "description": "The project id to delete beacon attachments under. This field can be\nused when \"*\" is specified to mean all attachment namespaces. Projects\nmay have multiple attachments with multiple namespaces. If \"*\" is\nspecified and the projectId string is empty, then the project\nmaking the request is used.\nOptional.", - "type": "string" + "type": "string", + "location": "query" }, "namespacedType": { - "location": "query", "description": "Specifies the namespace and type of attachments to delete in\n`namespace/type` format. Accepts `*/*` to specify\n\"all types in all namespaces\".\nOptional.", - "type": "string" + "type": "string", + "location": "query" }, "beaconName": { "pattern": "^beacons/[^/]+$", @@ -447,30 +446,24 @@ }, "flatPath": "v1beta1/beacons/{beaconsId}/attachments:batchDelete", "path": "v1beta1/{+beaconName}/attachments:batchDelete", - "id": "proximitybeacon.beacons.attachments.batchDelete" + "id": "proximitybeacon.beacons.attachments.batchDelete", + "description": "Deletes multiple attachments on a given beacon. This operation is\npermanent and cannot be undone.\n\nYou can optionally specify `namespacedType` to choose which attachments\nshould be deleted. If you do not specify `namespacedType`, all your\nattachments on the given beacon will be deleted. You also may explicitly\nspecify `*/*` to delete all.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project." }, "create": { - "request": { - "$ref": "BeaconAttachment" - }, - "description": "Associates the given data with the specified beacon. Attachment data must\ncontain two parts:\n\u003cul\u003e\n\u003cli\u003eA namespaced type.\u003c/li\u003e\n\u003cli\u003eThe actual attachment data itself.\u003c/li\u003e\n\u003c/ul\u003e\nThe namespaced type consists of two parts, the namespace and the type.\nThe namespace must be one of the values returned by the `namespaces`\nendpoint, while the type can be a string of any characters except for the\nforward slash (`/`) up to 100 characters in length.\n\nAttachment data can be up to 1024 bytes long.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", - "response": { - "$ref": "BeaconAttachment" - }, + "httpMethod": "POST", "parameterOrder": [ "beaconName" ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/userlocation.beacon.registry" - ], + "response": { + "$ref": "BeaconAttachment" + }, "parameters": { "beaconName": { - "location": "path", - "description": "Beacon on which the attachment should be created. A beacon name has the\nformat \"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast\nby the beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired.", "type": "string", "required": true, - "pattern": "^beacons/[^/]+$" + "pattern": "^beacons/[^/]+$", + "location": "path", + "description": "Beacon on which the attachment should be created. A beacon name has the\nformat \"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast\nby the beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone-UID, `4` for Eddystone-EID, `1` for iBeacon, or `5`\nfor AltBeacon. For Eddystone-EID beacons, you may use either the\ncurrent EID or the beacon's \"stable\" UID.\nRequired." }, "projectId": { "description": "The project id of the project the attachment will belong to. If\nthe project id is not specified then the project making the request\nis used.\nOptional.", @@ -478,15 +471,24 @@ "location": "query" } }, + "scopes": [ + "https://www.googleapis.com/auth/userlocation.beacon.registry" + ], "flatPath": "v1beta1/beacons/{beaconsId}/attachments", + "path": "v1beta1/{+beaconName}/attachments", "id": "proximitybeacon.beacons.attachments.create", - "path": "v1beta1/{+beaconName}/attachments" + "description": "Associates the given data with the specified beacon. Attachment data must\ncontain two parts:\n\u003cul\u003e\n\u003cli\u003eA namespaced type.\u003c/li\u003e\n\u003cli\u003eThe actual attachment data itself.\u003c/li\u003e\n\u003c/ul\u003e\nThe namespaced type consists of two parts, the namespace and the type.\nThe namespace must be one of the values returned by the `namespaces`\nendpoint, while the type can be a string of any characters except for the\nforward slash (`/`) up to 100 characters in length.\n\nAttachment data can be up to 1024 bytes long.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **Is owner** or **Can edit** permissions in the\nGoogle Developers Console project.", + "request": { + "$ref": "BeaconAttachment" + } } } }, "diagnostics": { "methods": { "list": { + "path": "v1beta1/{+beaconName}/diagnostics", + "id": "proximitybeacon.beacons.diagnostics.list", "description": "List the diagnostics for a single beacon. You can also list diagnostics for\nall the beacons owned by your Google Developers Console project by using\nthe beacon name `beacons/-`.\n\nAuthenticate using an [OAuth access token](https://developers.google.com/identity/protocols/OAuth2)\nfrom a signed-in user with **viewer**, **Is owner** or **Can edit**\npermissions in the Google Developers Console project.", "httpMethod": "GET", "response": { @@ -500,16 +502,16 @@ ], "parameters": { "beaconName": { + "pattern": "^beacons/[^/]+$", + "location": "path", "description": "Beacon that the diagnostics are for.", "type": "string", - "required": true, - "pattern": "^beacons/[^/]+$", - "location": "path" + "required": true }, "pageToken": { - "location": "query", "description": "Requests results that occur after the `page_token`, obtained from the\nresponse to a previous request. Optional.", - "type": "string" + "type": "string", + "location": "query" }, "alertFilter": { "location": "query", @@ -522,20 +524,18 @@ "type": "string" }, "pageSize": { + "location": "query", "format": "int32", "description": "Specifies the maximum number of results to return. Defaults to\n10. Maximum 1000. Optional.", - "type": "integer", - "location": "query" + "type": "integer" }, "projectId": { + "location": "query", "description": "Requests only diagnostic records for the given project id. If not set,\nthen the project making the request will be used for looking up\ndiagnostic records. Optional.", - "type": "string", - "location": "query" + "type": "string" } }, - "flatPath": "v1beta1/beacons/{beaconsId}/diagnostics", - "path": "v1beta1/{+beaconName}/diagnostics", - "id": "proximitybeacon.beacons.diagnostics.list" + "flatPath": "v1beta1/beacons/{beaconsId}/diagnostics" } } } @@ -543,79 +543,46 @@ } }, "parameters": { - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", + "type": "boolean" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", "location": "query" }, "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "uploadType": { "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query" + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" }, "alt": { - "description": "Data format for response.", - "default": "json", "enum": [ "json", "media", @@ -627,207 +594,53 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], + "location": "query", + "description": "Data format for response.", + "default": "json" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", "location": "query" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" } }, "schemas": { - "EphemeralIdRegistrationParams": { - "description": "Information a client needs to provision and register beacons that\nbroadcast Eddystone-EID format beacon IDs, using Elliptic curve\nDiffie-Hellman key exchange. See\n[the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.", + "IndoorLevel": { + "description": "Indoor level, a human-readable string as returned by Google Maps APIs,\nuseful to indicate which floor of a building a beacon is located on.", "type": "object", "properties": { - "maxRotationPeriodExponent": { - "format": "uint32", - "description": "Indicates the maximum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent", - "type": "integer" - }, - "minRotationPeriodExponent": { - "format": "uint32", - "description": "Indicates the minimum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent", - "type": "integer" - }, - "serviceEcdhPublicKey": { - "format": "byte", - "description": "The beacon service's public key for use by a beacon to derive its\nIdentity Key using Elliptic Curve Diffie-Hellman key exchange.", + "name": { + "description": "The name of this level.", "type": "string" } }, - "id": "EphemeralIdRegistrationParams" - }, - "DeleteAttachmentsResponse": { - "description": "Response for a request to delete attachments.", - "type": "object", - "properties": { - "numDeleted": { - "format": "int32", - "description": "The number of attachments that were deleted.", - "type": "integer" - } - }, - "id": "DeleteAttachmentsResponse" - }, - "Observation": { - "properties": { - "advertisedId": { - "description": "The ID advertised by the beacon the client has encountered.\n\nIf the submitted `advertised_id` type is Eddystone-EID, then the client\nmust be authorized to resolve the given beacon. Otherwise no data will be\nreturned for that beacon.\nRequired.", - "$ref": "AdvertisedId" - }, - "telemetry": { - "format": "byte", - "description": "The array of telemetry bytes received from the beacon. The server is\nresponsible for parsing it. This field may frequently be empty, as\nwith a beacon that transmits telemetry only occasionally.", - "type": "string" - }, - "timestampMs": { - "format": "google-datetime", - "description": "Time when the beacon was observed.", - "type": "string" - } - }, - "id": "Observation", - "description": "Represents one beacon observed once.", - "type": "object" - }, - "ListDiagnosticsResponse": { - "description": "Response that contains the requested diagnostics.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "Token that can be used for pagination. Returned only if the\nrequest matches more beacons than can be returned in this response.", - "type": "string" - }, - "diagnostics": { - "description": "The diagnostics matching the given request.", - "items": { - "$ref": "Diagnostics" - }, - "type": "array" - } - }, - "id": "ListDiagnosticsResponse" - }, - "GetInfoForObservedBeaconsResponse": { - "description": "Information about the requested beacons, optionally including attachment\ndata.", - "type": "object", - "properties": { - "beacons": { - "description": "Public information about beacons.\nMay be empty if the request matched no beacons.", - "items": { - "$ref": "BeaconInfo" - }, - "type": "array" - } - }, - "id": "GetInfoForObservedBeaconsResponse" - }, - "Beacon": { - "description": "Details of a beacon device.", - "type": "object", - "properties": { - "indoorLevel": { - "$ref": "IndoorLevel", - "description": "The indoor level information for this beacon, if known. As returned by the\nGoogle Maps API.\nOptional." - }, - "status": { - "description": "Current status of the beacon.\nRequired.", - "type": "string", - "enumDescriptions": [ - "Do not use this value.", - "The \"normal\" in-use state of a beacon.", - "Beacon should no longer be used for any purpose. This is irreversible.", - "The beacon should not be visible to mobile devices. This is reversible." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "ACTIVE", - "DECOMMISSIONED", - "INACTIVE" - ] - }, - "beaconName": { - "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.\n\nThis field must be left empty when registering. After reading a beacon,\nclients can use the name for future operations.", - "type": "string" - }, - "expectedStability": { - "enum": [ - "STABILITY_UNSPECIFIED", - "STABLE", - "PORTABLE", - "MOBILE", - "ROVING" - ], - "description": "Expected location stability. This is set when the beacon is registered or\nupdated, not automatically detected in any way.\nOptional.", - "type": "string", - "enumDescriptions": [ - "Do not use this value.", - "Not expected to move, for example a store's front door.", - "Usually stable but may move rarely, usually within a single place,\nfor example a store display.", - "Moves frequently, for example a personal item or food truck.", - "Moves continuously in service, for example a bus or train." - ] - }, - "advertisedId": { - "$ref": "AdvertisedId", - "description": "The identifier of a beacon as advertised by it. This field must be\npopulated when registering. It may be empty when updating a beacon\nrecord because it is ignored in updates.\n\nWhen registering a beacon that broadcasts Eddystone-EID, this field\nshould contain a \"stable\" Eddystone-UID that identifies the beacon and\nlinks it to its attachments. The stable Eddystone-UID is only used for\nadministering the beacon." - }, - "ephemeralIdRegistration": { - "$ref": "EphemeralIdRegistration", - "description": "Write-only registration parameters for beacons using Eddystone-EID\n(remotely resolved ephemeral ID) format. This information will not be\npopulated in API responses. When submitting this data, the `advertised_id`\nfield must contain an ID of type Eddystone-UID. Any other ID type will\nresult in an error." - }, - "provisioningKey": { - "format": "byte", - "description": "Some beacons may require a user to provide an authorization key before\nchanging any of its configuration (e.g. broadcast frames, transmit power).\nThis field provides a place to store and control access to that key.\nThis field is populated in responses to `GET /v1beta1/beacons/3!beaconId`\nfrom users with write access to the given beacon. That is to say: If the\nuser is authorized to write the beacon's confidential data in the service,\nthe service considers them authorized to configure the beacon. Note\nthat this key grants nothing on the service, only on the beacon itself.", - "type": "string" - }, - "latLng": { - "$ref": "LatLng", - "description": "The location of the beacon, expressed as a latitude and longitude pair.\nThis location is given when the beacon is registered or updated. It does\nnot necessarily indicate the actual current location of the beacon.\nOptional." - }, - "placeId": { - "description": "The [Google Places API](/places/place-id) Place ID of the place where\nthe beacon is deployed. This is given when the beacon is registered or\nupdated, not automatically detected in any way.\nOptional.", - "type": "string" - }, - "description": { - "description": "Free text used to identify and describe the beacon. Maximum length 140\ncharacters.\nOptional.", - "type": "string" - }, - "properties": { - "additionalProperties": { - "type": "string" - }, - "description": "Properties of the beacon device, for example battery type or firmware\nversion.\nOptional.", - "type": "object" - } - }, - "id": "Beacon" - }, - "AdvertisedId": { - "description": "Defines a unique identifier of a beacon as broadcast by the device.", - "type": "object", - "properties": { - "type": { - "enumDescriptions": [ - "Do not use this value.", - "Eddystone, an open beacon format that supports Android and iOS devices\nhttps://github.com/google/eddystone/wiki/Beacon-Specification", - "Apple iBeacon compatible beacon", - "See http://altbeacon.org and/or https://github.com/AltBeacon/spec.", - "Eddystone Ephemeral ID" - ], - "enum": [ - "TYPE_UNSPECIFIED", - "EDDYSTONE", - "IBEACON", - "ALTBEACON", - "EDDYSTONE_EID" - ], - "description": "Specifies the identifier type.\nRequired.", - "type": "string" - }, - "id": { - "format": "byte", - "description": "The actual beacon identifier, as broadcast by the beacon hardware. Must be\n[base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP\nrequests, and will be so encoded (with padding) in responses. The base64\nencoding should be of the binary byte-stream and not any textual (such as\nhex) representation thereof.\nRequired.", - "type": "string" - } - }, - "id": "AdvertisedId" + "id": "IndoorLevel" }, "Date": { "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", @@ -839,9 +652,9 @@ "type": "integer" }, "year": { + "type": "integer", "format": "int32", - "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", - "type": "integer" + "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year." }, "month": { "format": "int32", @@ -851,18 +664,8 @@ }, "id": "Date" }, - "IndoorLevel": { - "properties": { - "name": { - "description": "The name of this level.", - "type": "string" - } - }, - "id": "IndoorLevel", - "description": "Indoor level, a human-readable string as returned by Google Maps APIs,\nuseful to indicate which floor of a building a beacon is located on.", - "type": "object" - }, "ListNamespacesResponse": { + "id": "ListNamespacesResponse", "description": "Response to ListNamespacesRequest that contains all the project's namespaces.", "type": "object", "properties": { @@ -873,19 +676,22 @@ }, "type": "array" } - }, - "id": "ListNamespacesResponse" + } }, "Diagnostics": { + "id": "Diagnostics", "description": "Diagnostics for a single beacon.", "type": "object", "properties": { + "estimatedLowBatteryDate": { + "$ref": "Date", + "description": "The date when the battery is expected to be low. If the value is missing\nthen there is no estimate for when the battery will be low.\nThis value is only an estimate, not an exact date." + }, "beaconName": { "description": "Resource name of the beacon. For Eddystone-EID beacons, this may\nbe the beacon's current EID, or the beacon's \"stable\" Eddystone-UID.", "type": "string" }, "alerts": { - "description": "An unordered list of Alerts that the beacon has.", "items": { "enum": [ "ALERT_UNSPECIFIED", @@ -899,25 +705,24 @@ "Invalid value. Should never appear.", "The beacon has been reported in a location different than its registered\nlocation. This may indicate that the beacon has been moved. This signal\nis not 100% accurate, but indicates that further investigation is worth\nwhile.", "The battery level for the beacon is low enough that, given the beacon's\ncurrent use, its battery will run out with in the next 60 days. This\nindicates that the battery should be replaced soon." - ] - }, - "estimatedLowBatteryDate": { - "$ref": "Date", - "description": "The date when the battery is expected to be low. If the value is missing\nthen there is no estimate for when the battery will be low.\nThis value is only an estimate, not an exact date." + ], + "description": "An unordered list of Alerts that the beacon has." } - }, - "id": "Diagnostics" + } }, "ListBeaconsResponse": { + "id": "ListBeaconsResponse", + "description": "Response that contains list beacon results and pagination help.", + "type": "object", "properties": { "nextPageToken": { "description": "An opaque pagination token that the client may provide in their next\nrequest to retrieve the next page of results.", "type": "string" }, "totalCount": { + "type": "string", "format": "int64", - "description": "Estimate of the total number of beacons matched by the query. Higher\nvalues may be less accurate.", - "type": "string" + "description": "Estimate of the total number of beacons matched by the query. Higher\nvalues may be less accurate." }, "beacons": { "description": "The beacons that matched the search criteria.", @@ -926,12 +731,17 @@ }, "type": "array" } - }, - "id": "ListBeaconsResponse", - "description": "Response that contains list beacon results and pagination help.", - "type": "object" + } + }, + "Empty": { + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {} }, "GetInfoForObservedBeaconsRequest": { + "description": "Request for beacon and attachment information about beacons that\na mobile client has encountered \"in the wild\".", + "type": "object", "properties": { "observations": { "description": "The beacons that the client has encountered.\nAt least one must be given.", @@ -948,23 +758,15 @@ "type": "array" } }, - "id": "GetInfoForObservedBeaconsRequest", - "description": "Request for beacon and attachment information about beacons that\na mobile client has encountered \"in the wild\".", - "type": "object" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" + "id": "GetInfoForObservedBeaconsRequest" }, "BeaconAttachment": { "description": "Project-specific data associated with a beacon.", "type": "object", "properties": { "attachmentName": { - "description": "Resource name of this attachment. Attachment names have the format:\n\u003ccode\u003ebeacons/\u003cvar\u003ebeacon_id\u003c/var\u003e/attachments/\u003cvar\u003eattachment_id\u003c/var\u003e\u003c/code\u003e.\nLeave this empty on creation.", - "type": "string" + "type": "string", + "description": "Resource name of this attachment. Attachment names have the format:\n\u003ccode\u003ebeacons/\u003cvar\u003ebeacon_id\u003c/var\u003e/attachments/\u003cvar\u003eattachment_id\u003c/var\u003e\u003c/code\u003e.\nLeave this empty on creation." }, "namespacedType": { "description": "Specifies what kind of attachment this is. Tells a client how to\ninterpret the `data` field. Format is \u003cvar\u003enamespace/type\u003c/var\u003e. Namespace\nprovides type separation between clients. Type describes the type of\n`data`, for use by the client when parsing the `data` field.\nRequired.", @@ -1052,12 +854,17 @@ "id": "ListBeaconAttachmentsResponse" }, "Namespace": { + "id": "Namespace", + "description": "An attachment namespace defines read and write access for all the attachments\ncreated under it. Each namespace is globally unique, and owned by one\nproject which is the only project that can create attachments under it.", + "type": "object", "properties": { "namespaceName": { "description": "Resource name of this namespace. Namespaces names have the format:\n\u003ccode\u003enamespaces/\u003cvar\u003enamespace\u003c/var\u003e\u003c/code\u003e.", "type": "string" }, "servingVisibility": { + "description": "Specifies what clients may receive attachments under this namespace\nvia `beaconinfo.getforobserved`.", + "type": "string", "enumDescriptions": [ "Do not use this value.", "Served only to the project that owns the namespace.", @@ -1067,52 +874,245 @@ "VISIBILITY_UNSPECIFIED", "UNLISTED", "PUBLIC" - ], - "description": "Specifies what clients may receive attachments under this namespace\nvia `beaconinfo.getforobserved`.", + ] + } + } + }, + "AttachmentInfo": { + "type": "object", + "properties": { + "namespacedType": { + "type": "string", + "description": "Specifies what kind of attachment this is. Tells a client how to\ninterpret the `data` field. Format is \u003cvar\u003enamespace/type\u003c/var\u003e, for\nexample \u003ccode\u003escrupulous-wombat-12345/welcome-message\u003c/code\u003e" + }, + "data": { + "format": "byte", + "description": "An opaque data container for client-provided data.", "type": "string" } }, - "id": "Namespace", - "description": "An attachment namespace defines read and write access for all the attachments\ncreated under it. Each namespace is globally unique, and owned by one\nproject which is the only project that can create attachments under it.", - "type": "object" + "id": "AttachmentInfo", + "description": "A subset of attachment information served via the\n`beaconinfo.getforobserved` method, used when your users encounter your\nbeacons." }, "BeaconInfo": { + "description": "A subset of beacon information served via the `beaconinfo.getforobserved`\nmethod, which you call when users of your app encounter your beacons.", + "type": "object", "properties": { "beaconName": { "description": "The name under which the beacon is registered.", "type": "string" }, "attachments": { - "description": "Attachments matching the type(s) requested.\nMay be empty if no attachment types were requested.", "items": { "$ref": "AttachmentInfo" }, - "type": "array" + "type": "array", + "description": "Attachments matching the type(s) requested.\nMay be empty if no attachment types were requested." }, "advertisedId": { "description": "The ID advertised by the beacon.", "$ref": "AdvertisedId" } }, - "id": "BeaconInfo", - "description": "A subset of beacon information served via the `beaconinfo.getforobserved`\nmethod, which you call when users of your app encounter your beacons.", - "type": "object" + "id": "BeaconInfo" }, - "AttachmentInfo": { + "EphemeralIdRegistrationParams": { + "description": "Information a client needs to provision and register beacons that\nbroadcast Eddystone-EID format beacon IDs, using Elliptic curve\nDiffie-Hellman key exchange. See\n[the Eddystone specification](https://github.com/google/eddystone/tree/master/eddystone-eid) at GitHub.", + "type": "object", "properties": { - "data": { + "serviceEcdhPublicKey": { "format": "byte", - "description": "An opaque data container for client-provided data.", + "description": "The beacon service's public key for use by a beacon to derive its\nIdentity Key using Elliptic Curve Diffie-Hellman key exchange.", "type": "string" }, - "namespacedType": { - "description": "Specifies what kind of attachment this is. Tells a client how to\ninterpret the `data` field. Format is \u003cvar\u003enamespace/type\u003c/var\u003e, for\nexample \u003ccode\u003escrupulous-wombat-12345/welcome-message\u003c/code\u003e", + "maxRotationPeriodExponent": { + "format": "uint32", + "description": "Indicates the maximum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent", + "type": "integer" + }, + "minRotationPeriodExponent": { + "format": "uint32", + "description": "Indicates the minimum rotation period supported by the service.\nSee EddystoneEidRegistration.rotation_period_exponent", + "type": "integer" + } + }, + "id": "EphemeralIdRegistrationParams" + }, + "DeleteAttachmentsResponse": { + "id": "DeleteAttachmentsResponse", + "description": "Response for a request to delete attachments.", + "type": "object", + "properties": { + "numDeleted": { + "format": "int32", + "description": "The number of attachments that were deleted.", + "type": "integer" + } + } + }, + "Observation": { + "description": "Represents one beacon observed once.", + "type": "object", + "properties": { + "advertisedId": { + "description": "The ID advertised by the beacon the client has encountered.\n\nIf the submitted `advertised_id` type is Eddystone-EID, then the client\nmust be authorized to resolve the given beacon. Otherwise no data will be\nreturned for that beacon.\nRequired.", + "$ref": "AdvertisedId" + }, + "telemetry": { + "format": "byte", + "description": "The array of telemetry bytes received from the beacon. The server is\nresponsible for parsing it. This field may frequently be empty, as\nwith a beacon that transmits telemetry only occasionally.", + "type": "string" + }, + "timestampMs": { + "format": "google-datetime", + "description": "Time when the beacon was observed.", "type": "string" } }, - "id": "AttachmentInfo", - "description": "A subset of attachment information served via the\n`beaconinfo.getforobserved` method, used when your users encounter your\nbeacons.", - "type": "object" + "id": "Observation" + }, + "ListDiagnosticsResponse": { + "type": "object", + "properties": { + "diagnostics": { + "description": "The diagnostics matching the given request.", + "items": { + "$ref": "Diagnostics" + }, + "type": "array" + }, + "nextPageToken": { + "description": "Token that can be used for pagination. Returned only if the\nrequest matches more beacons than can be returned in this response.", + "type": "string" + } + }, + "id": "ListDiagnosticsResponse", + "description": "Response that contains the requested diagnostics." + }, + "GetInfoForObservedBeaconsResponse": { + "type": "object", + "properties": { + "beacons": { + "description": "Public information about beacons.\nMay be empty if the request matched no beacons.", + "items": { + "$ref": "BeaconInfo" + }, + "type": "array" + } + }, + "id": "GetInfoForObservedBeaconsResponse", + "description": "Information about the requested beacons, optionally including attachment\ndata." + }, + "Beacon": { + "id": "Beacon", + "description": "Details of a beacon device.", + "type": "object", + "properties": { + "expectedStability": { + "type": "string", + "enumDescriptions": [ + "Do not use this value.", + "Not expected to move, for example a store's front door.", + "Usually stable but may move rarely, usually within a single place,\nfor example a store display.", + "Moves frequently, for example a personal item or food truck.", + "Moves continuously in service, for example a bus or train." + ], + "enum": [ + "STABILITY_UNSPECIFIED", + "STABLE", + "PORTABLE", + "MOBILE", + "ROVING" + ], + "description": "Expected location stability. This is set when the beacon is registered or\nupdated, not automatically detected in any way.\nOptional." + }, + "advertisedId": { + "description": "The identifier of a beacon as advertised by it. This field must be\npopulated when registering. It may be empty when updating a beacon\nrecord because it is ignored in updates.\n\nWhen registering a beacon that broadcasts Eddystone-EID, this field\nshould contain a \"stable\" Eddystone-UID that identifies the beacon and\nlinks it to its attachments. The stable Eddystone-UID is only used for\nadministering the beacon.", + "$ref": "AdvertisedId" + }, + "provisioningKey": { + "format": "byte", + "description": "Some beacons may require a user to provide an authorization key before\nchanging any of its configuration (e.g. broadcast frames, transmit power).\nThis field provides a place to store and control access to that key.\nThis field is populated in responses to `GET /v1beta1/beacons/3!beaconId`\nfrom users with write access to the given beacon. That is to say: If the\nuser is authorized to write the beacon's confidential data in the service,\nthe service considers them authorized to configure the beacon. Note\nthat this key grants nothing on the service, only on the beacon itself.", + "type": "string" + }, + "ephemeralIdRegistration": { + "$ref": "EphemeralIdRegistration", + "description": "Write-only registration parameters for beacons using Eddystone-EID\n(remotely resolved ephemeral ID) format. This information will not be\npopulated in API responses. When submitting this data, the `advertised_id`\nfield must contain an ID of type Eddystone-UID. Any other ID type will\nresult in an error." + }, + "description": { + "description": "Free text used to identify and describe the beacon. Maximum length 140\ncharacters.\nOptional.", + "type": "string" + }, + "placeId": { + "description": "The [Google Places API](/places/place-id) Place ID of the place where\nthe beacon is deployed. This is given when the beacon is registered or\nupdated, not automatically detected in any way.\nOptional.", + "type": "string" + }, + "latLng": { + "description": "The location of the beacon, expressed as a latitude and longitude pair.\nThis location is given when the beacon is registered or updated. It does\nnot necessarily indicate the actual current location of the beacon.\nOptional.", + "$ref": "LatLng" + }, + "properties": { + "description": "Properties of the beacon device, for example battery type or firmware\nversion.\nOptional.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "indoorLevel": { + "description": "The indoor level information for this beacon, if known. As returned by the\nGoogle Maps API.\nOptional.", + "$ref": "IndoorLevel" + }, + "status": { + "enumDescriptions": [ + "Do not use this value.", + "The \"normal\" in-use state of a beacon.", + "Beacon should no longer be used for any purpose. This is irreversible.", + "The beacon should not be visible to mobile devices. This is reversible." + ], + "enum": [ + "STATUS_UNSPECIFIED", + "ACTIVE", + "DECOMMISSIONED", + "INACTIVE" + ], + "description": "Current status of the beacon.\nRequired.", + "type": "string" + }, + "beaconName": { + "description": "Resource name of this beacon. A beacon name has the format\n\"beacons/N!beaconId\" where the beaconId is the base16 ID broadcast by\nthe beacon and N is a code for the beacon's type. Possible values are\n`3` for Eddystone, `1` for iBeacon, or `5` for AltBeacon.\n\nThis field must be left empty when registering. After reading a beacon,\nclients can use the name for future operations.", + "type": "string" + } + } + }, + "AdvertisedId": { + "description": "Defines a unique identifier of a beacon as broadcast by the device.", + "type": "object", + "properties": { + "id": { + "format": "byte", + "description": "The actual beacon identifier, as broadcast by the beacon hardware. Must be\n[base64](http://tools.ietf.org/html/rfc4648#section-4) encoded in HTTP\nrequests, and will be so encoded (with padding) in responses. The base64\nencoding should be of the binary byte-stream and not any textual (such as\nhex) representation thereof.\nRequired.", + "type": "string" + }, + "type": { + "enumDescriptions": [ + "Do not use this value.", + "Eddystone, an open beacon format that supports Android and iOS devices\nhttps://github.com/google/eddystone/wiki/Beacon-Specification", + "Apple iBeacon compatible beacon", + "See http://altbeacon.org and/or https://github.com/AltBeacon/spec.", + "Eddystone Ephemeral ID" + ], + "enum": [ + "TYPE_UNSPECIFIED", + "EDDYSTONE", + "IBEACON", + "ALTBEACON", + "EDDYSTONE_EID" + ], + "description": "Specifies the identifier type.\nRequired.", + "type": "string" + } + }, + "id": "AdvertisedId" } }, "protocol": "rest", @@ -1140,7 +1140,7 @@ "name": "proximitybeacon", "batchPath": "batch", "revision": "20170823", - "id": "proximitybeacon:v1beta1", "documentationLink": "https://developers.google.com/beacons/proximity/", + "id": "proximitybeacon:v1beta1", "title": "Google Proximity Beacon API" } diff --git a/vendor/google.golang.org/api/pubsub/v1/pubsub-api.json b/vendor/google.golang.org/api/pubsub/v1/pubsub-api.json index e28694c..20f97f7 100644 --- a/vendor/google.golang.org/api/pubsub/v1/pubsub-api.json +++ b/vendor/google.golang.org/api/pubsub/v1/pubsub-api.json @@ -1,92 +1,787 @@ { + "resources": { + "projects": { + "resources": { + "snapshots": { + "methods": { + "setIamPolicy": { + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/snapshots/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "id": "pubsub.projects.snapshots.setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy." + }, + "testIamPermissions": { + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/snapshots/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:testIamPermissions", + "id": "pubsub.projects.snapshots.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning." + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "GET", + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/snapshots/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:getIamPolicy", + "id": "pubsub.projects.snapshots.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + } + } + }, + "subscriptions": { + "methods": { + "get": { + "httpMethod": "GET", + "response": { + "$ref": "Subscription" + }, + "parameterOrder": [ + "subscription" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "The name of the subscription to get.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}", + "path": "v1/{+subscription}", + "id": "pubsub.projects.subscriptions.get", + "description": "Gets the configuration details of a subscription." + }, + "testIamPermissions": { + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:testIamPermissions", + "id": "pubsub.projects.subscriptions.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "resource": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field." + } + } + }, + "modifyPushConfig": { + "request": { + "$ref": "ModifyPushConfigRequest" + }, + "description": "Modifies the `PushConfig` for a specified subscription.\n\nThis may be used to change a push subscription to a pull one (signified by\nan empty `PushConfig`) or vice versa, or change the endpoint URL and other\nattributes of a push subscription. Messages will accumulate for delivery\ncontinuously through the call regardless of changes to the `PushConfig`.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyPushConfig", + "id": "pubsub.projects.subscriptions.modifyPushConfig", + "path": "v1/{+subscription}:modifyPushConfig" + }, + "pull": { + "request": { + "$ref": "PullRequest" + }, + "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The server may return `UNAVAILABLE` if\nthere are too many concurrent pull requests pending for the given\nsubscription.", + "httpMethod": "POST", + "parameterOrder": [ + "subscription" + ], + "response": { + "$ref": "PullResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "location": "path", + "description": "The subscription from which messages should be pulled.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:pull", + "path": "v1/{+subscription}:pull", + "id": "pubsub.projects.subscriptions.pull" + }, + "delete": { + "id": "pubsub.projects.subscriptions.delete", + "path": "v1/{+subscription}", + "description": "Deletes an existing subscription. All messages retained in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription or its topic unless the same topic is specified.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "DELETE", + "parameters": { + "subscription": { + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "The subscription to delete.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}" + }, + "list": { + "path": "v1/{+project}/subscriptions", + "id": "pubsub.projects.subscriptions.list", + "description": "Lists matching subscriptions.", + "httpMethod": "GET", + "parameterOrder": [ + "project" + ], + "response": { + "$ref": "ListSubscriptionsResponse" + }, + "parameters": { + "pageToken": { + "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.", + "type": "string", + "location": "query" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Maximum number of subscriptions to return." + }, + "project": { + "location": "path", + "description": "The name of the cloud project that subscriptions belong to.\nFormat is `projects/{project}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/subscriptions" + }, + "create": { + "response": { + "$ref": "Subscription" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "parameters": { + "name": { + "location": "path", + "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}", + "id": "pubsub.projects.subscriptions.create", + "path": "v1/{+name}", + "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic, conforming\nto the\n[resource name format](https://cloud.google.com/pubsub/docs/overview#names).\nThe generated name is populated in the returned Subscription object.\nNote that for REST API requests, you must specify a name in the request.", + "request": { + "$ref": "Subscription" + } + }, + "setIamPolicy": { + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "id": "pubsub.projects.subscriptions.setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + } + }, + "acknowledge": { + "request": { + "$ref": "AcknowledgeRequest" + }, + "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "The subscription whose message is being acknowledged.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:acknowledge", + "id": "pubsub.projects.subscriptions.acknowledge", + "path": "v1/{+subscription}:acknowledge" + }, + "modifyAckDeadline": { + "parameters": { + "subscription": { + "location": "path", + "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyAckDeadline", + "path": "v1/{+subscription}:modifyAckDeadline", + "id": "pubsub.projects.subscriptions.modifyAckDeadline", + "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.", + "request": { + "$ref": "ModifyAckDeadlineRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "subscription" + ], + "response": { + "$ref": "Empty" + } + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "GET", + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:getIamPolicy", + "id": "pubsub.projects.subscriptions.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + } + } + }, + "topics": { + "methods": { + "delete": { + "id": "pubsub.projects.topics.delete", + "path": "v1/{+topic}", + "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.", + "parameterOrder": [ + "topic" + ], + "response": { + "$ref": "Empty" + }, + "httpMethod": "DELETE", + "parameters": { + "topic": { + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "Name of the topic to delete.\nFormat is `projects/{project}/topics/{topic}`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}" + }, + "list": { + "path": "v1/{+project}/topics", + "id": "pubsub.projects.topics.list", + "description": "Lists matching topics.", + "httpMethod": "GET", + "response": { + "$ref": "ListTopicsResponse" + }, + "parameterOrder": [ + "project" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Maximum number of topics to return.", + "type": "integer", + "location": "query" + }, + "project": { + "description": "The name of the cloud project that topics belong to.\nFormat is `projects/{project}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics" + }, + "create": { + "id": "pubsub.projects.topics.create", + "path": "v1/{+name}", + "request": { + "$ref": "Topic" + }, + "description": "Creates the given topic with the given name.", + "response": { + "$ref": "Topic" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`." + } + }, + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}" + }, + "setIamPolicy": { + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:setIamPolicy", + "id": "pubsub.projects.topics.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "SetIamPolicyRequest" + } + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "httpMethod": "GET", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", + "id": "pubsub.projects.topics.getIamPolicy" + }, + "get": { + "response": { + "$ref": "Topic" + }, + "parameterOrder": [ + "topic" + ], + "httpMethod": "GET", + "parameters": { + "topic": { + "description": "The name of the topic to get.\nFormat is `projects/{project}/topics/{topic}`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}", + "id": "pubsub.projects.topics.get", + "path": "v1/{+topic}", + "description": "Gets the configuration of a topic." + }, + "publish": { + "description": "Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic\ndoes not exist. The message payload must not be empty; it must contain\n either a non-empty data field, or at least one attribute.", + "request": { + "$ref": "PublishRequest" + }, + "response": { + "$ref": "PublishResponse" + }, + "parameterOrder": [ + "topic" + ], + "httpMethod": "POST", + "parameters": { + "topic": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "The messages in the request will be published on this topic.\nFormat is `projects/{project}/topics/{topic}`." + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:publish", + "id": "pubsub.projects.topics.publish", + "path": "v1/{+topic}:publish" + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "id": "pubsub.projects.topics.testIamPermissions" + } + }, + "resources": { + "subscriptions": { + "methods": { + "list": { + "path": "v1/{+topic}/subscriptions", + "id": "pubsub.projects.topics.subscriptions.list", + "description": "Lists the name of the subscriptions for this topic.", + "httpMethod": "GET", + "parameterOrder": [ + "topic" + ], + "response": { + "$ref": "ListTopicSubscriptionsResponse" + }, + "parameters": { + "pageToken": { + "location": "query", + "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Maximum number of subscription names to return.", + "type": "integer", + "location": "query" + }, + "topic": { + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "The name of the topic that subscriptions are attached to.\nFormat is `projects/{project}/topics/{topic}`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1/projects/{projectsId}/topics/{topicsId}/subscriptions" + } + } + } + } + } + } + } + }, + "parameters": { + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + } + }, "schemas": { - "PublishResponse": { - "description": "Response for the `Publish` method.", - "type": "object", - "properties": { - "messageIds": { - "description": "The server-assigned ID of each published message, in the same order as\nthe messages in the request. IDs are guaranteed to be unique within\nthe topic.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "PublishResponse" - }, - "Subscription": { - "description": "A subscription resource.", - "type": "object", - "properties": { - "topic": { - "description": "The name of the topic from which this subscription is receiving messages.\nFormat is `projects/{project}/topics/{topic}`.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.", - "type": "string" - }, - "pushConfig": { - "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods.", - "$ref": "PushConfig" - }, - "ackDeadlineSeconds": { - "format": "int32", - "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using\npull.\nThe minimum custom deadline you can specify is 10 seconds.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\nIf this parameter is 0, a default value of 10 seconds is used.\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.", - "type": "integer" - }, - "name": { - "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", - "type": "string" - } - }, - "id": "Subscription" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, - "Topic": { - "description": "A topic resource.", - "type": "object", - "properties": { - "name": { - "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.", - "type": "string" - } - }, - "id": "Topic" - }, - "Policy": { - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object", - "properties": { - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - }, - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, - "bindings": { - "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", - "items": { - "$ref": "Binding" - }, - "type": "array" - } - }, - "id": "Policy" - }, "ModifyAckDeadlineRequest": { "description": "Request for the ModifyAckDeadline method.", "type": "object", @@ -107,28 +802,18 @@ "id": "ModifyAckDeadlineRequest" }, "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", "properties": { "policy": { "$ref": "Policy", "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." } }, - "id": "SetIamPolicyRequest" - }, - "ModifyPushConfigRequest": { - "description": "Request for the ModifyPushConfig method.", - "type": "object", - "properties": { - "pushConfig": { - "$ref": "PushConfig", - "description": "The push configuration for future deliveries.\n\nAn empty `pushConfig` indicates that the Pub/Sub system should\nstop pushing messages from the given subscription and allow\nmessages to be pulled and acknowledged - effectively pausing\nthe subscription if `Pull` is not called." - } - }, - "id": "ModifyPushConfigRequest" + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method.", + "type": "object" }, "PubsubMessage": { + "id": "PubsubMessage", "description": "A message data and its attributes. The message payload must not be empty;\nit must contain either a non-empty data field, or at least one attribute.", "type": "object", "properties": { @@ -142,19 +827,29 @@ "type": "string" }, "attributes": { + "description": "Optional attributes for this message.", + "type": "object", "additionalProperties": { "type": "string" - }, - "description": "Optional attributes for this message.", - "type": "object" + } }, "publishTime": { "format": "google-datetime", "description": "The time at which the message was published, populated by the server when\nit receives the `Publish` call. It must not be populated by the\npublisher in a `Publish` call.", "type": "string" } + } + }, + "ModifyPushConfigRequest": { + "type": "object", + "properties": { + "pushConfig": { + "description": "The push configuration for future deliveries.\n\nAn empty `pushConfig` indicates that the Pub/Sub system should\nstop pushing messages from the given subscription and allow\nmessages to be pulled and acknowledged - effectively pausing\nthe subscription if `Pull` is not called.", + "$ref": "PushConfig" + } }, - "id": "PubsubMessage" + "id": "ModifyPushConfigRequest", + "description": "Request for the ModifyPushConfig method." }, "Binding": { "description": "Associates `members` with a `role`.", @@ -175,18 +870,18 @@ "id": "Binding" }, "AcknowledgeRequest": { - "description": "Request for the Acknowledge method.", "type": "object", "properties": { "ackIds": { - "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.", "items": { "type": "string" }, - "type": "array" + "type": "array", + "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty." } }, - "id": "AcknowledgeRequest" + "id": "AcknowledgeRequest", + "description": "Request for the Acknowledge method." }, "Empty": { "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", @@ -195,22 +890,22 @@ "id": "Empty" }, "ListTopicsResponse": { + "id": "ListTopicsResponse", "description": "Response for the `ListTopics` method.", "type": "object", "properties": { "nextPageToken": { - "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.", - "type": "string" + "type": "string", + "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`." }, "topics": { - "description": "The resulting topics.", "items": { "$ref": "Topic" }, - "type": "array" + "type": "array", + "description": "The resulting topics." } - }, - "id": "ListTopicsResponse" + } }, "ListTopicSubscriptionsResponse": { "description": "Response for the `ListTopicSubscriptions` method.", @@ -231,7 +926,6 @@ "id": "ListTopicSubscriptionsResponse" }, "PullResponse": { - "description": "Response for the `Pull` method.", "type": "object", "properties": { "receivedMessages": { @@ -242,7 +936,8 @@ "type": "array" } }, - "id": "PullResponse" + "id": "PullResponse", + "description": "Response for the `Pull` method." }, "ReceivedMessage": { "description": "A message and its corresponding acknowledgment ID.", @@ -292,20 +987,20 @@ "id": "TestIamPermissionsResponse" }, "PullRequest": { - "description": "Request for the `Pull` method.", - "type": "object", "properties": { - "returnImmediately": { - "description": "If this field set to true, the system will respond immediately even if\nit there are no messages available to return in the `Pull` response.\nOtherwise, the system may wait (for a bounded amount of time) until at\nleast one message is available, rather than returning no messages. The\nclient may cancel the request if it does not wish to wait any longer for\nthe response.", - "type": "boolean" - }, "maxMessages": { "format": "int32", "description": "The maximum number of messages returned for this request. The Pub/Sub\nsystem may return fewer than the number specified.", "type": "integer" + }, + "returnImmediately": { + "type": "boolean", + "description": "If this field set to true, the system will respond immediately even if\nit there are no messages available to return in the `Pull` response.\nOtherwise, the system may wait (for a bounded amount of time) until at\nleast one message is available, rather than returning no messages. The\nclient may cancel the request if it does not wish to wait any longer for\nthe response." } }, - "id": "PullRequest" + "id": "PullRequest", + "description": "Request for the `Pull` method.", + "type": "object" }, "ListSubscriptionsResponse": { "description": "Response for the `ListSubscriptions` method.", @@ -338,12 +1033,99 @@ } }, "id": "PublishRequest" + }, + "PublishResponse": { + "type": "object", + "properties": { + "messageIds": { + "description": "The server-assigned ID of each published message, in the same order as\nthe messages in the request. IDs are guaranteed to be unique within\nthe topic.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "PublishResponse", + "description": "Response for the `Publish` method." + }, + "Subscription": { + "id": "Subscription", + "description": "A subscription resource.", + "type": "object", + "properties": { + "pushConfig": { + "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods.", + "$ref": "PushConfig" + }, + "ackDeadlineSeconds": { + "format": "int32", + "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using\npull.\nThe minimum custom deadline you can specify is 10 seconds.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\nIf this parameter is 0, a default value of 10 seconds is used.\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.", + "type": "integer" + }, + "name": { + "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", + "type": "string" + }, + "topic": { + "description": "The name of the topic from which this subscription is receiving messages.\nFormat is `projects/{project}/topics/{topic}`.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.", + "type": "string" + } + } + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" + }, + "Topic": { + "properties": { + "name": { + "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.", + "type": "string" + } + }, + "id": "Topic", + "description": "A topic resource.", + "type": "object" + }, + "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", + "properties": { + "bindings": { + "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "Binding" + }, + "type": "array" + }, + "etag": { + "type": "string", + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly." + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + } + }, + "id": "Policy" } }, "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "version": "v1", "baseUrl": "https://pubsub.googleapis.com/", @@ -351,18 +1133,18 @@ "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/pubsub": { "description": "View and manage Pub/Sub topics and subscriptions" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" } } } }, + "servicePath": "", "description": "Provides reliable, many-to-many, asynchronous messaging between applications.\n", "kind": "discovery#restDescription", - "servicePath": "", "rootUrl": "https://pubsub.googleapis.com/", "basePath": "", "ownerDomain": "google.com", @@ -372,788 +1154,6 @@ "documentationLink": "https://cloud.google.com/pubsub/docs", "revision": "20170814", "title": "Google Cloud Pub/Sub API", - "ownerName": "Google", "discoveryVersion": "v1", - "resources": { - "projects": { - "resources": { - "snapshots": { - "methods": { - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/snapshots/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:testIamPermissions", - "id": "pubsub.projects.snapshots.testIamPermissions", - "path": "v1/{+resource}:testIamPermissions" - }, - "getIamPolicy": { - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "httpMethod": "GET", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/snapshots/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "pubsub.projects.snapshots.getIamPolicy" - }, - "setIamPolicy": { - "flatPath": "v1/projects/{projectsId}/snapshots/{snapshotsId}:setIamPolicy", - "id": "pubsub.projects.snapshots.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/snapshots/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] - } - } - }, - "subscriptions": { - "methods": { - "getIamPolicy": { - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "GET", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:getIamPolicy", - "id": "pubsub.projects.subscriptions.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy" - }, - "modifyAckDeadline": { - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyAckDeadline", - "id": "pubsub.projects.subscriptions.modifyAckDeadline", - "path": "v1/{+subscription}:modifyAckDeadline", - "request": { - "$ref": "ModifyAckDeadlineRequest" - }, - "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "subscription": { - "location": "path", - "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - } - }, - "acknowledge": { - "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error.", - "request": { - "$ref": "AcknowledgeRequest" - }, - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "POST", - "parameters": { - "subscription": { - "location": "path", - "description": "The subscription whose message is being acknowledged.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:acknowledge", - "id": "pubsub.projects.subscriptions.acknowledge", - "path": "v1/{+subscription}:acknowledge" - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "subscription" - ], - "response": { - "$ref": "Subscription" - }, - "parameters": { - "subscription": { - "location": "path", - "description": "The name of the subscription to get.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}", - "path": "v1/{+subscription}", - "id": "pubsub.projects.subscriptions.get", - "description": "Gets the configuration details of a subscription." - }, - "testIamPermissions": { - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "pubsub.projects.subscriptions.testIamPermissions" - }, - "modifyPushConfig": { - "httpMethod": "POST", - "parameterOrder": [ - "subscription" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "subscription": { - "location": "path", - "description": "The name of the subscription.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyPushConfig", - "path": "v1/{+subscription}:modifyPushConfig", - "id": "pubsub.projects.subscriptions.modifyPushConfig", - "description": "Modifies the `PushConfig` for a specified subscription.\n\nThis may be used to change a push subscription to a pull one (signified by\nan empty `PushConfig`) or vice versa, or change the endpoint URL and other\nattributes of a push subscription. Messages will accumulate for delivery\ncontinuously through the call regardless of changes to the `PushConfig`.", - "request": { - "$ref": "ModifyPushConfigRequest" - } - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "subscription": { - "location": "path", - "description": "The subscription to delete.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}", - "id": "pubsub.projects.subscriptions.delete", - "path": "v1/{+subscription}", - "description": "Deletes an existing subscription. All messages retained in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription or its topic unless the same topic is specified." - }, - "pull": { - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:pull", - "id": "pubsub.projects.subscriptions.pull", - "path": "v1/{+subscription}:pull", - "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The server may return `UNAVAILABLE` if\nthere are too many concurrent pull requests pending for the given\nsubscription.", - "request": { - "$ref": "PullRequest" - }, - "response": { - "$ref": "PullResponse" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "POST", - "parameters": { - "subscription": { - "location": "path", - "description": "The subscription from which messages should be pulled.\nFormat is `projects/{project}/subscriptions/{sub}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] - }, - "list": { - "description": "Lists matching subscriptions.", - "response": { - "$ref": "ListSubscriptionsResponse" - }, - "parameterOrder": [ - "project" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of subscriptions to return.", - "type": "integer" - }, - "project": { - "description": "The name of the cloud project that subscriptions belong to.\nFormat is `projects/{project}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/projects/{projectsId}/subscriptions", - "id": "pubsub.projects.subscriptions.list", - "path": "v1/{+project}/subscriptions" - }, - "setIamPolicy": { - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}:setIamPolicy", - "id": "pubsub.projects.subscriptions.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy" - }, - "create": { - "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic, conforming\nto the\n[resource name format](https://cloud.google.com/pubsub/docs/overview#names).\nThe generated name is populated in the returned Subscription object.\nNote that for REST API requests, you must specify a name in the request.", - "request": { - "$ref": "Subscription" - }, - "response": { - "$ref": "Subscription" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "parameters": { - "name": { - "location": "path", - "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/subscriptions/{subscriptionsId}", - "id": "pubsub.projects.subscriptions.create", - "path": "v1/{+name}" - } - } - }, - "topics": { - "methods": { - "getIamPolicy": { - "httpMethod": "GET", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "pubsub.projects.topics.getIamPolicy", - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset." - }, - "get": { - "description": "Gets the configuration of a topic.", - "response": { - "$ref": "Topic" - }, - "parameterOrder": [ - "topic" - ], - "httpMethod": "GET", - "parameters": { - "topic": { - "description": "The name of the topic to get.\nFormat is `projects/{project}/topics/{topic}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}", - "id": "pubsub.projects.topics.get", - "path": "v1/{+topic}" - }, - "publish": { - "httpMethod": "POST", - "parameterOrder": [ - "topic" - ], - "response": { - "$ref": "PublishResponse" - }, - "parameters": { - "topic": { - "description": "The messages in the request will be published on this topic.\nFormat is `projects/{project}/topics/{topic}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:publish", - "path": "v1/{+topic}:publish", - "id": "pubsub.projects.topics.publish", - "description": "Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic\ndoes not exist. The message payload must not be empty; it must contain\n either a non-empty data field, or at least one attribute.", - "request": { - "$ref": "PublishRequest" - } - }, - "testIamPermissions": { - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "pubsub.projects.topics.testIamPermissions" - }, - "delete": { - "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "topic" - ], - "httpMethod": "DELETE", - "parameters": { - "topic": { - "description": "Name of the topic to delete.\nFormat is `projects/{project}/topics/{topic}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}", - "id": "pubsub.projects.topics.delete", - "path": "v1/{+topic}" - }, - "list": { - "description": "Lists matching topics.", - "response": { - "$ref": "ListTopicsResponse" - }, - "parameterOrder": [ - "project" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Maximum number of topics to return.", - "type": "integer" - }, - "project": { - "description": "The name of the cloud project that topics belong to.\nFormat is `projects/{project}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.", - "type": "string" - } - }, - "flatPath": "v1/projects/{projectsId}/topics", - "id": "pubsub.projects.topics.list", - "path": "v1/{+project}/topics" - }, - "setIamPolicy": { - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}:setIamPolicy", - "id": "pubsub.projects.topics.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy" - }, - "create": { - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}", - "id": "pubsub.projects.topics.create", - "path": "v1/{+name}", - "request": { - "$ref": "Topic" - }, - "description": "Creates the given topic with the given name.", - "response": { - "$ref": "Topic" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "PUT", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "name": { - "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - } - } - }, - "resources": { - "subscriptions": { - "methods": { - "list": { - "description": "Lists the name of the subscriptions for this topic.", - "response": { - "$ref": "ListTopicSubscriptionsResponse" - }, - "parameterOrder": [ - "topic" - ], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "format": "int32", - "description": "Maximum number of subscription names to return.", - "type": "integer", - "location": "query" - }, - "topic": { - "location": "path", - "description": "The name of the topic that subscriptions are attached to.\nFormat is `projects/{project}/topics/{topic}`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$" - }, - "pageToken": { - "location": "query", - "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1/projects/{projectsId}/topics/{topicsId}/subscriptions", - "id": "pubsub.projects.topics.subscriptions.list", - "path": "v1/{+topic}/subscriptions" - } - } - } - } - } - } - } - }, - "parameters": { - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - } - } + "ownerName": "Google" } diff --git a/vendor/google.golang.org/api/pubsub/v1beta1a/pubsub-api.json b/vendor/google.golang.org/api/pubsub/v1beta1a/pubsub-api.json index 1b97b6e..675da0b 100644 --- a/vendor/google.golang.org/api/pubsub/v1beta1a/pubsub-api.json +++ b/vendor/google.golang.org/api/pubsub/v1beta1a/pubsub-api.json @@ -4,52 +4,19 @@ "resources": { "subscriptions": { "methods": { - "modifyPushConfig": { - "flatPath": "v1beta1a/subscriptions/modifyPushConfig", - "id": "pubsub.subscriptions.modifyPushConfig", - "path": "v1beta1a/subscriptions/modifyPushConfig", - "description": "Modifies the \u003ccode\u003ePushConfig\u003c/code\u003e for a specified subscription.\nThis method can be used to suspend the flow of messages to an endpoint\nby clearing the \u003ccode\u003ePushConfig\u003c/code\u003e field in the request. Messages\nwill be accumulated for delivery even if no push configuration is\ndefined or while the configuration is modified.", - "request": { - "$ref": "ModifyPushConfigRequest" - }, + "delete": { + "description": "Deletes an existing subscription. All pending messages in the subscription\nare immediately dropped. Calls to Pull after deletion will return\nNOT_FOUND.", "response": { "$ref": "Empty" }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] - }, - "pull": { - "request": { - "$ref": "PullRequest" - }, - "description": "Pulls a single message from the server.\nIf return_immediately is true, and no messages are available in the\nsubscription, this method returns FAILED_PRECONDITION. The system is free\nto return an UNAVAILABLE error if no messages are available in a\nreasonable amount of time (to reduce system load).", - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "PullResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": {}, - "flatPath": "v1beta1a/subscriptions/pull", - "path": "v1beta1a/subscriptions/pull", - "id": "pubsub.subscriptions.pull" - }, - "delete": { - "httpMethod": "DELETE", "parameterOrder": [ "subscription" ], - "response": { - "$ref": "Empty" - }, + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], "parameters": { "subscription": { "description": "The subscription to delete.", @@ -59,21 +26,39 @@ "location": "path" } }, + "flatPath": "v1beta1a/subscriptions/{subscriptionsId}", + "id": "pubsub.subscriptions.delete", + "path": "v1beta1a/subscriptions/{+subscription}" + }, + "pull": { + "description": "Pulls a single message from the server.\nIf return_immediately is true, and no messages are available in the\nsubscription, this method returns FAILED_PRECONDITION. The system is free\nto return an UNAVAILABLE error if no messages are available in a\nreasonable amount of time (to reduce system load).", + "request": { + "$ref": "PullRequest" + }, + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "PullResponse" + }, + "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], - "flatPath": "v1beta1a/subscriptions/{subscriptionsId}", - "path": "v1beta1a/subscriptions/{+subscription}", - "id": "pubsub.subscriptions.delete", - "description": "Deletes an existing subscription. All pending messages in the subscription\nare immediately dropped. Calls to Pull after deletion will return\nNOT_FOUND." + "flatPath": "v1beta1a/subscriptions/pull", + "path": "v1beta1a/subscriptions/pull", + "id": "pubsub.subscriptions.pull" }, "list": { - "httpMethod": "GET", "response": { "$ref": "ListSubscriptionsResponse" }, "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], "parameters": { "pageToken": { "location": "query", @@ -87,40 +72,57 @@ "location": "query" }, "query": { - "location": "query", "description": "A valid label query expression.", - "type": "string" + "type": "string", + "location": "query" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], "flatPath": "v1beta1a/subscriptions", - "path": "v1beta1a/subscriptions", "id": "pubsub.subscriptions.list", + "path": "v1beta1a/subscriptions", "description": "Lists matching subscriptions." }, "create": { + "request": { + "$ref": "Subscription" + }, + "description": "Creates a subscription on a given topic for a given subscriber.\nIf the subscription already exists, returns ALREADY_EXISTS.\nIf the corresponding topic doesn't exist, returns NOT_FOUND.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic.", + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "Subscription" }, - "parameterOrder": [], - "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], "parameters": {}, "flatPath": "v1beta1a/subscriptions", - "id": "pubsub.subscriptions.create", "path": "v1beta1a/subscriptions", + "id": "pubsub.subscriptions.create" + }, + "modifyAckDeadline": { + "flatPath": "v1beta1a/subscriptions/modifyAckDeadline", + "id": "pubsub.subscriptions.modifyAckDeadline", + "path": "v1beta1a/subscriptions/modifyAckDeadline", + "description": "Modifies the Ack deadline for a message received from a pull request.", "request": { - "$ref": "Subscription" + "$ref": "ModifyAckDeadlineRequest" }, - "description": "Creates a subscription on a given topic for a given subscriber.\nIf the subscription already exists, returns ALREADY_EXISTS.\nIf the corresponding topic doesn't exist, returns NOT_FOUND.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic." + "response": { + "$ref": "Empty" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ] }, "acknowledge": { + "id": "pubsub.subscriptions.acknowledge", + "path": "v1beta1a/subscriptions/acknowledge", "request": { "$ref": "AcknowledgeRequest" }, @@ -135,62 +137,9 @@ "https://www.googleapis.com/auth/pubsub" ], "parameters": {}, - "flatPath": "v1beta1a/subscriptions/acknowledge", - "id": "pubsub.subscriptions.acknowledge", - "path": "v1beta1a/subscriptions/acknowledge" - }, - "modifyAckDeadline": { - "description": "Modifies the Ack deadline for a message received from a pull request.", - "request": { - "$ref": "ModifyAckDeadlineRequest" - }, - "response": { - "$ref": "Empty" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta1a/subscriptions/modifyAckDeadline", - "id": "pubsub.subscriptions.modifyAckDeadline", - "path": "v1beta1a/subscriptions/modifyAckDeadline" - }, - "get": { - "description": "Gets the configuration details of a subscription.", - "response": { - "$ref": "Subscription" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "subscription": { - "location": "path", - "description": "The name of the subscription to get.", - "type": "string", - "required": true, - "pattern": "^.+$" - } - }, - "flatPath": "v1beta1a/subscriptions/{subscriptionsId}", - "id": "pubsub.subscriptions.get", - "path": "v1beta1a/subscriptions/{+subscription}" + "flatPath": "v1beta1a/subscriptions/acknowledge" }, "pullBatch": { - "id": "pubsub.subscriptions.pullBatch", - "path": "v1beta1a/subscriptions/pullBatch", - "request": { - "$ref": "PullBatchRequest" - }, - "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The system is free to return UNAVAILABLE\nif there are too many pull requests outstanding for the given subscription.", "response": { "$ref": "PullBatchResponse" }, @@ -201,131 +150,64 @@ "https://www.googleapis.com/auth/pubsub" ], "parameters": {}, - "flatPath": "v1beta1a/subscriptions/pullBatch" + "flatPath": "v1beta1a/subscriptions/pullBatch", + "id": "pubsub.subscriptions.pullBatch", + "path": "v1beta1a/subscriptions/pullBatch", + "request": { + "$ref": "PullBatchRequest" + }, + "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The system is free to return UNAVAILABLE\nif there are too many pull requests outstanding for the given subscription." + }, + "get": { + "description": "Gets the configuration details of a subscription.", + "parameterOrder": [ + "subscription" + ], + "response": { + "$ref": "Subscription" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "pattern": "^.+$", + "location": "path", + "description": "The name of the subscription to get.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1a/subscriptions/{subscriptionsId}", + "id": "pubsub.subscriptions.get", + "path": "v1beta1a/subscriptions/{+subscription}" + }, + "modifyPushConfig": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Empty" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta1a/subscriptions/modifyPushConfig", + "path": "v1beta1a/subscriptions/modifyPushConfig", + "id": "pubsub.subscriptions.modifyPushConfig", + "description": "Modifies the \u003ccode\u003ePushConfig\u003c/code\u003e for a specified subscription.\nThis method can be used to suspend the flow of messages to an endpoint\nby clearing the \u003ccode\u003ePushConfig\u003c/code\u003e field in the request. Messages\nwill be accumulated for delivery even if no push configuration is\ndefined or while the configuration is modified.", + "request": { + "$ref": "ModifyPushConfigRequest" + } } } }, "topics": { "methods": { - "publishBatch": { - "description": "Adds one or more messages to the topic. Returns NOT_FOUND if the topic does\nnot exist.", - "request": { - "$ref": "PublishBatchRequest" - }, - "response": { - "$ref": "PublishBatchResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta1a/topics/publishBatch", - "id": "pubsub.topics.publishBatch", - "path": "v1beta1a/topics/publishBatch" - }, - "list": { - "flatPath": "v1beta1a/topics", - "path": "v1beta1a/topics", - "id": "pubsub.topics.list", - "description": "Lists matching topics.", - "httpMethod": "GET", - "response": { - "$ref": "ListTopicsResponse" - }, - "parameterOrder": [], - "parameters": { - "maxResults": { - "format": "int32", - "description": "Maximum number of topics to return.", - "type": "integer", - "location": "query" - }, - "query": { - "location": "query", - "description": "A valid label query expression.", - "type": "string" - }, - "pageToken": { - "location": "query", - "description": "The value obtained in the last \u003ccode\u003eListTopicsResponse\u003c/code\u003e\nfor continuation.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] - }, - "create": { - "description": "Creates the given topic with the given name.", - "request": { - "$ref": "Topic" - }, - "response": { - "$ref": "Topic" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta1a/topics", - "id": "pubsub.topics.create", - "path": "v1beta1a/topics" - }, - "get": { - "flatPath": "v1beta1a/topics/{topicsId}", - "path": "v1beta1a/topics/{+topic}", - "id": "pubsub.topics.get", - "description": "Gets the configuration of a topic. Since the topic only has the name\nattribute, this method is only useful to check the existence of a topic.\nIf other attributes are added in the future, they will be returned here.", - "httpMethod": "GET", - "response": { - "$ref": "Topic" - }, - "parameterOrder": [ - "topic" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "topic": { - "type": "string", - "required": true, - "pattern": "^.+$", - "location": "path", - "description": "The name of the topic to get." - } - } - }, - "publish": { - "request": { - "$ref": "PublishRequest" - }, - "description": "Adds a message to the topic. Returns NOT_FOUND if the topic does not\nexist.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": {}, - "flatPath": "v1beta1a/topics/publish", - "id": "pubsub.topics.publish", - "path": "v1beta1a/topics/publish" - }, "delete": { - "path": "v1beta1a/topics/{+topic}", - "id": "pubsub.topics.delete", "description": "Deletes the topic with the given name. Returns NOT_FOUND if the topic does\nnot exist. After a topic is deleted, a new topic may be created with the\nsame name.", "httpMethod": "DELETE", "parameterOrder": [ @@ -334,10 +216,6 @@ "response": { "$ref": "Empty" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], "parameters": { "topic": { "pattern": "^.+$", @@ -347,58 +225,143 @@ "required": true } }, - "flatPath": "v1beta1a/topics/{topicsId}" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta1a/topics/{topicsId}", + "path": "v1beta1a/topics/{+topic}", + "id": "pubsub.topics.delete" + }, + "publishBatch": { + "flatPath": "v1beta1a/topics/publishBatch", + "path": "v1beta1a/topics/publishBatch", + "id": "pubsub.topics.publishBatch", + "description": "Adds one or more messages to the topic. Returns NOT_FOUND if the topic does\nnot exist.", + "request": { + "$ref": "PublishBatchRequest" + }, + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "PublishBatchResponse" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ] + }, + "list": { + "parameters": { + "pageToken": { + "location": "query", + "description": "The value obtained in the last \u003ccode\u003eListTopicsResponse\u003c/code\u003e\nfor continuation.", + "type": "string" + }, + "maxResults": { + "location": "query", + "format": "int32", + "description": "Maximum number of topics to return.", + "type": "integer" + }, + "query": { + "description": "A valid label query expression.", + "type": "string", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta1a/topics", + "id": "pubsub.topics.list", + "path": "v1beta1a/topics", + "description": "Lists matching topics.", + "response": { + "$ref": "ListTopicsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET" + }, + "create": { + "id": "pubsub.topics.create", + "path": "v1beta1a/topics", + "request": { + "$ref": "Topic" + }, + "description": "Creates the given topic with the given name.", + "response": { + "$ref": "Topic" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": {}, + "flatPath": "v1beta1a/topics" + }, + "get": { + "httpMethod": "GET", + "response": { + "$ref": "Topic" + }, + "parameterOrder": [ + "topic" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "topic": { + "pattern": "^.+$", + "location": "path", + "description": "The name of the topic to get.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1a/topics/{topicsId}", + "path": "v1beta1a/topics/{+topic}", + "id": "pubsub.topics.get", + "description": "Gets the configuration of a topic. Since the topic only has the name\nattribute, this method is only useful to check the existence of a topic.\nIf other attributes are added in the future, they will be returned here." + }, + "publish": { + "httpMethod": "POST", + "parameterOrder": [], + "response": { + "$ref": "Empty" + }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta1a/topics/publish", + "path": "v1beta1a/topics/publish", + "id": "pubsub.topics.publish", + "description": "Adds a message to the topic. Returns NOT_FOUND if the topic does not\nexist.", + "request": { + "$ref": "PublishRequest" + } } } } }, "parameters": { - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "default": "true", - "type": "boolean", - "location": "query", - "description": "Pretty-print response." - }, "bearer_token": { - "location": "query", "description": "OAuth bearer token.", - "type": "string" + "type": "string", + "location": "query" }, "oauth_token": { - "location": "query", "description": "OAuth 2.0 token for the current user.", - "type": "string" + "type": "string", + "location": "query" }, "upload_protocol": { "type": "string", @@ -406,10 +369,10 @@ "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" }, "fields": { "description": "Selector specifying which fields to include in a partial response.", @@ -417,9 +380,9 @@ "location": "query" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { "enumDescriptions": [ @@ -435,9 +398,46 @@ "type": "string" }, "callback": { - "location": "query", "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" } }, "schemas": { @@ -472,11 +472,6 @@ "description": "Request for the PullBatch method.", "type": "object", "properties": { - "maxEvents": { - "format": "int32", - "description": "The maximum number of PubsubEvents returned for this request. The Pub/Sub\nsystem may return fewer than the number of events specified.", - "type": "integer" - }, "subscription": { "description": "The subscription from which messages should be pulled.", "type": "string" @@ -484,14 +479,39 @@ "returnImmediately": { "description": "If this is specified as true the system will respond immediately even if\nit is not able to return a message in the Pull response. Otherwise the\nsystem is allowed to wait until at least one message is available rather\nthan returning no messages. The client may cancel the request if it does\nnot wish to wait any longer for the response.", "type": "boolean" + }, + "maxEvents": { + "format": "int32", + "description": "The maximum number of PubsubEvents returned for this request. The Pub/Sub\nsystem may return fewer than the number of events specified.", + "type": "integer" } }, "id": "PullBatchRequest" }, + "ModifyPushConfigRequest": { + "description": "Request for the ModifyPushConfig method.", + "type": "object", + "properties": { + "subscription": { + "description": "The name of the subscription.", + "type": "string" + }, + "pushConfig": { + "$ref": "PushConfig", + "description": "An empty \u003ccode\u003epush_config\u003c/code\u003e indicates that the Pub/Sub system should\npause pushing messages from the given subscription." + } + }, + "id": "ModifyPushConfigRequest" + }, "PubsubMessage": { "description": "A message data and its labels.", "type": "object", "properties": { + "data": { + "format": "byte", + "description": "The message payload.", + "type": "string" + }, "messageId": { "description": "ID of this message assigned by the server at publication time. Guaranteed\nto be unique within the topic. This value may be read by a subscriber\nthat receives a PubsubMessage via a Pull call or a push delivery. It must\nnot be populated by a publisher in a Publish call.", "type": "string" @@ -507,47 +527,47 @@ "$ref": "Label" }, "type": "array" - }, - "data": { - "format": "byte", - "description": "The message payload.", - "type": "string" } }, "id": "PubsubMessage" }, - "ModifyPushConfigRequest": { - "description": "Request for the ModifyPushConfig method.", + "PullBatchResponse": { + "description": "Response for the PullBatch method.", "type": "object", "properties": { - "pushConfig": { - "description": "An empty \u003ccode\u003epush_config\u003c/code\u003e indicates that the Pub/Sub system should\npause pushing messages from the given subscription.", - "$ref": "PushConfig" - }, - "subscription": { - "description": "The name of the subscription.", - "type": "string" - } - }, - "id": "ModifyPushConfigRequest" - }, - "ListTopicsResponse": { - "id": "ListTopicsResponse", - "description": "Response for the ListTopics method.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If not empty, indicates that there are more topics that match the request,\nand this value should be passed to the next \u003ccode\u003eListTopicsRequest\u003c/code\u003e\nto continue.", - "type": "string" - }, - "topic": { - "description": "The resulting topics.", + "pullResponses": { + "description": "Received Pub/Sub messages or status events. The Pub/Sub system will return\nzero messages if there are no more messages available in the backlog. The\nPub/Sub system may return fewer than the max_events requested even if\nthere are more messages available in the backlog.", "items": { - "$ref": "Topic" + "$ref": "PullResponse" }, "type": "array" } - } + }, + "id": "PullBatchResponse" + }, + "AcknowledgeRequest": { + "description": "Request for the Acknowledge method.", + "type": "object", + "properties": { + "subscription": { + "description": "The subscription whose message is being acknowledged.", + "type": "string" + }, + "ackId": { + "description": "The acknowledgment ID for the message being acknowledged. This was\nreturned by the Pub/Sub system in the Pull response.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "AcknowledgeRequest" + }, + "Empty": { + "description": "An empty message that you can re-use to avoid defining duplicated empty\nmessages in your project. A typical example is to use it as argument or the\nreturn value of a service API. For instance:\n\n service Foo {\n rpc Bar (proto2.Empty) returns (proto2.Empty) { };\n };\n\nBEGIN GOOGLE-INTERNAL\nThe difference between this one and net/rpc/empty-message.proto is that\n1) The generated message here is in proto2 C++ API.\n2) The proto2.Empty has minimum dependencies\n (no message_set or net/rpc dependencies)\nEND GOOGLE-INTERNAL", + "type": "object", + "properties": {}, + "id": "Empty" }, "PublishBatchRequest": { "description": "Request for the PublishBatch method.", @@ -567,45 +587,26 @@ }, "id": "PublishBatchRequest" }, - "AcknowledgeRequest": { - "id": "AcknowledgeRequest", - "description": "Request for the Acknowledge method.", + "ListTopicsResponse": { + "description": "Response for the ListTopics method.", "type": "object", "properties": { - "subscription": { - "description": "The subscription whose message is being acknowledged.", - "type": "string" + "nextPageToken": { + "type": "string", + "description": "If not empty, indicates that there are more topics that match the request,\nand this value should be passed to the next \u003ccode\u003eListTopicsRequest\u003c/code\u003e\nto continue." }, - "ackId": { - "description": "The acknowledgment ID for the message being acknowledged. This was\nreturned by the Pub/Sub system in the Pull response.", + "topic": { + "description": "The resulting topics.", "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "PullBatchResponse": { - "description": "Response for the PullBatch method.", - "type": "object", - "properties": { - "pullResponses": { - "description": "Received Pub/Sub messages or status events. The Pub/Sub system will return\nzero messages if there are no more messages available in the backlog. The\nPub/Sub system may return fewer than the max_events requested even if\nthere are more messages available in the backlog.", - "items": { - "$ref": "PullResponse" + "$ref": "Topic" }, "type": "array" } }, - "id": "PullBatchResponse" - }, - "Empty": { - "id": "Empty", - "description": "An empty message that you can re-use to avoid defining duplicated empty\nmessages in your project. A typical example is to use it as argument or the\nreturn value of a service API. For instance:\n\n service Foo {\n rpc Bar (proto2.Empty) returns (proto2.Empty) { };\n };\n\nBEGIN GOOGLE-INTERNAL\nThe difference between this one and net/rpc/empty-message.proto is that\n1) The generated message here is in proto2 C++ API.\n2) The proto2.Empty has minimum dependencies\n (no message_set or net/rpc dependencies)\nEND GOOGLE-INTERNAL", - "type": "object", - "properties": {} + "id": "ListTopicsResponse" }, "PullResponse": { + "type": "object", "properties": { "ackId": { "description": "This ID must be used to acknowledge the received event or message.", @@ -617,8 +618,7 @@ } }, "id": "PullResponse", - "description": "Either a \u003ccode\u003ePubsubMessage\u003c/code\u003e or a truncation event. One of these two\nmust be populated.", - "type": "object" + "description": "Either a \u003ccode\u003ePubsubMessage\u003c/code\u003e or a truncation event. One of these two\nmust be populated." }, "PushConfig": { "description": "Configuration for a push delivery endpoint.", @@ -632,7 +632,6 @@ "id": "PushConfig" }, "PullRequest": { - "id": "PullRequest", "description": "Request for the Pull method.", "type": "object", "properties": { @@ -644,19 +643,16 @@ "description": "If this is specified as true the system will respond immediately even if\nit is not able to return a message in the Pull response. Otherwise the\nsystem is allowed to wait until at least one message is available rather\nthan returning FAILED_PRECONDITION. The client may cancel the request if\nit does not wish to wait any longer for the response.", "type": "boolean" } - } + }, + "id": "PullRequest" }, "PubsubEvent": { "description": "An event indicating a received message or truncation event.", "type": "object", "properties": { - "subscription": { - "description": "The subscription that received the event.", - "type": "string" - }, "deleted": { - "type": "boolean", - "description": "Indicates that this subscription has been deleted. (Note that pull\nsubscribers will always receive NOT_FOUND in response in their pull\nrequest on the subscription, rather than seeing this boolean.)" + "description": "Indicates that this subscription has been deleted. (Note that pull\nsubscribers will always receive NOT_FOUND in response in their pull\nrequest on the subscription, rather than seeing this boolean.)", + "type": "boolean" }, "truncated": { "description": "Indicates that this subscription has been truncated.", @@ -665,6 +661,10 @@ "message": { "$ref": "PubsubMessage", "description": "A received message." + }, + "subscription": { + "description": "The subscription that received the event.", + "type": "string" } }, "id": "PubsubEvent" @@ -674,11 +674,11 @@ "type": "object", "properties": { "subscription": { - "description": "The subscriptions that match the request.", "items": { "$ref": "Subscription" }, - "type": "array" + "type": "array", + "description": "The subscriptions that match the request." }, "nextPageToken": { "description": "If not empty, indicates that there are more subscriptions that match the\nrequest and this value should be passed to the next\n\u003ccode\u003eListSubscriptionsRequest\u003c/code\u003e to continue.", @@ -688,22 +688,21 @@ "id": "ListSubscriptionsResponse" }, "PublishRequest": { + "description": "Request for the Publish method.", "type": "object", "properties": { + "message": { + "description": "The message to publish.", + "$ref": "PubsubMessage" + }, "topic": { "description": "The message in the request will be published on this topic.", "type": "string" - }, - "message": { - "$ref": "PubsubMessage", - "description": "The message to publish." } }, - "id": "PublishRequest", - "description": "Request for the Publish method." + "id": "PublishRequest" }, "PublishBatchResponse": { - "description": "Response for the PublishBatch method.", "type": "object", "properties": { "messageIds": { @@ -714,47 +713,50 @@ "type": "array" } }, - "id": "PublishBatchResponse" + "id": "PublishBatchResponse", + "description": "Response for the PublishBatch method." }, "Subscription": { "description": "A subscription resource.", "type": "object", "properties": { - "name": { - "description": "Name of the subscription.", - "type": "string" - }, "topic": { "description": "The name of the topic from which this subscription is receiving messages.", "type": "string" }, "pushConfig": { - "description": "If push delivery is used with this subscription, this field is\nused to configure it.", - "$ref": "PushConfig" + "$ref": "PushConfig", + "description": "If push delivery is used with this subscription, this field is\nused to configure it." }, "ackDeadlineSeconds": { + "type": "integer", "format": "int32", - "description": "For either push or pull delivery, the value is the maximum time after a\nsubscriber receives a message before the subscriber should acknowledge or\nNack the message. If the Ack deadline for a message passes without an\nAck or a Nack, the Pub/Sub system will eventually redeliver the message.\nIf a subscriber acknowledges after the deadline, the Pub/Sub system may\naccept the Ack, but it is possible that the message has been already\ndelivered again. Multiple Acks to the message are allowed and will\nsucceed.\n\nFor push delivery, this value is used to set the request timeout for\nthe call to the push endpoint.\n\nFor pull delivery, this value is used as the initial value for the Ack\ndeadline. It may be overridden for each message using its corresponding\nack_id with \u003ccode\u003eModifyAckDeadline\u003c/code\u003e.\nWhile a message is outstanding (i.e. it has been delivered to a pull\nsubscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub\nsystem will not deliver that message to another pull subscriber\n(on a best-effort basis).", - "type": "integer" + "description": "For either push or pull delivery, the value is the maximum time after a\nsubscriber receives a message before the subscriber should acknowledge or\nNack the message. If the Ack deadline for a message passes without an\nAck or a Nack, the Pub/Sub system will eventually redeliver the message.\nIf a subscriber acknowledges after the deadline, the Pub/Sub system may\naccept the Ack, but it is possible that the message has been already\ndelivered again. Multiple Acks to the message are allowed and will\nsucceed.\n\nFor push delivery, this value is used to set the request timeout for\nthe call to the push endpoint.\n\nFor pull delivery, this value is used as the initial value for the Ack\ndeadline. It may be overridden for each message using its corresponding\nack_id with \u003ccode\u003eModifyAckDeadline\u003c/code\u003e.\nWhile a message is outstanding (i.e. it has been delivered to a pull\nsubscriber and the subscriber has not yet Acked or Nacked), the Pub/Sub\nsystem will not deliver that message to another pull subscriber\n(on a best-effort basis)." + }, + "name": { + "description": "Name of the subscription.", + "type": "string" } }, "id": "Subscription" }, "Topic": { - "description": "A topic resource.", "type": "object", "properties": { "name": { - "description": "Name of the topic.", - "type": "string" + "type": "string", + "description": "Name of the topic." } }, - "id": "Topic" + "id": "Topic", + "description": "A topic resource." }, "Label": { - "description": "A key-value pair applied to a given object.", - "type": "object", "properties": { + "strValue": { + "description": "A string value.", + "type": "string" + }, "numValue": { "format": "int64", "description": "An integer value.", @@ -763,18 +765,16 @@ "key": { "description": "The key of a label is a syntactically valid URL (as per RFC 1738) with\nthe \"scheme\" and initial slashes omitted and with the additional\nrestrictions noted below. Each key should be globally unique. The\n\"host\" portion is called the \"namespace\" and is not necessarily\nresolvable to a network endpoint. Instead, the namespace indicates what\nsystem or entity defines the semantics of the label. Namespaces do not\nrestrict the set of objects to which a label may be associated.\n\nKeys are defined by the following grammar:\n\n key = hostname \"/\" kpath\n kpath = ksegment *[ \"/\" ksegment ]\n ksegment = alphadigit | *[ alphadigit | \"-\" | \"_\" | \".\" ]\n\nwhere \"hostname\" and \"alphadigit\" are defined as in RFC 1738.\n\nExample key:\n spanner.google.com/universe", "type": "string" - }, - "strValue": { - "description": "A string value.", - "type": "string" } }, - "id": "Label" + "id": "Label", + "description": "A key-value pair applied to a given object.", + "type": "object" } }, "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, "protocol": "rest", "version": "v1beta1a", @@ -783,11 +783,11 @@ "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, "https://www.googleapis.com/auth/pubsub": { "description": "View and manage Pub/Sub topics and subscriptions" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" } } } @@ -800,8 +800,8 @@ "ownerDomain": "google.com", "name": "pubsub", "batchPath": "batch", - "revision": "20170814", - "documentationLink": "https://cloud.google.com/pubsub/docs", "id": "pubsub:v1beta1a", + "documentationLink": "https://cloud.google.com/pubsub/docs", + "revision": "20170814", "title": "Google Cloud Pub/Sub API" } diff --git a/vendor/google.golang.org/api/pubsub/v1beta2/pubsub-api.json b/vendor/google.golang.org/api/pubsub/v1beta2/pubsub-api.json index 826f8de..19296c6 100644 --- a/vendor/google.golang.org/api/pubsub/v1beta2/pubsub-api.json +++ b/vendor/google.golang.org/api/pubsub/v1beta2/pubsub-api.json @@ -1,469 +1,4 @@ { - "parameters": { - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "type": "string", - "location": "query", - "description": "OAuth 2.0 token for the current user." - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "type": "string", - "location": "query", - "description": "Selector specifying which fields to include in a partial response." - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - } - }, - "schemas": { - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - } - }, - "id": "SetIamPolicyRequest" - }, - "ModifyPushConfigRequest": { - "description": "Request for the ModifyPushConfig method.", - "type": "object", - "properties": { - "pushConfig": { - "description": "The push configuration for future deliveries.\n\nAn empty `pushConfig` indicates that the Pub/Sub system should\nstop pushing messages from the given subscription and allow\nmessages to be pulled and acknowledged - effectively pausing\nthe subscription if `Pull` is not called.", - "$ref": "PushConfig" - } - }, - "id": "ModifyPushConfigRequest" - }, - "PubsubMessage": { - "type": "object", - "properties": { - "messageId": { - "description": "ID of this message, assigned by the server when the message is published.\nGuaranteed to be unique within the topic. This value may be read by a\nsubscriber that receives a `PubsubMessage` via a `Pull` call or a push\ndelivery. It must not be populated by the publisher in a `Publish` call.", - "type": "string" - }, - "attributes": { - "description": "Optional attributes for this message.", - "type": "object", - "additionalProperties": { - "type": "string" - } - }, - "publishTime": { - "format": "google-datetime", - "description": "The time at which the message was published, populated by the server when\nit receives the `Publish` call. It must not be populated by the\npublisher in a `Publish` call.", - "type": "string" - }, - "data": { - "format": "byte", - "description": "The message payload. For JSON requests, the value of this field must be\n[base64-encoded](https://tools.ietf.org/html/rfc4648).", - "type": "string" - } - }, - "id": "PubsubMessage", - "description": "A message data and its attributes. The message payload must not be empty;\nit must contain either a non-empty data field, or at least one attribute." - }, - "Binding": { - "description": "Associates `members` with a `role`.", - "type": "object", - "properties": { - "members": { - "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", - "items": { - "type": "string" - }, - "type": "array" - }, - "role": { - "type": "string", - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired" - } - }, - "id": "Binding" - }, - "Empty": { - "type": "object", - "properties": {}, - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." - }, - "AcknowledgeRequest": { - "description": "Request for the Acknowledge method.", - "type": "object", - "properties": { - "ackIds": { - "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "AcknowledgeRequest" - }, - "ListTopicsResponse": { - "description": "Response for the `ListTopics` method.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.", - "type": "string" - }, - "topics": { - "description": "The resulting topics.", - "items": { - "$ref": "Topic" - }, - "type": "array" - } - }, - "id": "ListTopicsResponse" - }, - "ListTopicSubscriptionsResponse": { - "type": "object", - "properties": { - "nextPageToken": { - "description": "If not empty, indicates that there may be more subscriptions that match\nthe request; this value should be passed in a new\n`ListTopicSubscriptionsRequest` to get more subscriptions.", - "type": "string" - }, - "subscriptions": { - "description": "The names of the subscriptions that match the request.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ListTopicSubscriptionsResponse", - "description": "Response for the `ListTopicSubscriptions` method." - }, - "PullResponse": { - "description": "Response for the `Pull` method.", - "type": "object", - "properties": { - "receivedMessages": { - "description": "Received Pub/Sub messages. The Pub/Sub system will return zero messages if\nthere are no more available in the backlog. The Pub/Sub system may return\nfewer than the `maxMessages` requested even if there are more messages\navailable in the backlog.", - "items": { - "$ref": "ReceivedMessage" - }, - "type": "array" - } - }, - "id": "PullResponse" - }, - "ReceivedMessage": { - "description": "A message and its corresponding acknowledgment ID.", - "type": "object", - "properties": { - "message": { - "$ref": "PubsubMessage", - "description": "The message." - }, - "ackId": { - "description": "This ID can be used to acknowledge the received message.", - "type": "string" - } - }, - "id": "ReceivedMessage" - }, - "PushConfig": { - "properties": { - "attributes": { - "additionalProperties": { - "type": "string" - }, - "description": "Endpoint configuration attributes.\n\nEvery endpoint has a set of API supported attributes that can be used to\ncontrol different aspects of the message delivery.\n\nThe currently supported attribute is `x-goog-version`, which you can\nuse to change the format of the push message. This attribute\nindicates the version of the data expected by the endpoint. This\ncontrols the shape of the envelope (i.e. its fields and metadata).\nThe endpoint version is based on the version of the Pub/Sub\nAPI.\n\nIf not present during the `CreateSubscription` call, it will default to\nthe version of the API used to make such call. If not present during a\n`ModifyPushConfig` call, its value will not be changed. `GetSubscription`\ncalls will always return a valid version, even if the subscription was\ncreated without this attribute.\n\nThe possible values for this attribute are:\n\n* `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.\n* `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.", - "type": "object" - }, - "pushEndpoint": { - "description": "A URL locating the endpoint to which messages should be pushed.\nFor example, a Webhook endpoint might use \"https://example.com/push\".", - "type": "string" - } - }, - "id": "PushConfig", - "description": "Configuration for a push delivery endpoint.", - "type": "object" - }, - "TestIamPermissionsResponse": { - "description": "Response message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsResponse" - }, - "PullRequest": { - "description": "Request for the `Pull` method.", - "type": "object", - "properties": { - "maxMessages": { - "format": "int32", - "description": "The maximum number of messages returned for this request. The Pub/Sub\nsystem may return fewer than the number specified.", - "type": "integer" - }, - "returnImmediately": { - "description": "If this is specified as true the system will respond immediately even if\nit is not able to return a message in the `Pull` response. Otherwise the\nsystem is allowed to wait until at least one message is available rather\nthan returning no messages. The client may cancel the request if it does\nnot wish to wait any longer for the response.", - "type": "boolean" - } - }, - "id": "PullRequest" - }, - "ListSubscriptionsResponse": { - "id": "ListSubscriptionsResponse", - "description": "Response for the `ListSubscriptions` method.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "If not empty, indicates that there may be more subscriptions that match\nthe request; this value should be passed in a new\n`ListSubscriptionsRequest` to get more subscriptions.", - "type": "string" - }, - "subscriptions": { - "description": "The subscriptions that match the request.", - "items": { - "$ref": "Subscription" - }, - "type": "array" - } - } - }, - "PublishRequest": { - "type": "object", - "properties": { - "messages": { - "description": "The messages to publish.", - "items": { - "$ref": "PubsubMessage" - }, - "type": "array" - } - }, - "id": "PublishRequest", - "description": "Request for the Publish method." - }, - "PublishResponse": { - "type": "object", - "properties": { - "messageIds": { - "description": "The server-assigned ID of each published message, in the same order as\nthe messages in the request. IDs are guaranteed to be unique within\nthe topic.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "PublishResponse", - "description": "Response for the `Publish` method." - }, - "Subscription": { - "id": "Subscription", - "description": "A subscription resource.", - "type": "object", - "properties": { - "ackDeadlineSeconds": { - "format": "int32", - "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using pull.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.\n\nIf this parameter is 0, a default value of 10 seconds is used.", - "type": "integer" - }, - "name": { - "type": "string", - "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`." - }, - "topic": { - "description": "The name of the topic from which this subscription is receiving messages.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.", - "type": "string" - }, - "pushConfig": { - "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods.", - "$ref": "PushConfig" - } - } - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, - "Policy": { - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object", - "properties": { - "etag": { - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", - "type": "string" - }, - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, - "bindings": { - "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", - "items": { - "$ref": "Binding" - }, - "type": "array" - } - }, - "id": "Policy" - }, - "Topic": { - "description": "A topic resource.", - "type": "object", - "properties": { - "name": { - "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.", - "type": "string" - } - }, - "id": "Topic" - }, - "ModifyAckDeadlineRequest": { - "description": "Request for the ModifyAckDeadline method.", - "type": "object", - "properties": { - "ackIds": { - "description": "List of acknowledgment IDs.", - "items": { - "type": "string" - }, - "type": "array" - }, - "ackId": { - "description": "The acknowledgment ID. Either this or ack_ids must be populated, but not\nboth.", - "type": "string" - }, - "ackDeadlineSeconds": { - "format": "int32", - "description": "The new ack deadline with respect to the time this request was sent to\nthe Pub/Sub system. Must be \u003e= 0. For example, if the value is 10, the new\nack deadline will expire 10 seconds after the `ModifyAckDeadline` call\nwas made. Specifying zero may immediately make the message available for\nanother pull request.", - "type": "integer" - } - }, - "id": "ModifyAckDeadlineRequest" - } - }, - "protocol": "rest", - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, - "version": "v1beta2", - "baseUrl": "https://pubsub.googleapis.com/", - "canonicalName": "Pubsub", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/pubsub": { - "description": "View and manage Pub/Sub topics and subscriptions" - } - } - } - }, - "servicePath": "", - "description": "Provides reliable, many-to-many, asynchronous messaging between applications.\n", - "kind": "discovery#restDescription", - "rootUrl": "https://pubsub.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "pubsub", - "batchPath": "batch", - "id": "pubsub:v1beta2", - "documentationLink": "https://cloud.google.com/pubsub/docs", - "revision": "20170814", - "title": "Google Cloud Pub/Sub API", "discoveryVersion": "v1", "ownerName": "Google", "resources": { @@ -471,18 +6,130 @@ "resources": { "subscriptions": { "methods": { - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "httpMethod": "POST", + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", "parameterOrder": [ "resource" ], + "response": { + "$ref": "Policy" + }, + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "resource": { + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field." + } + }, + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:getIamPolicy", + "id": "pubsub.projects.subscriptions.getIamPolicy", + "path": "v1beta2/{+resource}:getIamPolicy" + }, + "modifyAckDeadline": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "POST", + "parameters": { + "subscription": { + "description": "The name of the subscription.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyAckDeadline", + "id": "pubsub.projects.subscriptions.modifyAckDeadline", + "path": "v1beta2/{+subscription}:modifyAckDeadline", + "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.", + "request": { + "$ref": "ModifyAckDeadlineRequest" + } + }, + "acknowledge": { + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:acknowledge", + "id": "pubsub.projects.subscriptions.acknowledge", + "path": "v1beta2/{+subscription}:acknowledge", + "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error.", + "request": { + "$ref": "AcknowledgeRequest" + }, + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "POST", + "parameters": { + "subscription": { + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path", + "description": "The subscription whose message is being acknowledged.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ] + }, + "get": { + "description": "Gets the configuration details of a subscription.", + "response": { + "$ref": "Subscription" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "GET", + "parameters": { + "subscription": { + "location": "path", + "description": "The name of the subscription to get.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}", + "id": "pubsub.projects.subscriptions.get", + "path": "v1beta2/{+subscription}" + }, + "testIamPermissions": { + "id": "pubsub.projects.subscriptions.testIamPermissions", + "path": "v1beta2/{+resource}:testIamPermissions", + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, "response": { "$ref": "TestIamPermissionsResponse" }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", "parameters": { "resource": { "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", @@ -496,9 +143,7 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:testIamPermissions", - "path": "v1beta2/{+resource}:testIamPermissions", - "id": "pubsub.projects.subscriptions.testIamPermissions" + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:testIamPermissions" }, "modifyPushConfig": { "response": { @@ -514,11 +159,11 @@ ], "parameters": { "subscription": { + "location": "path", "description": "The name of the subscription.", "type": "string", "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path" + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" } }, "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyPushConfig", @@ -529,6 +174,32 @@ }, "description": "Modifies the `PushConfig` for a specified subscription.\n\nThis may be used to change a push subscription to a pull one (signified by\nan empty `PushConfig`) or vice versa, or change the endpoint URL and other\nattributes of a push subscription. Messages will accumulate for delivery\ncontinuously through the call regardless of changes to the `PushConfig`." }, + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "subscription" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "parameters": { + "subscription": { + "location": "path", + "description": "The subscription to delete.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$" + } + }, + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}", + "id": "pubsub.projects.subscriptions.delete", + "path": "v1beta2/{+subscription}", + "description": "Deletes an existing subscription. All pending messages in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription, or its topic unless the same topic is specified." + }, "pull": { "description": "Pulls messages from the server. Returns an empty list if there are no\nmessages available in the backlog. The server may return `UNAVAILABLE` if\nthere are too many concurrent pull requests pending for the given\nsubscription.", "request": { @@ -558,34 +229,7 @@ "id": "pubsub.projects.subscriptions.pull", "path": "v1beta2/{+subscription}:pull" }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "subscription" - ], - "httpMethod": "DELETE", - "parameters": { - "subscription": { - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path", - "description": "The subscription to delete.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}", - "id": "pubsub.projects.subscriptions.delete", - "path": "v1beta2/{+subscription}", - "description": "Deletes an existing subscription. All pending messages in the subscription\nare immediately dropped. Calls to `Pull` after deletion will return\n`NOT_FOUND`. After a subscription is deleted, a new one may be created with\nthe same name, but the new one has no association with the old\nsubscription, or its topic unless the same topic is specified." - }, "list": { - "flatPath": "v1beta2/projects/{projectsId}/subscriptions", "id": "pubsub.projects.subscriptions.list", "path": "v1beta2/{+project}/subscriptions", "description": "Lists matching subscriptions.", @@ -602,16 +246,16 @@ ], "parameters": { "project": { - "pattern": "^projects/[^/]+$", "location": "path", "description": "The name of the cloud project that subscriptions belong to.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+$" }, "pageToken": { + "location": "query", "description": "The value returned by the last `ListSubscriptionsResponse`; indicates that\nthis is a continuation of a prior `ListSubscriptions` call, and that the\nsystem should return the next page of data.", - "type": "string", - "location": "query" + "type": "string" }, "pageSize": { "location": "query", @@ -619,38 +263,42 @@ "description": "Maximum number of subscriptions to return.", "type": "integer" } - } + }, + "flatPath": "v1beta2/projects/{projectsId}/subscriptions" }, "create": { - "id": "pubsub.projects.subscriptions.create", - "path": "v1beta2/{+name}", - "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic. Note that\nfor REST API requests, you must specify a name.", "request": { "$ref": "Subscription" }, - "response": { - "$ref": "Subscription" - }, + "description": "Creates a subscription to a given topic.\nIf the subscription already exists, returns `ALREADY_EXISTS`.\nIf the corresponding topic doesn't exist, returns `NOT_FOUND`.\n\nIf the name is not provided in the request, the server will assign a random\nname for this subscription on the same project as the topic. Note that\nfor REST API requests, you must specify a name.", + "httpMethod": "PUT", "parameterOrder": [ "name" ], - "httpMethod": "PUT", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path", - "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", - "type": "string", - "required": true - } + "response": { + "$ref": "Subscription" }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}" + "parameters": { + "name": { + "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}", + "path": "v1beta2/{+name}", + "id": "pubsub.projects.subscriptions.create" }, "setIamPolicy": { + "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:setIamPolicy", + "id": "pubsub.projects.subscriptions.setIamPolicy", + "path": "v1beta2/{+resource}:setIamPolicy", "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", "request": { "$ref": "SetIamPolicyRequest" @@ -674,126 +322,138 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:setIamPolicy", - "id": "pubsub.projects.subscriptions.setIamPolicy", - "path": "v1beta2/{+resource}:setIamPolicy" - }, - "acknowledge": { + ] + } + } + }, + "topics": { + "methods": { + "testIamPermissions": { + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", "httpMethod": "POST", "parameterOrder": [ - "subscription" + "resource" ], "response": { - "$ref": "Empty" + "$ref": "TestIamPermissionsResponse" }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], "parameters": { - "subscription": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "resource": { + "pattern": "^projects/[^/]+/topics/[^/]+$", "location": "path", - "description": "The subscription whose message is being acknowledged." + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true } }, - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:acknowledge", - "path": "v1beta2/{+subscription}:acknowledge", - "id": "pubsub.projects.subscriptions.acknowledge", - "request": { - "$ref": "AcknowledgeRequest" - }, - "description": "Acknowledges the messages associated with the `ack_ids` in the\n`AcknowledgeRequest`. The Pub/Sub system can remove the relevant messages\nfrom the subscription.\n\nAcknowledging a message whose ack deadline has expired may succeed,\nbut such a message may be redelivered later. Acknowledging a message more\nthan once will not result in an error." + "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:testIamPermissions", + "path": "v1beta2/{+resource}:testIamPermissions", + "id": "pubsub.projects.topics.testIamPermissions" }, - "modifyAckDeadline": { - "httpMethod": "POST", - "parameterOrder": [ - "subscription" - ], + "delete": { + "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}", + "id": "pubsub.projects.topics.delete", + "path": "v1beta2/{+topic}", + "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.", "response": { "$ref": "Empty" }, + "parameterOrder": [ + "topic" + ], + "httpMethod": "DELETE", "parameters": { - "subscription": { + "topic": { "type": "string", "required": true, - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", + "pattern": "^projects/[^/]+/topics/[^/]+$", "location": "path", - "description": "The name of the subscription." + "description": "Name of the topic to delete." } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:modifyAckDeadline", - "path": "v1beta2/{+subscription}:modifyAckDeadline", - "id": "pubsub.projects.subscriptions.modifyAckDeadline", - "description": "Modifies the ack deadline for a specific message. This method is useful\nto indicate that more time is needed to process a message by the\nsubscriber, or to make the message available for redelivery if the\nprocessing was interrupted. Note that this does not modify the\nsubscription-level `ackDeadlineSeconds` used for subsequent messages.", - "request": { - "$ref": "ModifyAckDeadlineRequest" - } + ] }, - "getIamPolicy": { - "path": "v1beta2/{+resource}:getIamPolicy", - "id": "pubsub.projects.subscriptions.getIamPolicy", - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "list": { + "response": { + "$ref": "ListTopicsResponse" + }, + "parameterOrder": [ + "project" + ], "httpMethod": "GET", + "parameters": { + "pageToken": { + "location": "query", + "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.", + "type": "string" + }, + "pageSize": { + "type": "integer", + "location": "query", + "format": "int32", + "description": "Maximum number of topics to return." + }, + "project": { + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The name of the cloud project that topics belong to.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], + "flatPath": "v1beta2/projects/{projectsId}/topics", + "id": "pubsub.projects.topics.list", + "path": "v1beta2/{+project}/topics", + "description": "Lists matching topics." + }, + "setIamPolicy": { "response": { "$ref": "Policy" }, "parameterOrder": [ "resource" ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/pubsub" + ], "parameters": { "resource": { - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}:getIamPolicy" + "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:setIamPolicy", + "id": "pubsub.projects.topics.setIamPolicy", + "path": "v1beta2/{+resource}:setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy." }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "subscription" - ], - "response": { - "$ref": "Subscription" - }, - "parameters": { - "subscription": { - "pattern": "^projects/[^/]+/subscriptions/[^/]+$", - "location": "path", - "description": "The name of the subscription to get.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/subscriptions/{subscriptionsId}", - "path": "v1beta2/{+subscription}", - "id": "pubsub.projects.subscriptions.get", - "description": "Gets the configuration details of a subscription." - } - } - }, - "topics": { - "methods": { "create": { + "request": { + "$ref": "Topic" + }, + "description": "Creates the given topic with the given name.", "response": { "$ref": "Topic" }, @@ -816,44 +476,9 @@ }, "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}", "id": "pubsub.projects.topics.create", - "path": "v1beta2/{+name}", - "request": { - "$ref": "Topic" - }, - "description": "Creates the given topic with the given name." - }, - "setIamPolicy": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:setIamPolicy", - "path": "v1beta2/{+resource}:setIamPolicy", - "id": "pubsub.projects.topics.setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy." + "path": "v1beta2/{+name}" }, "getIamPolicy": { - "path": "v1beta2/{+resource}:getIamPolicy", - "id": "pubsub.projects.topics.getIamPolicy", "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", "httpMethod": "GET", "parameterOrder": [ @@ -875,49 +500,48 @@ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], - "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:getIamPolicy" + "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:getIamPolicy", + "path": "v1beta2/{+resource}:getIamPolicy", + "id": "pubsub.projects.topics.getIamPolicy" }, "get": { - "response": { - "$ref": "Topic" - }, + "httpMethod": "GET", "parameterOrder": [ "topic" ], - "httpMethod": "GET", + "response": { + "$ref": "Topic" + }, + "parameters": { + "topic": { + "pattern": "^projects/[^/]+/topics/[^/]+$", + "location": "path", + "description": "The name of the topic to get.", + "type": "string", + "required": true + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" ], - "parameters": { - "topic": { - "description": "The name of the topic to get.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}", - "id": "pubsub.projects.topics.get", "path": "v1beta2/{+topic}", + "id": "pubsub.projects.topics.get", "description": "Gets the configuration of a topic." }, "publish": { - "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:publish", - "id": "pubsub.projects.topics.publish", - "path": "v1beta2/{+topic}:publish", "description": "Adds one or more messages to the topic. Returns `NOT_FOUND` if the topic\ndoes not exist. The message payload must not be empty; it must contain\n either a non-empty data field, or at least one attribute.", "request": { "$ref": "PublishRequest" }, - "response": { - "$ref": "PublishResponse" - }, + "httpMethod": "POST", "parameterOrder": [ "topic" ], - "httpMethod": "POST", + "response": { + "$ref": "PublishResponse" + }, "parameters": { "topic": { "pattern": "^projects/[^/]+/topics/[^/]+$", @@ -930,114 +554,29 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/pubsub" - ] - }, - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ], - "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:testIamPermissions", - "id": "pubsub.projects.topics.testIamPermissions", - "path": "v1beta2/{+resource}:testIamPermissions" - }, - "delete": { - "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}", - "path": "v1beta2/{+topic}", - "id": "pubsub.projects.topics.delete", - "description": "Deletes the topic with the given name. Returns `NOT_FOUND` if the topic\ndoes not exist. After a topic is deleted, a new topic may be created with\nthe same name; this is an entirely new topic with none of the old\nconfiguration or subscriptions. Existing subscriptions to this topic are\nnot deleted, but their `topic` field is set to `_deleted-topic_`.", - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "topic" - ], - "parameters": { - "topic": { - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path", - "description": "Name of the topic to delete.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] - }, - "list": { - "flatPath": "v1beta2/projects/{projectsId}/topics", - "path": "v1beta2/{+project}/topics", - "id": "pubsub.projects.topics.list", - "description": "Lists matching topics.", - "httpMethod": "GET", - "response": { - "$ref": "ListTopicsResponse" - }, - "parameterOrder": [ - "project" - ], - "parameters": { - "pageToken": { - "description": "The value returned by the last `ListTopicsResponse`; indicates that this is\na continuation of a prior `ListTopics` call, and that the system should\nreturn the next page of data.", - "type": "string", - "location": "query" - }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Maximum number of topics to return." - }, - "project": { - "description": "The name of the cloud project that topics belong to.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/pubsub" - ] + "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}:publish", + "path": "v1beta2/{+topic}:publish", + "id": "pubsub.projects.topics.publish" } }, "resources": { "subscriptions": { "methods": { "list": { - "description": "Lists the name of the subscriptions for this topic.", "httpMethod": "GET", - "parameterOrder": [ - "topic" - ], "response": { "$ref": "ListTopicSubscriptionsResponse" }, + "parameterOrder": [ + "topic" + ], "parameters": { + "pageToken": { + "location": "query", + "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.", + "type": "string" + }, "pageSize": { "location": "query", "format": "int32", @@ -1045,16 +584,11 @@ "type": "integer" }, "topic": { + "location": "path", "description": "The name of the topic that subscriptions are attached to.", "type": "string", "required": true, - "pattern": "^projects/[^/]+/topics/[^/]+$", - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "The value returned by the last `ListTopicSubscriptionsResponse`; indicates\nthat this is a continuation of a prior `ListTopicSubscriptions` call, and\nthat the system should return the next page of data.", - "type": "string" + "pattern": "^projects/[^/]+/topics/[^/]+$" } }, "scopes": [ @@ -1063,7 +597,8 @@ ], "flatPath": "v1beta2/projects/{projectsId}/topics/{topicsId}/subscriptions", "path": "v1beta2/{+topic}/subscriptions", - "id": "pubsub.projects.topics.subscriptions.list" + "id": "pubsub.projects.topics.subscriptions.list", + "description": "Lists the name of the subscriptions for this topic." } } } @@ -1071,5 +606,470 @@ } } } - } + }, + "parameters": { + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Pretty-print response." + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "type": "string", + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "callback": { + "type": "string", + "location": "query", + "description": "JSONP" + }, + "alt": { + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + } + }, + "schemas": { + "PublishResponse": { + "description": "Response for the `Publish` method.", + "type": "object", + "properties": { + "messageIds": { + "description": "The server-assigned ID of each published message, in the same order as\nthe messages in the request. IDs are guaranteed to be unique within\nthe topic.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "PublishResponse" + }, + "Subscription": { + "description": "A subscription resource.", + "type": "object", + "properties": { + "ackDeadlineSeconds": { + "type": "integer", + "format": "int32", + "description": "This value is the maximum time after a subscriber receives a message\nbefore the subscriber should acknowledge the message. After message\ndelivery but before the ack deadline expires and before the message is\nacknowledged, it is an outstanding message and will not be delivered\nagain during that time (on a best-effort basis).\n\nFor pull subscriptions, this value is used as the initial value for the ack\ndeadline. To override this value for a given message, call\n`ModifyAckDeadline` with the corresponding `ack_id` if using pull.\nThe maximum custom deadline you can specify is 600 seconds (10 minutes).\n\nFor push delivery, this value is also used to set the request timeout for\nthe call to the push endpoint.\n\nIf the subscriber never acknowledges the message, the Pub/Sub\nsystem will eventually redeliver the message.\n\nIf this parameter is 0, a default value of 10 seconds is used." + }, + "name": { + "description": "The name of the subscription. It must have the format\n`\"projects/{project}/subscriptions/{subscription}\"`. `{subscription}` must\nstart with a letter, and contain only letters (`[A-Za-z]`), numbers\n(`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`), tildes (`~`),\nplus (`+`) or percent signs (`%`). It must be between 3 and 255 characters\nin length, and it must not start with `\"goog\"`.", + "type": "string" + }, + "topic": { + "description": "The name of the topic from which this subscription is receiving messages.\nThe value of this field will be `_deleted-topic_` if the topic has been\ndeleted.", + "type": "string" + }, + "pushConfig": { + "$ref": "PushConfig", + "description": "If push delivery is used with this subscription, this field is\nused to configure it. An empty `pushConfig` signifies that the subscriber\nwill pull and ack messages using API methods." + } + }, + "id": "Subscription" + }, + "TestIamPermissionsRequest": { + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest", + "description": "Request message for `TestIamPermissions` method.", + "type": "object" + }, + "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", + "properties": { + "bindings": { + "description": "Associates a list of `members` to a `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "Binding" + }, + "type": "array" + }, + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + } + }, + "id": "Policy" + }, + "Topic": { + "description": "A topic resource.", + "type": "object", + "properties": { + "name": { + "description": "The name of the topic. It must have the format\n`\"projects/{project}/topics/{topic}\"`. `{topic}` must start with a letter,\nand contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),\nunderscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent\nsigns (`%`). It must be between 3 and 255 characters in length, and it\nmust not start with `\"goog\"`.", + "type": "string" + } + }, + "id": "Topic" + }, + "ModifyAckDeadlineRequest": { + "description": "Request for the ModifyAckDeadline method.", + "type": "object", + "properties": { + "ackId": { + "description": "The acknowledgment ID. Either this or ack_ids must be populated, but not\nboth.", + "type": "string" + }, + "ackDeadlineSeconds": { + "format": "int32", + "description": "The new ack deadline with respect to the time this request was sent to\nthe Pub/Sub system. Must be \u003e= 0. For example, if the value is 10, the new\nack deadline will expire 10 seconds after the `ModifyAckDeadline` call\nwas made. Specifying zero may immediately make the message available for\nanother pull request.", + "type": "integer" + }, + "ackIds": { + "description": "List of acknowledgment IDs.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ModifyAckDeadlineRequest" + }, + "SetIamPolicyRequest": { + "type": "object", + "properties": { + "policy": { + "$ref": "Policy", + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." + } + }, + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method." + }, + "ModifyPushConfigRequest": { + "description": "Request for the ModifyPushConfig method.", + "type": "object", + "properties": { + "pushConfig": { + "$ref": "PushConfig", + "description": "The push configuration for future deliveries.\n\nAn empty `pushConfig` indicates that the Pub/Sub system should\nstop pushing messages from the given subscription and allow\nmessages to be pulled and acknowledged - effectively pausing\nthe subscription if `Pull` is not called." + } + }, + "id": "ModifyPushConfigRequest" + }, + "PubsubMessage": { + "description": "A message data and its attributes. The message payload must not be empty;\nit must contain either a non-empty data field, or at least one attribute.", + "type": "object", + "properties": { + "messageId": { + "description": "ID of this message, assigned by the server when the message is published.\nGuaranteed to be unique within the topic. This value may be read by a\nsubscriber that receives a `PubsubMessage` via a `Pull` call or a push\ndelivery. It must not be populated by the publisher in a `Publish` call.", + "type": "string" + }, + "attributes": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional attributes for this message.", + "type": "object" + }, + "publishTime": { + "format": "google-datetime", + "description": "The time at which the message was published, populated by the server when\nit receives the `Publish` call. It must not be populated by the\npublisher in a `Publish` call.", + "type": "string" + }, + "data": { + "format": "byte", + "description": "The message payload. For JSON requests, the value of this field must be\n[base64-encoded](https://tools.ietf.org/html/rfc4648).", + "type": "string" + } + }, + "id": "PubsubMessage" + }, + "Binding": { + "description": "Associates `members` with a `role`.", + "type": "object", + "properties": { + "members": { + "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "role": { + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", + "type": "string" + } + }, + "id": "Binding" + }, + "AcknowledgeRequest": { + "description": "Request for the Acknowledge method.", + "type": "object", + "properties": { + "ackIds": { + "description": "The acknowledgment ID for the messages being acknowledged that was returned\nby the Pub/Sub system in the `Pull` response. Must not be empty.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "AcknowledgeRequest" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "ListTopicsResponse": { + "properties": { + "nextPageToken": { + "description": "If not empty, indicates that there may be more topics that match the\nrequest; this value should be passed in a new `ListTopicsRequest`.", + "type": "string" + }, + "topics": { + "description": "The resulting topics.", + "items": { + "$ref": "Topic" + }, + "type": "array" + } + }, + "id": "ListTopicsResponse", + "description": "Response for the `ListTopics` method.", + "type": "object" + }, + "ListTopicSubscriptionsResponse": { + "description": "Response for the `ListTopicSubscriptions` method.", + "type": "object", + "properties": { + "subscriptions": { + "description": "The names of the subscriptions that match the request.", + "items": { + "type": "string" + }, + "type": "array" + }, + "nextPageToken": { + "type": "string", + "description": "If not empty, indicates that there may be more subscriptions that match\nthe request; this value should be passed in a new\n`ListTopicSubscriptionsRequest` to get more subscriptions." + } + }, + "id": "ListTopicSubscriptionsResponse" + }, + "PullResponse": { + "description": "Response for the `Pull` method.", + "type": "object", + "properties": { + "receivedMessages": { + "items": { + "$ref": "ReceivedMessage" + }, + "type": "array", + "description": "Received Pub/Sub messages. The Pub/Sub system will return zero messages if\nthere are no more available in the backlog. The Pub/Sub system may return\nfewer than the `maxMessages` requested even if there are more messages\navailable in the backlog." + } + }, + "id": "PullResponse" + }, + "ReceivedMessage": { + "id": "ReceivedMessage", + "description": "A message and its corresponding acknowledgment ID.", + "type": "object", + "properties": { + "ackId": { + "description": "This ID can be used to acknowledge the received message.", + "type": "string" + }, + "message": { + "$ref": "PubsubMessage", + "description": "The message." + } + } + }, + "PushConfig": { + "description": "Configuration for a push delivery endpoint.", + "type": "object", + "properties": { + "attributes": { + "description": "Endpoint configuration attributes.\n\nEvery endpoint has a set of API supported attributes that can be used to\ncontrol different aspects of the message delivery.\n\nThe currently supported attribute is `x-goog-version`, which you can\nuse to change the format of the push message. This attribute\nindicates the version of the data expected by the endpoint. This\ncontrols the shape of the envelope (i.e. its fields and metadata).\nThe endpoint version is based on the version of the Pub/Sub\nAPI.\n\nIf not present during the `CreateSubscription` call, it will default to\nthe version of the API used to make such call. If not present during a\n`ModifyPushConfig` call, its value will not be changed. `GetSubscription`\ncalls will always return a valid version, even if the subscription was\ncreated without this attribute.\n\nThe possible values for this attribute are:\n\n* `v1beta1`: uses the push format defined in the v1beta1 Pub/Sub API.\n* `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub API.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "pushEndpoint": { + "description": "A URL locating the endpoint to which messages should be pushed.\nFor example, a Webhook endpoint might use \"https://example.com/push\".", + "type": "string" + } + }, + "id": "PushConfig" + }, + "TestIamPermissionsResponse": { + "description": "Response message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse" + }, + "PullRequest": { + "description": "Request for the `Pull` method.", + "type": "object", + "properties": { + "returnImmediately": { + "description": "If this is specified as true the system will respond immediately even if\nit is not able to return a message in the `Pull` response. Otherwise the\nsystem is allowed to wait until at least one message is available rather\nthan returning no messages. The client may cancel the request if it does\nnot wish to wait any longer for the response.", + "type": "boolean" + }, + "maxMessages": { + "format": "int32", + "description": "The maximum number of messages returned for this request. The Pub/Sub\nsystem may return fewer than the number specified.", + "type": "integer" + } + }, + "id": "PullRequest" + }, + "ListSubscriptionsResponse": { + "description": "Response for the `ListSubscriptions` method.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If not empty, indicates that there may be more subscriptions that match\nthe request; this value should be passed in a new\n`ListSubscriptionsRequest` to get more subscriptions.", + "type": "string" + }, + "subscriptions": { + "description": "The subscriptions that match the request.", + "items": { + "$ref": "Subscription" + }, + "type": "array" + } + }, + "id": "ListSubscriptionsResponse" + }, + "PublishRequest": { + "description": "Request for the Publish method.", + "type": "object", + "properties": { + "messages": { + "description": "The messages to publish.", + "items": { + "$ref": "PubsubMessage" + }, + "type": "array" + } + }, + "id": "PublishRequest" + } + }, + "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "version": "v1beta2", + "baseUrl": "https://pubsub.googleapis.com/", + "canonicalName": "Pubsub", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/pubsub": { + "description": "View and manage Pub/Sub topics and subscriptions" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + } + } + } + }, + "servicePath": "", + "description": "Provides reliable, many-to-many, asynchronous messaging between applications.\n", + "kind": "discovery#restDescription", + "rootUrl": "https://pubsub.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "pubsub", + "batchPath": "batch", + "revision": "20170814", + "documentationLink": "https://cloud.google.com/pubsub/docs", + "id": "pubsub:v1beta2", + "title": "Google Cloud Pub/Sub API" } diff --git a/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-api.json b/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-api.json index 50bb231..580b4b1 100644 --- a/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-api.json +++ b/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-api.json @@ -1,28 +1,19 @@ { + "discoveryVersion": "v1", "version_module": true, "schemas": { - "CancelOperationRequest": { - "id": "CancelOperationRequest", - "description": "The request message for Operations.CancelOperation.", - "type": "object", - "properties": {} - }, "Status": { "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, "details": { "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "type": "object" }, "type": "array" }, @@ -30,31 +21,18 @@ "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" } }, "id": "Status" }, "Operation": { - "id": "Operation", "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, "done": { "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", "type": "boolean" @@ -66,23 +44,40 @@ }, "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" } - } + }, + "id": "Operation" }, "ListOperationsResponse": { "description": "The response message for Operations.ListOperations.", "type": "object", "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, "operations": { "description": "A list of operations that matches the specified filter in the request.", "items": { "$ref": "Operation" }, "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" } }, "id": "ListOperationsResponse" @@ -92,22 +87,28 @@ "type": "object", "properties": {}, "id": "Empty" + }, + "CancelOperationRequest": { + "properties": {}, + "id": "CancelOperationRequest", + "description": "The request message for Operations.CancelOperation.", + "type": "object" } }, + "protocol": "rest", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" }, - "protocol": "rest", "canonicalName": "Cloud RuntimeConfig", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloudruntimeconfig": { - "description": "Manage your Google Cloud Platform services' runtime configuration" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloudruntimeconfig": { + "description": "Manage your Google Cloud Platform services' runtime configuration" } } } @@ -121,88 +122,14 @@ "resources": { "operations": { "methods": { - "delete": { - "path": "v1/{+name}", - "id": "runtimeconfig.operations.delete", - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", - "httpMethod": "DELETE", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "name": { - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true, - "pattern": "^operations/.+$", - "location": "path" - } - }, - "flatPath": "v1/operations/{operationsId}" - }, - "list": { - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "name": { - "pattern": "^operations$", - "location": "path", - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - }, - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1/operations", - "id": "runtimeconfig.operations.list", - "path": "v1/{+name}", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." - }, "cancel": { - "path": "v1/{+name}:cancel", - "id": "runtimeconfig.operations.cancel", - "request": { - "$ref": "CancelOperationRequest" - }, - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], "response": { "$ref": "Empty" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloudruntimeconfig" @@ -216,27 +143,127 @@ "location": "path" } }, - "flatPath": "v1/operations/{operationsId}:cancel" + "flatPath": "v1/operations/{operationsId}:cancel", + "id": "runtimeconfig.operations.cancel", + "path": "v1/{+name}:cancel", + "request": { + "$ref": "CancelOperationRequest" + }, + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." + }, + "delete": { + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "name": { + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^operations/.+$", + "location": "path" + } + }, + "flatPath": "v1/operations/{operationsId}", + "id": "runtimeconfig.operations.delete", + "path": "v1/{+name}", + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`." + }, + "list": { + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^operations$", + "location": "path" + } + }, + "flatPath": "v1/operations", + "id": "runtimeconfig.operations.list", + "path": "v1/{+name}", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." } } } }, "parameters": { - "prettyPrint": { + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { "location": "query", - "description": "Returns response with indentations and line breaks.", + "description": "Pretty-print response.", "default": "true", "type": "boolean" }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, "fields": { "location": "query", "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "callback": { "location": "query", @@ -244,8 +271,6 @@ "type": "string" }, "$.xgafv": { - "description": "V1 error format.", - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -254,7 +279,9 @@ "enum": [ "1", "2" - ] + ], + "description": "V1 error format.", + "type": "string" }, "alt": { "enum": [ @@ -272,51 +299,24 @@ "description": "Data format for response.", "default": "json" }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, "access_token": { "location": "query", "description": "OAuth access token.", "type": "string" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" } }, "version": "v1", "baseUrl": "https://runtimeconfig.googleapis.com/", - "servicePath": "", "kind": "discovery#restDescription", "description": "The Runtime Configurator allows you to dynamically configure and expose variables through Google Cloud Platform. In addition, you can also set Watchers and Waiters that will watch for changes to your data and return based on certain conditions.", + "servicePath": "", "basePath": "", - "documentationLink": "https://cloud.google.com/deployment-manager/runtime-configurator/", "revision": "20170816", - "id": "runtimeconfig:v1", - "discoveryVersion": "v1" + "documentationLink": "https://cloud.google.com/deployment-manager/runtime-configurator/", + "id": "runtimeconfig:v1" } diff --git a/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-gen.go b/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-gen.go index 4dcb473..66028c9 100644 --- a/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-gen.go +++ b/vendor/google.golang.org/api/runtimeconfig/v1/runtimeconfig-gen.go @@ -153,8 +153,8 @@ func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) { type Operation struct { // Done: If the value is `false`, it means the operation is still in // progress. - // If true, the operation is completed, and either `error` or `response` - // is + // If `true`, the operation is completed, and either `error` or + // `response` is // available. Done bool `json:"done,omitempty"` diff --git a/vendor/google.golang.org/api/runtimeconfig/v1beta1/runtimeconfig-api.json b/vendor/google.golang.org/api/runtimeconfig/v1beta1/runtimeconfig-api.json index 7e73d38..a7f36fd 100644 --- a/vendor/google.golang.org/api/runtimeconfig/v1beta1/runtimeconfig-api.json +++ b/vendor/google.golang.org/api/runtimeconfig/v1beta1/runtimeconfig-api.json @@ -1,173 +1,33 @@ { "schemas": { - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - } - }, - "id": "SetIamPolicyRequest" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "Status" - }, - "Binding": { - "description": "Associates `members` with a `role`.", - "type": "object", - "properties": { - "members": { - "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", - "items": { - "type": "string" - }, - "type": "array" - }, - "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" - } - }, - "id": "Binding" - }, - "Empty": { - "type": "object", - "properties": {}, - "id": "Empty", - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." - }, - "Cardinality": { - "description": "A Cardinality condition for the Waiter resource. A cardinality condition is\nmet when the number of variables under a specified path prefix reaches a\npredefined number. For example, if you set a Cardinality condition where\nthe `path` is set to `/foo` and the number of paths is set to 2, the\nfollowing variables would meet the condition in a RuntimeConfig resource:\n\n+ `/foo/variable1 = \"value1\"`\n+ `/foo/variable2 = \"value2\"`\n+ `/bar/variable3 = \"value3\"`\n\nIt would not would not satisify the same condition with the `number` set to\n3, however, because there is only 2 paths that start with `/foo`.\nCardinality conditions are recursive; all subtrees under the specific\npath prefix are counted.", - "type": "object", - "properties": { - "number": { - "format": "int32", - "description": "The number variables under the `path` that must exist to meet this\ncondition. Defaults to 1 if not specified.", - "type": "integer" - }, - "path": { - "description": "The root of the variable subtree to monitor. For example, `/foo`.", - "type": "string" - } - }, - "id": "Cardinality" - }, - "ListConfigsResponse": { - "id": "ListConfigsResponse", - "description": "`ListConfigs()` returns the following response. The order of returned\nobjects is arbitrary; that is, it is not ordered in any particular way.", - "type": "object", - "properties": { - "configs": { - "items": { - "$ref": "RuntimeConfig" - }, - "type": "array", - "description": "A list of the configurations in the project. The order of returned\nobjects is arbitrary; that is, it is not ordered in any particular way." - }, - "nextPageToken": { - "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results", - "type": "string" - } - } - }, - "EndCondition": { - "description": "The condition that a Waiter resource is waiting for.", - "type": "object", - "properties": { - "cardinality": { - "$ref": "Cardinality", - "description": "The cardinality of the `EndCondition`." - } - }, - "id": "EndCondition" - }, - "TestIamPermissionsResponse": { - "id": "TestIamPermissionsResponse", - "description": "Response message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", - "items": { - "type": "string" - }, - "type": "array" - } - } - }, - "ListVariablesResponse": { - "properties": { - "variables": { - "description": "A list of variables and their values. The order of returned variable\nobjects is arbitrary.", - "items": { - "$ref": "Variable" - }, - "type": "array" - }, - "nextPageToken": { - "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results", - "type": "string" - } - }, - "id": "ListVariablesResponse", - "description": "Response for the `ListVariables()` method.", - "type": "object" - }, "RuntimeConfig": { - "description": "A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig\nservice. A RuntimeConfig resource consists of metadata and a hierarchy of\nvariables.", - "type": "object", "properties": { - "name": { - "description": "The resource name of a runtime config. The name must have the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an\narbitrary name that matches RFC 1035 segment specification. The length of\n`[CONFIG_NAME]` must be less than 64 bytes.\n\nYou pick the RuntimeConfig resource name, but the server will validate that\nthe name adheres to this format. After you create the resource, you cannot\nchange the resource's name.", - "type": "string" - }, "description": { "description": "An optional description of the RuntimeConfig object.", "type": "string" + }, + "name": { + "description": "The resource name of a runtime config. The name must have the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, and `[CONFIG_NAME]` is an\narbitrary name that matches RFC 1035 segment specification. The length of\n`[CONFIG_NAME]` must be less than 64 bytes.\n\nYou pick the RuntimeConfig resource name, but the server will validate that\nthe name adheres to this format. After you create the resource, you cannot\nchange the resource's name.", + "type": "string" } }, - "id": "RuntimeConfig" + "id": "RuntimeConfig", + "description": "A RuntimeConfig resource is the primary resource in the Cloud RuntimeConfig\nservice. A RuntimeConfig resource consists of metadata and a hierarchy of\nvariables.", + "type": "object" }, "WatchVariableRequest": { - "description": "Request for the `WatchVariable()` method.", - "type": "object", "properties": { "newerThan": { - "type": "string", "format": "google-datetime", - "description": "If specified, checks the current timestamp of the variable and if the\ncurrent timestamp is newer than `newerThan` timestamp, the method returns\nimmediately.\n\nIf not specified or the variable has an older timestamp, the watcher waits\nfor a the value to change before returning." + "description": "If specified, checks the current timestamp of the variable and if the\ncurrent timestamp is newer than `newerThan` timestamp, the method returns\nimmediately.\n\nIf not specified or the variable has an older timestamp, the watcher waits\nfor a the value to change before returning.", + "type": "string" } }, - "id": "WatchVariableRequest" + "id": "WatchVariableRequest", + "description": "Request for the `WatchVariable()` method.", + "type": "object" }, "ListWaitersResponse": { - "type": "object", "properties": { "nextPageToken": { "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results", @@ -182,7 +42,45 @@ } }, "id": "ListWaitersResponse", - "description": "Response for the `ListWaiters()` method.\nOrder of returned waiter objects is arbitrary." + "description": "Response for the `ListWaiters()` method.\nOrder of returned waiter objects is arbitrary.", + "type": "object" + }, + "Waiter": { + "properties": { + "error": { + "description": "[Output Only] If the waiter ended due to a failure or timeout, this value\nwill be set.", + "$ref": "Status" + }, + "failure": { + "description": "[Optional] The failure condition of this waiter. If this condition is met,\n`done` will be set to `true` and the `error` code will be set to `ABORTED`.\nThe failure condition takes precedence over the success condition. If both\nconditions are met, a failure will be indicated. This value is optional; if\nno failure condition is set, the only failure scenario will be a timeout.", + "$ref": "EndCondition" + }, + "success": { + "$ref": "EndCondition", + "description": "[Required] The success condition. If this condition is met, `done` will be\nset to `true` and the `error` value will remain unset. The failure condition\ntakes precedence over the success condition. If both conditions are met, a\nfailure will be indicated." + }, + "done": { + "description": "[Output Only] If the value is `false`, it means the waiter is still waiting\nfor one of its conditions to be met.\n\nIf true, the waiter has finished. If the waiter finished due to a timeout\nor failure, `error` will be set.", + "type": "boolean" + }, + "createTime": { + "format": "google-datetime", + "description": "[Output Only] The instant at which this Waiter resource was created. Adding\nthe value of `timeout` to this instant yields the timeout deadline for the\nwaiter.", + "type": "string" + }, + "timeout": { + "format": "google-duration", + "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from\nthe instant that `waiters().create` method is called. If this time elapses\nbefore the success or failure conditions are met, the waiter fails and sets\nthe `error` code to `DEADLINE_EXCEEDED`.", + "type": "string" + }, + "name": { + "description": "The name of the Waiter resource, in the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]\n\nThe `[PROJECT_ID]` must be a valid Google Cloud project ID,\nthe `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the\n`[WAITER_NAME]` must match RFC 1035 segment specification, and the length\nof `[WAITER_NAME]` must be less than 64 bytes.\n\nAfter you create a Waiter resource, you cannot change the resource name.", + "type": "string" + } + }, + "id": "Waiter", + "description": "A Waiter resource waits for some end condition within a RuntimeConfig resource\nto be met before it returns. For example, assume you have a distributed\nsystem where each node writes to a Variable resource indidicating the node's\nreadiness as part of the startup process.\n\nYou then configure a Waiter resource with the success condition set to wait\nuntil some number of nodes have checked in. Afterwards, your application\nruns some arbitrary code after the condition has been met and the waiter\nreturns successfully.\n\nOnce created, a Waiter resource is immutable.\n\nTo learn more about using waiters, read the\n[Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter)\ndocumentation.", + "type": "object" }, "TestIamPermissionsRequest": { "description": "Request message for `TestIamPermissions` method.", @@ -198,82 +96,6 @@ }, "id": "TestIamPermissionsRequest" }, - "Waiter": { - "id": "Waiter", - "description": "A Waiter resource waits for some end condition within a RuntimeConfig resource\nto be met before it returns. For example, assume you have a distributed\nsystem where each node writes to a Variable resource indidicating the node's\nreadiness as part of the startup process.\n\nYou then configure a Waiter resource with the success condition set to wait\nuntil some number of nodes have checked in. Afterwards, your application\nruns some arbitrary code after the condition has been met and the waiter\nreturns successfully.\n\nOnce created, a Waiter resource is immutable.\n\nTo learn more about using waiters, read the\n[Creating a Waiter](/deployment-manager/runtime-configurator/creating-a-waiter)\ndocumentation.", - "type": "object", - "properties": { - "error": { - "description": "[Output Only] If the waiter ended due to a failure or timeout, this value\nwill be set.", - "$ref": "Status" - }, - "failure": { - "description": "[Optional] The failure condition of this waiter. If this condition is met,\n`done` will be set to `true` and the `error` code will be set to `ABORTED`.\nThe failure condition takes precedence over the success condition. If both\nconditions are met, a failure will be indicated. This value is optional; if\nno failure condition is set, the only failure scenario will be a timeout.", - "$ref": "EndCondition" - }, - "success": { - "$ref": "EndCondition", - "description": "[Required] The success condition. If this condition is met, `done` will be\nset to `true` and the `error` value will remain unset. The failure condition\ntakes precedence over the success condition. If both conditions are met, a\nfailure will be indicated." - }, - "createTime": { - "format": "google-datetime", - "description": "[Output Only] The instant at which this Waiter resource was created. Adding\nthe value of `timeout` to this instant yields the timeout deadline for the\nwaiter.", - "type": "string" - }, - "done": { - "description": "[Output Only] If the value is `false`, it means the waiter is still waiting\nfor one of its conditions to be met.\n\nIf true, the waiter has finished. If the waiter finished due to a timeout\nor failure, `error` will be set.", - "type": "boolean" - }, - "timeout": { - "type": "string", - "format": "google-duration", - "description": "[Required] Specifies the timeout of the waiter in seconds, beginning from\nthe instant that `waiters().create` method is called. If this time elapses\nbefore the success or failure conditions are met, the waiter fails and sets\nthe `error` code to `DEADLINE_EXCEEDED`." - }, - "name": { - "description": "The name of the Waiter resource, in the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]\n\nThe `[PROJECT_ID]` must be a valid Google Cloud project ID,\nthe `[CONFIG_NAME]` must be a valid RuntimeConfig resource, the\n`[WAITER_NAME]` must match RFC 1035 segment specification, and the length\nof `[WAITER_NAME]` must be less than 64 bytes.\n\nAfter you create a Waiter resource, you cannot change the resource name.", - "type": "string" - } - } - }, - "Variable": { - "description": "Describes a single variable within a RuntimeConfig resource.\nThe name denotes the hierarchical variable name. For example,\n`ports/serving_port` is a valid variable name. The variable value is an\nopaque string and only leaf variables can have values (that is, variables\nthat do not have any child variables).", - "type": "object", - "properties": { - "state": { - "enum": [ - "VARIABLE_STATE_UNSPECIFIED", - "UPDATED", - "DELETED" - ], - "description": "[Ouput only] The current state of the variable. The variable state indicates\nthe outcome of the `variables().watch` call and is visible through the\n`get` and `list` calls.", - "type": "string", - "enumDescriptions": [ - "Default variable state.", - "The variable was updated, while `variables().watch` was executing.", - "The variable was deleted, while `variables().watch` was executing." - ] - }, - "updateTime": { - "format": "google-datetime", - "description": "[Output Only] The time of the last variable update.", - "type": "string" - }, - "name": { - "description": "The name of the variable resource, in the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a\nvalid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system\nfile path naming.\n\nThe `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and\ndashes. Slashes are used as path element separators and are not part of the\n`[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one\nnon-slash character. Multiple slashes are coalesced into single slash\ncharacter. Each path segment should follow RFC 1035 segment specification.\nThe length of a `[VARIABLE_NAME]` must be less than 256 bytes.\n\nOnce you create a variable, you cannot change the variable name.", - "type": "string" - }, - "text": { - "description": "The string value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. For example,\n`text: \"my text value\"`. The string must be valid UTF-8.", - "type": "string" - }, - "value": { - "type": "string", - "format": "byte", - "description": "The binary value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. The value must be\nbase64 encoded. Only one of `value` or `text` can be set." - } - }, - "id": "Variable" - }, "Policy": { "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", "type": "object", @@ -298,29 +120,52 @@ }, "id": "Policy" }, + "Variable": { + "properties": { + "state": { + "enumDescriptions": [ + "Default variable state.", + "The variable was updated, while `variables().watch` was executing.", + "The variable was deleted, while `variables().watch` was executing." + ], + "enum": [ + "VARIABLE_STATE_UNSPECIFIED", + "UPDATED", + "DELETED" + ], + "description": "[Ouput only] The current state of the variable. The variable state indicates\nthe outcome of the `variables().watch` call and is visible through the\n`get` and `list` calls.", + "type": "string" + }, + "updateTime": { + "format": "google-datetime", + "description": "[Output Only] The time of the last variable update.", + "type": "string" + }, + "name": { + "description": "The name of the variable resource, in the format:\n\n projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]\n\nThe `[PROJECT_ID]` must be a valid project ID, `[CONFIG_NAME]` must be a\nvalid RuntimeConfig reource and `[VARIABLE_NAME]` follows Unix file system\nfile path naming.\n\nThe `[VARIABLE_NAME]` can contain ASCII letters, numbers, slashes and\ndashes. Slashes are used as path element separators and are not part of the\n`[VARIABLE_NAME]` itself, so `[VARIABLE_NAME]` must contain at least one\nnon-slash character. Multiple slashes are coalesced into single slash\ncharacter. Each path segment should follow RFC 1035 segment specification.\nThe length of a `[VARIABLE_NAME]` must be less than 256 bytes.\n\nOnce you create a variable, you cannot change the variable name.", + "type": "string" + }, + "text": { + "description": "The string value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. For example,\n`text: \"my text value\"`. The string must be valid UTF-8.", + "type": "string" + }, + "value": { + "format": "byte", + "description": "The binary value of the variable. The length of the value must be less\nthan 4096 bytes. Empty values are also accepted. The value must be\nbase64 encoded. Only one of `value` or `text` can be set.", + "type": "string" + } + }, + "id": "Variable", + "description": "Describes a single variable within a RuntimeConfig resource.\nThe name denotes the hierarchical variable name. For example,\n`ports/serving_port` is a valid variable name. The variable value is an\nopaque string and only leaf variables can have values (that is, variables\nthat do not have any child variables).", + "type": "object" + }, "Operation": { "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { - "done": { - "type": "boolean", - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable." - }, - "response": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`." - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" }, "metadata": { "additionalProperties": { @@ -329,16 +174,171 @@ }, "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", "type": "object" + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" } }, "id": "Operation" + }, + "SetIamPolicyRequest": { + "description": "Request message for `SetIamPolicy` method.", + "type": "object", + "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" + } + }, + "id": "SetIamPolicyRequest" + }, + "Status": { + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object" + }, + "Binding": { + "description": "Associates `members` with a `role`.", + "type": "object", + "properties": { + "members": { + "description": "Specifies the identities requesting access for a Cloud Platform resource.\n`members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is\n on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone\n who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google\n account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service\n account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group.\n For example, `admins@example.com`.\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the\n users of that domain. For example, `google.com` or `example.com`.\n\n", + "items": { + "type": "string" + }, + "type": "array" + }, + "role": { + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", + "type": "string" + } + }, + "id": "Binding" + }, + "Cardinality": { + "properties": { + "number": { + "format": "int32", + "description": "The number variables under the `path` that must exist to meet this\ncondition. Defaults to 1 if not specified.", + "type": "integer" + }, + "path": { + "description": "The root of the variable subtree to monitor. For example, `/foo`.", + "type": "string" + } + }, + "id": "Cardinality", + "description": "A Cardinality condition for the Waiter resource. A cardinality condition is\nmet when the number of variables under a specified path prefix reaches a\npredefined number. For example, if you set a Cardinality condition where\nthe `path` is set to `/foo` and the number of paths is set to 2, the\nfollowing variables would meet the condition in a RuntimeConfig resource:\n\n+ `/foo/variable1 = \"value1\"`\n+ `/foo/variable2 = \"value2\"`\n+ `/bar/variable3 = \"value3\"`\n\nIt would not would not satisify the same condition with the `number` set to\n3, however, because there is only 2 paths that start with `/foo`.\nCardinality conditions are recursive; all subtrees under the specific\npath prefix are counted.", + "type": "object" + }, + "Empty": { + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" + }, + "ListConfigsResponse": { + "description": "`ListConfigs()` returns the following response. The order of returned\nobjects is arbitrary; that is, it is not ordered in any particular way.", + "type": "object", + "properties": { + "configs": { + "description": "A list of the configurations in the project. The order of returned\nobjects is arbitrary; that is, it is not ordered in any particular way.", + "items": { + "$ref": "RuntimeConfig" + }, + "type": "array" + }, + "nextPageToken": { + "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results", + "type": "string" + } + }, + "id": "ListConfigsResponse" + }, + "EndCondition": { + "description": "The condition that a Waiter resource is waiting for.", + "type": "object", + "properties": { + "cardinality": { + "$ref": "Cardinality", + "description": "The cardinality of the `EndCondition`." + } + }, + "id": "EndCondition" + }, + "TestIamPermissionsResponse": { + "description": "Response message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse" + }, + "ListVariablesResponse": { + "description": "Response for the `ListVariables()` method.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "This token allows you to get the next page of results for list requests.\nIf the number of results is larger than `pageSize`, use the `nextPageToken`\nas a value for the query parameter `pageToken` in the next list request.\nSubsequent list requests will have their own `nextPageToken` to continue\npaging through the results", + "type": "string" + }, + "variables": { + "description": "A list of variables and their values. The order of returned variable\nobjects is arbitrary.", + "items": { + "$ref": "Variable" + }, + "type": "array" + } + }, + "id": "ListVariablesResponse" } }, + "protocol": "rest", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" }, - "protocol": "rest", "canonicalName": "Cloud RuntimeConfig", "auth": { "oauth2": { @@ -362,617 +362,122 @@ "projects": { "resources": { "configs": { - "methods": { - "setIamPolicy": { - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:setIamPolicy", - "id": "runtimeconfig.projects.configs.setIamPolicy", - "path": "v1beta1/{+resource}:setIamPolicy", - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - } - }, - "create": { - "response": { - "$ref": "RuntimeConfig" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "requestId": { - "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", - "type": "string", - "location": "query" - }, - "parent": { - "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs", - "id": "runtimeconfig.projects.configs.create", - "path": "v1beta1/{+parent}/configs", - "description": "Creates a new RuntimeConfig resource. The configuration name must be\nunique within project.", - "request": { - "$ref": "RuntimeConfig" - } - }, - "getIamPolicy": { - "httpMethod": "GET", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field." - } - }, - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:getIamPolicy", - "path": "v1beta1/{+resource}:getIamPolicy", - "id": "runtimeconfig.projects.configs.getIamPolicy", - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset." - }, - "get": { - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}", - "path": "v1beta1/{+name}", - "id": "runtimeconfig.projects.configs.get", - "description": "Gets information about a RuntimeConfig resource.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "RuntimeConfig" - }, - "parameters": { - "name": { - "location": "path", - "description": "The name of the RuntimeConfig resource to retrieve, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ] - }, - "update": { - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}", - "path": "v1beta1/{+name}", - "id": "runtimeconfig.projects.configs.update", - "description": "Updates a RuntimeConfig resource. The configuration must exist beforehand.", - "request": { - "$ref": "RuntimeConfig" - }, - "httpMethod": "PUT", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "RuntimeConfig" - }, - "parameters": { - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path", - "description": "The name of the RuntimeConfig resource to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ] - }, - "testIamPermissions": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:testIamPermissions", - "path": "v1beta1/{+resource}:testIamPermissions", - "id": "runtimeconfig.projects.configs.testIamPermissions", - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - } - }, - "delete": { - "description": "Deletes a RuntimeConfig resource.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "name": { - "location": "path", - "description": "The RuntimeConfig resource to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$" - } - }, - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}", - "id": "runtimeconfig.projects.configs.delete", - "path": "v1beta1/{+name}" - }, - "list": { - "description": "Lists all the RuntimeConfig resources within project.", - "httpMethod": "GET", - "response": { - "$ref": "ListConfigsResponse" - }, - "parameterOrder": [ - "parent" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.", - "type": "string", - "required": true - }, - "pageToken": { - "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.", - "type": "integer", - "location": "query" - } - }, - "flatPath": "v1beta1/projects/{projectsId}/configs", - "path": "v1beta1/{+parent}/configs", - "id": "runtimeconfig.projects.configs.list" - } - }, "resources": { - "variables": { - "methods": { - "create": { - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables", - "id": "runtimeconfig.projects.configs.variables.create", - "path": "v1beta1/{+parent}/variables", - "request": { - "$ref": "Variable" - }, - "description": "Creates a variable within the given configuration. You cannot create\na variable with a name that is a prefix of an existing variable name, or a\nname that has an existing variable name as a prefix.\n\nTo learn more about creating a variable, read the\n[Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)\ndocumentation.", - "response": { - "$ref": "Variable" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "requestId": { - "location": "query", - "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", - "type": "string" - }, - "parent": { - "location": "path", - "description": "The path to the RutimeConfig resource that this variable should belong to.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$" - } - } - }, - "get": { - "id": "runtimeconfig.projects.configs.variables.get", - "path": "v1beta1/{+name}", - "description": "Gets information about a single variable.", - "response": { - "$ref": "Variable" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", - "location": "path", - "description": "The name of the variable to return, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}" - }, - "watch": { - "description": "Watches a specific variable and waits for a change in the variable's value.\nWhen there is a change, this method returns the new value or times out.\n\nIf a variable is deleted while being watched, the `variableState` state is\nset to `DELETED` and the method returns the last known variable `value`.\n\nIf you set the deadline for watching to a larger value than internal timeout\n(60 seconds), the current variable value is returned and the `variableState`\nwill be `VARIABLE_STATE_UNSPECIFIED`.\n\nTo learn more about creating a watcher, read the\n[Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)\ndocumentation.", - "request": { - "$ref": "WatchVariableRequest" - }, - "response": { - "$ref": "Variable" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", - "location": "path", - "description": "The name of the variable to watch, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}:watch", - "id": "runtimeconfig.projects.configs.variables.watch", - "path": "v1beta1/{+name}:watch" - }, - "update": { - "request": { - "$ref": "Variable" - }, - "description": "Updates an existing variable with a new value.", - "httpMethod": "PUT", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Variable" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "name": { - "location": "path", - "description": "The name of the variable to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$" - } - }, - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}", - "path": "v1beta1/{+name}", - "id": "runtimeconfig.projects.configs.variables.update" - }, - "testIamPermissions": { - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}:testIamPermissions", - "id": "runtimeconfig.projects.configs.variables.testIamPermissions", - "path": "v1beta1/{+resource}:testIamPermissions" - }, - "delete": { - "id": "runtimeconfig.projects.configs.variables.delete", - "path": "v1beta1/{+name}", - "description": "Deletes a variable or multiple variables.\n\nIf you specify a variable name, then that variable is deleted. If you\nspecify a prefix and `recursive` is true, then all variables with that\nprefix are deleted. You must set a `recursive` to true if you delete\nvariables by prefix.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "parameters": { - "recursive": { - "location": "query", - "description": "Set to `true` to recursively delete multiple variables with the same\nprefix.", - "type": "boolean" - }, - "name": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", - "location": "path", - "description": "The name of the variable to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`" - } - }, - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}" - }, - "list": { - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables", - "id": "runtimeconfig.projects.configs.variables.list", - "path": "v1beta1/{+parent}/variables", - "description": "Lists variables within given a configuration, matching any provided filters.\nThis only lists variable names, not the values, unless `return_values` is\ntrue, in which case only variables that user has IAM permission to GetVariable\nwill be returned.", - "response": { - "$ref": "ListVariablesResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "returnValues": { - "description": "The flag indicates whether the user wants to return values of variables.\nIf true, then only those variables that user has IAM GetVariable permission\nwill be returned along with their values.", - "type": "boolean", - "location": "query" - }, - "pageToken": { - "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", - "type": "string", - "location": "query" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.", - "type": "integer" - }, - "parent": { - "description": "The path to the RuntimeConfig resource for which you want to list variables.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path" - }, - "filter": { - "description": "Filters variables by matching the specified filter. For example:\n\n`projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ] - } - } - }, "waiters": { "methods": { - "create": { - "description": "Creates a Waiter resource. This operation returns a long-running Operation\nresource which can be polled for completion. However, a waiter with the\ngiven name will exist (and can be retrieved) prior to the operation\ncompleting. If the operation fails, the failed Waiter resource will\nstill exist and must be deleted prior to subsequent creation attempts.", - "request": { - "$ref": "Waiter" - }, - "httpMethod": "POST", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "Operation" - }, - "parameters": { - "requestId": { - "location": "query", - "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", - "type": "string" - }, - "parent": { - "description": "The path to the configuration that will own the waiter.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ], - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters", - "path": "v1beta1/{+parent}/waiters", - "id": "runtimeconfig.projects.configs.waiters.create" - }, - "testIamPermissions": { - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters/{waitersId}:testIamPermissions", - "path": "v1beta1/{+resource}:testIamPermissions", - "id": "runtimeconfig.projects.configs.waiters.testIamPermissions", - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$", - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field." - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloudruntimeconfig" - ] - }, "delete": { - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], + "description": "Deletes the waiter with the specified name.", "response": { "$ref": "Empty" }, - "parameters": { - "name": { - "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$", - "location": "path", - "description": "The Waiter resource to delete, in the format:\n\n `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`", - "type": "string", - "required": true - } - }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloudruntimeconfig" ], + "parameters": { + "name": { + "description": "The Waiter resource to delete, in the format:\n\n `projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$", + "location": "path" + } + }, "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters/{waitersId}", - "path": "v1beta1/{+name}", "id": "runtimeconfig.projects.configs.waiters.delete", - "description": "Deletes the waiter with the specified name." + "path": "v1beta1/{+name}" }, "get": { - "httpMethod": "GET", + "id": "runtimeconfig.projects.configs.waiters.get", + "path": "v1beta1/{+name}", + "description": "Gets information about a single waiter.", "parameterOrder": [ "name" ], "response": { "$ref": "Waiter" }, + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloudruntimeconfig" ], "parameters": { "name": { - "location": "path", "description": "The fully-qualified name of the Waiter resource object to retrieve, in the\nformat:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/waiters/[WAITER_NAME]`", "type": "string", "required": true, - "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$" + "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$", + "location": "path" } }, - "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters/{waitersId}", - "path": "v1beta1/{+name}", - "id": "runtimeconfig.projects.configs.waiters.get", - "description": "Gets information about a single waiter." + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters/{waitersId}" }, "list": { + "path": "v1beta1/{+parent}/waiters", + "id": "runtimeconfig.projects.configs.waiters.list", + "description": "List waiters within the given configuration.", + "httpMethod": "GET", "response": { "$ref": "ListWaitersResponse" }, "parameterOrder": [ "parent" ], - "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], "parameters": { + "pageToken": { + "location": "query", + "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.", + "type": "integer", + "location": "query" + }, "parent": { - "pattern": "^projects/[^/]+/configs/[^/]+$", "location": "path", "description": "The path to the configuration for which you want to get a list of waiters.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", "type": "string", - "required": true - }, - "pageToken": { - "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters" + }, + "create": { + "description": "Creates a Waiter resource. This operation returns a long-running Operation\nresource which can be polled for completion. However, a waiter with the\ngiven name will exist (and can be retrieved) prior to the operation\ncompleting. If the operation fails, the failed Waiter resource will\nstill exist and must be deleted prior to subsequent creation attempts.", + "request": { + "$ref": "Waiter" + }, + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "parameters": { + "requestId": { + "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", "type": "string", "location": "query" }, - "pageSize": { - "type": "integer", - "location": "query", - "format": "int32", - "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements." + "parent": { + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path", + "description": "The path to the configuration that will own the waiter.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`.", + "type": "string", + "required": true } }, "scopes": [ @@ -980,15 +485,44 @@ "https://www.googleapis.com/auth/cloudruntimeconfig" ], "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters", - "id": "runtimeconfig.projects.configs.waiters.list", - "path": "v1beta1/{+parent}/waiters", - "description": "List waiters within the given configuration." + "id": "runtimeconfig.projects.configs.waiters.create", + "path": "v1beta1/{+parent}/waiters" + }, + "testIamPermissions": { + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/configs/[^/]+/waiters/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/waiters/{waitersId}:testIamPermissions", + "path": "v1beta1/{+resource}:testIamPermissions", + "id": "runtimeconfig.projects.configs.waiters.testIamPermissions" } } }, "operations": { "methods": { "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", "response": { "$ref": "Operation" }, @@ -998,11 +532,11 @@ "httpMethod": "GET", "parameters": { "name": { - "pattern": "^projects/[^/]+/configs/[^/]+/operations/.+$", - "location": "path", "description": "The name of the operation resource.", "type": "string", - "required": true + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+/operations/.+$", + "location": "path" } }, "scopes": [ @@ -1011,10 +545,13 @@ ], "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/operations/{operationsId}", "id": "runtimeconfig.projects.configs.operations.get", - "path": "v1beta1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." + "path": "v1beta1/{+name}" }, "testIamPermissions": { + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", "response": { "$ref": "TestIamPermissionsResponse" }, @@ -1037,99 +574,562 @@ }, "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/operations/{operationsId}:testIamPermissions", "id": "runtimeconfig.projects.configs.operations.testIamPermissions", + "path": "v1beta1/{+resource}:testIamPermissions" + } + } + }, + "variables": { + "methods": { + "testIamPermissions": { + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}:testIamPermissions", + "id": "runtimeconfig.projects.configs.variables.testIamPermissions", "path": "v1beta1/{+resource}:testIamPermissions", "request": { "$ref": "TestIamPermissionsRequest" }, "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning." + }, + "delete": { + "description": "Deletes a variable or multiple variables.\n\nIf you specify a variable name, then that variable is deleted. If you\nspecify a prefix and `recursive` is true, then all variables with that\nprefix are deleted. You must set a `recursive` to true if you delete\nvariables by prefix.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "recursive": { + "location": "query", + "description": "Set to `true` to recursively delete multiple variables with the same\nprefix.", + "type": "boolean" + }, + "name": { + "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", + "location": "path", + "description": "The name of the variable to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}", + "id": "runtimeconfig.projects.configs.variables.delete", + "path": "v1beta1/{+name}" + }, + "list": { + "description": "Lists variables within given a configuration, matching any provided filters.\nThis only lists variable names, not the values, unless `return_values` is\ntrue, in which case only variables that user has IAM permission to GetVariable\nwill be returned.", + "httpMethod": "GET", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "ListVariablesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "filter": { + "description": "Filters variables by matching the specified filter. For example:\n\n`projects/example-project/config/[CONFIG_NAME]/variables/example-variable`.", + "type": "string", + "location": "query" + }, + "returnValues": { + "location": "query", + "description": "The flag indicates whether the user wants to return values of variables.\nIf true, then only those variables that user has IAM GetVariable permission\nwill be returned along with their values.", + "type": "boolean" + }, + "pageToken": { + "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.", + "type": "integer", + "location": "query" + }, + "parent": { + "description": "The path to the RuntimeConfig resource for which you want to list variables.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables", + "path": "v1beta1/{+parent}/variables", + "id": "runtimeconfig.projects.configs.variables.list" + }, + "create": { + "request": { + "$ref": "Variable" + }, + "description": "Creates a variable within the given configuration. You cannot create\na variable with a name that is a prefix of an existing variable name, or a\nname that has an existing variable name as a prefix.\n\nTo learn more about creating a variable, read the\n[Setting and Getting Data](/deployment-manager/runtime-configurator/set-and-get-variables)\ndocumentation.", + "response": { + "$ref": "Variable" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "requestId": { + "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", + "type": "string", + "location": "query" + }, + "parent": { + "location": "path", + "description": "The path to the RutimeConfig resource that this variable should belong to.\nThe configuration must exist beforehand; the path must by in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables", + "id": "runtimeconfig.projects.configs.variables.create", + "path": "v1beta1/{+parent}/variables" + }, + "watch": { + "description": "Watches a specific variable and waits for a change in the variable's value.\nWhen there is a change, this method returns the new value or times out.\n\nIf a variable is deleted while being watched, the `variableState` state is\nset to `DELETED` and the method returns the last known variable `value`.\n\nIf you set the deadline for watching to a larger value than internal timeout\n(60 seconds), the current variable value is returned and the `variableState`\nwill be `VARIABLE_STATE_UNSPECIFIED`.\n\nTo learn more about creating a watcher, read the\n[Watching a Variable for Changes](/deployment-manager/runtime-configurator/watching-a-variable)\ndocumentation.", + "request": { + "$ref": "WatchVariableRequest" + }, + "response": { + "$ref": "Variable" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the variable to watch, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}:watch", + "id": "runtimeconfig.projects.configs.variables.watch", + "path": "v1beta1/{+name}:watch" + }, + "get": { + "httpMethod": "GET", + "response": { + "$ref": "Variable" + }, + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the variable to return, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIBLE_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}", + "path": "v1beta1/{+name}", + "id": "runtimeconfig.projects.configs.variables.get", + "description": "Gets information about a single variable." + }, + "update": { + "request": { + "$ref": "Variable" + }, + "description": "Updates an existing variable with a new value.", + "response": { + "$ref": "Variable" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "name": { + "description": "The name of the variable to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]/variables/[VARIABLE_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+/variables/.+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}/variables/{variablesId}", + "id": "runtimeconfig.projects.configs.variables.update", + "path": "v1beta1/{+name}" } } } + }, + "methods": { + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:getIamPolicy", + "id": "runtimeconfig.projects.configs.getIamPolicy", + "path": "v1beta1/{+resource}:getIamPolicy" + }, + "get": { + "response": { + "$ref": "RuntimeConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "name": { + "description": "The name of the RuntimeConfig resource to retrieve, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}", + "id": "runtimeconfig.projects.configs.get", + "path": "v1beta1/{+name}", + "description": "Gets information about a RuntimeConfig resource." + }, + "update": { + "description": "Updates a RuntimeConfig resource. The configuration must exist beforehand.", + "request": { + "$ref": "RuntimeConfig" + }, + "response": { + "$ref": "RuntimeConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "PUT", + "parameters": { + "name": { + "description": "The name of the RuntimeConfig resource to update, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}", + "id": "runtimeconfig.projects.configs.update", + "path": "v1beta1/{+name}" + }, + "testIamPermissions": { + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:testIamPermissions", + "path": "v1beta1/{+resource}:testIamPermissions", + "id": "runtimeconfig.projects.configs.testIamPermissions", + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ] + }, + "delete": { + "id": "runtimeconfig.projects.configs.delete", + "path": "v1beta1/{+name}", + "description": "Deletes a RuntimeConfig resource.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "name": { + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path", + "description": "The RuntimeConfig resource to delete, in the format:\n\n`projects/[PROJECT_ID]/configs/[CONFIG_NAME]`", + "type": "string", + "required": true + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}" + }, + "list": { + "description": "Lists all the RuntimeConfig resources within project.", + "response": { + "$ref": "ListConfigsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "parent": { + "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "Specifies a page token to use. Set `pageToken` to a `nextPageToken`\nreturned by a previous list request to get the next page of results.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Specifies the number of results to return per page. If there are fewer\nelements than the specified number, returns all elements.", + "type": "integer", + "location": "query" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs", + "id": "runtimeconfig.projects.configs.list", + "path": "v1beta1/{+parent}/configs" + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "RuntimeConfig" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "parameters": { + "requestId": { + "location": "query", + "description": "An optional but recommended unique `request_id`. If the server\nreceives two `create()` requests with the same\n`request_id`, then the second request will be ignored and the\nfirst resource created and stored in the backend is returned.\nEmpty `request_id` fields are ignored.\n\nIt is responsibility of the client to ensure uniqueness of the\n`request_id` strings.\n\n`request_id` strings are limited to 64 characters.", + "type": "string" + }, + "parent": { + "description": "The [project ID](https://support.google.com/cloud/answer/6158840?hl=en&ref_topic=6158848)\nfor this request, in the format `projects/[PROJECT_ID]`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/projects/{projectsId}/configs", + "path": "v1beta1/{+parent}/configs", + "id": "runtimeconfig.projects.configs.create", + "request": { + "$ref": "RuntimeConfig" + }, + "description": "Creates a new RuntimeConfig resource. The configuration name must be\nunique within project." + }, + "setIamPolicy": { + "id": "runtimeconfig.projects.configs.setIamPolicy", + "path": "v1beta1/{+resource}:setIamPolicy", + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "pattern": "^projects/[^/]+/configs/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloudruntimeconfig" + ], + "flatPath": "v1beta1/projects/{projectsId}/configs/{configsId}:setIamPolicy" + } } } } } }, "parameters": { + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, "fields": { "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "callback": { + "description": "JSONP", "type": "string", "location": "query" }, "$.xgafv": { + "enum": [ + "1", + "2" + ], "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" + "location": "query" }, "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", "description": "Data format for response.", "default": "json", "enum": [ "json", "media", "proto" - ] - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query" }, "access_token": { "description": "OAuth access token.", "type": "string", "location": "query" }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, "quotaUser": { "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" }, "pp": { - "location": "query", "description": "Pretty-print response.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" }, "bearer_token": { "location": "query", "description": "OAuth bearer token.", "type": "string" }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, "upload_protocol": { + "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "prettyPrint": { "location": "query", @@ -1140,9 +1140,9 @@ }, "version": "v1beta1", "baseUrl": "https://runtimeconfig.googleapis.com/", + "servicePath": "", "kind": "discovery#restDescription", "description": "The Runtime Configurator allows you to dynamically configure and expose variables through Google Cloud Platform. In addition, you can also set Watchers and Waiters that will watch for changes to your data and return based on certain conditions.", - "servicePath": "", "basePath": "", "revision": "20170816", "documentationLink": "https://cloud.google.com/deployment-manager/runtime-configurator/", diff --git a/vendor/google.golang.org/api/safebrowsing/v4/safebrowsing-api.json b/vendor/google.golang.org/api/safebrowsing/v4/safebrowsing-api.json index f6731ad..50bc5be 100644 --- a/vendor/google.golang.org/api/safebrowsing/v4/safebrowsing-api.json +++ b/vendor/google.golang.org/api/safebrowsing/v4/safebrowsing-api.json @@ -1,4 +1,8 @@ { + "baseUrl": "https://safebrowsing.googleapis.com/", + "servicePath": "", + "description": "Enables client applications to check web resources (most commonly URLs) against Google-generated lists of unsafe web resources.", + "kind": "discovery#restDescription", "rootUrl": "https://safebrowsing.googleapis.com/", "basePath": "", "ownerDomain": "google.com", @@ -8,99 +12,9 @@ "documentationLink": "https://developers.google.com/safe-browsing/", "id": "safebrowsing:v4", "title": "Google Safe Browsing API", - "discoveryVersion": "v1", "ownerName": "Google", + "discoveryVersion": "v1", "resources": { - "threatListUpdates": { - "methods": { - "fetch": { - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "FetchThreatListUpdatesResponse" - }, - "parameters": {}, - "flatPath": "v4/threatListUpdates:fetch", - "path": "v4/threatListUpdates:fetch", - "id": "safebrowsing.threatListUpdates.fetch", - "request": { - "$ref": "FetchThreatListUpdatesRequest" - }, - "description": "Fetches the most recent threat list updates. A client can request updates\nfor multiple lists at once." - } - } - }, - "encodedFullHashes": { - "methods": { - "get": { - "httpMethod": "GET", - "response": { - "$ref": "FindFullHashesResponse" - }, - "parameterOrder": [ - "encodedRequest" - ], - "parameters": { - "encodedRequest": { - "format": "byte", - "description": "A serialized FindFullHashesRequest proto.", - "type": "string", - "required": true, - "location": "path" - }, - "clientId": { - "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.", - "type": "string", - "location": "query" - }, - "clientVersion": { - "description": "The version of the client implementation.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v4/encodedFullHashes/{encodedRequest}", - "path": "v4/encodedFullHashes/{encodedRequest}", - "id": "safebrowsing.encodedFullHashes.get", - "description": "" - } - } - }, - "threatLists": { - "methods": { - "list": { - "id": "safebrowsing.threatLists.list", - "path": "v4/threatLists", - "description": "Lists the Safe Browsing threat lists available for download.", - "response": { - "$ref": "ListThreatListsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "parameters": {}, - "flatPath": "v4/threatLists" - } - } - }, - "threatMatches": { - "methods": { - "find": { - "response": { - "$ref": "FindThreatMatchesResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "flatPath": "v4/threatMatches:find", - "id": "safebrowsing.threatMatches.find", - "path": "v4/threatMatches:find", - "description": "Finds the threat entries that match the Safe Browsing lists.", - "request": { - "$ref": "FindThreatMatchesRequest" - } - } - } - }, "fullHashes": { "methods": { "find": { @@ -124,62 +38,190 @@ "methods": { "get": { "description": "", + "httpMethod": "GET", "response": { "$ref": "FetchThreatListUpdatesResponse" }, "parameterOrder": [ "encodedRequest" ], - "httpMethod": "GET", "parameters": { "clientId": { "location": "query", "description": "A client ID that uniquely identifies the client implementation of the Safe\nBrowsing API.", "type": "string" }, + "clientVersion": { + "location": "query", + "description": "The version of the client implementation.", + "type": "string" + }, + "encodedRequest": { + "location": "path", + "format": "byte", + "description": "A serialized FetchThreatListUpdatesRequest proto.", + "type": "string", + "required": true + } + }, + "flatPath": "v4/encodedUpdates/{encodedRequest}", + "path": "v4/encodedUpdates/{encodedRequest}", + "id": "safebrowsing.encodedUpdates.get" + } + } + }, + "threatListUpdates": { + "methods": { + "fetch": { + "response": { + "$ref": "FetchThreatListUpdatesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "flatPath": "v4/threatListUpdates:fetch", + "id": "safebrowsing.threatListUpdates.fetch", + "path": "v4/threatListUpdates:fetch", + "description": "Fetches the most recent threat list updates. A client can request updates\nfor multiple lists at once.", + "request": { + "$ref": "FetchThreatListUpdatesRequest" + } + } + } + }, + "encodedFullHashes": { + "methods": { + "get": { + "description": "", + "response": { + "$ref": "FindFullHashesResponse" + }, + "parameterOrder": [ + "encodedRequest" + ], + "httpMethod": "GET", + "parameters": { "clientVersion": { "description": "The version of the client implementation.", "type": "string", "location": "query" }, "encodedRequest": { + "location": "path", "format": "byte", - "description": "A serialized FetchThreatListUpdatesRequest proto.", + "description": "A serialized FindFullHashesRequest proto.", "type": "string", - "required": true, - "location": "path" + "required": true + }, + "clientId": { + "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.", + "type": "string", + "location": "query" } }, - "flatPath": "v4/encodedUpdates/{encodedRequest}", - "id": "safebrowsing.encodedUpdates.get", - "path": "v4/encodedUpdates/{encodedRequest}" + "flatPath": "v4/encodedFullHashes/{encodedRequest}", + "id": "safebrowsing.encodedFullHashes.get", + "path": "v4/encodedFullHashes/{encodedRequest}" + } + } + }, + "threatLists": { + "methods": { + "list": { + "path": "v4/threatLists", + "id": "safebrowsing.threatLists.list", + "description": "Lists the Safe Browsing threat lists available for download.", + "httpMethod": "GET", + "parameterOrder": [], + "response": { + "$ref": "ListThreatListsResponse" + }, + "parameters": {}, + "flatPath": "v4/threatLists" + } + } + }, + "threatMatches": { + "methods": { + "find": { + "parameters": {}, + "flatPath": "v4/threatMatches:find", + "id": "safebrowsing.threatMatches.find", + "path": "v4/threatMatches:find", + "description": "Finds the threat entries that match the Safe Browsing lists.", + "request": { + "$ref": "FindThreatMatchesRequest" + }, + "response": { + "$ref": "FindThreatMatchesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST" } } } }, "parameters": { + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" + "type": "boolean" }, "fields": { "location": "query", "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -188,14 +230,7 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" + ] }, "alt": { "enum": [ @@ -212,286 +247,13 @@ "location": "query", "description": "Data format for response.", "default": "json" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" } }, "schemas": { - "ThreatListDescriptor": { - "properties": { - "platformType": { - "enumDescriptions": [ - "Unknown platform.", - "Threat posed to Windows.", - "Threat posed to Linux.", - "Threat posed to Android.", - "Threat posed to OS X.", - "Threat posed to iOS.", - "Threat posed to at least one of the defined platforms.", - "Threat posed to all defined platforms.", - "Threat posed to Chrome." - ], - "enum": [ - "PLATFORM_TYPE_UNSPECIFIED", - "WINDOWS", - "LINUX", - "ANDROID", - "OSX", - "IOS", - "ANY_PLATFORM", - "ALL_PLATFORMS", - "CHROME" - ], - "description": "The platform type targeted by the list's entries.", - "type": "string" - }, - "threatType": { - "enum": [ - "THREAT_TYPE_UNSPECIFIED", - "MALWARE", - "SOCIAL_ENGINEERING", - "UNWANTED_SOFTWARE", - "POTENTIALLY_HARMFUL_APPLICATION", - "SOCIAL_ENGINEERING_INTERNAL", - "API_ABUSE", - "MALICIOUS_BINARY", - "CSD_WHITELIST", - "CSD_DOWNLOAD_WHITELIST", - "CLIENT_INCIDENT", - "CLIENT_INCIDENT_WHITELIST", - "APK_MALWARE_OFFLINE", - "SUBRESOURCE_FILTER" - ], - "description": "The threat type posed by the list's entries.", - "type": "string", - "enumDescriptions": [ - "Unknown.", - "Malware threat type.", - "Social engineering threat type.", - "Unwanted software threat type.", - "Potentially harmful application threat type.", - "Social engineering threat type for internal use.", - "API abuse threat type.", - "Malicious binary threat type.", - "Client side detection whitelist threat type.", - "Client side download detection whitelist threat type.", - "Client incident threat type.", - "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", - "List used for offline APK checks in PAM.", - "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." - ] - }, - "threatEntryType": { - "enum": [ - "THREAT_ENTRY_TYPE_UNSPECIFIED", - "URL", - "EXECUTABLE", - "IP_RANGE", - "CHROME_EXTENSION", - "FILENAME", - "CERT" - ], - "description": "The entry types contained in the list.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "A URL.", - "An executable program.", - "An IP range.", - "Chrome extension.", - "Filename.", - "CERT" - ] - } - }, - "id": "ThreatListDescriptor", - "description": "Describes an individual threat list. A list is defined by three parameters:\nthe type of threat posed, the type of platform targeted by the threat, and\nthe type of entries in the list.", - "type": "object" - }, - "MetadataEntry": { - "properties": { - "value": { - "format": "byte", - "description": "The metadata entry value. For JSON requests, the value is base64-encoded.", - "type": "string" - }, - "key": { - "format": "byte", - "description": "The metadata entry key. For JSON requests, the key is base64-encoded.", - "type": "string" - } - }, - "id": "MetadataEntry", - "description": "A single metadata entry.", - "type": "object" - }, - "ClientInfo": { - "properties": { - "clientId": { - "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.", - "type": "string" - }, - "clientVersion": { - "description": "The version of the client implementation.", - "type": "string" - } - }, - "id": "ClientInfo", - "description": "The client metadata associated with Safe Browsing API requests.", - "type": "object" - }, - "FindThreatMatchesRequest": { - "properties": { - "client": { - "$ref": "ClientInfo", - "description": "The client metadata." - }, - "threatInfo": { - "$ref": "ThreatInfo", - "description": "The lists and entries to be checked for matches." - } - }, - "id": "FindThreatMatchesRequest", - "description": "Request to check entries against lists.", - "type": "object" - }, - "ThreatInfo": { - "description": "The information regarding one or more threats that a client submits when\nchecking for matches in threat lists.", - "type": "object", - "properties": { - "threatEntryTypes": { - "enumDescriptions": [ - "Unspecified.", - "A URL.", - "An executable program.", - "An IP range.", - "Chrome extension.", - "Filename.", - "CERT" - ], - "description": "The entry types to be checked.", - "items": { - "enum": [ - "THREAT_ENTRY_TYPE_UNSPECIFIED", - "URL", - "EXECUTABLE", - "IP_RANGE", - "CHROME_EXTENSION", - "FILENAME", - "CERT" - ], - "type": "string" - }, - "type": "array" - }, - "threatTypes": { - "enumDescriptions": [ - "Unknown.", - "Malware threat type.", - "Social engineering threat type.", - "Unwanted software threat type.", - "Potentially harmful application threat type.", - "Social engineering threat type for internal use.", - "API abuse threat type.", - "Malicious binary threat type.", - "Client side detection whitelist threat type.", - "Client side download detection whitelist threat type.", - "Client incident threat type.", - "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", - "List used for offline APK checks in PAM.", - "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." - ], - "description": "The threat types to be checked.", - "items": { - "enum": [ - "THREAT_TYPE_UNSPECIFIED", - "MALWARE", - "SOCIAL_ENGINEERING", - "UNWANTED_SOFTWARE", - "POTENTIALLY_HARMFUL_APPLICATION", - "SOCIAL_ENGINEERING_INTERNAL", - "API_ABUSE", - "MALICIOUS_BINARY", - "CSD_WHITELIST", - "CSD_DOWNLOAD_WHITELIST", - "CLIENT_INCIDENT", - "CLIENT_INCIDENT_WHITELIST", - "APK_MALWARE_OFFLINE", - "SUBRESOURCE_FILTER" - ], - "type": "string" - }, - "type": "array" - }, - "platformTypes": { - "description": "The platform types to be checked.", - "items": { - "enum": [ - "PLATFORM_TYPE_UNSPECIFIED", - "WINDOWS", - "LINUX", - "ANDROID", - "OSX", - "IOS", - "ANY_PLATFORM", - "ALL_PLATFORMS", - "CHROME" - ], - "type": "string" - }, - "type": "array", - "enumDescriptions": [ - "Unknown platform.", - "Threat posed to Windows.", - "Threat posed to Linux.", - "Threat posed to Android.", - "Threat posed to OS X.", - "Threat posed to iOS.", - "Threat posed to at least one of the defined platforms.", - "Threat posed to all defined platforms.", - "Threat posed to Chrome." - ] - }, - "threatEntries": { - "description": "The threat entries to be checked.", - "items": { - "$ref": "ThreatEntry" - }, - "type": "array" - } - }, - "id": "ThreatInfo" - }, "ThreatEntryMetadata": { + "id": "ThreatEntryMetadata", + "description": "The metadata associated with a specific threat entry. The client is expected\nto know the metadata key/value pairs associated with each threat type.", + "type": "object", "properties": { "entries": { "description": "The metadata entries.", @@ -500,10 +262,7 @@ }, "type": "array" } - }, - "id": "ThreatEntryMetadata", - "description": "The metadata associated with a specific threat entry. The client is expected\nto know the metadata key/value pairs associated with each threat type.", - "type": "object" + } }, "RawIndices": { "description": "A set of raw indices to remove from a local list.", @@ -521,11 +280,13 @@ "id": "RawIndices" }, "RawHashes": { + "description": "The uncompressed threat entries in hash format of a particular prefix length.\nHashes can be anywhere from 4 to 32 bytes in size. A large majority are 4\nbytes, but some hashes are lengthened if they collide with the hash of a\npopular URL.\n\nUsed for sending ThreatEntrySet to clients that do not support compression,\nor when sending non-4-byte hashes to clients that do support compression.", + "type": "object", "properties": { "rawHashes": { + "type": "string", "format": "byte", - "description": "The hashes, in binary format, concatenated into one long string. Hashes are\nsorted in lexicographic order. For JSON API users, hashes are\nbase64-encoded.", - "type": "string" + "description": "The hashes, in binary format, concatenated into one long string. Hashes are\nsorted in lexicographic order. For JSON API users, hashes are\nbase64-encoded." }, "prefixSize": { "format": "int32", @@ -533,12 +294,9 @@ "type": "integer" } }, - "id": "RawHashes", - "description": "The uncompressed threat entries in hash format of a particular prefix length.\nHashes can be anywhere from 4 to 32 bytes in size. A large majority are 4\nbytes, but some hashes are lengthened if they collide with the hash of a\npopular URL.\n\nUsed for sending ThreatEntrySet to clients that do not support compression,\nor when sending non-4-byte hashes to clients that do support compression.", - "type": "object" + "id": "RawHashes" }, "FetchThreatListUpdatesResponse": { - "type": "object", "properties": { "minimumWaitDuration": { "format": "google-duration", @@ -553,15 +311,24 @@ "type": "array" } }, - "id": "FetchThreatListUpdatesResponse" + "id": "FetchThreatListUpdatesResponse", + "type": "object" + }, + "Checksum": { + "description": "The expected state of a client's local database.", + "type": "object", + "properties": { + "sha256": { + "format": "byte", + "description": "The SHA256 hash of the client state; that is, of the sorted list of all\nhashes present in the database.", + "type": "string" + } + }, + "id": "Checksum" }, "FindFullHashesResponse": { + "type": "object", "properties": { - "negativeCacheDuration": { - "format": "google-duration", - "description": "For requested entities that did not match the threat list, how long to\ncache the response.", - "type": "string" - }, "minimumWaitDuration": { "format": "google-duration", "description": "The minimum duration the client must wait before issuing any find hashes\nrequest. If this field is not set, clients can issue a request as soon as\nthey want.", @@ -573,22 +340,14 @@ "$ref": "ThreatMatch" }, "type": "array" + }, + "negativeCacheDuration": { + "type": "string", + "format": "google-duration", + "description": "For requested entities that did not match the threat list, how long to\ncache the response." } }, - "id": "FindFullHashesResponse", - "type": "object" - }, - "Checksum": { - "properties": { - "sha256": { - "format": "byte", - "description": "The SHA256 hash of the client state; that is, of the sorted list of all\nhashes present in the database.", - "type": "string" - } - }, - "id": "Checksum", - "description": "The expected state of a client's local database.", - "type": "object" + "id": "FindFullHashesResponse" }, "ThreatEntrySet": { "description": "A set of threats that should be added or removed from a client's local\ndatabase.", @@ -603,26 +362,26 @@ "$ref": "RiceDeltaEncoding" }, "compressionType": { - "enumDescriptions": [ - "Unknown.", - "Raw, uncompressed data.", - "Rice-Golomb encoded data." - ], "enum": [ "COMPRESSION_TYPE_UNSPECIFIED", "RAW", "RICE" ], "description": "The compression type for the entries in this set.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unknown.", + "Raw, uncompressed data.", + "Rice-Golomb encoded data." + ] }, "rawIndices": { "description": "The raw removal indices for a local list.", "$ref": "RawIndices" }, "rawHashes": { - "description": "The raw SHA256-formatted entries.", - "$ref": "RawHashes" + "$ref": "RawHashes", + "description": "The raw SHA256-formatted entries." } }, "id": "ThreatEntrySet" @@ -648,33 +407,43 @@ "description": "The lists and hashes to be checked." }, "apiClient": { - "description": "Client metadata associated with callers of higher-level APIs built on top\nof the client's implementation.", - "$ref": "ClientInfo" + "$ref": "ClientInfo", + "description": "Client metadata associated with callers of higher-level APIs built on top\nof the client's implementation." } }, "id": "FindFullHashesRequest" }, "ListUpdateRequest": { - "description": "A single list update request.", "type": "object", "properties": { + "threatEntryType": { + "enumDescriptions": [ + "Unspecified.", + "A URL.", + "An executable program.", + "An IP range.", + "Chrome extension.", + "Filename.", + "CERT" + ], + "enum": [ + "THREAT_ENTRY_TYPE_UNSPECIFIED", + "URL", + "EXECUTABLE", + "IP_RANGE", + "CHROME_EXTENSION", + "FILENAME", + "CERT" + ], + "description": "The types of entries present in the list.", + "type": "string" + }, "state": { "format": "byte", "description": "The current state of the client for the requested list (the encrypted\nclient state that was received from the last successful list update).", "type": "string" }, "platformType": { - "enum": [ - "PLATFORM_TYPE_UNSPECIFIED", - "WINDOWS", - "LINUX", - "ANDROID", - "OSX", - "IOS", - "ANY_PLATFORM", - "ALL_PLATFORMS", - "CHROME" - ], "description": "The type of platform at risk by entries present in the list.", "type": "string", "enumDescriptions": [ @@ -687,11 +456,22 @@ "Threat posed to at least one of the defined platforms.", "Threat posed to all defined platforms.", "Threat posed to Chrome." + ], + "enum": [ + "PLATFORM_TYPE_UNSPECIFIED", + "WINDOWS", + "LINUX", + "ANDROID", + "OSX", + "IOS", + "ANY_PLATFORM", + "ALL_PLATFORMS", + "CHROME" ] }, "constraints": { - "description": "The constraints associated with this request.", - "$ref": "Constraints" + "$ref": "Constraints", + "description": "The constraints associated with this request." }, "threatType": { "enum": [ @@ -728,44 +508,23 @@ "List used for offline APK checks in PAM.", "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." ] - }, - "threatEntryType": { - "enum": [ - "THREAT_ENTRY_TYPE_UNSPECIFIED", - "URL", - "EXECUTABLE", - "IP_RANGE", - "CHROME_EXTENSION", - "FILENAME", - "CERT" - ], - "description": "The types of entries present in the list.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "A URL.", - "An executable program.", - "An IP range.", - "Chrome extension.", - "Filename.", - "CERT" - ] } }, - "id": "ListUpdateRequest" + "id": "ListUpdateRequest", + "description": "A single list update request." }, "FetchThreatListUpdatesRequest": { "properties": { + "client": { + "description": "The client metadata.", + "$ref": "ClientInfo" + }, "listUpdateRequests": { "description": "The requested threat list updates.", "items": { "$ref": "ListUpdateRequest" }, "type": "array" - }, - "client": { - "description": "The client metadata.", - "$ref": "ClientInfo" } }, "id": "FetchThreatListUpdatesRequest", @@ -773,26 +532,37 @@ "type": "object" }, "ListUpdateResponse": { + "description": "An update to an individual list.", + "type": "object", "properties": { + "additions": { + "description": "A set of entries to add to a local threat type's list. Repeated to allow\nfor a combination of compressed and raw data to be sent in a single\nresponse.", + "items": { + "$ref": "ThreatEntrySet" + }, + "type": "array" + }, "checksum": { - "$ref": "Checksum", - "description": "The expected SHA256 hash of the client state; that is, of the sorted list\nof all hashes present in the database after applying the provided update.\nIf the client state doesn't match the expected state, the client must\ndisregard this update and retry later." + "description": "The expected SHA256 hash of the client state; that is, of the sorted list\nof all hashes present in the database after applying the provided update.\nIf the client state doesn't match the expected state, the client must\ndisregard this update and retry later.", + "$ref": "Checksum" }, "responseType": { - "enumDescriptions": [ - "Unknown.", - "Partial updates are applied to the client's existing local database.", - "Full updates replace the client's entire local database. This means\nthat either the client was seriously out-of-date or the client is\nbelieved to be corrupt." - ], "enum": [ "RESPONSE_TYPE_UNSPECIFIED", "PARTIAL_UPDATE", "FULL_UPDATE" ], "description": "The type of response. This may indicate that an action is required by the\nclient when the response is received.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Unknown.", + "Partial updates are applied to the client's existing local database.", + "Full updates replace the client's entire local database. This means\nthat either the client was seriously out-of-date or the client is\nbelieved to be corrupt." + ] }, "threatType": { + "description": "The threat type for which data is returned.", + "type": "string", "enumDescriptions": [ "Unknown.", "Malware threat type.", @@ -824,9 +594,7 @@ "CLIENT_INCIDENT_WHITELIST", "APK_MALWARE_OFFLINE", "SUBRESOURCE_FILTER" - ], - "description": "The threat type for which data is returned.", - "type": "string" + ] }, "removals": { "description": "A set of entries to remove from a local threat type's list. In practice,\nthis field is empty or contains exactly one ThreatEntrySet.", @@ -867,16 +635,6 @@ "type": "string" }, "threatEntryType": { - "enum": [ - "THREAT_ENTRY_TYPE_UNSPECIFIED", - "URL", - "EXECUTABLE", - "IP_RANGE", - "CHROME_EXTENSION", - "FILENAME", - "CERT" - ], - "description": "The format of the threats.", "type": "string", "enumDescriptions": [ "Unspecified.", @@ -886,44 +644,25 @@ "Chrome extension.", "Filename.", "CERT" - ] - }, - "additions": { - "description": "A set of entries to add to a local threat type's list. Repeated to allow\nfor a combination of compressed and raw data to be sent in a single\nresponse.", - "items": { - "$ref": "ThreatEntrySet" - }, - "type": "array" + ], + "enum": [ + "THREAT_ENTRY_TYPE_UNSPECIFIED", + "URL", + "EXECUTABLE", + "IP_RANGE", + "CHROME_EXTENSION", + "FILENAME", + "CERT" + ], + "description": "The format of the threats." } }, - "id": "ListUpdateResponse", - "description": "An update to an individual list.", - "type": "object" + "id": "ListUpdateResponse" }, "Constraints": { + "description": "The constraints for this update.", + "type": "object", "properties": { - "supportedCompressions": { - "enumDescriptions": [ - "Unknown.", - "Raw, uncompressed data.", - "Rice-Golomb encoded data." - ], - "description": "The compression types supported by the client.", - "items": { - "enum": [ - "COMPRESSION_TYPE_UNSPECIFIED", - "RAW", - "RICE" - ], - "type": "string" - }, - "type": "array" - }, - "maxUpdateEntries": { - "format": "int32", - "description": "The maximum size in number of entries. The update will not contain more\nentries than this value. This should be a power of 2 between 2**10 and\n2**20. If zero, no update size limit is set.", - "type": "integer" - }, "region": { "description": "Requests the list for a specific geographic location. If not set the\nserver may pick that value based on the user's IP address. Expects ISO\n3166-1 alpha-2 format.", "type": "string" @@ -932,85 +671,35 @@ "format": "int32", "description": "Sets the maximum number of entries that the client is willing to have\nin the local database. This should be a power of 2 between 2**10 and\n2**20. If zero, no database size limit is set.", "type": "integer" - } - }, - "id": "Constraints", - "description": "The constraints for this update.", - "type": "object" - }, - "ThreatMatch": { - "properties": { - "threatEntryType": { - "enumDescriptions": [ - "Unspecified.", - "A URL.", - "An executable program.", - "An IP range.", - "Chrome extension.", - "Filename.", - "CERT" - ], - "enum": [ - "THREAT_ENTRY_TYPE_UNSPECIFIED", - "URL", - "EXECUTABLE", - "IP_RANGE", - "CHROME_EXTENSION", - "FILENAME", - "CERT" - ], - "description": "The threat entry type matching this threat.", - "type": "string" }, - "cacheDuration": { - "format": "google-duration", - "description": "The cache lifetime for the returned match. Clients must not cache this\nresponse for more than this duration to avoid false positives.", - "type": "string" - }, - "threatType": { - "enum": [ - "THREAT_TYPE_UNSPECIFIED", - "MALWARE", - "SOCIAL_ENGINEERING", - "UNWANTED_SOFTWARE", - "POTENTIALLY_HARMFUL_APPLICATION", - "SOCIAL_ENGINEERING_INTERNAL", - "API_ABUSE", - "MALICIOUS_BINARY", - "CSD_WHITELIST", - "CSD_DOWNLOAD_WHITELIST", - "CLIENT_INCIDENT", - "CLIENT_INCIDENT_WHITELIST", - "APK_MALWARE_OFFLINE", - "SUBRESOURCE_FILTER" - ], - "description": "The threat type matching this threat.", - "type": "string", + "supportedCompressions": { + "description": "The compression types supported by the client.", + "items": { + "type": "string", + "enum": [ + "COMPRESSION_TYPE_UNSPECIFIED", + "RAW", + "RICE" + ] + }, + "type": "array", "enumDescriptions": [ "Unknown.", - "Malware threat type.", - "Social engineering threat type.", - "Unwanted software threat type.", - "Potentially harmful application threat type.", - "Social engineering threat type for internal use.", - "API abuse threat type.", - "Malicious binary threat type.", - "Client side detection whitelist threat type.", - "Client side download detection whitelist threat type.", - "Client incident threat type.", - "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", - "List used for offline APK checks in PAM.", - "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." + "Raw, uncompressed data.", + "Rice-Golomb encoded data." ] }, - "threatEntryMetadata": { - "description": "Optional metadata associated with this threat.", - "$ref": "ThreatEntryMetadata" - }, - "threat": { - "description": "The threat matching this threat.", - "$ref": "ThreatEntry" - }, + "maxUpdateEntries": { + "format": "int32", + "description": "The maximum size in number of entries. The update will not contain more\nentries than this value. This should be a power of 2 between 2**10 and\n2**20. If zero, no update size limit is set.", + "type": "integer" + } + }, + "id": "Constraints" + }, + "ThreatMatch": { + "type": "object", + "properties": { "platformType": { "enumDescriptions": [ "Unknown platform.", @@ -1036,40 +725,111 @@ ], "description": "The platform type matching this threat.", "type": "string" + }, + "threatEntryType": { + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "A URL.", + "An executable program.", + "An IP range.", + "Chrome extension.", + "Filename.", + "CERT" + ], + "enum": [ + "THREAT_ENTRY_TYPE_UNSPECIFIED", + "URL", + "EXECUTABLE", + "IP_RANGE", + "CHROME_EXTENSION", + "FILENAME", + "CERT" + ], + "description": "The threat entry type matching this threat." + }, + "cacheDuration": { + "format": "google-duration", + "description": "The cache lifetime for the returned match. Clients must not cache this\nresponse for more than this duration to avoid false positives.", + "type": "string" + }, + "threatType": { + "description": "The threat type matching this threat.", + "type": "string", + "enumDescriptions": [ + "Unknown.", + "Malware threat type.", + "Social engineering threat type.", + "Unwanted software threat type.", + "Potentially harmful application threat type.", + "Social engineering threat type for internal use.", + "API abuse threat type.", + "Malicious binary threat type.", + "Client side detection whitelist threat type.", + "Client side download detection whitelist threat type.", + "Client incident threat type.", + "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", + "List used for offline APK checks in PAM.", + "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." + ], + "enum": [ + "THREAT_TYPE_UNSPECIFIED", + "MALWARE", + "SOCIAL_ENGINEERING", + "UNWANTED_SOFTWARE", + "POTENTIALLY_HARMFUL_APPLICATION", + "SOCIAL_ENGINEERING_INTERNAL", + "API_ABUSE", + "MALICIOUS_BINARY", + "CSD_WHITELIST", + "CSD_DOWNLOAD_WHITELIST", + "CLIENT_INCIDENT", + "CLIENT_INCIDENT_WHITELIST", + "APK_MALWARE_OFFLINE", + "SUBRESOURCE_FILTER" + ] + }, + "threatEntryMetadata": { + "description": "Optional metadata associated with this threat.", + "$ref": "ThreatEntryMetadata" + }, + "threat": { + "$ref": "ThreatEntry", + "description": "The threat matching this threat." } }, "id": "ThreatMatch", - "description": "A match when checking a threat entry in the Safe Browsing threat lists.", - "type": "object" + "description": "A match when checking a threat entry in the Safe Browsing threat lists." }, "RiceDeltaEncoding": { - "description": "The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or\ncompressed removal indices.", - "type": "object", "properties": { - "riceParameter": { - "format": "int32", - "description": "The Golomb-Rice parameter, which is a number between 2 and 28. This field\nis missing (that is, zero) if `num_entries` is zero.", - "type": "integer" - }, "encodedData": { "format": "byte", "description": "The encoded deltas that are encoded using the Golomb-Rice coder.", "type": "string" }, "firstValue": { + "type": "string", "format": "int64", - "description": "The offset of the first entry in the encoded data, or, if only a single\ninteger was encoded, that single integer's value.", - "type": "string" + "description": "The offset of the first entry in the encoded data, or, if only a single\ninteger was encoded, that single integer's value." }, "numEntries": { "format": "int32", "description": "The number of entries that are delta encoded in the encoded data. If only a\nsingle integer was encoded, this will be zero and the single value will be\nstored in `first_value`.", "type": "integer" + }, + "riceParameter": { + "format": "int32", + "description": "The Golomb-Rice parameter, which is a number between 2 and 28. This field\nis missing (that is, zero) if `num_entries` is zero.", + "type": "integer" } }, - "id": "RiceDeltaEncoding" + "id": "RiceDeltaEncoding", + "description": "The Rice-Golomb encoded data. Used for sending compressed 4-byte hashes or\ncompressed removal indices.", + "type": "object" }, "ListThreatListsResponse": { + "type": "object", "properties": { "threatLists": { "description": "The lists available for download by the client.", @@ -1079,21 +839,7 @@ "type": "array" } }, - "id": "ListThreatListsResponse", - "type": "object" - }, - "FindThreatMatchesResponse": { - "type": "object", - "properties": { - "matches": { - "description": "The threat list matches.", - "items": { - "$ref": "ThreatMatch" - }, - "type": "array" - } - }, - "id": "FindThreatMatchesResponse" + "id": "ListThreatListsResponse" }, "ThreatEntry": { "description": "An individual threat; for example, a malicious URL or its hash\nrepresentation. Only one of these fields should be set.", @@ -1115,6 +861,264 @@ } }, "id": "ThreatEntry" + }, + "FindThreatMatchesResponse": { + "type": "object", + "properties": { + "matches": { + "description": "The threat list matches.", + "items": { + "$ref": "ThreatMatch" + }, + "type": "array" + } + }, + "id": "FindThreatMatchesResponse" + }, + "ThreatListDescriptor": { + "description": "Describes an individual threat list. A list is defined by three parameters:\nthe type of threat posed, the type of platform targeted by the threat, and\nthe type of entries in the list.", + "type": "object", + "properties": { + "platformType": { + "enumDescriptions": [ + "Unknown platform.", + "Threat posed to Windows.", + "Threat posed to Linux.", + "Threat posed to Android.", + "Threat posed to OS X.", + "Threat posed to iOS.", + "Threat posed to at least one of the defined platforms.", + "Threat posed to all defined platforms.", + "Threat posed to Chrome." + ], + "enum": [ + "PLATFORM_TYPE_UNSPECIFIED", + "WINDOWS", + "LINUX", + "ANDROID", + "OSX", + "IOS", + "ANY_PLATFORM", + "ALL_PLATFORMS", + "CHROME" + ], + "description": "The platform type targeted by the list's entries.", + "type": "string" + }, + "threatType": { + "enumDescriptions": [ + "Unknown.", + "Malware threat type.", + "Social engineering threat type.", + "Unwanted software threat type.", + "Potentially harmful application threat type.", + "Social engineering threat type for internal use.", + "API abuse threat type.", + "Malicious binary threat type.", + "Client side detection whitelist threat type.", + "Client side download detection whitelist threat type.", + "Client incident threat type.", + "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", + "List used for offline APK checks in PAM.", + "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." + ], + "enum": [ + "THREAT_TYPE_UNSPECIFIED", + "MALWARE", + "SOCIAL_ENGINEERING", + "UNWANTED_SOFTWARE", + "POTENTIALLY_HARMFUL_APPLICATION", + "SOCIAL_ENGINEERING_INTERNAL", + "API_ABUSE", + "MALICIOUS_BINARY", + "CSD_WHITELIST", + "CSD_DOWNLOAD_WHITELIST", + "CLIENT_INCIDENT", + "CLIENT_INCIDENT_WHITELIST", + "APK_MALWARE_OFFLINE", + "SUBRESOURCE_FILTER" + ], + "description": "The threat type posed by the list's entries.", + "type": "string" + }, + "threatEntryType": { + "enum": [ + "THREAT_ENTRY_TYPE_UNSPECIFIED", + "URL", + "EXECUTABLE", + "IP_RANGE", + "CHROME_EXTENSION", + "FILENAME", + "CERT" + ], + "description": "The entry types contained in the list.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "A URL.", + "An executable program.", + "An IP range.", + "Chrome extension.", + "Filename.", + "CERT" + ] + } + }, + "id": "ThreatListDescriptor" + }, + "MetadataEntry": { + "description": "A single metadata entry.", + "type": "object", + "properties": { + "value": { + "format": "byte", + "description": "The metadata entry value. For JSON requests, the value is base64-encoded.", + "type": "string" + }, + "key": { + "format": "byte", + "description": "The metadata entry key. For JSON requests, the key is base64-encoded.", + "type": "string" + } + }, + "id": "MetadataEntry" + }, + "ClientInfo": { + "description": "The client metadata associated with Safe Browsing API requests.", + "type": "object", + "properties": { + "clientId": { + "description": "A client ID that (hopefully) uniquely identifies the client implementation\nof the Safe Browsing API.", + "type": "string" + }, + "clientVersion": { + "description": "The version of the client implementation.", + "type": "string" + } + }, + "id": "ClientInfo" + }, + "ThreatInfo": { + "description": "The information regarding one or more threats that a client submits when\nchecking for matches in threat lists.", + "type": "object", + "properties": { + "threatEntryTypes": { + "enumDescriptions": [ + "Unspecified.", + "A URL.", + "An executable program.", + "An IP range.", + "Chrome extension.", + "Filename.", + "CERT" + ], + "description": "The entry types to be checked.", + "items": { + "type": "string", + "enum": [ + "THREAT_ENTRY_TYPE_UNSPECIFIED", + "URL", + "EXECUTABLE", + "IP_RANGE", + "CHROME_EXTENSION", + "FILENAME", + "CERT" + ] + }, + "type": "array" + }, + "threatTypes": { + "enumDescriptions": [ + "Unknown.", + "Malware threat type.", + "Social engineering threat type.", + "Unwanted software threat type.", + "Potentially harmful application threat type.", + "Social engineering threat type for internal use.", + "API abuse threat type.", + "Malicious binary threat type.", + "Client side detection whitelist threat type.", + "Client side download detection whitelist threat type.", + "Client incident threat type.", + "Whitelist used when detecting client incident threats.\nThis enum was never launched and should be re-used for the next list.", + "List used for offline APK checks in PAM.", + "Patterns to be used for activating the subresource filter. Interstitial\nwill not be shown for patterns from this list." + ], + "description": "The threat types to be checked.", + "items": { + "type": "string", + "enum": [ + "THREAT_TYPE_UNSPECIFIED", + "MALWARE", + "SOCIAL_ENGINEERING", + "UNWANTED_SOFTWARE", + "POTENTIALLY_HARMFUL_APPLICATION", + "SOCIAL_ENGINEERING_INTERNAL", + "API_ABUSE", + "MALICIOUS_BINARY", + "CSD_WHITELIST", + "CSD_DOWNLOAD_WHITELIST", + "CLIENT_INCIDENT", + "CLIENT_INCIDENT_WHITELIST", + "APK_MALWARE_OFFLINE", + "SUBRESOURCE_FILTER" + ] + }, + "type": "array" + }, + "platformTypes": { + "enumDescriptions": [ + "Unknown platform.", + "Threat posed to Windows.", + "Threat posed to Linux.", + "Threat posed to Android.", + "Threat posed to OS X.", + "Threat posed to iOS.", + "Threat posed to at least one of the defined platforms.", + "Threat posed to all defined platforms.", + "Threat posed to Chrome." + ], + "description": "The platform types to be checked.", + "items": { + "enum": [ + "PLATFORM_TYPE_UNSPECIFIED", + "WINDOWS", + "LINUX", + "ANDROID", + "OSX", + "IOS", + "ANY_PLATFORM", + "ALL_PLATFORMS", + "CHROME" + ], + "type": "string" + }, + "type": "array" + }, + "threatEntries": { + "description": "The threat entries to be checked.", + "items": { + "$ref": "ThreatEntry" + }, + "type": "array" + } + }, + "id": "ThreatInfo" + }, + "FindThreatMatchesRequest": { + "id": "FindThreatMatchesRequest", + "description": "Request to check entries against lists.", + "type": "object", + "properties": { + "client": { + "$ref": "ClientInfo", + "description": "The client metadata." + }, + "threatInfo": { + "description": "The lists and entries to be checked for matches.", + "$ref": "ThreatInfo" + } + } } }, "protocol": "rest", @@ -1122,9 +1126,5 @@ "x32": "http://www.google.com/images/icons/product/search-32.gif", "x16": "http://www.google.com/images/icons/product/search-16.gif" }, - "version": "v4", - "baseUrl": "https://safebrowsing.googleapis.com/", - "servicePath": "", - "description": "Enables client applications to check web resources (most commonly URLs) against Google-generated lists of unsafe web resources.", - "kind": "discovery#restDescription" + "version": "v4" } diff --git a/vendor/google.golang.org/api/script/v1/script-api.json b/vendor/google.golang.org/api/script/v1/script-api.json index 6e0d056..4e44c38 100644 --- a/vendor/google.golang.org/api/script/v1/script-api.json +++ b/vendor/google.golang.org/api/script/v1/script-api.json @@ -1,4 +1,7 @@ { + "title": "Google Apps Script Execution API", + "discoveryVersion": "v1", + "ownerName": "Google", "resources": { "scripts": { "methods": { @@ -29,10 +32,10 @@ ], "parameters": { "scriptId": { - "type": "string", - "required": true, "location": "path", - "description": "The script ID of the script to be executed. To find the script ID, open\nthe project in the script editor and select **File \u003e Project properties**." + "description": "The script ID of the script to be executed. To find the script ID, open\nthe project in the script editor and select **File \u003e Project properties**.", + "type": "string", + "required": true } }, "flatPath": "v1/scripts/{scriptId}:run", @@ -43,25 +46,61 @@ } }, "parameters": { + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" + }, + "uploadType": { + "type": "string", + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." }, "fields": { "location": "query", "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, - "uploadType": { + "callback": { "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "description": "JSONP", "type": "string" }, "$.xgafv": { @@ -77,12 +116,13 @@ "description": "V1 error format.", "type": "string" }, - "callback": { - "type": "string", - "location": "query", - "description": "JSONP" - }, "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", "description": "Data format for response.", "default": "json", "enum": [ @@ -90,90 +130,19 @@ "media", "proto" ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "access_token": { - "type": "string", - "location": "query", - "description": "OAuth access token." - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" } }, "schemas": { - "ScriptStackTraceElement": { - "id": "ScriptStackTraceElement", - "description": "A stack trace through the script that shows where the execution failed.", - "type": "object", - "properties": { - "lineNumber": { - "format": "int32", - "description": "The line number where the script failed.", - "type": "integer" - }, - "function": { - "description": "The name of the function that failed.", - "type": "string" - } - } - }, - "ExecutionError": { - "description": "An object that provides information about the nature of an error in the Apps\nScript Execution API. If an\n`run` call succeeds but the\nscript function (or Apps Script itself) throws an exception, the response\nbody's `error` field contains a\n`Status` object. The `Status` object's `details` field\ncontains an array with a single one of these `ExecutionError` objects.", - "type": "object", - "properties": { - "errorType": { - "description": "The error type, for example `TypeError` or `ReferenceError`. If the error\ntype is unavailable, this field is not included.", - "type": "string" - }, - "errorMessage": { - "description": "The error message thrown by Apps Script, usually localized into the user's\nlanguage.", - "type": "string" - }, - "scriptStackTraceElements": { - "description": "An array of objects that provide a stack trace through the script to show\nwhere the execution failed, with the deepest call first.", - "items": { - "$ref": "ScriptStackTraceElement" - }, - "type": "array" - } - }, - "id": "ExecutionError" - }, "Status": { - "id": "Status", "description": "If a `run` call succeeds but the script function (or Apps Script itself) throws an exception, the response body's `error` field will contain this `Status` object.", "type": "object", "properties": { + "code": { + "format": "int32", + "description": "The status code. For this API, this value will always be 3, corresponding to an \u003ccode\u003eINVALID_ARGUMENT\u003c/code\u003e error.", + "type": "integer" + }, "message": { "description": "A developer-facing error message, which is in English. Any user-facing error message is localized and sent in the [`google.rpc.Status.details`](google.rpc.Status.details) field, or localized by the client.", "type": "string" @@ -188,25 +157,17 @@ "type": "object" }, "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code. For this API, this value will always be 3, corresponding to an \u003ccode\u003eINVALID_ARGUMENT\u003c/code\u003e error.", - "type": "integer" } - } + }, + "id": "Status" }, "ExecutionRequest": { "description": "A request to run the function in a script. The script is identified by the\nspecified `script_id`. Executing a function on a script returns results\nbased on the implementation of the script.", "type": "object", "properties": { - "sessionState": { - "description": "For Android add-ons only. An ID that represents the user's current session\nin the Android app for Google Docs or Sheets, included as extra data in the\n[`Intent`](https://developer.android.com/guide/components/intents-filters.html)\nthat launches the add-on. When an Android add-on is run with a session\nstate, it gains the privileges of a\n[bound](https://developers.google.com/apps-script/guides/bound) script —\nthat is, it can access information like the user's current cursor position\n(in Docs) or selected cell (in Sheets). To retrieve the state, call\n`Intent.getStringExtra(\"com.google.android.apps.docs.addons.SessionState\")`.\nOptional.", - "type": "string" - }, "devMode": { - "type": "boolean", - "description": "If `true` and the user is an owner of the script, the script runs at the\nmost recently saved version rather than the version deployed for use with\nthe Execution API. Optional; default is `false`." + "description": "If `true` and the user is an owner of the script, the script runs at the\nmost recently saved version rather than the version deployed for use with\nthe Execution API. Optional; default is `false`.", + "type": "boolean" }, "function": { "description": "The name of the function to execute in the given script. The name does not\ninclude parentheses or parameters.", @@ -218,25 +179,33 @@ "type": "any" }, "type": "array" + }, + "sessionState": { + "description": "For Android add-ons only. An ID that represents the user's current session\nin the Android app for Google Docs or Sheets, included as extra data in the\n[`Intent`](https://developer.android.com/guide/components/intents-filters.html)\nthat launches the add-on. When an Android add-on is run with a session\nstate, it gains the privileges of a\n[bound](https://developers.google.com/apps-script/guides/bound) script —\nthat is, it can access information like the user's current cursor position\n(in Docs) or selected cell (in Sheets). To retrieve the state, call\n`Intent.getStringExtra(\"com.google.android.apps.docs.addons.SessionState\")`.\nOptional.", + "type": "string" } }, "id": "ExecutionRequest" }, "ExecutionResponse": { - "description": "An object that provides the return value of a function executed through the\nApps Script Execution API. If a\n`run` call succeeds and the\nscript function returns successfully, the response body's\n`response` field contains this\n`ExecutionResponse` object.", - "type": "object", "properties": { "result": { "description": "The return value of the script function. The type matches the object type\nreturned in Apps Script. Functions called through the Execution API cannot\nreturn Apps Script-specific objects (such as a `Document` or a `Calendar`);\nthey can only return primitive types such as a `string`, `number`, `array`,\n`object`, or `boolean`.", "type": "any" } }, - "id": "ExecutionResponse" + "id": "ExecutionResponse", + "description": "An object that provides the return value of a function executed through the\nApps Script Execution API. If a\n`run` call succeeds and the\nscript function returns successfully, the response body's\n`response` field contains this\n`ExecutionResponse` object.", + "type": "object" }, "Operation": { "description": "The response will not arrive until the function finishes executing. The maximum runtime is listed in the guide to [limitations in Apps Script](https://developers.google.com/apps-script/guides/services/quotas#current_limitations).\n\u003cp\u003eIf the script function returns successfully, the `response` field will contain an `ExecutionResponse` object with the function's return value in the object's `result` field.\u003c/p\u003e\n\u003cp\u003eIf the script function (or Apps Script itself) throws an exception, the `error` field will contain a `Status` object. The `Status` object's `details` field will contain an array with a single `ExecutionError` object that provides information about the nature of the error.\u003c/p\u003e\n\u003cp\u003eIf the `run` call itself fails (for example, because of a malformed request or an authorization error), the method will return an HTTP response code in the 4XX range with a different format for the response body. Client libraries will automatically convert a 4XX response into an exception class.\u003c/p\u003e", "type": "object", "properties": { + "done": { + "description": "This field is only used with asynchronous executions and indicates whether or not the script execution has completed. A completed execution has a populated response field containing the `ExecutionResponse` from function that was executed.", + "type": "boolean" + }, "response": { "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", @@ -246,8 +215,8 @@ "type": "object" }, "error": { - "$ref": "Status", - "description": "If a `run` call succeeds but the script function (or Apps Script itself) throws an exception, this field will contain a `Status` object. The `Status` object's `details` field will contain an array with a single `ExecutionError` object that provides information about the nature of the error." + "description": "If a `run` call succeeds but the script function (or Apps Script itself) throws an exception, this field will contain a `Status` object. The `Status` object's `details` field will contain an array with a single `ExecutionError` object that provides information about the nature of the error.", + "$ref": "Status" }, "metadata": { "additionalProperties": { @@ -256,40 +225,71 @@ }, "description": "This field is not used.", "type": "object" - }, - "done": { - "description": "This field is only used with asynchronous executions and indicates whether or not the script execution has completed. A completed execution has a populated response field containing the `ExecutionResponse` from function that was executed.", - "type": "boolean" } }, "id": "Operation" + }, + "ScriptStackTraceElement": { + "id": "ScriptStackTraceElement", + "description": "A stack trace through the script that shows where the execution failed.", + "type": "object", + "properties": { + "lineNumber": { + "format": "int32", + "description": "The line number where the script failed.", + "type": "integer" + }, + "function": { + "type": "string", + "description": "The name of the function that failed." + } + } + }, + "ExecutionError": { + "description": "An object that provides information about the nature of an error in the Apps\nScript Execution API. If an\n`run` call succeeds but the\nscript function (or Apps Script itself) throws an exception, the response\nbody's `error` field contains a\n`Status` object. The `Status` object's `details` field\ncontains an array with a single one of these `ExecutionError` objects.", + "type": "object", + "properties": { + "errorType": { + "description": "The error type, for example `TypeError` or `ReferenceError`. If the error\ntype is unavailable, this field is not included.", + "type": "string" + }, + "errorMessage": { + "type": "string", + "description": "The error message thrown by Apps Script, usually localized into the user's\nlanguage." + }, + "scriptStackTraceElements": { + "description": "An array of objects that provide a stack trace through the script to show\nwhere the execution failed, with the deepest call first.", + "items": { + "$ref": "ScriptStackTraceElement" + }, + "type": "array" + } + }, + "id": "ExecutionError" } }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, "version": "v1", "baseUrl": "https://script.googleapis.com/", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/drive": { - "description": "View and manage the files in your Google Drive" - }, "https://www.googleapis.com/auth/spreadsheets": { "description": "View and manage your spreadsheets in Google Drive" }, "https://mail.google.com/": { "description": "Read, send, delete, and manage your email" }, - "https://www.googleapis.com/auth/admin.directory.group": { - "description": "View and manage the provisioning of groups on your domain" - }, "https://www.googleapis.com/auth/admin.directory.user": { "description": "View and manage the provisioning of users on your domain" }, + "https://www.googleapis.com/auth/admin.directory.group": { + "description": "View and manage the provisioning of groups on your domain" + }, "https://www.googleapis.com/auth/forms": { "description": "View and manage your forms in Google Drive" }, @@ -307,22 +307,22 @@ }, "https://www.googleapis.com/auth/forms.currentonly": { "description": "View and manage forms that this application has been installed in" + }, + "https://www.googleapis.com/auth/drive": { + "description": "View and manage the files in your Google Drive" } } } }, - "servicePath": "", - "description": "Executes functions in Google Apps Script projects.", "kind": "discovery#restDescription", + "description": "Executes functions in Google Apps Script projects.", + "servicePath": "", "rootUrl": "https://script.googleapis.com/", "basePath": "", "ownerDomain": "google.com", "name": "script", "batchPath": "batch", - "id": "script:v1", - "documentationLink": "https://developers.google.com/apps-script/execution/rest/v1/scripts/run", "revision": "20170829", - "title": "Google Apps Script Execution API", - "discoveryVersion": "v1", - "ownerName": "Google" + "documentationLink": "https://developers.google.com/apps-script/execution/rest/v1/scripts/run", + "id": "script:v1" } diff --git a/vendor/google.golang.org/api/searchconsole/v1/searchconsole-api.json b/vendor/google.golang.org/api/searchconsole/v1/searchconsole-api.json index 37e685b..7238105 100644 --- a/vendor/google.golang.org/api/searchconsole/v1/searchconsole-api.json +++ b/vendor/google.golang.org/api/searchconsole/v1/searchconsole-api.json @@ -1,93 +1,28 @@ { - "ownerDomain": "google.com", - "name": "searchconsole", - "batchPath": "batch", - "revision": "20170828", - "documentationLink": "https://developers.google.com/webmaster-tools/search-console-api/", - "id": "searchconsole:v1", - "title": "Google Search Console URL Testing Tools API", - "ownerName": "Google", - "discoveryVersion": "v1", - "version_module": true, - "resources": { - "urlTestingTools": { - "resources": { - "mobileFriendlyTest": { - "methods": { - "run": { - "response": { - "$ref": "RunMobileFriendlyTestResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "flatPath": "v1/urlTestingTools/mobileFriendlyTest:run", - "path": "v1/urlTestingTools/mobileFriendlyTest:run", - "id": "searchconsole.urlTestingTools.mobileFriendlyTest.run", - "request": { - "$ref": "RunMobileFriendlyTestRequest" - }, - "description": "Runs Mobile-Friendly Test for a given URL." - } - } - } - } - } - }, "parameters": { - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "description": "OAuth access token.", + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", "location": "query" }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { + "prettyPrint": { "location": "query", - "description": "Pretty-print response.", + "description": "Returns response with indentations and line breaks.", "type": "boolean", "default": "true" }, - "oauth_token": { + "fields": { "location": "query", - "description": "OAuth 2.0 token for the current user.", + "description": "Selector specifying which fields to include in a partial response.", "type": "string" }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "upload_protocol": { - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" - }, - "prettyPrint": { - "description": "Returns response with indentations and line breaks.", - "type": "boolean", - "default": "true", - "location": "query" - }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, "$.xgafv": { + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -97,8 +32,7 @@ "1", "2" ], - "description": "V1 error format.", - "type": "string" + "description": "V1 error format." }, "callback": { "location": "query", @@ -106,11 +40,6 @@ "type": "string" }, "alt": { - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", @@ -119,10 +48,160 @@ ], "location": "query", "description": "Data format for response.", - "default": "json" + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "type": "boolean", + "default": "true" + }, + "oauth_token": { + "type": "string", + "location": "query", + "description": "OAuth 2.0 token for the current user." + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" } }, "schemas": { + "RunMobileFriendlyTestRequest": { + "id": "RunMobileFriendlyTestRequest", + "description": "Mobile-friendly test request.", + "type": "object", + "properties": { + "url": { + "description": "URL for inspection.", + "type": "string" + }, + "requestScreenshot": { + "description": "Whether or not screenshot is requested. Default is false.", + "type": "boolean" + } + } + }, + "Image": { + "description": "Describe image data.", + "type": "object", + "properties": { + "mimeType": { + "type": "string", + "description": "The mime-type of the image data." + }, + "data": { + "description": "Image data in format determined by the mime type. Currently, the format\nwill always be \"image/png\", but this might change in the future.", + "format": "byte", + "type": "string" + } + }, + "id": "Image" + }, + "MobileFriendlyIssue": { + "description": "Mobile-friendly issue.", + "type": "object", + "properties": { + "rule": { + "type": "string", + "enumDescriptions": [ + "Unknown rule. Sorry, we don't have any description for the rule that was\nbroken.", + "Plugins incompatible with mobile devices are being used. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#flash_usage).", + "Viewsport is not specified using the meta viewport tag. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#viewport_not_configured).", + "Viewport defined to a fixed width. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#fixed-width_viewport).", + "Content not sized to viewport. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#content_not_sized_to_viewport).", + "Font size is too small for easy reading on a small screen. [Learn More]\n(https://support.google.com/webmasters/answer/6352293#small_font_size).", + "Touch elements are too close to each other. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#touch_elements_too_close)." + ], + "enum": [ + "MOBILE_FRIENDLY_RULE_UNSPECIFIED", + "USES_INCOMPATIBLE_PLUGINS", + "CONFIGURE_VIEWPORT", + "FIXED_WIDTH_VIEWPORT", + "SIZE_CONTENT_TO_VIEWPORT", + "USE_LEGIBLE_FONT_SIZES", + "TAP_TARGETS_TOO_CLOSE" + ], + "description": "Rule violated." + } + }, + "id": "MobileFriendlyIssue" + }, + "RunMobileFriendlyTestResponse": { + "properties": { + "mobileFriendliness": { + "enumDescriptions": [ + "Internal error when running this test. Please try running the test again.", + "The page is mobile friendly.", + "The page is not mobile friendly." + ], + "enum": [ + "MOBILE_FRIENDLY_TEST_RESULT_UNSPECIFIED", + "MOBILE_FRIENDLY", + "NOT_MOBILE_FRIENDLY" + ], + "description": "Test verdict, whether the page is mobile friendly or not.", + "type": "string" + }, + "mobileFriendlyIssues": { + "description": "List of mobile-usability issues.", + "type": "array", + "items": { + "$ref": "MobileFriendlyIssue" + } + }, + "screenshot": { + "$ref": "Image", + "description": "Screenshot of the requested URL." + }, + "testStatus": { + "description": "Final state of the test, can be either complete or an error.", + "$ref": "TestStatus" + }, + "resourceIssues": { + "description": "Information about embedded resources issues.", + "type": "array", + "items": { + "$ref": "ResourceIssue" + } + } + }, + "id": "RunMobileFriendlyTestResponse", + "description": "Mobile-friendly test response, including mobile-friendly issues and resource\nissues.", + "type": "object" + }, + "ResourceIssue": { + "description": "Information about a resource with issue.", + "type": "object", + "properties": { + "blockedResource": { + "$ref": "BlockedResource", + "description": "Describes a blocked resource issue." + } + }, + "id": "ResourceIssue" + }, "BlockedResource": { "description": "Blocked resource.", "type": "object", @@ -135,6 +214,9 @@ "id": "BlockedResource" }, "TestStatus": { + "id": "TestStatus", + "description": "Final state of the test, including error details if necessary.", + "type": "object", "properties": { "status": { "enumDescriptions": [ @@ -156,131 +238,14 @@ "description": "Error details if applicable.", "type": "string" } - }, - "id": "TestStatus", - "description": "Final state of the test, including error details if necessary.", - "type": "object" - }, - "Image": { - "properties": { - "mimeType": { - "description": "The mime-type of the image data.", - "type": "string" - }, - "data": { - "description": "Image data in format determined by the mime type. Currently, the format\nwill always be \"image/png\", but this might change in the future.", - "format": "byte", - "type": "string" - } - }, - "id": "Image", - "description": "Describe image data.", - "type": "object" - }, - "RunMobileFriendlyTestRequest": { - "description": "Mobile-friendly test request.", - "type": "object", - "properties": { - "url": { - "description": "URL for inspection.", - "type": "string" - }, - "requestScreenshot": { - "description": "Whether or not screenshot is requested. Default is false.", - "type": "boolean" - } - }, - "id": "RunMobileFriendlyTestRequest" - }, - "MobileFriendlyIssue": { - "properties": { - "rule": { - "enum": [ - "MOBILE_FRIENDLY_RULE_UNSPECIFIED", - "USES_INCOMPATIBLE_PLUGINS", - "CONFIGURE_VIEWPORT", - "FIXED_WIDTH_VIEWPORT", - "SIZE_CONTENT_TO_VIEWPORT", - "USE_LEGIBLE_FONT_SIZES", - "TAP_TARGETS_TOO_CLOSE" - ], - "description": "Rule violated.", - "type": "string", - "enumDescriptions": [ - "Unknown rule. Sorry, we don't have any description for the rule that was\nbroken.", - "Plugins incompatible with mobile devices are being used. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#flash_usage).", - "Viewsport is not specified using the meta viewport tag. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#viewport_not_configured).", - "Viewport defined to a fixed width. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#fixed-width_viewport).", - "Content not sized to viewport. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#content_not_sized_to_viewport).", - "Font size is too small for easy reading on a small screen. [Learn More]\n(https://support.google.com/webmasters/answer/6352293#small_font_size).", - "Touch elements are too close to each other. [Learn more]\n(https://support.google.com/webmasters/answer/6352293#touch_elements_too_close)." - ] - } - }, - "id": "MobileFriendlyIssue", - "description": "Mobile-friendly issue.", - "type": "object" - }, - "RunMobileFriendlyTestResponse": { - "properties": { - "testStatus": { - "description": "Final state of the test, can be either complete or an error.", - "$ref": "TestStatus" - }, - "resourceIssues": { - "description": "Information about embedded resources issues.", - "type": "array", - "items": { - "$ref": "ResourceIssue" - } - }, - "mobileFriendliness": { - "enum": [ - "MOBILE_FRIENDLY_TEST_RESULT_UNSPECIFIED", - "MOBILE_FRIENDLY", - "NOT_MOBILE_FRIENDLY" - ], - "description": "Test verdict, whether the page is mobile friendly or not.", - "type": "string", - "enumDescriptions": [ - "Internal error when running this test. Please try running the test again.", - "The page is mobile friendly.", - "The page is not mobile friendly." - ] - }, - "mobileFriendlyIssues": { - "description": "List of mobile-usability issues.", - "type": "array", - "items": { - "$ref": "MobileFriendlyIssue" - } - }, - "screenshot": { - "$ref": "Image", - "description": "Screenshot of the requested URL." - } - }, - "id": "RunMobileFriendlyTestResponse", - "description": "Mobile-friendly test response, including mobile-friendly issues and resource\nissues.", - "type": "object" - }, - "ResourceIssue": { - "properties": { - "blockedResource": { - "$ref": "BlockedResource", - "description": "Describes a blocked resource issue." - } - }, - "id": "ResourceIssue", - "description": "Information about a resource with issue.", - "type": "object" + } } }, - "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, + "protocol": "rest", "version": "v1", "baseUrl": "https://searchconsole.googleapis.com/", "canonicalName": "Search Console", @@ -288,5 +253,40 @@ "description": "Provides tools for running validation tests against single URLs", "servicePath": "", "rootUrl": "https://searchconsole.googleapis.com/", - "basePath": "" + "basePath": "", + "ownerDomain": "google.com", + "name": "searchconsole", + "batchPath": "batch", + "revision": "20170828", + "documentationLink": "https://developers.google.com/webmaster-tools/search-console-api/", + "id": "searchconsole:v1", + "title": "Google Search Console URL Testing Tools API", + "discoveryVersion": "v1", + "ownerName": "Google", + "version_module": true, + "resources": { + "urlTestingTools": { + "resources": { + "mobileFriendlyTest": { + "methods": { + "run": { + "response": { + "$ref": "RunMobileFriendlyTestResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "flatPath": "v1/urlTestingTools/mobileFriendlyTest:run", + "path": "v1/urlTestingTools/mobileFriendlyTest:run", + "id": "searchconsole.urlTestingTools.mobileFriendlyTest.run", + "description": "Runs Mobile-Friendly Test for a given URL.", + "request": { + "$ref": "RunMobileFriendlyTestRequest" + } + } + } + } + } + } + } } diff --git a/vendor/google.golang.org/api/servicecontrol/v1/servicecontrol-api.json b/vendor/google.golang.org/api/servicecontrol/v1/servicecontrol-api.json index 5b65590..84c5caf 100644 --- a/vendor/google.golang.org/api/servicecontrol/v1/servicecontrol-api.json +++ b/vendor/google.golang.org/api/servicecontrol/v1/servicecontrol-api.json @@ -1,272 +1,9 @@ { - "ownerName": "Google", - "resources": { - "services": { - "methods": { - "report": { - "httpMethod": "POST", - "parameterOrder": [ - "serviceName" - ], - "response": { - "$ref": "ReportResponse" - }, - "parameters": { - "serviceName": { - "location": "path", - "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "flatPath": "v1/services/{serviceName}:report", - "path": "v1/services/{serviceName}:report", - "id": "servicecontrol.services.report", - "description": "Reports operation results to Google Service Control, such as logs and\nmetrics. It should be called after an operation is completed.\n\nIf feasible, the client should aggregate reporting data for up to 5\nseconds to reduce API traffic. Limiting aggregation to 5 seconds is to\nreduce data loss during client crashes. Clients should carefully choose\nthe aggregation time window to avoid data loss risk more than 0.01%\nfor business and compliance reasons.\n\nNOTE: the ReportRequest has the size limit of 1MB.\n\nThis method requires the `servicemanagement.services.report` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", - "request": { - "$ref": "ReportRequest" - } - }, - "allocateQuota": { - "httpMethod": "POST", - "parameterOrder": [ - "serviceName" - ], - "response": { - "$ref": "AllocateQuotaResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "parameters": { - "serviceName": { - "location": "path", - "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/services/{serviceName}:allocateQuota", - "path": "v1/services/{serviceName}:allocateQuota", - "id": "servicecontrol.services.allocateQuota", - "request": { - "$ref": "AllocateQuotaRequest" - }, - "description": "Attempts to allocate quota for the specified consumer. It should be called\nbefore the operation is executed.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).\n\n**NOTE:** the client code **must** fail-open if the server returns one\nof the following quota errors:\n- `PROJECT_STATUS_UNAVAILABLE`\n- `SERVICE_STATUS_UNAVAILABLE`\n- `BILLING_STATUS_UNAVAILABLE`\n- `QUOTA_SYSTEM_UNAVAILABLE`\n\nThe server may inject above errors to prohibit any hard dependency\non the quota system." - }, - "startReconciliation": { - "id": "servicecontrol.services.startReconciliation", - "path": "v1/services/{serviceName}:startReconciliation", - "description": "Unlike rate quota, allocation quota does not get refilled periodically.\nSo, it is possible that the quota usage as seen by the service differs from\nwhat the One Platform considers the usage is. This is expected to happen\nonly rarely, but over time this can accumulate. Services can invoke\nStartReconciliation and EndReconciliation to correct this usage drift, as\ndescribed below:\n1. Service sends StartReconciliation with a timestamp in future for each\n metric that needs to be reconciled. The timestamp being in future allows\n to account for in-flight AllocateQuota and ReleaseQuota requests for the\n same metric.\n2. One Platform records this timestamp and starts tracking subsequent\n AllocateQuota and ReleaseQuota requests until EndReconciliation is\n called.\n3. At or after the time specified in the StartReconciliation, service\n sends EndReconciliation with the usage that needs to be reconciled to.\n4. One Platform adjusts its own record of usage for that metric to the\n value specified in EndReconciliation by taking in to account any\n allocation or release between StartReconciliation and EndReconciliation.\n\nSignals the quota controller that the service wants to perform a usage\nreconciliation as specified in the request.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", - "request": { - "$ref": "StartReconciliationRequest" - }, - "response": { - "$ref": "StartReconciliationResponse" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "POST", - "parameters": { - "serviceName": { - "location": "path", - "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "flatPath": "v1/services/{serviceName}:startReconciliation" - }, - "check": { - "request": { - "$ref": "CheckRequest" - }, - "description": "Checks an operation with Google Service Control to decide whether\nthe given operation should proceed. It should be called before the\noperation is executed.\n\nIf feasible, the client should cache the check results and reuse them for\n60 seconds. In case of server errors, the client can rely on the cached\nresults for longer time.\n\nNOTE: the CheckRequest has the size limit of 64KB.\n\nThis method requires the `servicemanagement.services.check` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", - "response": { - "$ref": "CheckResponse" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "parameters": { - "serviceName": { - "location": "path", - "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/services/{serviceName}:check", - "id": "servicecontrol.services.check", - "path": "v1/services/{serviceName}:check" - }, - "releaseQuota": { - "response": { - "$ref": "ReleaseQuotaResponse" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "parameters": { - "serviceName": { - "location": "path", - "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/services/{serviceName}:releaseQuota", - "id": "servicecontrol.services.releaseQuota", - "path": "v1/services/{serviceName}:releaseQuota", - "request": { - "$ref": "ReleaseQuotaRequest" - }, - "description": "Releases previously allocated quota done through AllocateQuota method.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).\n\n**NOTE:** the client code **must** fail-open if the server returns one\nof the following quota errors:\n- `PROJECT_STATUS_UNAVAILABLE`\n- `SERVICE_STATUS_UNAVAILABLE`\n- `BILLING_STATUS_UNAVAILABLE`\n- `QUOTA_SYSTEM_UNAVAILABLE`\n\nThe server may inject above errors to prohibit any hard dependency\non the quota system." - }, - "endReconciliation": { - "response": { - "$ref": "EndReconciliationResponse" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/servicecontrol" - ], - "parameters": { - "serviceName": { - "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/services/{serviceName}:endReconciliation", - "id": "servicecontrol.services.endReconciliation", - "path": "v1/services/{serviceName}:endReconciliation", - "request": { - "$ref": "EndReconciliationRequest" - }, - "description": "Signals the quota controller that service ends the ongoing usage\nreconciliation.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam)." - } - } - } - }, - "parameters": { - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "alt": { - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", - "type": "string", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - } - }, "version": "v1", "baseUrl": "https://servicecontrol.googleapis.com/", + "kind": "discovery#restDescription", "servicePath": "", "description": "Google Service Control provides control plane functionality to managed services, such as logging, monitoring, and status checks.", - "kind": "discovery#restDescription", "basePath": "", "id": "servicecontrol:v1", "documentationLink": "https://cloud.google.com/service-control/", @@ -274,10 +11,499 @@ "discoveryVersion": "v1", "version_module": true, "schemas": { + "QuotaInfo": { + "description": "Contains the quota information for a quota check response.", + "type": "object", + "properties": { + "limitExceeded": { + "description": "Quota Metrics that have exceeded quota limits.\nFor QuotaGroup-based quota, this is QuotaGroup.name\nFor QuotaLimit-based quota, this is QuotaLimit.name\nSee: google.api.Quota\nDeprecated: Use quota_metrics to get per quota group limit exceeded status.", + "items": { + "type": "string" + }, + "type": "array" + }, + "quotaConsumed": { + "additionalProperties": { + "format": "int32", + "type": "integer" + }, + "description": "Map of quota group name to the actual number of tokens consumed. If the\nquota check was not successful, then this will not be populated due to no\nquota consumption.\n\nWe are not merging this field with 'quota_metrics' field because of the\ncomplexity of scaling in Chemist client code base. For simplicity, we will\nkeep this field for Castor (that scales quota usage) and 'quota_metrics'\nfor SuperQuota (that doesn't scale quota usage).\n", + "type": "object" + }, + "quotaMetrics": { + "description": "Quota metrics to indicate the usage. Depending on the check request, one or\nmore of the following metrics will be included:\n\n1. For rate quota, per quota group or per quota metric incremental usage\nwill be specified using the following delta metric:\n \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. For allocation quota, per quota metric total usage will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n3. For both rate quota and allocation quota, the quota limit reached\ncondition will be specified using the following boolean metric:\n \"serviceruntime.googleapis.com/quota/exceeded\"", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" + } + }, + "id": "QuotaInfo" + }, + "ConsumerInfo": { + "id": "ConsumerInfo", + "description": "`ConsumerInfo` provides information about the consumer project.", + "type": "object", + "properties": { + "projectNumber": { + "format": "int64", + "description": "The Google cloud project number, e.g. 1234567890. A value of 0 indicates\nno project number is found.", + "type": "string" + } + } + }, + "CheckRequest": { + "id": "CheckRequest", + "description": "Request message for the Check method.", + "type": "object", + "properties": { + "requestProjectSettings": { + "description": "Requests the project settings to be returned as part of the check response.", + "type": "boolean" + }, + "operation": { + "$ref": "Operation", + "description": "The operation to be checked." + }, + "serviceConfigId": { + "description": "Specifies which version of service configuration should be used to process\nthe request.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.", + "type": "string" + }, + "skipActivationCheck": { + "description": "Indicates if service activation check should be skipped for this request.\nDefault behavior is to perform the check and apply relevant quota.", + "type": "boolean" + } + } + }, + "QuotaOperation": { + "id": "QuotaOperation", + "description": "Represents information regarding a quota operation.", + "type": "object", + "properties": { + "operationId": { + "description": "Identity of the operation. This is expected to be unique within the scope\nof the service that generated the operation, and guarantees idempotency in\ncase of retries.\n\nUUID version 4 is recommended, though not required. In scenarios where an\noperation is computed from existing information and an idempotent id is\ndesirable for deduplication purpose, UUID version 5 is recommended. See\nRFC 4122 for details.", + "type": "string" + }, + "quotaMode": { + "description": "Quota mode for this operation.", + "type": "string", + "enumDescriptions": [ + "", + "For AllocateQuota request, allocates quota for the amount specified in\nthe service configuration or specified using the quota metrics. If the\namount is higher than the available quota, allocation error will be\nreturned and no quota will be allocated.\nFor ReleaseQuota request, this mode is supported only for precise quota\nlimits. In this case, this operation releases quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the release can make used quota negative, release error\nwill be returned and no quota will be released.", + "For AllocateQuota request, this mode is supported only for imprecise\nquota limits. In this case, the operation allocates quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the amount is higher than the available quota, request does\nnot fail but all available quota will be allocated.\nFor ReleaseQuota request, this mode is supported for both precise quota\nlimits and imprecise quota limits. In this case, this operation releases\nquota for the amount specified in the service configuration or specified\nusing the quota metrics. If the release can make used quota\nnegative, request does not fail but only the used quota will be\nreleased. After the ReleaseQuota request completes, the used quota\nwill be 0, and never goes to negative.", + "For AllocateQuota request, only checks if there is enough quota\navailable and does not change the available quota. No lock is placed on\nthe available quota either. Not supported for ReleaseQuota request." + ], + "enum": [ + "UNSPECIFIED", + "NORMAL", + "BEST_EFFORT", + "CHECK_ONLY" + ] + }, + "methodName": { + "description": "Fully qualified name of the API method for which this quota operation is\nrequested. This name is used for matching quota rules or metric rules and\nbilling status rules defined in service configuration. This field is not\nrequired if the quota operation is performed on non-API resources.\n\nExample of an RPC method name:\n google.example.library.v1.LibraryService.CreateShelf", + "type": "string" + }, + "quotaMetrics": { + "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" + }, + "labels": { + "description": "Labels describing the operation.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "consumerId": { + "description": "Identity of the consumer for whom this quota operation is being performed.\n\nThis can be in one of the following formats:\n project:\u003cproject_id\u003e,\n project_number:\u003cproject_number\u003e,\n api_key:\u003capi_key\u003e.", + "type": "string" + } + } + }, + "EndReconciliationRequest": { + "id": "EndReconciliationRequest", + "type": "object", + "properties": { + "serviceConfigId": { + "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.", + "type": "string" + }, + "reconciliationOperation": { + "description": "Operation that describes the quota reconciliation.", + "$ref": "QuotaOperation" + } + } + }, + "ReportInfo": { + "id": "ReportInfo", + "type": "object", + "properties": { + "operationId": { + "description": "The Operation.operation_id value from the request.", + "type": "string" + }, + "quotaInfo": { + "description": "Quota usage info when processing the `Operation`.", + "$ref": "QuotaInfo" + } + } + }, + "ReportResponse": { + "description": "Response message for the Report method.", + "type": "object", + "properties": { + "reportErrors": { + "description": "Partial failures, one for each `Operation` in the request that failed\nprocessing. There are three possible combinations of the RPC status:\n\n1. The combination of a successful RPC status and an empty `report_errors`\n list indicates a complete success where all `Operations` in the\n request are processed successfully.\n2. The combination of a successful RPC status and a non-empty\n `report_errors` list indicates a partial success where some\n `Operations` in the request succeeded. Each\n `Operation` that failed processing has a corresponding item\n in this list.\n3. A failed RPC status indicates a general non-deterministic failure.\n When this happens, it's impossible to know which of the\n 'Operations' in the request succeeded or failed.", + "items": { + "$ref": "ReportError" + }, + "type": "array" + }, + "reportInfos": { + "description": "Quota usage for each quota release `Operation` request.\n\nFully or partially failed quota release request may or may not be present\nin `report_quota_info`. For example, a failed quota release request will\nhave the current quota usage info when precise quota library returns the\ninfo. A deadline exceeded quota request will not have quota usage info.\n\nIf there is no quota release request, report_quota_info will be empty.\n", + "items": { + "$ref": "ReportInfo" + }, + "type": "array" + }, + "serviceConfigId": { + "description": "The actual config id used to process the request.", + "type": "string" + } + }, + "id": "ReportResponse" + }, + "Operation": { + "description": "Represents information regarding an operation.", + "type": "object", + "properties": { + "operationName": { + "description": "Fully qualified name of the operation. Reserved for future use.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "End time of the operation.\nRequired when the operation is used in ServiceController.Report,\nbut optional when the operation is used in ServiceController.Check.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "Required. Start time of the operation.", + "type": "string" + }, + "importance": { + "description": "DO NOT USE. This is an experimental field.", + "type": "string", + "enumDescriptions": [ + "The API implementation may cache and aggregate the data.\nThe data may be lost when rare and unexpected system failures occur.", + "The API implementation doesn't cache and aggregate the data.\nIf the method returns successfully, it's guaranteed that the data has\nbeen persisted in durable storage.", + "In addition to the behavior described in HIGH, DEBUG enables\nadditional validation logic that is only useful during the onboarding\nprocess. This is only available to Google internal services and\nthe service must be whitelisted by chemist-dev@google.com in order\nto use this level." + ], + "enum": [ + "LOW", + "HIGH", + "DEBUG" + ] + }, + "resourceContainers": { + "description": "DO NOT USE.\nThis field is not ready for use yet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "resourceContainer": { + "description": "The resource name of the parent of a resource in the resource hierarchy.\n\nThis can be in one of the following formats:\n - “projects/\u003cproject-id or project-number\u003e”\n - “folders/\u003cfolder-id\u003e”\n - “organizations/\u003corganization-id\u003e”", + "type": "string" + }, + "labels": { + "description": "Labels describing the operation. Only the following labels are allowed:\n\n- Labels describing monitored resources as defined in\n the service configuration.\n- Default labels of metric values. When specified, labels defined in the\n metric value override these default.\n- The following labels defined by Google Cloud Platform:\n - `cloud.googleapis.com/location` describing the location where the\n operation happened,\n - `servicecontrol.googleapis.com/user_agent` describing the user agent\n of the API request,\n - `servicecontrol.googleapis.com/service_agent` describing the service\n used to handle the API request (e.g. ESP),\n - `servicecontrol.googleapis.com/platform` describing the platform\n where the API is served (e.g. GAE, GCE, GKE).", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "logEntries": { + "description": "Represents information to be logged.", + "items": { + "$ref": "LogEntry" + }, + "type": "array" + }, + "userLabels": { + "description": "User defined labels for the resource that this operation is associated\nwith.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "metricValueSets": { + "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" + }, + "quotaProperties": { + "$ref": "QuotaProperties", + "description": "Represents the properties needed for quota check. Applicable only if this\noperation is for a quota check request." + }, + "consumerId": { + "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\nThis can be in one of the following formats:\n project:\u003cproject_id\u003e,\n project_number:\u003cproject_number\u003e,\n api_key:\u003capi_key\u003e.", + "type": "string" + }, + "operationId": { + "description": "Identity of the operation. This must be unique within the scope of the\nservice that generated the operation. If the service calls\nCheck() and Report() on the same operation, the two calls should carry\nthe same id.\n\nUUID version 4 is recommended, though not required.\nIn scenarios where an operation is computed from existing information\nand an idempotent id is desirable for deduplication purpose, UUID version 5\nis recommended. See RFC 4122 for details.", + "type": "string" + } + }, + "id": "Operation" + }, + "CheckResponse": { + "description": "Response message for the Check method.", + "type": "object", + "properties": { + "checkInfo": { + "description": "Feedback data returned from the server during processing a Check request.", + "$ref": "CheckInfo" + }, + "checkErrors": { + "description": "Indicate the decision of the check.\n\nIf no check errors are present, the service should process the operation.\nOtherwise the service should use the list of errors to determine the\nappropriate action.", + "items": { + "$ref": "CheckError" + }, + "type": "array" + }, + "operationId": { + "description": "The same operation_id value used in the CheckRequest.\nUsed for logging and diagnostics purposes.", + "type": "string" + }, + "serviceConfigId": { + "description": "The actual config id used to process the request.", + "type": "string" + }, + "quotaInfo": { + "description": "Quota information for the check request associated with this response.\n", + "$ref": "QuotaInfo" + } + }, + "id": "CheckResponse" + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + } + }, + "id": "Status" + }, + "ReportRequest": { + "id": "ReportRequest", + "description": "Request message for the Report method.", + "type": "object", + "properties": { + "serviceConfigId": { + "description": "Specifies which version of service config should be used to process the\nrequest.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.", + "type": "string" + }, + "operations": { + "description": "Operations to be reported.\n\nTypically the service should report one operation per request.\nPutting multiple operations into a single request is allowed, but should\nbe used only when multiple operations are natually available at the time\nof the report.\n\nIf multiple operations are in a single request, the total request size\nshould be no larger than 1MB. See ReportResponse.report_errors for\npartial failure behavior.", + "items": { + "$ref": "Operation" + }, + "type": "array" + } + } + }, + "LogEntry": { + "id": "LogEntry", + "description": "An individual log entry.", + "type": "object", + "properties": { + "name": { + "description": "Required. The log to which this log entry belongs. Examples: `\"syslog\"`,\n`\"book_log\"`.", + "type": "string" + }, + "insertId": { + "description": "A unique ID for the log entry used for deduplication. If omitted,\nthe implementation will generate one based on operation_id.", + "type": "string" + }, + "structPayload": { + "description": "The log entry payload, represented as a structure that\nis expressed as a JSON object.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "textPayload": { + "description": "The log entry payload, represented as a Unicode string (UTF-8).", + "type": "string" + }, + "protoPayload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The log entry payload, represented as a protocol buffer that is\nexpressed as a JSON object. The only accepted type currently is\nAuditLog.", + "type": "object" + }, + "timestamp": { + "format": "google-datetime", + "description": "The time the event described by the log entry occurred. If\nomitted, defaults to operation start time.", + "type": "string" + }, + "labels": { + "description": "A set of user-defined (key, value) data that provides additional\ninformation about the log entry.", + "type": "object", + "additionalProperties": { + "type": "string" + } + }, + "severity": { + "description": "The severity of the log entry. The default value is\n`LogSeverity.DEFAULT`.", + "type": "string", + "enumDescriptions": [ + "(0) The log entry has no assigned severity level.", + "(100) Debug or trace information.", + "(200) Routine information, such as ongoing status or performance.", + "(300) Normal but significant events, such as start up, shut down, or\na configuration change.", + "(400) Warning events might cause problems.", + "(500) Error events are likely to cause problems.", + "(600) Critical events cause more severe problems or outages.", + "(700) A person must take an action immediately.", + "(800) One or more systems are unusable." + ], + "enum": [ + "DEFAULT", + "DEBUG", + "INFO", + "NOTICE", + "WARNING", + "ERROR", + "CRITICAL", + "ALERT", + "EMERGENCY" + ] + } + } + }, + "AuditLog": { + "description": "Common audit log format for Google Cloud Platform API operations.\n\n", + "type": "object", + "properties": { + "resourceName": { + "description": "The resource or collection that is the target of the operation.\nThe name is a scheme-less URI, not including the API service name.\nFor example:\n\n \"shelves/SHELF_ID/books\"\n \"shelves/SHELF_ID/books/BOOK_ID\"", + "type": "string" + }, + "authorizationInfo": { + "description": "Authorization information. If there are multiple\nresources or permissions involved, then there is\none AuthorizationInfo element for each {resource, permission} tuple.", + "items": { + "$ref": "AuthorizationInfo" + }, + "type": "array" + }, + "request": { + "description": "The operation request. This may not include all request parameters,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "serviceData": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Other service-specific data about the request, response, and other\nactivities.", + "type": "object" + }, + "requestMetadata": { + "description": "Metadata about the operation.", + "$ref": "RequestMetadata" + }, + "numResponseItems": { + "format": "int64", + "description": "The number of items returned from a List or Query API method,\nif applicable.", + "type": "string" + }, + "status": { + "$ref": "Status", + "description": "The status of the overall operation." + }, + "authenticationInfo": { + "description": "Authentication information.", + "$ref": "AuthenticationInfo" + }, + "response": { + "description": "The operation response. This may not include all response elements,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "serviceName": { + "description": "The name of the API service performing the operation. For example,\n`\"datastore.googleapis.com\"`.", + "type": "string" + }, + "methodName": { + "description": "The name of the service method or operation.\nFor API calls, this should be the name of the API method.\nFor example,\n\n \"google.datastore.v1.Datastore.RunQuery\"\n \"google.logging.v1.LoggingService.DeleteLog\"", + "type": "string" + } + }, + "id": "AuditLog" + }, "MetricValue": { "description": "Represents a single metric value.", "type": "object", "properties": { + "distributionValue": { + "description": "A distribution value.", + "$ref": "Distribution" + }, + "boolValue": { + "description": "A boolean value.", + "type": "boolean" + }, + "endTime": { + "format": "google-datetime", + "description": "The end of the time period over which this metric value's measurement\napplies.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The start of the time period over which this metric value's measurement\napplies. The time period has different semantics for different metric\ntypes (cumulative, delta, and gauge). See the metric definition\ndocumentation in the service configuration for details.", + "type": "string" + }, + "moneyValue": { + "$ref": "Money", + "description": "A money value." + }, "stringValue": { "description": "A text string value.", "type": "string" @@ -298,33 +524,40 @@ "format": "int64", "description": "A signed 64-bit integer value.", "type": "string" - }, - "distributionValue": { - "$ref": "Distribution", - "description": "A distribution value." - }, - "boolValue": { - "description": "A boolean value.", - "type": "boolean" - }, - "endTime": { - "format": "google-datetime", - "description": "The end of the time period over which this metric value's measurement\napplies.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "The start of the time period over which this metric value's measurement\napplies. The time period has different semantics for different metric\ntypes (cumulative, delta, and gauge). See the metric definition\ndocumentation in the service configuration for details.", - "type": "string" - }, - "moneyValue": { - "$ref": "Money", - "description": "A money value." } }, "id": "MetricValue" }, + "EndReconciliationResponse": { + "id": "EndReconciliationResponse", + "type": "object", + "properties": { + "quotaMetrics": { + "description": "Metric values as tracked by One Platform before the adjustment was made.\nThe following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"\n\n3. Delta value of the usage after the reconciliation for limits associated\nwith the metrics will be specified using the following metric:\n \"serviceruntime.googleapis.com/allocation/reconciliation_delta\"\nThe delta value is defined as:\n new_usage_from_client - existing_value_in_spanner.\nThis metric is not defined in serviceruntime.yaml or in Cloud Monarch.\nThis metric is meant for callers' use only. Since this metric is not\ndefined in the monitoring backend, reporting on this metric will result in\nan error.", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" + }, + "reconciliationErrors": { + "description": "Indicates the decision of the reconciliation end.", + "items": { + "$ref": "QuotaError" + }, + "type": "array" + }, + "operationId": { + "description": "The same operation_id value used in the EndReconciliationRequest. Used for\nlogging and diagnostics purposes.", + "type": "string" + }, + "serviceConfigId": { + "description": "ID of the actual config used to process the request.", + "type": "string" + } + } + }, "Money": { + "id": "Money", "description": "Represents an amount of money with its currency type.", "type": "object", "properties": { @@ -342,36 +575,7 @@ "description": "Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999 inclusive.\nIf `units` is positive, `nanos` must be positive or zero.\nIf `units` is zero, `nanos` can be positive, zero, or negative.\nIf `units` is negative, `nanos` must be negative or zero.\nFor example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", "type": "integer" } - }, - "id": "Money" - }, - "EndReconciliationResponse": { - "properties": { - "reconciliationErrors": { - "description": "Indicates the decision of the reconciliation end.", - "items": { - "$ref": "QuotaError" - }, - "type": "array" - }, - "operationId": { - "description": "The same operation_id value used in the EndReconciliationRequest. Used for\nlogging and diagnostics purposes.", - "type": "string" - }, - "serviceConfigId": { - "description": "ID of the actual config used to process the request.", - "type": "string" - }, - "quotaMetrics": { - "description": "Metric values as tracked by One Platform before the adjustment was made.\nThe following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"\n\n3. Delta value of the usage after the reconciliation for limits associated\nwith the metrics will be specified using the following metric:\n \"serviceruntime.googleapis.com/allocation/reconciliation_delta\"\nThe delta value is defined as:\n new_usage_from_client - existing_value_in_spanner.\nThis metric is not defined in serviceruntime.yaml or in Cloud Monarch.\nThis metric is meant for callers' use only. Since this metric is not\ndefined in the monitoring backend, reporting on this metric will result in\nan error.", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" - } - }, - "id": "EndReconciliationResponse", - "type": "object" + } }, "ExplicitBuckets": { "description": "Describing buckets with arbitrary user-provided width.", @@ -389,9 +593,23 @@ "id": "ExplicitBuckets" }, "Distribution": { + "id": "Distribution", "description": "Distribution represents a frequency distribution of double-valued sample\npoints. It contains the size of the population of sample points plus\nadditional optional information:\n\n - the arithmetic mean of the samples\n - the minimum and maximum of the samples\n - the sum-squared-deviation of the samples, used to compute variance\n - a histogram of the values of the sample points", "type": "object", "properties": { + "exponentialBuckets": { + "description": "Buckets with exponentially growing width.", + "$ref": "ExponentialBuckets" + }, + "minimum": { + "format": "double", + "description": "The minimum of the population of values. Ignored if `count` is zero.", + "type": "number" + }, + "linearBuckets": { + "description": "Buckets with constant width.", + "$ref": "LinearBuckets" + }, "count": { "format": "int64", "description": "The total number of samples in the distribution. Must be \u003e= 0.", @@ -423,27 +641,18 @@ "format": "double", "description": "The sum of squared deviations from the mean:\n Sum[i=1..count]((x_i - mean)^2)\nwhere each x_i is a sample values. If `count` is zero then this field\nmust be zero, otherwise validation of the request fails.", "type": "number" - }, - "exponentialBuckets": { - "$ref": "ExponentialBuckets", - "description": "Buckets with exponentially growing width." - }, - "minimum": { - "format": "double", - "description": "The minimum of the population of values. Ignored if `count` is zero.", - "type": "number" - }, - "linearBuckets": { - "description": "Buckets with constant width.", - "$ref": "LinearBuckets" } - }, - "id": "Distribution" + } }, "ExponentialBuckets": { "description": "Describing buckets with exponentially growing width.", "type": "object", "properties": { + "growthFactor": { + "format": "double", + "description": "The i'th exponential bucket covers the interval\n [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be larger than 1.0.", + "type": "number" + }, "scale": { "format": "double", "description": "The i'th exponential bucket covers the interval\n [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be \u003e 0.", @@ -453,19 +662,19 @@ "format": "int32", "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.", "type": "integer" - }, - "growthFactor": { - "format": "double", - "description": "The i'th exponential bucket covers the interval\n [scale * growth_factor^(i-1), scale * growth_factor^i)\nwhere i ranges from 1 to num_finite_buckets inclusive.\nMust be larger than 1.0.", - "type": "number" } }, "id": "ExponentialBuckets" }, "AuthorizationInfo": { + "id": "AuthorizationInfo", "description": "Authorization information for the operation.", "type": "object", "properties": { + "permission": { + "description": "The required IAM permission.", + "type": "string" + }, "resource": { "description": "The resource being accessed, as a REST-style string. For example:\n\n bigquery.googleapis.com/projects/PROJECTID/datasets/DATASETID", "type": "string" @@ -473,24 +682,13 @@ "granted": { "description": "Whether or not authorization for `resource` and `permission`\nwas granted.", "type": "boolean" - }, - "permission": { - "description": "The required IAM permission.", - "type": "string" } - }, - "id": "AuthorizationInfo" + } }, "StartReconciliationResponse": { + "id": "StartReconciliationResponse", "type": "object", "properties": { - "quotaMetrics": { - "description": "Metric values as tracked by One Platform before the start of\nreconciliation. The following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" - }, "reconciliationErrors": { "description": "Indicates the decision of the reconciliation start.", "items": { @@ -505,21 +703,28 @@ "serviceConfigId": { "description": "ID of the actual config used to process the request.", "type": "string" + }, + "quotaMetrics": { + "description": "Metric values as tracked by One Platform before the start of\nreconciliation. The following metrics will be included:\n\n1. Per quota metric total usage will be specified using the following gauge\nmetric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n2. Value for each quota limit associated with the metrics will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" } - }, - "id": "StartReconciliationResponse" + } }, "QuotaProperties": { "description": "Represents the properties needed for quota operations.", "type": "object", "properties": { + "limitByIds": { + "additionalProperties": { + "type": "string" + }, + "description": "LimitType IDs that should be used for checking quota. Key in this map\nshould be a valid LimitType string, and the value is the ID to be used. For\nexample, an entry \u003cUSER, 123\u003e will cause all user quota limits to use 123\nas the user ID. See google/api/quota.proto for the definition of LimitType.\nCLIENT_PROJECT: Not supported.\nUSER: Value of this entry will be used for enforcing user-level quota\n limits. If none specified, caller IP passed in the\n servicecontrol.googleapis.com/caller_ip label will be used instead.\n If the server cannot resolve a value for this LimitType, an error\n will be thrown. No validation will be performed on this ID.\nDeprecated: use servicecontrol.googleapis.com/user label to send user ID.", + "type": "object" + }, "quotaMode": { - "enum": [ - "ACQUIRE", - "ACQUIRE_BEST_EFFORT", - "CHECK", - "RELEASE" - ], "description": "Quota mode for this operation.", "type": "string", "enumDescriptions": [ @@ -527,22 +732,27 @@ "Decreases available quota by the cost specified for the operation.\nIf cost is higher than available quota, operation does not fail and\navailable quota goes down to zero but it returns error.", "Does not change any available quota. Only checks if there is enough\nquota.\nNo lock is placed on the checked tokens neither.", "Increases available quota by the operation cost specified for the\noperation." + ], + "enum": [ + "ACQUIRE", + "ACQUIRE_BEST_EFFORT", + "CHECK", + "RELEASE" ] - }, - "limitByIds": { - "additionalProperties": { - "type": "string" - }, - "description": "LimitType IDs that should be used for checking quota. Key in this map\nshould be a valid LimitType string, and the value is the ID to be used. For\nexample, an entry \u003cUSER, 123\u003e will cause all user quota limits to use 123\nas the user ID. See google/api/quota.proto for the definition of LimitType.\nCLIENT_PROJECT: Not supported.\nUSER: Value of this entry will be used for enforcing user-level quota\n limits. If none specified, caller IP passed in the\n servicecontrol.googleapis.com/caller_ip label will be used instead.\n If the server cannot resolve a value for this LimitType, an error\n will be thrown. No validation will be performed on this ID.\nDeprecated: use servicecontrol.googleapis.com/user label to send user ID.", - "type": "object" } }, "id": "QuotaProperties" }, "LinearBuckets": { + "id": "LinearBuckets", "description": "Describing buckets with constant width.", "type": "object", "properties": { + "offset": { + "format": "double", + "description": "The i'th linear bucket covers the interval\n [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.", + "type": "number" + }, "numFiniteBuckets": { "format": "int32", "description": "The number of finite buckets. With the underflow and overflow buckets,\nthe total number of buckets is `num_finite_buckets` + 2.\nSee comments on `bucket_options` for details.", @@ -552,14 +762,8 @@ "format": "double", "description": "The i'th linear bucket covers the interval\n [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.\nMust be strictly positive.", "type": "number" - }, - "offset": { - "format": "double", - "description": "The i'th linear bucket covers the interval\n [offset + (i-1) * width, offset + i * width)\nwhere i ranges from 1 to num_finite_buckets, inclusive.", - "type": "number" } - }, - "id": "LinearBuckets" + } }, "AuthenticationInfo": { "description": "Authentication information for the operation.", @@ -580,6 +784,13 @@ "description": "Response message for the AllocateQuota method.", "type": "object", "properties": { + "quotaMetrics": { + "description": "Quota metrics to indicate the result of allocation. Depending on the\nrequest, one or more of the following metrics will be included:\n\n1. For rate quota, per quota group or per quota metric incremental usage\nwill be specified using the following delta metric:\n \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. For allocation quota, per quota metric total usage will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n3. For both rate quota and allocation quota, the quota limit reached\ncondition will be specified using the following boolean metric:\n \"serviceruntime.googleapis.com/quota/exceeded\"\n\n4. For allocation quota, value for each quota limit associated with\nthe metrics will be specified using the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"", + "items": { + "$ref": "MetricValueSet" + }, + "type": "array" + }, "operationId": { "description": "The same operation_id value used in the AllocateQuotaRequest. Used for\nlogging and diagnostics purposes.", "type": "string" @@ -594,18 +805,13 @@ "$ref": "QuotaError" }, "type": "array" - }, - "quotaMetrics": { - "description": "Quota metrics to indicate the result of allocation. Depending on the\nrequest, one or more of the following metrics will be included:\n\n1. For rate quota, per quota group or per quota metric incremental usage\nwill be specified using the following delta metric:\n \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. For allocation quota, per quota metric total usage will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n3. For both rate quota and allocation quota, the quota limit reached\ncondition will be specified using the following boolean metric:\n \"serviceruntime.googleapis.com/quota/exceeded\"\n\n4. For allocation quota, value for each quota limit associated with\nthe metrics will be specified using the following gauge metric:\n \"serviceruntime.googleapis.com/quota/limit\"", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" } }, "id": "AllocateQuotaResponse" }, "ReleaseQuotaRequest": { + "description": "Request message for the ReleaseQuota method.", + "type": "object", "properties": { "serviceConfigId": { "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.", @@ -616,26 +822,10 @@ "$ref": "QuotaOperation" } }, - "id": "ReleaseQuotaRequest", - "description": "Request message for the ReleaseQuota method.", - "type": "object" - }, - "RequestMetadata": { - "description": "Metadata about the request.", - "type": "object", - "properties": { - "callerIp": { - "description": "The IP address of the caller.\nFor caller from internet, this will be public IPv4 or IPv6 address.\nFor caller from GCE VM with external IP address, this will be the VM's\nexternal IP address. For caller from GCE VM without external IP address, if\nthe VM is in the same GCP organization (or project) as the accessed\nresource, `caller_ip` will be the GCE VM's internal IPv4 address, otherwise\nit will be redacted to \"gce-internal-ip\".\nSee https://cloud.google.com/compute/docs/vpc/ for more information.", - "type": "string" - }, - "callerSuppliedUserAgent": { - "description": "The user agent of the caller.\nThis information is not authenticated and should be treated accordingly.\nFor example:\n\n+ `google-api-python-client/1.4.0`:\n The request was made by the Google API client for Python.\n+ `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:\n The request was made by the Google Cloud SDK CLI (gcloud).\n+ `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:\n The request was made from the `my-project` App Engine app.\nNOLINT", - "type": "string" - } - }, - "id": "RequestMetadata" + "id": "ReleaseQuotaRequest" }, "QuotaError": { + "id": "QuotaError", "type": "object", "properties": { "description": { @@ -647,22 +837,6 @@ "type": "string" }, "code": { - "enum": [ - "UNSPECIFIED", - "RESOURCE_EXHAUSTED", - "OUT_OF_RANGE", - "BILLING_NOT_ACTIVE", - "PROJECT_DELETED", - "API_KEY_INVALID", - "API_KEY_EXPIRED", - "SPATULA_HEADER_INVALID", - "LOAS_ROLE_INVALID", - "NO_LOAS_PROJECT", - "PROJECT_STATUS_UNAVAILABLE", - "SERVICE_STATUS_UNAVAILABLE", - "BILLING_STATUS_UNAVAILABLE", - "QUOTA_SYSTEM_UNAVAILABLE" - ], "description": "Error code.", "type": "string", "enumDescriptions": [ @@ -680,12 +854,43 @@ "The backend server for checking service status is unavailable.", "The backend server for checking billing status is unavailable.", "The backend server for checking quota limits is unavailable." + ], + "enum": [ + "UNSPECIFIED", + "RESOURCE_EXHAUSTED", + "OUT_OF_RANGE", + "BILLING_NOT_ACTIVE", + "PROJECT_DELETED", + "API_KEY_INVALID", + "API_KEY_EXPIRED", + "SPATULA_HEADER_INVALID", + "LOAS_ROLE_INVALID", + "NO_LOAS_PROJECT", + "PROJECT_STATUS_UNAVAILABLE", + "SERVICE_STATUS_UNAVAILABLE", + "BILLING_STATUS_UNAVAILABLE", + "QUOTA_SYSTEM_UNAVAILABLE" ] } - }, - "id": "QuotaError" + } + }, + "RequestMetadata": { + "id": "RequestMetadata", + "description": "Metadata about the request.", + "type": "object", + "properties": { + "callerSuppliedUserAgent": { + "description": "The user agent of the caller.\nThis information is not authenticated and should be treated accordingly.\nFor example:\n\n+ `google-api-python-client/1.4.0`:\n The request was made by the Google API client for Python.\n+ `Cloud SDK Command Line Tool apitools-client/1.0 gcloud/0.9.62`:\n The request was made by the Google Cloud SDK CLI (gcloud).\n+ `AppEngine-Google; (+http://code.google.com/appengine; appid: s~my-project`:\n The request was made from the `my-project` App Engine app.\nNOLINT", + "type": "string" + }, + "callerIp": { + "description": "The IP address of the caller.\nFor caller from internet, this will be public IPv4 or IPv6 address.\nFor caller from GCE VM with external IP address, this will be the VM's\nexternal IP address. For caller from GCE VM without external IP address, if\nthe VM is in the same GCP organization (or project) as the accessed\nresource, `caller_ip` will be the GCE VM's internal IPv4 address, otherwise\nit will be redacted to \"gce-internal-ip\".\nSee https://cloud.google.com/compute/docs/vpc/ for more information.", + "type": "string" + } + } }, "CheckInfo": { + "id": "CheckInfo", "type": "object", "properties": { "unusedArguments": { @@ -696,11 +901,10 @@ "type": "array" }, "consumerInfo": { - "$ref": "ConsumerInfo", - "description": "Consumer info of this check." + "description": "Consumer info of this check.", + "$ref": "ConsumerInfo" } - }, - "id": "CheckInfo" + } }, "ReleaseQuotaResponse": { "description": "Response message for the ReleaseQuota method.", @@ -740,10 +944,12 @@ "type": "string" }, "allocateOperation": { - "description": "Operation that describes the quota allocation.", - "$ref": "QuotaOperation" + "$ref": "QuotaOperation", + "description": "Operation that describes the quota allocation." }, "allocationMode": { + "description": "Allocation mode for this operation.\nDeprecated: use QuotaMode inside the QuotaOperation.", + "type": "string", "enumDescriptions": [ "", "Allocates quota for the amount specified in the service configuration or\nspecified using the quota_metrics. If the amount is higher than the\navailable quota, allocation error will be returned and no quota will be\nallocated.", @@ -755,9 +961,7 @@ "NORMAL", "BEST_EFFORT", "CHECK_ONLY" - ], - "description": "Allocation mode for this operation.\nDeprecated: use QuotaMode inside the QuotaOperation.", - "type": "string" + ] } }, "id": "AllocateQuotaRequest" @@ -781,6 +985,7 @@ "id": "MetricValueSet" }, "ReportError": { + "id": "ReportError", "description": "Represents the processing error of one Operation in the request.", "type": "object", "properties": { @@ -789,21 +994,64 @@ "type": "string" }, "status": { - "description": "Details of the error when processing the Operation.", - "$ref": "Status" + "$ref": "Status", + "description": "Details of the error when processing the Operation." + } + } + }, + "StartReconciliationRequest": { + "type": "object", + "properties": { + "reconciliationOperation": { + "description": "Operation that describes the quota reconciliation.", + "$ref": "QuotaOperation" + }, + "serviceConfigId": { + "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.", + "type": "string" } }, - "id": "ReportError" + "id": "StartReconciliationRequest" }, "CheckError": { "description": "Defines the errors to be returned in\ngoogle.api.servicecontrol.v1.CheckResponse.check_errors.", "type": "object", "properties": { - "detail": { - "description": "Free-form text providing details on the error cause of the error.", - "type": "string" - }, "code": { + "enumDescriptions": [ + "This is never used in `CheckResponse`.", + "The consumer's project id was not found.\nSame as google.rpc.Code.NOT_FOUND.", + "The consumer doesn't have access to the specified resource.\nSame as google.rpc.Code.PERMISSION_DENIED.", + "Quota check failed. Same as google.rpc.Code.RESOURCE_EXHAUSTED.", + "Budget check failed.", + "The consumer's request has been flagged as a DoS attack.", + "The consumer's request should be rejected in order to protect the service\nfrom being overloaded.", + "The consumer has been flagged as an abuser.", + "The consumer hasn't activated the service.", + "The consumer cannot access the service due to visibility configuration.", + "The consumer cannot access the service because billing is disabled.", + "The consumer's project has been marked as deleted (soft deletion).", + "The consumer's project number or id does not represent a valid project.", + "The IP address of the consumer is invalid for the specific consumer\nproject.", + "The referer address of the consumer request is invalid for the specific\nconsumer project.", + "The client application of the consumer request is invalid for the\nspecific consumer project.", + "The API targeted by this request is invalid for the specified consumer\nproject.", + "The consumer's API key is invalid.", + "The consumer's API Key has expired.", + "The consumer's API Key was not found in config record.", + "The consumer's spatula header is invalid.", + "The consumer's LOAS role is invalid.", + "The consumer's LOAS role has no associated project.", + "The consumer's LOAS project is not `ACTIVE` in LoquatV2.", + "Request is not allowed as per security policies defined in Org Policy.", + "The backend server for looking up project id/number is unavailable.", + "The backend server for checking service status is unavailable.", + "The backend server for checking billing status is unavailable.", + "The backend server for checking quota limits is unavailable.", + "The Spanner for looking up LOAS project is unavailable.", + "Cloud Resource Manager backend server is unavailable.", + "Backend server for evaluating security policy is unavailable." + ], "enum": [ "ERROR_CODE_UNSPECIFIED", "NOT_FOUND", @@ -839,532 +1087,21 @@ "SECURITY_POLICY_BACKEND_UNAVAILABLE" ], "description": "The error code.", - "type": "string", - "enumDescriptions": [ - "This is never used in `CheckResponse`.", - "The consumer's project id was not found.\nSame as google.rpc.Code.NOT_FOUND.", - "The consumer doesn't have access to the specified resource.\nSame as google.rpc.Code.PERMISSION_DENIED.", - "Quota check failed. Same as google.rpc.Code.RESOURCE_EXHAUSTED.", - "Budget check failed.", - "The consumer's request has been flagged as a DoS attack.", - "The consumer's request should be rejected in order to protect the service\nfrom being overloaded.", - "The consumer has been flagged as an abuser.", - "The consumer hasn't activated the service.", - "The consumer cannot access the service due to visibility configuration.", - "The consumer cannot access the service because billing is disabled.", - "The consumer's project has been marked as deleted (soft deletion).", - "The consumer's project number or id does not represent a valid project.", - "The IP address of the consumer is invalid for the specific consumer\nproject.", - "The referer address of the consumer request is invalid for the specific\nconsumer project.", - "The client application of the consumer request is invalid for the\nspecific consumer project.", - "The API targeted by this request is invalid for the specified consumer\nproject.", - "The consumer's API key is invalid.", - "The consumer's API Key has expired.", - "The consumer's API Key was not found in config record.", - "The consumer's spatula header is invalid.", - "The consumer's LOAS role is invalid.", - "The consumer's LOAS role has no associated project.", - "The consumer's LOAS project is not `ACTIVE` in LoquatV2.", - "Request is not allowed as per security policies defined in Org Policy.", - "The backend server for looking up project id/number is unavailable.", - "The backend server for checking service status is unavailable.", - "The backend server for checking billing status is unavailable.", - "The backend server for checking quota limits is unavailable.", - "The Spanner for looking up LOAS project is unavailable.", - "Cloud Resource Manager backend server is unavailable.", - "Backend server for evaluating security policy is unavailable." - ] + "type": "string" + }, + "detail": { + "description": "Free-form text providing details on the error cause of the error.", + "type": "string" } }, "id": "CheckError" - }, - "StartReconciliationRequest": { - "properties": { - "serviceConfigId": { - "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.", - "type": "string" - }, - "reconciliationOperation": { - "$ref": "QuotaOperation", - "description": "Operation that describes the quota reconciliation." - } - }, - "id": "StartReconciliationRequest", - "type": "object" - }, - "QuotaInfo": { - "description": "Contains the quota information for a quota check response.", - "type": "object", - "properties": { - "quotaConsumed": { - "additionalProperties": { - "format": "int32", - "type": "integer" - }, - "description": "Map of quota group name to the actual number of tokens consumed. If the\nquota check was not successful, then this will not be populated due to no\nquota consumption.\n\nWe are not merging this field with 'quota_metrics' field because of the\ncomplexity of scaling in Chemist client code base. For simplicity, we will\nkeep this field for Castor (that scales quota usage) and 'quota_metrics'\nfor SuperQuota (that doesn't scale quota usage).\n", - "type": "object" - }, - "quotaMetrics": { - "description": "Quota metrics to indicate the usage. Depending on the check request, one or\nmore of the following metrics will be included:\n\n1. For rate quota, per quota group or per quota metric incremental usage\nwill be specified using the following delta metric:\n \"serviceruntime.googleapis.com/api/consumer/quota_used_count\"\n\n2. For allocation quota, per quota metric total usage will be specified\nusing the following gauge metric:\n \"serviceruntime.googleapis.com/allocation/consumer/quota_used_count\"\n\n3. For both rate quota and allocation quota, the quota limit reached\ncondition will be specified using the following boolean metric:\n \"serviceruntime.googleapis.com/quota/exceeded\"", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" - }, - "limitExceeded": { - "description": "Quota Metrics that have exceeded quota limits.\nFor QuotaGroup-based quota, this is QuotaGroup.name\nFor QuotaLimit-based quota, this is QuotaLimit.name\nSee: google.api.Quota\nDeprecated: Use quota_metrics to get per quota group limit exceeded status.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "QuotaInfo" - }, - "ConsumerInfo": { - "properties": { - "projectNumber": { - "format": "int64", - "description": "The Google cloud project number, e.g. 1234567890. A value of 0 indicates\nno project number is found.", - "type": "string" - } - }, - "id": "ConsumerInfo", - "description": "`ConsumerInfo` provides information about the consumer project.", - "type": "object" - }, - "CheckRequest": { - "description": "Request message for the Check method.", - "type": "object", - "properties": { - "skipActivationCheck": { - "description": "Indicates if service activation check should be skipped for this request.\nDefault behavior is to perform the check and apply relevant quota.", - "type": "boolean" - }, - "requestProjectSettings": { - "description": "Requests the project settings to be returned as part of the check response.", - "type": "boolean" - }, - "operation": { - "$ref": "Operation", - "description": "The operation to be checked." - }, - "serviceConfigId": { - "description": "Specifies which version of service configuration should be used to process\nthe request.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.", - "type": "string" - } - }, - "id": "CheckRequest" - }, - "QuotaOperation": { - "description": "Represents information regarding a quota operation.", - "type": "object", - "properties": { - "consumerId": { - "description": "Identity of the consumer for whom this quota operation is being performed.\n\nThis can be in one of the following formats:\n project:\u003cproject_id\u003e,\n project_number:\u003cproject_number\u003e,\n api_key:\u003capi_key\u003e.", - "type": "string" - }, - "operationId": { - "description": "Identity of the operation. This is expected to be unique within the scope\nof the service that generated the operation, and guarantees idempotency in\ncase of retries.\n\nUUID version 4 is recommended, though not required. In scenarios where an\noperation is computed from existing information and an idempotent id is\ndesirable for deduplication purpose, UUID version 5 is recommended. See\nRFC 4122 for details.", - "type": "string" - }, - "methodName": { - "description": "Fully qualified name of the API method for which this quota operation is\nrequested. This name is used for matching quota rules or metric rules and\nbilling status rules defined in service configuration. This field is not\nrequired if the quota operation is performed on non-API resources.\n\nExample of an RPC method name:\n google.example.library.v1.LibraryService.CreateShelf", - "type": "string" - }, - "quotaMode": { - "enumDescriptions": [ - "", - "For AllocateQuota request, allocates quota for the amount specified in\nthe service configuration or specified using the quota metrics. If the\namount is higher than the available quota, allocation error will be\nreturned and no quota will be allocated.\nFor ReleaseQuota request, this mode is supported only for precise quota\nlimits. In this case, this operation releases quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the release can make used quota negative, release error\nwill be returned and no quota will be released.", - "For AllocateQuota request, this mode is supported only for imprecise\nquota limits. In this case, the operation allocates quota for the amount\nspecified in the service configuration or specified using the quota\nmetrics. If the amount is higher than the available quota, request does\nnot fail but all available quota will be allocated.\nFor ReleaseQuota request, this mode is supported for both precise quota\nlimits and imprecise quota limits. In this case, this operation releases\nquota for the amount specified in the service configuration or specified\nusing the quota metrics. If the release can make used quota\nnegative, request does not fail but only the used quota will be\nreleased. After the ReleaseQuota request completes, the used quota\nwill be 0, and never goes to negative.", - "For AllocateQuota request, only checks if there is enough quota\navailable and does not change the available quota. No lock is placed on\nthe available quota either. Not supported for ReleaseQuota request." - ], - "enum": [ - "UNSPECIFIED", - "NORMAL", - "BEST_EFFORT", - "CHECK_ONLY" - ], - "description": "Quota mode for this operation.", - "type": "string" - }, - "quotaMetrics": { - "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels describing the operation.", - "type": "object" - } - }, - "id": "QuotaOperation" - }, - "EndReconciliationRequest": { - "type": "object", - "properties": { - "reconciliationOperation": { - "description": "Operation that describes the quota reconciliation.", - "$ref": "QuotaOperation" - }, - "serviceConfigId": { - "description": "Specifies which version of service configuration should be used to process\nthe request. If unspecified or no matching version can be found, the latest\none will be used.", - "type": "string" - } - }, - "id": "EndReconciliationRequest" - }, - "ReportInfo": { - "type": "object", - "properties": { - "operationId": { - "description": "The Operation.operation_id value from the request.", - "type": "string" - }, - "quotaInfo": { - "description": "Quota usage info when processing the `Operation`.", - "$ref": "QuotaInfo" - } - }, - "id": "ReportInfo" - }, - "Operation": { - "description": "Represents information regarding an operation.", - "type": "object", - "properties": { - "consumerId": { - "description": "Identity of the consumer who is using the service.\nThis field should be filled in for the operations initiated by a\nconsumer, but not for service-initiated operations that are\nnot related to a specific consumer.\n\nThis can be in one of the following formats:\n project:\u003cproject_id\u003e,\n project_number:\u003cproject_number\u003e,\n api_key:\u003capi_key\u003e.", - "type": "string" - }, - "operationId": { - "description": "Identity of the operation. This must be unique within the scope of the\nservice that generated the operation. If the service calls\nCheck() and Report() on the same operation, the two calls should carry\nthe same id.\n\nUUID version 4 is recommended, though not required.\nIn scenarios where an operation is computed from existing information\nand an idempotent id is desirable for deduplication purpose, UUID version 5\nis recommended. See RFC 4122 for details.", - "type": "string" - }, - "operationName": { - "description": "Fully qualified name of the operation. Reserved for future use.", - "type": "string" - }, - "endTime": { - "format": "google-datetime", - "description": "End time of the operation.\nRequired when the operation is used in ServiceController.Report,\nbut optional when the operation is used in ServiceController.Check.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Required. Start time of the operation.", - "type": "string" - }, - "importance": { - "enum": [ - "LOW", - "HIGH", - "DEBUG" - ], - "description": "DO NOT USE. This is an experimental field.", - "type": "string", - "enumDescriptions": [ - "The API implementation may cache and aggregate the data.\nThe data may be lost when rare and unexpected system failures occur.", - "The API implementation doesn't cache and aggregate the data.\nIf the method returns successfully, it's guaranteed that the data has\nbeen persisted in durable storage.", - "In addition to the behavior described in HIGH, DEBUG enables\nadditional validation logic that is only useful during the onboarding\nprocess. This is only available to Google internal services and\nthe service must be whitelisted by chemist-dev@google.com in order\nto use this level." - ] - }, - "resourceContainers": { - "description": "DO NOT USE.\nThis field is not ready for use yet.", - "items": { - "type": "string" - }, - "type": "array" - }, - "resourceContainer": { - "description": "The resource name of the parent of a resource in the resource hierarchy.\n\nThis can be in one of the following formats:\n - “projects/\u003cproject-id or project-number\u003e”\n - “folders/\u003cfolder-id\u003e”\n - “organizations/\u003corganization-id\u003e”", - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "Labels describing the operation. Only the following labels are allowed:\n\n- Labels describing monitored resources as defined in\n the service configuration.\n- Default labels of metric values. When specified, labels defined in the\n metric value override these default.\n- The following labels defined by Google Cloud Platform:\n - `cloud.googleapis.com/location` describing the location where the\n operation happened,\n - `servicecontrol.googleapis.com/user_agent` describing the user agent\n of the API request,\n - `servicecontrol.googleapis.com/service_agent` describing the service\n used to handle the API request (e.g. ESP),\n - `servicecontrol.googleapis.com/platform` describing the platform\n where the API is served (e.g. GAE, GCE, GKE).", - "type": "object" - }, - "logEntries": { - "description": "Represents information to be logged.", - "items": { - "$ref": "LogEntry" - }, - "type": "array" - }, - "userLabels": { - "additionalProperties": { - "type": "string" - }, - "description": "User defined labels for the resource that this operation is associated\nwith.", - "type": "object" - }, - "metricValueSets": { - "description": "Represents information about this operation. Each MetricValueSet\ncorresponds to a metric defined in the service configuration.\nThe data type used in the MetricValueSet must agree with\nthe data type specified in the metric definition.\n\nWithin a single operation, it is not allowed to have more than one\nMetricValue instances that have the same metric names and identical\nlabel value combinations. If a request has such duplicated MetricValue\ninstances, the entire request is rejected with\nan invalid argument error.", - "items": { - "$ref": "MetricValueSet" - }, - "type": "array" - }, - "quotaProperties": { - "description": "Represents the properties needed for quota check. Applicable only if this\noperation is for a quota check request.", - "$ref": "QuotaProperties" - } - }, - "id": "Operation" - }, - "ReportResponse": { - "description": "Response message for the Report method.", - "type": "object", - "properties": { - "reportErrors": { - "description": "Partial failures, one for each `Operation` in the request that failed\nprocessing. There are three possible combinations of the RPC status:\n\n1. The combination of a successful RPC status and an empty `report_errors`\n list indicates a complete success where all `Operations` in the\n request are processed successfully.\n2. The combination of a successful RPC status and a non-empty\n `report_errors` list indicates a partial success where some\n `Operations` in the request succeeded. Each\n `Operation` that failed processing has a corresponding item\n in this list.\n3. A failed RPC status indicates a general non-deterministic failure.\n When this happens, it's impossible to know which of the\n 'Operations' in the request succeeded or failed.", - "items": { - "$ref": "ReportError" - }, - "type": "array" - }, - "reportInfos": { - "description": "Quota usage for each quota release `Operation` request.\n\nFully or partially failed quota release request may or may not be present\nin `report_quota_info`. For example, a failed quota release request will\nhave the current quota usage info when precise quota library returns the\ninfo. A deadline exceeded quota request will not have quota usage info.\n\nIf there is no quota release request, report_quota_info will be empty.\n", - "items": { - "$ref": "ReportInfo" - }, - "type": "array" - }, - "serviceConfigId": { - "description": "The actual config id used to process the request.", - "type": "string" - } - }, - "id": "ReportResponse" - }, - "CheckResponse": { - "description": "Response message for the Check method.", - "type": "object", - "properties": { - "checkInfo": { - "description": "Feedback data returned from the server during processing a Check request.", - "$ref": "CheckInfo" - }, - "checkErrors": { - "description": "Indicate the decision of the check.\n\nIf no check errors are present, the service should process the operation.\nOtherwise the service should use the list of errors to determine the\nappropriate action.", - "items": { - "$ref": "CheckError" - }, - "type": "array" - }, - "operationId": { - "description": "The same operation_id value used in the CheckRequest.\nUsed for logging and diagnostics purposes.", - "type": "string" - }, - "serviceConfigId": { - "description": "The actual config id used to process the request.", - "type": "string" - }, - "quotaInfo": { - "description": "Quota information for the check request associated with this response.\n", - "$ref": "QuotaInfo" - } - }, - "id": "CheckResponse" - }, - "ReportRequest": { - "description": "Request message for the Report method.", - "type": "object", - "properties": { - "serviceConfigId": { - "description": "Specifies which version of service config should be used to process the\nrequest.\n\nIf unspecified or no matching version can be found, the\nlatest one will be used.", - "type": "string" - }, - "operations": { - "description": "Operations to be reported.\n\nTypically the service should report one operation per request.\nPutting multiple operations into a single request is allowed, but should\nbe used only when multiple operations are natually available at the time\nof the report.\n\nIf multiple operations are in a single request, the total request size\nshould be no larger than 1MB. See ReportResponse.report_errors for\npartial failure behavior.", - "items": { - "$ref": "Operation" - }, - "type": "array" - } - }, - "id": "ReportRequest" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "Status" - }, - "AuditLog": { - "description": "Common audit log format for Google Cloud Platform API operations.\n\n", - "type": "object", - "properties": { - "authorizationInfo": { - "description": "Authorization information. If there are multiple\nresources or permissions involved, then there is\none AuthorizationInfo element for each {resource, permission} tuple.", - "items": { - "$ref": "AuthorizationInfo" - }, - "type": "array" - }, - "resourceName": { - "description": "The resource or collection that is the target of the operation.\nThe name is a scheme-less URI, not including the API service name.\nFor example:\n\n \"shelves/SHELF_ID/books\"\n \"shelves/SHELF_ID/books/BOOK_ID\"", - "type": "string" - }, - "request": { - "description": "The operation request. This may not include all request parameters,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "requestMetadata": { - "description": "Metadata about the operation.", - "$ref": "RequestMetadata" - }, - "serviceData": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Other service-specific data about the request, response, and other\nactivities.", - "type": "object" - }, - "numResponseItems": { - "format": "int64", - "description": "The number of items returned from a List or Query API method,\nif applicable.", - "type": "string" - }, - "authenticationInfo": { - "$ref": "AuthenticationInfo", - "description": "Authentication information." - }, - "status": { - "description": "The status of the overall operation.", - "$ref": "Status" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The operation response. This may not include all response elements,\nsuch as those that are too large, privacy-sensitive, or duplicated\nelsewhere in the log record.\nIt should never include user-generated data, such as file contents.\nWhen the JSON object represented here has a proto equivalent, the proto\nname will be indicated in the `@type` property.", - "type": "object" - }, - "serviceName": { - "description": "The name of the API service performing the operation. For example,\n`\"datastore.googleapis.com\"`.", - "type": "string" - }, - "methodName": { - "description": "The name of the service method or operation.\nFor API calls, this should be the name of the API method.\nFor example,\n\n \"google.datastore.v1.Datastore.RunQuery\"\n \"google.logging.v1.LoggingService.DeleteLog\"", - "type": "string" - } - }, - "id": "AuditLog" - }, - "LogEntry": { - "description": "An individual log entry.", - "type": "object", - "properties": { - "severity": { - "description": "The severity of the log entry. The default value is\n`LogSeverity.DEFAULT`.", - "type": "string", - "enumDescriptions": [ - "(0) The log entry has no assigned severity level.", - "(100) Debug or trace information.", - "(200) Routine information, such as ongoing status or performance.", - "(300) Normal but significant events, such as start up, shut down, or\na configuration change.", - "(400) Warning events might cause problems.", - "(500) Error events are likely to cause problems.", - "(600) Critical events cause more severe problems or outages.", - "(700) A person must take an action immediately.", - "(800) One or more systems are unusable." - ], - "enum": [ - "DEFAULT", - "DEBUG", - "INFO", - "NOTICE", - "WARNING", - "ERROR", - "CRITICAL", - "ALERT", - "EMERGENCY" - ] - }, - "insertId": { - "description": "A unique ID for the log entry used for deduplication. If omitted,\nthe implementation will generate one based on operation_id.", - "type": "string" - }, - "name": { - "description": "Required. The log to which this log entry belongs. Examples: `\"syslog\"`,\n`\"book_log\"`.", - "type": "string" - }, - "structPayload": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "The log entry payload, represented as a structure that\nis expressed as a JSON object.", - "type": "object" - }, - "textPayload": { - "description": "The log entry payload, represented as a Unicode string (UTF-8).", - "type": "string" - }, - "protoPayload": { - "description": "The log entry payload, represented as a protocol buffer that is\nexpressed as a JSON object. The only accepted type currently is\nAuditLog.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "timestamp": { - "format": "google-datetime", - "description": "The time the event described by the log entry occurred. If\nomitted, defaults to operation start time.", - "type": "string" - }, - "labels": { - "additionalProperties": { - "type": "string" - }, - "description": "A set of user-defined (key, value) data that provides additional\ninformation about the log entry.", - "type": "object" - } - }, - "id": "LogEntry" } }, - "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" }, + "protocol": "rest", "canonicalName": "Service Control", "auth": { "oauth2": { @@ -1383,5 +1120,268 @@ "name": "servicecontrol", "batchPath": "batch", "fullyEncodeReservedExpansion": true, - "title": "Google Service Control API" + "title": "Google Service Control API", + "ownerName": "Google", + "resources": { + "services": { + "methods": { + "releaseQuota": { + "response": { + "$ref": "ReleaseQuotaResponse" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "POST", + "parameters": { + "serviceName": { + "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "flatPath": "v1/services/{serviceName}:releaseQuota", + "id": "servicecontrol.services.releaseQuota", + "path": "v1/services/{serviceName}:releaseQuota", + "description": "Releases previously allocated quota done through AllocateQuota method.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).\n\n**NOTE:** the client code **must** fail-open if the server returns one\nof the following quota errors:\n- `PROJECT_STATUS_UNAVAILABLE`\n- `SERVICE_STATUS_UNAVAILABLE`\n- `BILLING_STATUS_UNAVAILABLE`\n- `QUOTA_SYSTEM_UNAVAILABLE`\n\nThe server may inject above errors to prohibit any hard dependency\non the quota system.", + "request": { + "$ref": "ReleaseQuotaRequest" + } + }, + "endReconciliation": { + "response": { + "$ref": "EndReconciliationResponse" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "parameters": { + "serviceName": { + "location": "path", + "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/services/{serviceName}:endReconciliation", + "id": "servicecontrol.services.endReconciliation", + "path": "v1/services/{serviceName}:endReconciliation", + "request": { + "$ref": "EndReconciliationRequest" + }, + "description": "Signals the quota controller that service ends the ongoing usage\nreconciliation.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam)." + }, + "report": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "parameters": { + "serviceName": { + "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/services/{serviceName}:report", + "id": "servicecontrol.services.report", + "path": "v1/services/{serviceName}:report", + "request": { + "$ref": "ReportRequest" + }, + "description": "Reports operation results to Google Service Control, such as logs and\nmetrics. It should be called after an operation is completed.\n\nIf feasible, the client should aggregate reporting data for up to 5\nseconds to reduce API traffic. Limiting aggregation to 5 seconds is to\nreduce data loss during client crashes. Clients should carefully choose\nthe aggregation time window to avoid data loss risk more than 0.01%\nfor business and compliance reasons.\n\nNOTE: the ReportRequest has the size limit of 1MB.\n\nThis method requires the `servicemanagement.services.report` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", + "response": { + "$ref": "ReportResponse" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "POST" + }, + "allocateQuota": { + "path": "v1/services/{serviceName}:allocateQuota", + "id": "servicecontrol.services.allocateQuota", + "description": "Attempts to allocate quota for the specified consumer. It should be called\nbefore the operation is executed.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).\n\n**NOTE:** the client code **must** fail-open if the server returns one\nof the following quota errors:\n- `PROJECT_STATUS_UNAVAILABLE`\n- `SERVICE_STATUS_UNAVAILABLE`\n- `BILLING_STATUS_UNAVAILABLE`\n- `QUOTA_SYSTEM_UNAVAILABLE`\n\nThe server may inject above errors to prohibit any hard dependency\non the quota system.", + "request": { + "$ref": "AllocateQuotaRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "serviceName" + ], + "response": { + "$ref": "AllocateQuotaResponse" + }, + "parameters": { + "serviceName": { + "location": "path", + "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "flatPath": "v1/services/{serviceName}:allocateQuota" + }, + "startReconciliation": { + "description": "Unlike rate quota, allocation quota does not get refilled periodically.\nSo, it is possible that the quota usage as seen by the service differs from\nwhat the One Platform considers the usage is. This is expected to happen\nonly rarely, but over time this can accumulate. Services can invoke\nStartReconciliation and EndReconciliation to correct this usage drift, as\ndescribed below:\n1. Service sends StartReconciliation with a timestamp in future for each\n metric that needs to be reconciled. The timestamp being in future allows\n to account for in-flight AllocateQuota and ReleaseQuota requests for the\n same metric.\n2. One Platform records this timestamp and starts tracking subsequent\n AllocateQuota and ReleaseQuota requests until EndReconciliation is\n called.\n3. At or after the time specified in the StartReconciliation, service\n sends EndReconciliation with the usage that needs to be reconciled to.\n4. One Platform adjusts its own record of usage for that metric to the\n value specified in EndReconciliation by taking in to account any\n allocation or release between StartReconciliation and EndReconciliation.\n\nSignals the quota controller that the service wants to perform a usage\nreconciliation as specified in the request.\n\nThis method requires the `servicemanagement.services.quota`\npermission on the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", + "request": { + "$ref": "StartReconciliationRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "serviceName" + ], + "response": { + "$ref": "StartReconciliationResponse" + }, + "parameters": { + "serviceName": { + "location": "path", + "description": "Name of the service as specified in the service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee google.api.Service for the definition of a service name.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "flatPath": "v1/services/{serviceName}:startReconciliation", + "path": "v1/services/{serviceName}:startReconciliation", + "id": "servicecontrol.services.startReconciliation" + }, + "check": { + "parameters": { + "serviceName": { + "location": "path", + "description": "The service name as specified in its service configuration. For example,\n`\"pubsub.googleapis.com\"`.\n\nSee\n[google.api.Service](https://cloud.google.com/service-management/reference/rpc/google.api#google.api.Service)\nfor the definition of a service name.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/servicecontrol" + ], + "flatPath": "v1/services/{serviceName}:check", + "path": "v1/services/{serviceName}:check", + "id": "servicecontrol.services.check", + "description": "Checks an operation with Google Service Control to decide whether\nthe given operation should proceed. It should be called before the\noperation is executed.\n\nIf feasible, the client should cache the check results and reuse them for\n60 seconds. In case of server errors, the client can rely on the cached\nresults for longer time.\n\nNOTE: the CheckRequest has the size limit of 64KB.\n\nThis method requires the `servicemanagement.services.check` permission\non the specified service. For more information, see\n[Google Cloud IAM](https://cloud.google.com/iam).", + "request": { + "$ref": "CheckRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "serviceName" + ], + "response": { + "$ref": "CheckResponse" + } + } + } + } + }, + "parameters": { + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + } + } } diff --git a/vendor/google.golang.org/api/servicemanagement/v1/servicemanagement-api.json b/vendor/google.golang.org/api/servicemanagement/v1/servicemanagement-api.json index 623cbe6..f1a651e 100644 --- a/vendor/google.golang.org/api/servicemanagement/v1/servicemanagement-api.json +++ b/vendor/google.golang.org/api/servicemanagement/v1/servicemanagement-api.json @@ -1,278 +1,22 @@ { - "ownerDomain": "google.com", - "name": "servicemanagement", - "batchPath": "batch", "fullyEncodeReservedExpansion": true, "title": "Google Service Management API", "ownerName": "Google", "resources": { - "operations": { - "methods": { - "get": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^operations/.+$" - } - }, - "flatPath": "v1/operations/{operationsId}", - "id": "servicemanagement.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "response": { - "$ref": "ListOperationsResponse" - }, - "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "parameters": { - "filter": { - "description": "A string for filtering Operations.\n The following filter fields are supported:\n\n * serviceName: Required. Only `=` operator is allowed.\n * startTime: The time this job was started, in ISO 8601 format.\n Allowed operators are `\u003e=`, `\u003e`, `\u003c=`, and `\u003c`.\n * status: Can be `done`, `in_progress`, or `failed`. Allowed\n operators are `=`, and `!=`.\n\n Filter expression supports conjunction (AND) and disjunction (OR)\n logical operators. However, the serviceName restriction must be at the\n top-level and can only be combined with other restrictions via the AND\n logical operator.\n\n Examples:\n\n * `serviceName={some-service}.googleapis.com`\n * `serviceName={some-service}.googleapis.com AND startTime\u003e=\"2017-02-01\"`\n * `serviceName={some-service}.googleapis.com AND status=done`\n * `serviceName={some-service}.googleapis.com AND (status=done OR startTime\u003e=\"2017-02-01\")`", - "type": "string", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "location": "query", - "description": "Not used.", - "type": "string" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The maximum number of operations to return. If unspecified, defaults to\n50. The maximum value is 100.", - "type": "integer" - } - }, - "flatPath": "v1/operations", - "id": "servicemanagement.operations.list", - "path": "v1/operations", - "description": "Lists service operations that match the specified filter in the request." - } - } - }, "services": { "methods": { - "get": { - "description": "Gets a managed service. Authentication is required unless the service is\npublic.", - "response": { - "$ref": "ManagedService" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "GET", - "parameters": { - "serviceName": { - "description": "The name of the service. See the `ServiceManager` overview for naming\nrequirements. For example: `example.googleapis.com`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], - "flatPath": "v1/services/{serviceName}", - "id": "servicemanagement.services.get", - "path": "v1/services/{serviceName}" - }, - "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^services/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], - "flatPath": "v1/services/{servicesId}:testIamPermissions", - "id": "servicemanagement.services.testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "request": { - "$ref": "TestIamPermissionsRequest" - } - }, - "getConfig": { - "description": "Gets a service configuration (version) for a managed service.", - "response": { - "$ref": "Service" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], - "parameters": { - "view": { - "location": "query", - "enum": [ - "BASIC", - "FULL" - ], - "description": "Specifies which parts of the Service Config should be returned in the\nresponse.", - "type": "string" - }, - "serviceName": { - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", - "type": "string", - "required": true, - "location": "path" - }, - "configId": { - "description": "The id of the service configuration resource.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/services/{serviceName}/config", - "id": "servicemanagement.services.getConfig", - "path": "v1/services/{serviceName}/config" - }, - "delete": { - "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e", - "httpMethod": "DELETE", - "parameterOrder": [ - "serviceName" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "parameters": { - "serviceName": { - "location": "path", - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/services/{serviceName}", - "path": "v1/services/{serviceName}", - "id": "servicemanagement.services.delete" - }, - "enable": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "serviceName" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "parameters": { - "serviceName": { - "location": "path", - "description": "Name of the service to enable. Specifying an unknown service name will\ncause the request to fail.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/services/{serviceName}:enable", - "id": "servicemanagement.services.enable", - "path": "v1/services/{serviceName}:enable", - "request": { - "$ref": "EnableServiceRequest" - }, - "description": "Enables a service for a project, so it can be used\nfor the project. See\n[Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation\u003cresponse: EnableServiceResponse\u003e" - }, - "setIamPolicy": { - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^services/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "flatPath": "v1/services/{servicesId}:setIamPolicy", - "id": "servicemanagement.services.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy" - }, "disable": { + "description": "Disables a service for a project, so it can no longer be\nbe used for the project. It prevents accidental usage that may cause\nunexpected billing charges or security leaks.\n\nOperation\u003cresponse: DisableServiceResponse\u003e", "request": { "$ref": "DisableServiceRequest" }, - "description": "Disables a service for a project, so it can no longer be\nbe used for the project. It prevents accidental usage that may cause\nunexpected billing charges or security leaks.\n\nOperation\u003cresponse: DisableServiceResponse\u003e", - "response": { - "$ref": "Operation" - }, + "httpMethod": "POST", "parameterOrder": [ "serviceName" ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], + "response": { + "$ref": "Operation" + }, "parameters": { "serviceName": { "description": "Name of the service to disable. Specifying an unknown service name\nwill cause the request to fail.", @@ -281,14 +25,15 @@ "location": "path" } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], "flatPath": "v1/services/{serviceName}:disable", - "id": "servicemanagement.services.disable", - "path": "v1/services/{serviceName}:disable" + "path": "v1/services/{serviceName}:disable", + "id": "servicemanagement.services.disable" }, "getIamPolicy": { - "flatPath": "v1/services/{servicesId}:getIamPolicy", - "id": "servicemanagement.services.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", "request": { "$ref": "GetIamPolicyRequest" }, @@ -314,21 +59,20 @@ "pattern": "^services/[^/]+$", "location": "path" } - } + }, + "flatPath": "v1/services/{servicesId}:getIamPolicy", + "id": "servicemanagement.services.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" }, "undelete": { "description": "Revives a previously deleted managed service. The method restores the\nservice using the configuration at the time the service was deleted.\nThe target service must exist and must have been deleted within the\nlast 30 days.\n\nOperation\u003cresponse: UndeleteServiceResponse\u003e", - "response": { - "$ref": "Operation" - }, + "httpMethod": "POST", "parameterOrder": [ "serviceName" ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], + "response": { + "$ref": "Operation" + }, "parameters": { "serviceName": { "location": "path", @@ -337,74 +81,74 @@ "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], "flatPath": "v1/services/{serviceName}:undelete", - "id": "servicemanagement.services.undelete", - "path": "v1/services/{serviceName}:undelete" + "path": "v1/services/{serviceName}:undelete", + "id": "servicemanagement.services.undelete" }, "list": { + "path": "v1/services", + "id": "servicemanagement.services.list", "description": "Lists managed services.\n\nReturns all public services. For authenticated users, also returns all\nservices the calling user has \"servicemanagement.services.get\" permission\nfor.\n\n**BETA:** If the caller specifies the `consumer_id`, it returns only the\nservices enabled on the consumer. The `consumer_id` must have the format\nof \"project:{PROJECT-ID}\".", + "httpMethod": "GET", + "parameterOrder": [], "response": { "$ref": "ListServicesResponse" }, - "parameterOrder": [], - "httpMethod": "GET", + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested size of the next page of data.", + "type": "integer" + }, + "producerProjectId": { + "description": "Include services produced by the specified project.", + "type": "string", + "location": "query" + }, + "consumerId": { + "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:\u003cproject_id\u003e", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "Token identifying which result to start with; returned by a previous list\ncall.", + "type": "string" + } + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only", "https://www.googleapis.com/auth/service.management", "https://www.googleapis.com/auth/service.management.readonly" ], - "parameters": { - "consumerId": { - "location": "query", - "description": "Include services consumed by the specified consumer.\n\nThe Google Service Management implementation accepts the following\nforms:\n- project:\u003cproject_id\u003e", - "type": "string" - }, - "pageToken": { - "description": "Token identifying which result to start with; returned by a previous list\ncall.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Requested size of the next page of data.", - "type": "integer", - "location": "query" - }, - "producerProjectId": { - "location": "query", - "description": "Include services produced by the specified project.", - "type": "string" - } - }, - "flatPath": "v1/services", - "id": "servicemanagement.services.list", - "path": "v1/services" + "flatPath": "v1/services" }, "create": { - "flatPath": "v1/services", - "path": "v1/services", - "id": "servicemanagement.services.create", + "description": "Creates a new managed service.\nPlease note one producer project can own no more than 20 services.\n\nOperation\u003cresponse: ManagedService\u003e", "request": { "$ref": "ManagedService" }, - "description": "Creates a new managed service.\nPlease note one producer project can own no more than 20 services.\n\nOperation\u003cresponse: ManagedService\u003e", "httpMethod": "POST", "parameterOrder": [], "response": { "$ref": "Operation" }, + "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/service.management" ], - "parameters": {} + "flatPath": "v1/services", + "path": "v1/services", + "id": "servicemanagement.services.create" }, "generateConfigReport": { - "description": "Generates and returns a report (errors, warnings and changes from\nexisting configurations) associated with\nGenerateConfigReportRequest.new_value\n\nIf GenerateConfigReportRequest.old_value is specified,\nGenerateConfigReportRequest will contain a single ChangeReport based on the\ncomparison between GenerateConfigReportRequest.new_value and\nGenerateConfigReportRequest.old_value.\nIf GenerateConfigReportRequest.old_value is not specified, this method\nwill compare GenerateConfigReportRequest.new_value with the last pushed\nservice configuration.", - "request": { - "$ref": "GenerateConfigReportRequest" - }, "response": { "$ref": "GenerateConfigReportResponse" }, @@ -417,40 +161,197 @@ ], "flatPath": "v1/services:generateConfigReport", "id": "servicemanagement.services.generateConfigReport", - "path": "v1/services:generateConfigReport" + "path": "v1/services:generateConfigReport", + "description": "Generates and returns a report (errors, warnings and changes from\nexisting configurations) associated with\nGenerateConfigReportRequest.new_value\n\nIf GenerateConfigReportRequest.old_value is specified,\nGenerateConfigReportRequest will contain a single ChangeReport based on the\ncomparison between GenerateConfigReportRequest.new_value and\nGenerateConfigReportRequest.old_value.\nIf GenerateConfigReportRequest.old_value is not specified, this method\nwill compare GenerateConfigReportRequest.new_value with the last pushed\nservice configuration.", + "request": { + "$ref": "GenerateConfigReportRequest" + } + }, + "get": { + "flatPath": "v1/services/{serviceName}", + "id": "servicemanagement.services.get", + "path": "v1/services/{serviceName}", + "description": "Gets a managed service. Authentication is required unless the service is\npublic.", + "response": { + "$ref": "ManagedService" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "GET", + "parameters": { + "serviceName": { + "description": "The name of the service. See the `ServiceManager` overview for naming\nrequirements. For example: `example.googleapis.com`.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ] + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^services/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], + "flatPath": "v1/services/{servicesId}:testIamPermissions", + "id": "servicemanagement.services.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions" + }, + "getConfig": { + "id": "servicemanagement.services.getConfig", + "path": "v1/services/{serviceName}/config", + "description": "Gets a service configuration (version) for a managed service.", + "response": { + "$ref": "Service" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "GET", + "parameters": { + "serviceName": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`." + }, + "configId": { + "description": "The id of the service configuration resource.", + "type": "string", + "location": "query" + }, + "view": { + "description": "Specifies which parts of the Service Config should be returned in the\nresponse.", + "type": "string", + "location": "query", + "enum": [ + "BASIC", + "FULL" + ] + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], + "flatPath": "v1/services/{serviceName}/config" + }, + "delete": { + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "parameters": { + "serviceName": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`." + } + }, + "flatPath": "v1/services/{serviceName}", + "id": "servicemanagement.services.delete", + "path": "v1/services/{serviceName}", + "description": "Deletes a managed service. This method will change the service to the\n`Soft-Delete` state for 30 days. Within this period, service producers may\ncall UndeleteService to restore the service.\nAfter 30 days, the service will be permanently deleted.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e" + }, + "enable": { + "path": "v1/services/{serviceName}:enable", + "id": "servicemanagement.services.enable", + "description": "Enables a service for a project, so it can be used\nfor the project. See\n[Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation\u003cresponse: EnableServiceResponse\u003e", + "request": { + "$ref": "EnableServiceRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "serviceName" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "serviceName": { + "location": "path", + "description": "Name of the service to enable. Specifying an unknown service name will\ncause the request to fail.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "flatPath": "v1/services/{serviceName}:enable" + }, + "setIamPolicy": { + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "parameters": { + "resource": { + "pattern": "^services/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/services/{servicesId}:setIamPolicy", + "id": "servicemanagement.services.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy" } }, "resources": { "configs": { "methods": { - "submit": { - "httpMethod": "POST", - "parameterOrder": [ - "serviceName" - ], - "response": { - "$ref": "Operation" - }, - "parameters": { - "serviceName": { - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], - "flatPath": "v1/services/{serviceName}/configs:submit", - "path": "v1/services/{serviceName}/configs:submit", - "id": "servicemanagement.services.configs.submit", - "description": "Creates a new service configuration (version) for a managed service based\non\nuser-supplied configuration source files (for example: OpenAPI\nSpecification). This method stores the source configurations as well as the\ngenerated service configuration. To rollout the service configuration to\nother services,\nplease call CreateServiceRollout.\n\nOperation\u003cresponse: SubmitConfigSourceResponse\u003e", - "request": { - "$ref": "SubmitConfigSourceRequest" - } - }, "get": { "description": "Gets a service configuration (version) for a managed service.", "response": { @@ -461,13 +362,16 @@ "configId" ], "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], "parameters": { + "view": { + "location": "query", + "enum": [ + "BASIC", + "FULL" + ], + "description": "Specifies which parts of the Service Config should be returned in the\nresponse.", + "type": "string" + }, "serviceName": { "location": "path", "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", @@ -475,40 +379,37 @@ "required": true }, "configId": { - "description": "The id of the service configuration resource.", "type": "string", "required": true, - "location": "path" - }, - "view": { - "description": "Specifies which parts of the Service Config should be returned in the\nresponse.", - "type": "string", - "location": "query", - "enum": [ - "BASIC", - "FULL" - ] + "location": "path", + "description": "The id of the service configuration resource." } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], "flatPath": "v1/services/{serviceName}/configs/{configId}", "id": "servicemanagement.services.configs.get", "path": "v1/services/{serviceName}/configs/{configId}" }, "list": { "description": "Lists the history of the service configuration for a managed service,\nfrom the newest to the oldest.", - "httpMethod": "GET", - "parameterOrder": [ - "serviceName" - ], "response": { "$ref": "ListServiceConfigsResponse" }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "GET", "parameters": { "serviceName": { - "location": "path", "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", "type": "string", - "required": true + "required": true, + "location": "path" }, "pageToken": { "location": "query", @@ -529,24 +430,49 @@ "https://www.googleapis.com/auth/service.management.readonly" ], "flatPath": "v1/services/{serviceName}/configs", - "path": "v1/services/{serviceName}/configs", - "id": "servicemanagement.services.configs.list" + "id": "servicemanagement.services.configs.list", + "path": "v1/services/{serviceName}/configs" }, "create": { - "flatPath": "v1/services/{serviceName}/configs", - "id": "servicemanagement.services.configs.create", - "path": "v1/services/{serviceName}/configs", "description": "Creates a new service configuration (version) for a managed service.\nThis method only stores the service configuration. To roll out the service\nconfiguration to backend systems please call\nCreateServiceRollout.", "request": { "$ref": "Service" }, - "response": { - "$ref": "Service" - }, + "httpMethod": "POST", "parameterOrder": [ "serviceName" ], + "response": { + "$ref": "Service" + }, + "parameters": { + "serviceName": { + "location": "path", + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "flatPath": "v1/services/{serviceName}/configs", + "path": "v1/services/{serviceName}/configs", + "id": "servicemanagement.services.configs.create" + }, + "submit": { "httpMethod": "POST", + "parameterOrder": [ + "serviceName" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], "parameters": { "serviceName": { "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", @@ -555,89 +481,26 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ] + "flatPath": "v1/services/{serviceName}/configs:submit", + "path": "v1/services/{serviceName}/configs:submit", + "id": "servicemanagement.services.configs.submit", + "request": { + "$ref": "SubmitConfigSourceRequest" + }, + "description": "Creates a new service configuration (version) for a managed service based\non\nuser-supplied configuration source files (for example: OpenAPI\nSpecification). This method stores the source configurations as well as the\ngenerated service configuration. To rollout the service configuration to\nother services,\nplease call CreateServiceRollout.\n\nOperation\u003cresponse: SubmitConfigSourceResponse\u003e" } } }, "consumers": { "methods": { - "testIamPermissions": { - "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:testIamPermissions", - "id": "servicemanagement.services.consumers.testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^services/[^/]+/consumers/[^/]+$" - } - } - }, - "getIamPolicy": { - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true, - "pattern": "^services/[^/]+/consumers/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ], - "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:getIamPolicy", - "id": "servicemanagement.services.consumers.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", - "request": { - "$ref": "GetIamPolicyRequest" - } - }, "setIamPolicy": { - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, + "httpMethod": "POST", "parameterOrder": [ "resource" ], - "httpMethod": "POST", + "response": { + "$ref": "Policy" + }, "parameters": { "resource": { "description": "REQUIRED: The resource for which the policy is being specified.\nSee the operation documentation for the appropriate value for this field.", @@ -652,23 +515,91 @@ "https://www.googleapis.com/auth/service.management" ], "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", "id": "servicemanagement.services.consumers.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy" + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", + "request": { + "$ref": "SetIamPolicyRequest" + } + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error.\n\nNote: This operation is designed to be used for building permission-aware\nUIs and command-line tools, not for authorization checking. This operation\nmay \"fail open\" without warning.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true, + "pattern": "^services/[^/]+/consumers/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], + "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:testIamPermissions", + "id": "servicemanagement.services.consumers.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions" + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", + "request": { + "$ref": "GetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "pattern": "^services/[^/]+/consumers/[^/]+$", + "location": "path", + "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], + "flatPath": "v1/services/{servicesId}/consumers/{consumersId}:getIamPolicy", + "id": "servicemanagement.services.consumers.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" } } }, "rollouts": { "methods": { "get": { + "path": "v1/services/{serviceName}/rollouts/{rolloutId}", + "id": "servicemanagement.services.rollouts.get", "description": "Gets a service configuration rollout.", "httpMethod": "GET", + "response": { + "$ref": "Rollout" + }, "parameterOrder": [ "serviceName", "rolloutId" ], - "response": { - "$ref": "Rollout" - }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/cloud-platform.read-only", @@ -677,10 +608,10 @@ ], "parameters": { "serviceName": { - "location": "path", - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`." }, "rolloutId": { "description": "The id of the rollout resource.", @@ -689,70 +620,33 @@ "location": "path" } }, - "flatPath": "v1/services/{serviceName}/rollouts/{rolloutId}", - "path": "v1/services/{serviceName}/rollouts/{rolloutId}", - "id": "servicemanagement.services.rollouts.get" + "flatPath": "v1/services/{serviceName}/rollouts/{rolloutId}" }, "list": { - "flatPath": "v1/services/{serviceName}/rollouts", - "path": "v1/services/{serviceName}/rollouts", - "id": "servicemanagement.services.rollouts.list", - "description": "Lists the history of the service configuration rollouts for a managed\nservice, from the newest to the oldest.", - "httpMethod": "GET", - "parameterOrder": [ - "serviceName" - ], "response": { "$ref": "ListServiceRolloutsResponse" }, - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "The max number of items to include in the response list.", - "type": "integer" - }, - "filter": { - "location": "query", - "description": "Use `filter` to return subset of rollouts.\nThe following filters are supported:\n -- To limit the results to only those in\n [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS',\n use filter='status=SUCCESS'\n -- To limit the results to those in\n [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'\n or 'FAILED', use filter='status=CANCELLED OR status=FAILED'", - "type": "string" - }, - "serviceName": { - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", - "type": "string", - "required": true, - "location": "path" - }, - "pageToken": { - "location": "query", - "description": "The token of the page to retrieve.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only", - "https://www.googleapis.com/auth/service.management", - "https://www.googleapis.com/auth/service.management.readonly" - ] - }, - "create": { - "request": { - "$ref": "Rollout" - }, - "description": "Creates a new service configuration rollout. Based on rollout, the\nGoogle Service Management will roll out the service configurations to\ndifferent backend services. For example, the logging configuration will be\npushed to Google Cloud Logging.\n\nPlease note that any previous pending and running Rollouts and associated\nOperations will be automatically cancelled so that the latest Rollout will\nnot be blocked by previous Rollouts.\n\nOperation\u003cresponse: Rollout\u003e", - "httpMethod": "POST", "parameterOrder": [ "serviceName" ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], + "httpMethod": "GET", "parameters": { + "pageToken": { + "type": "string", + "location": "query", + "description": "The token of the page to retrieve." + }, + "pageSize": { + "format": "int32", + "description": "The max number of items to include in the response list.", + "type": "integer", + "location": "query" + }, + "filter": { + "type": "string", + "location": "query", + "description": "Use `filter` to return subset of rollouts.\nThe following filters are supported:\n -- To limit the results to only those in\n [status](google.api.servicemanagement.v1.RolloutStatus) 'SUCCESS',\n use filter='status=SUCCESS'\n -- To limit the results to those in\n [status](google.api.servicemanagement.v1.RolloutStatus) 'CANCELLED'\n or 'FAILED', use filter='status=CANCELLED OR status=FAILED'" + }, "serviceName": { "location": "path", "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`.", @@ -760,47 +654,139 @@ "required": true } }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only", + "https://www.googleapis.com/auth/service.management", + "https://www.googleapis.com/auth/service.management.readonly" + ], "flatPath": "v1/services/{serviceName}/rollouts", + "id": "servicemanagement.services.rollouts.list", "path": "v1/services/{serviceName}/rollouts", - "id": "servicemanagement.services.rollouts.create" + "description": "Lists the history of the service configuration rollouts for a managed\nservice, from the newest to the oldest." + }, + "create": { + "request": { + "$ref": "Rollout" + }, + "description": "Creates a new service configuration rollout. Based on rollout, the\nGoogle Service Management will roll out the service configurations to\ndifferent backend services. For example, the logging configuration will be\npushed to Google Cloud Logging.\n\nPlease note that any previous pending and running Rollouts and associated\nOperations will be automatically cancelled so that the latest Rollout will\nnot be blocked by previous Rollouts.\n\nOperation\u003cresponse: Rollout\u003e", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "serviceName" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "parameters": { + "serviceName": { + "type": "string", + "required": true, + "location": "path", + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements. For example: `example.googleapis.com`." + } + }, + "flatPath": "v1/services/{serviceName}/rollouts", + "id": "servicemanagement.services.rollouts.create", + "path": "v1/services/{serviceName}/rollouts" } } } } + }, + "operations": { + "methods": { + "get": { + "flatPath": "v1/operations/{operationsId}", + "id": "servicemanagement.operations.get", + "path": "v1/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^operations/.+$" + } + } + }, + "list": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "parameters": { + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "Not used.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "The maximum number of operations to return. If unspecified, defaults to\n50. The maximum value is 100.", + "type": "integer", + "location": "query" + }, + "filter": { + "location": "query", + "description": "A string for filtering Operations.\n The following filter fields are supported:\n\n * serviceName: Required. Only `=` operator is allowed.\n * startTime: The time this job was started, in ISO 8601 format.\n Allowed operators are `\u003e=`, `\u003e`, `\u003c=`, and `\u003c`.\n * status: Can be `done`, `in_progress`, or `failed`. Allowed\n operators are `=`, and `!=`.\n\n Filter expression supports conjunction (AND) and disjunction (OR)\n logical operators. However, the serviceName restriction must be at the\n top-level and can only be combined with other restrictions via the AND\n logical operator.\n\n Examples:\n\n * `serviceName={some-service}.googleapis.com`\n * `serviceName={some-service}.googleapis.com AND startTime\u003e=\"2017-02-01\"`\n * `serviceName={some-service}.googleapis.com AND status=done`\n * `serviceName={some-service}.googleapis.com AND (status=done OR startTime\u003e=\"2017-02-01\")`", + "type": "string" + } + }, + "flatPath": "v1/operations", + "id": "servicemanagement.operations.list", + "path": "v1/operations", + "description": "Lists service operations that match the specified filter in the request.", + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [], + "httpMethod": "GET" + } + } } }, "parameters": { - "quotaUser": { + "bearer_token": { "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "description": "OAuth bearer token.", "type": "string" }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, "oauth_token": { "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, "upload_protocol": { "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string" }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" }, "fields": { "location": "query", @@ -808,29 +794,31 @@ "type": "string" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" + }, + "callback": { + "type": "string", + "location": "query", + "description": "JSONP" }, "alt": { + "description": "Data format for response.", + "default": "json", "enum": [ "json", "media", @@ -842,19 +830,28 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query", - "description": "Data format for response.", - "default": "json" + "location": "query" }, "access_token": { - "location": "query", "description": "OAuth access token.", - "type": "string" + "type": "string", + "location": "query" }, "key": { "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" } }, "version": "v1", @@ -868,13 +865,626 @@ "revision": "20170819", "discoveryVersion": "v1", "schemas": { + "Endpoint": { + "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n name: library-example.googleapis.com\n endpoints:\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address library-example.googleapis.com.\n # It also allows HTTP OPTIONS calls to be passed to the backend, for\n # it to decide whether the subsequent cross-origin request is\n # allowed to proceed.\n - name: library-example.googleapis.com\n allow_cors: true", + "type": "object", + "properties": { + "features": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The list of features enabled on this endpoint." + }, + "apis": { + "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.", + "items": { + "type": "string" + }, + "type": "array" + }, + "aliases": { + "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intented\nalias.\n\nAdditional names that this endpoint will be hosted on.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowCors": { + "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.", + "type": "boolean" + }, + "name": { + "description": "The canonical name of this endpoint.", + "type": "string" + }, + "target": { + "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".", + "type": "string" + } + }, + "id": "Endpoint" + }, + "OAuthRequirements": { + "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.", + "type": "object", + "properties": { + "canonicalScopes": { + "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n canonical_scopes: https://www.googleapis.com/auth/calendar,\n https://www.googleapis.com/auth/calendar.read", + "type": "string" + } + }, + "id": "OAuthRequirements" + }, + "TestIamPermissionsResponse": { + "type": "object", + "properties": { + "permissions": { + "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsResponse", + "description": "Response message for `TestIamPermissions` method." + }, + "GetIamPolicyRequest": { + "description": "Request message for `GetIamPolicy` method.", + "type": "object", + "properties": {}, + "id": "GetIamPolicyRequest" + }, + "Usage": { + "properties": { + "rules": { + "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "UsageRule" + }, + "type": "array" + }, + "requirements": { + "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form \u003cservice.name\u003e/\u003crequirement-id\u003e;\nfor example 'serviceusage.googleapis.com/billing-enabled'.", + "items": { + "type": "string" + }, + "type": "array" + }, + "producerNotificationChannel": { + "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.", + "type": "string" + } + }, + "id": "Usage", + "description": "Configuration controlling usage of a service.", + "type": "object" + }, + "Context": { + "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n context:\n rules:\n - selector: \"*\"\n requested:\n - google.rpc.context.ProjectContext\n - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.", + "type": "object", + "properties": { + "rules": { + "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "ContextRule" + }, + "type": "array" + } + }, + "id": "Context" + }, + "Rule": { + "properties": { + "logConfig": { + "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries\nthat match the LOG action.", + "items": { + "$ref": "LogConfig" + }, + "type": "array" + }, + "in": { + "description": "If one or more 'in' clauses are specified, the rule matches if\nthe PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.", + "items": { + "type": "string" + }, + "type": "array" + }, + "permissions": { + "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "action": { + "enumDescriptions": [ + "Default no action.", + "Matching 'Entries' grant access.", + "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' deny access.", + "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' tell IAM.Check callers to generate logs." + ], + "enum": [ + "NO_ACTION", + "ALLOW", + "ALLOW_WITH_LOG", + "DENY", + "DENY_WITH_LOG", + "LOG" + ], + "description": "Required", + "type": "string" + }, + "notIn": { + "description": "If one or more 'not_in' clauses are specified, the rule matches\nif the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.\nThe format for in and not_in entries is the same as for members in a\nBinding (see google/iam/v1/policy.proto).", + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Human-readable description of the rule.", + "type": "string" + }, + "conditions": { + "items": { + "$ref": "Condition" + }, + "type": "array", + "description": "Additional restrictions that must be met" + } + }, + "id": "Rule", + "description": "A rule to be applied in a Policy.", + "type": "object" + }, + "LogConfig": { + "description": "Specifies what kind of log the caller must write", + "type": "object", + "properties": { + "counter": { + "description": "Counter options.", + "$ref": "CounterOptions" + }, + "dataAccess": { + "description": "Data access options.", + "$ref": "DataAccessOptions" + }, + "cloudAudit": { + "$ref": "CloudAuditOptions", + "description": "Cloud audit options." + } + }, + "id": "LogConfig" + }, + "LogDescriptor": { + "description": "A description of a log type. Example in YAML format:\n\n - name: library.googleapis.com/activity_history\n description: The history of borrowing and returning library items.\n display_name: Activity\n labels:\n - key: /customer_id\n description: Identifier of a library customer", + "type": "object", + "properties": { + "labels": { + "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.", + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array" + }, + "name": { + "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].", + "type": "string" + }, + "displayName": { + "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.", + "type": "string" + }, + "description": { + "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.", + "type": "string" + } + }, + "id": "LogDescriptor" + }, + "ConfigFile": { + "description": "Generic specification of a source configuration file", + "type": "object", + "properties": { + "filePath": { + "description": "The file name of the configuration file (full or relative path).", + "type": "string" + }, + "fileType": { + "description": "The type of configuration file this represents.", + "type": "string", + "enumDescriptions": [ + "Unknown file type.", + "YAML-specification of service.", + "OpenAPI specification, serialized in JSON.", + "OpenAPI specification, serialized in YAML.", + "FileDescriptorSet, generated by protoc.\n\nTo generate, use protoc with imports and source info included.\nFor an example test.proto file, the following command would put the value\nin a new file named out.pb.\n\n$protoc --include_imports --include_source_info test.proto -o out.pb" + ], + "enum": [ + "FILE_TYPE_UNSPECIFIED", + "SERVICE_CONFIG_YAML", + "OPEN_API_JSON", + "OPEN_API_YAML", + "FILE_DESCRIPTOR_SET_PROTO" + ] + }, + "fileContents": { + "format": "byte", + "description": "The bytes that constitute the file.", + "type": "string" + } + }, + "id": "ConfigFile" + }, + "MonitoredResourceDescriptor": { + "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels. For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.", + "type": "object", + "properties": { + "labels": { + "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.", + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array" + }, + "name": { + "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type. APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.", + "type": "string" + }, + "description": { + "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.", + "type": "string" + }, + "displayName": { + "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.", + "type": "string" + }, + "type": { + "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.", + "type": "string" + } + }, + "id": "MonitoredResourceDescriptor" + }, + "CustomErrorRule": { + "description": "A custom error rule.", + "type": "object", + "properties": { + "selector": { + "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + }, + "isErrorType": { + "description": "Mark this message as possible payload in error response. Otherwise,\nobjects of this type will be filtered when they appear in error payload.", + "type": "boolean" + } + }, + "id": "CustomErrorRule" + }, + "CustomAuthRequirements": { + "description": "Configuration for a custom authentication provider.", + "type": "object", + "properties": { + "provider": { + "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).", + "type": "string" + } + }, + "id": "CustomAuthRequirements" + }, + "MediaDownload": { + "type": "object", + "properties": { + "useDirectDownload": { + "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.", + "type": "boolean" + }, + "enabled": { + "description": "Whether download is enabled.", + "type": "boolean" + }, + "downloadService": { + "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.", + "type": "string" + }, + "completeNotification": { + "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.", + "type": "boolean" + }, + "maxDirectDownloadSize": { + "format": "int64", + "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.", + "type": "string" + }, + "dropzone": { + "description": "Name of the Scotty dropzone to use for the current API.", + "type": "string" + } + }, + "id": "MediaDownload", + "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods." + }, + "ChangeReport": { + "type": "object", + "properties": { + "configChanges": { + "description": "List of changes between two service configurations.\nThe changes will be alphabetically sorted based on the identifier\nof each change.\nA ConfigChange identifier is a dot separated path to the configuration.\nExample: visibility.rules[selector='LibraryService.CreateBook'].restriction", + "items": { + "$ref": "ConfigChange" + }, + "type": "array" + } + }, + "id": "ChangeReport", + "description": "Change report associated with a particular service configuration.\n\nIt contains a list of ConfigChanges based on the comparison between\ntwo service configurations." + }, + "DisableServiceRequest": { + "properties": { + "consumerId": { + "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.", + "type": "string" + } + }, + "id": "DisableServiceRequest", + "description": "Request message for DisableService method.", + "type": "object" + }, + "SubmitConfigSourceResponse": { + "description": "Response message for SubmitConfigSource method.", + "type": "object", + "properties": { + "serviceConfig": { + "$ref": "Service", + "description": "The generated service configuration." + } + }, + "id": "SubmitConfigSourceResponse" + }, + "MediaUpload": { + "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.", + "type": "object", + "properties": { + "completeNotification": { + "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.", + "type": "boolean" + }, + "progressNotification": { + "description": "Whether to receive a notification for progress changes of media upload.", + "type": "boolean" + }, + "enabled": { + "description": "Whether upload is enabled.", + "type": "boolean" + }, + "dropzone": { + "description": "Name of the Scotty dropzone to use for the current API.", + "type": "string" + }, + "startNotification": { + "description": "Whether to receive a notification on the start of media upload.", + "type": "boolean" + }, + "uploadService": { + "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.", + "type": "string" + }, + "mimeTypes": { + "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.", + "items": { + "type": "string" + }, + "type": "array" + }, + "maxSize": { + "format": "int64", + "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.", + "type": "string" + } + }, + "id": "MediaUpload" + }, + "Advice": { + "description": "Generated advice about this change, used for providing more\ninformation about how a change will affect the existing service.", + "type": "object", + "properties": { + "description": { + "description": "Useful description for why this advice was applied and what actions should\nbe taken to mitigate any implied risks.", + "type": "string" + } + }, + "id": "Advice" + }, + "ManagedService": { + "description": "The full representation of a Service that is managed by\nGoogle Service Management.", + "type": "object", + "properties": { + "producerProjectId": { + "description": "ID of the project that produces and owns this service.", + "type": "string" + }, + "serviceName": { + "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements.", + "type": "string" + } + }, + "id": "ManagedService" + }, + "UsageRule": { + "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n usage:\n rules:\n - selector: \"*\"\n allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n usage:\n rules:\n - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n allow_unregistered_calls: true", + "type": "object", + "properties": { + "skipServiceControl": { + "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.", + "type": "boolean" + }, + "allowUnregisteredCalls": { + "description": "True, if the method allows unregistered calls; false otherwise.", + "type": "boolean" + }, + "selector": { + "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", + "type": "string" + } + }, + "id": "UsageRule" + }, + "AuthRequirement": { + "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", + "type": "object", + "properties": { + "providerId": { + "description": "id from authentication provider.\n\nExample:\n\n provider_id: bookstore_auth", + "type": "string" + }, + "audiences": { + "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com", + "type": "string" + } + }, + "id": "AuthRequirement" + }, + "TrafficPercentStrategy": { + "type": "object", + "properties": { + "percentages": { + "type": "object", + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Maps service configuration IDs to their corresponding traffic percentage.\nKey is the service configuration ID, Value is the traffic percentage\nwhich must be greater than 0.0 and the sum must equal to 100.0." + } + }, + "id": "TrafficPercentStrategy", + "description": "Strategy that specifies how clients of Google Service Controller want to\nsend traffic to use different config versions. This is generally\nused by API proxy to split traffic based on your configured precentage for\neach config version.\n\nOne example of how to gradually rollout a new service configuration using\nthis\nstrategy:\nDay 1\n\n Rollout {\n id: \"example.googleapis.com/rollout_20160206\"\n traffic_percent_strategy {\n percentages: {\n \"example.googleapis.com/20160201\": 70.00\n \"example.googleapis.com/20160206\": 30.00\n }\n }\n }\n\nDay 2\n\n Rollout {\n id: \"example.googleapis.com/rollout_20160207\"\n traffic_percent_strategy: {\n percentages: {\n \"example.googleapis.com/20160206\": 100.00\n }\n }\n }" + }, + "Documentation": { + "description": "`Documentation` provides the information for describing a service.\n\nExample:\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: \u003e\n The Google Calendar API gives access\n to most calendar features.\n pages:\n - name: Overview\n content: (== include google/foo/overview.md ==)\n - name: Tutorial\n content: (== include google/foo/tutorial.md ==)\n subpages;\n - name: Java\n content: (== include google/foo/tutorial_java.md ==)\n rules:\n - selector: google.calendar.Calendar.Get\n description: \u003e\n ...\n - selector: google.calendar.Calendar.Put\n description: \u003e\n ...\n\u003c/code\u003e\u003c/pre\u003e\nDocumentation is provided in markdown syntax. In addition to\nstandard markdown features, definition lists, tables and fenced\ncode blocks are supported. Section headers can be provided and are\ninterpreted relative to the section nesting of the context where\na documentation fragment is embedded.\n\nDocumentation from the IDL is merged with documentation defined\nvia the config at normalization time, where documentation provided\nby config rules overrides IDL provided.\n\nA number of constructs specific to the API platform are supported\nin documentation text.\n\nIn order to reference a proto element, the following\nnotation can be used:\n\u003cpre\u003e\u003ccode\u003e[fully.qualified.proto.name][]\u003c/code\u003e\u003c/pre\u003e\nTo override the display text used for the link, this can be used:\n\u003cpre\u003e\u003ccode\u003e[display text][fully.qualified.proto.name]\u003c/code\u003e\u003c/pre\u003e\nText can be excluded from doc using the following notation:\n\u003cpre\u003e\u003ccode\u003e(-- internal comment --)\u003c/code\u003e\u003c/pre\u003e\nComments can be made conditional using a visibility label. The below\ntext will be only rendered if the `BETA` label is available:\n\u003cpre\u003e\u003ccode\u003e(--BETA: comment for BETA users --)\u003c/code\u003e\u003c/pre\u003e\nA few directives are available in documentation. Note that\ndirectives must appear on a single line to be properly\nidentified. The `include` directive includes a markdown file from\nan external source:\n\u003cpre\u003e\u003ccode\u003e(== include path/to/file ==)\u003c/code\u003e\u003c/pre\u003e\nThe `resource_for` directive marks a message to be the resource of\na collection in REST view. If it is not specified, tools attempt\nto infer the resource from the operations in a collection:\n\u003cpre\u003e\u003ccode\u003e(== resource_for v1.shelves.books ==)\u003c/code\u003e\u003c/pre\u003e\nThe directive `suppress_warning` does not directly affect documentation\nand is documented together with service config validation.", + "type": "object", + "properties": { + "overview": { + "description": "Declares a single overview page. For example:\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n overview: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nThis is a shortcut for the following declaration (using pages style):\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n pages:\n - name: Overview\n content: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nNote: you cannot specify both `overview` field and `pages` field.", + "type": "string" + }, + "rules": { + "description": "A list of documentation rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "DocumentationRule" + }, + "type": "array" + }, + "pages": { + "description": "The top level pages for the documentation set.", + "items": { + "$ref": "Page" + }, + "type": "array" + }, + "summary": { + "description": "A short summary of what the service does. Can only be provided by\nplain text.", + "type": "string" + }, + "documentationRootUrl": { + "description": "The URL to the root of documentation.", + "type": "string" + } + }, + "id": "Documentation" + }, + "Condition": { + "description": "A condition to be met.", + "type": "object", + "properties": { + "iam": { + "description": "Trusted attributes supplied by the IAM system.", + "type": "string", + "enumDescriptions": [ + "Default non-attribute.", + "Either principal or (if present) authority selector.", + "The principal (even if an authority selector is present), which\nmust only be used for attribution, not authorization.", + "An approver (distinct from the requester) that has authorized this\nrequest.\nWhen used with IN, the condition indicates that one of the approvers\nassociated with the request matches the specified principal, or is a\nmember of the specified group. Approvers can only grant additional\naccess, and are thus only used in a strictly positive context\n(e.g. ALLOW/IN or DENY/NOT_IN).", + "What types of justifications have been supplied with this request.\nString values should match enum names from tech.iam.JustificationType,\ne.g. \"MANUAL_STRING\". It is not permitted to grant access based on\nthe *absence* of a justification, so justification conditions can only\nbe used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).\n\nMultiple justifications, e.g., a Buganizer ID and a manually-entered\nreason, are normal and supported." + ], + "enum": [ + "NO_ATTR", + "AUTHORITY", + "ATTRIBUTION", + "APPROVER", + "JUSTIFICATION_TYPE" + ] + }, + "values": { + "description": "The objects of the condition. This is mutually exclusive with 'value'.", + "items": { + "type": "string" + }, + "type": "array" + }, + "op": { + "enum": [ + "NO_OP", + "EQUALS", + "NOT_EQUALS", + "IN", + "NOT_IN", + "DISCHARGED" + ], + "description": "An operator to apply the subject with.", + "type": "string", + "enumDescriptions": [ + "Default no-op.", + "DEPRECATED. Use IN instead.", + "DEPRECATED. Use NOT_IN instead.", + "The condition is true if the subject (or any element of it if it is\na set) matches any of the supplied values.", + "The condition is true if the subject (or every element of it if it is\na set) matches none of the supplied values.", + "Subject is discharged" + ] + }, + "svc": { + "description": "Trusted attributes discharged by the service.", + "type": "string" + }, + "value": { + "description": "DEPRECATED. Use 'values' instead.", + "type": "string" + }, + "sys": { + "description": "Trusted attributes supplied by any service that owns resources and uses\nthe IAM system for access control.", + "type": "string", + "enumDescriptions": [ + "Default non-attribute type", + "Region of the resource", + "Service name", + "Resource name", + "IP address of the caller" + ], + "enum": [ + "NO_ATTR", + "REGION", + "SERVICE", + "NAME", + "IP" + ] + } + }, + "id": "Condition" + }, "AuditLogConfig": { "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", "type": "object", "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, "logType": { - "description": "The log type that this config enables.", - "type": "string", "enumDescriptions": [ "Default case. Should never be this.", "Admin reads. Example: CloudIAM getIamPolicy", @@ -886,37 +1496,63 @@ "ADMIN_READ", "DATA_WRITE", "DATA_READ" - ] - }, - "exemptedMembers": { - "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", - "items": { - "type": "string" - }, - "type": "array" + ], + "description": "The log type that this config enables.", + "type": "string" } }, "id": "AuditLogConfig" }, "ConfigSource": { + "id": "ConfigSource", "description": "Represents a source file which is used to generate the service configuration\ndefined by `google.api.Service`.", "type": "object", "properties": { - "id": { - "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.", - "type": "string" - }, "files": { "description": "Set of source configuration files that are used to generate a service\nconfiguration (`google.api.Service`).", "items": { "$ref": "ConfigFile" }, "type": "array" + }, + "id": { + "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.", + "type": "string" + } + } + }, + "AuthenticationRule": { + "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.", + "type": "object", + "properties": { + "customAuth": { + "description": "Configuration for custom authentication.", + "$ref": "CustomAuthRequirements" + }, + "oauth": { + "$ref": "OAuthRequirements", + "description": "The requirements for OAuth credentials." + }, + "requirements": { + "description": "Requirements for additional authentication providers.", + "items": { + "$ref": "AuthRequirement" + }, + "type": "array" + }, + "allowWithoutCredential": { + "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject.", + "type": "boolean" + }, + "selector": { + "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" } }, - "id": "ConfigSource" + "id": "AuthenticationRule" }, "BackendRule": { + "id": "BackendRule", "description": "A backend rule provides configuration for an individual API element.", "type": "object", "properties": { @@ -938,40 +1574,10 @@ "description": "The number of seconds to wait for a response from a request. The\ndefault depends on the deployment context.", "type": "number" } - }, - "id": "BackendRule" - }, - "AuthenticationRule": { - "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.", - "type": "object", - "properties": { - "customAuth": { - "description": "Configuration for custom authentication.", - "$ref": "CustomAuthRequirements" - }, - "oauth": { - "description": "The requirements for OAuth credentials.", - "$ref": "OAuthRequirements" - }, - "requirements": { - "description": "Requirements for additional authentication providers.", - "items": { - "$ref": "AuthRequirement" - }, - "type": "array" - }, - "allowWithoutCredential": { - "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject.", - "type": "boolean" - }, - "selector": { - "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "AuthenticationRule" + } }, "UndeleteServiceResponse": { + "id": "UndeleteServiceResponse", "description": "Response message for UndeleteService method.", "type": "object", "properties": { @@ -979,23 +1585,11 @@ "$ref": "ManagedService", "description": "Revived service resource." } - }, - "id": "UndeleteServiceResponse" + } }, "Policy": { - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", "type": "object", "properties": { - "iamOwned": { - "type": "boolean" - }, - "rules": { - "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", - "items": { - "$ref": "Rule" - }, - "type": "array" - }, "version": { "format": "int32", "description": "Version of the `Policy`. The default version is 0.", @@ -1019,20 +1613,38 @@ "format": "byte", "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", "type": "string" + }, + "iamOwned": { + "type": "boolean" + }, + "rules": { + "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", + "items": { + "$ref": "Rule" + }, + "type": "array" } }, - "id": "Policy" + "id": "Policy", + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam)." }, "Api": { "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.", "type": "object", "properties": { + "mixins": { + "description": "Included interfaces. See Mixin.", + "items": { + "$ref": "Mixin" + }, + "type": "array" + }, "options": { - "description": "Any metadata attached to the interface.", "items": { "$ref": "Option" }, - "type": "array" + "type": "array", + "description": "Any metadata attached to the interface." }, "methods": { "description": "The methods of this interface, in unspecified order.", @@ -1045,55 +1657,29 @@ "description": "The fully qualified name of this interface, including package name\nfollowed by the interface's simple name.", "type": "string" }, - "sourceContext": { - "description": "Source context for the protocol buffer service represented by this\nmessage.", - "$ref": "SourceContext" - }, "syntax": { + "enum": [ + "SYNTAX_PROTO2", + "SYNTAX_PROTO3" + ], "description": "The source syntax of the service.", "type": "string", "enumDescriptions": [ "Syntax `proto2`.", "Syntax `proto3`." - ], - "enum": [ - "SYNTAX_PROTO2", - "SYNTAX_PROTO3" ] }, + "sourceContext": { + "description": "Source context for the protocol buffer service represented by this\nmessage.", + "$ref": "SourceContext" + }, "version": { "description": "A version string for this interface. If specified, must have the form\n`major-version.minor-version`, as in `1.10`. If the minor version is\nomitted, it defaults to zero. If the entire version field is empty, the\nmajor version is derived from the package name, as outlined below. If the\nfield is not empty, the version in the package name will be verified to be\nconsistent with what is provided here.\n\nThe versioning schema uses [semantic\nversioning](http://semver.org) where the major version number\nindicates a breaking change and the minor version an additive,\nnon-breaking change. Both version numbers are signals to users\nwhat to expect from different versions, and should be carefully\nchosen based on the product plan.\n\nThe major version is also reflected in the package name of the\ninterface, which must end in `v\u003cmajor-version\u003e`, as in\n`google.feature.v1`. For major versions 0 and 1, the suffix can\nbe omitted. Zero major versions must only be used for\nexperimental, non-GA interfaces.\n", "type": "string" - }, - "mixins": { - "description": "Included interfaces. See Mixin.", - "items": { - "$ref": "Mixin" - }, - "type": "array" } }, "id": "Api" }, - "MetricRule": { - "description": "Bind API methods to metrics. Binding a method to a metric causes that\nmetric's configured quota behaviors to apply to the method call.", - "type": "object", - "properties": { - "metricCosts": { - "description": "Metrics to update when the selected methods are called, and the associated\ncost applied to each metric.\n\nThe key of the map is the metric name, and the values are the amount\nincreased for the metric against which the quota limits are defined.\nThe value must not be negative.", - "type": "object", - "additionalProperties": { - "format": "int64", - "type": "string" - } - }, - "selector": { - "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "MetricRule" - }, "DataAccessOptions": { "description": "Write a Data Access (Gin) log", "type": "object", @@ -1113,31 +1699,67 @@ }, "id": "DataAccessOptions" }, - "Authentication": { - "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", + "MetricRule": { + "description": "Bind API methods to metrics. Binding a method to a metric causes that\nmetric's configured quota behaviors to apply to the method call.", "type": "object", "properties": { - "providers": { - "description": "Defines a set of authentication providers that a service supports.", - "items": { - "$ref": "AuthProvider" + "metricCosts": { + "additionalProperties": { + "format": "int64", + "type": "string" }, - "type": "array" + "description": "Metrics to update when the selected methods are called, and the associated\ncost applied to each metric.\n\nThe key of the map is the metric name, and the values are the amount\nincreased for the metric against which the quota limits are defined.\nThe value must not be negative.", + "type": "object" }, + "selector": { + "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + } + }, + "id": "MetricRule" + }, + "Authentication": { + "properties": { "rules": { "description": "A list of authentication rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "AuthenticationRule" }, "type": "array" + }, + "providers": { + "items": { + "$ref": "AuthProvider" + }, + "type": "array", + "description": "Defines a set of authentication providers that a service supports." } }, - "id": "Authentication" + "id": "Authentication", + "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", + "type": "object" }, "Operation": { + "id": "Operation", "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object", + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + } + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, "error": { "description": "The error result of the operation in case of failure or cancellation.", "$ref": "Status" @@ -1149,25 +1771,8 @@ }, "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", "type": "object" - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" } - }, - "id": "Operation" + } }, "Page": { "description": "Represents a documentation page. A page can contain subpages to represent\nnested documentation set structure.", @@ -1234,14 +1839,13 @@ "type": "array" }, "role": { - "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired", - "type": "string" + "type": "string", + "description": "Role that is assigned to `members`.\nFor example, `roles/viewer`, `roles/editor`, or `roles/owner`.\nRequired" } }, "id": "Binding" }, "AuthProvider": { - "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", "type": "object", "properties": { "jwksUri": { @@ -1265,89 +1869,26 @@ "type": "string" } }, - "id": "AuthProvider" - }, - "EnumValue": { - "description": "Enum value definition.", - "type": "object", - "properties": { - "options": { - "description": "Protocol buffer options.", - "items": { - "$ref": "Option" - }, - "type": "array" - }, - "number": { - "format": "int32", - "description": "Enum value number.", - "type": "integer" - }, - "name": { - "description": "Enum value name.", - "type": "string" - } - }, - "id": "EnumValue" + "id": "AuthProvider", + "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32)." }, "Service": { - "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", - "type": "object", "properties": { - "metrics": { - "description": "Defines the metrics used by this service.", - "items": { - "$ref": "MetricDescriptor" - }, - "type": "array" - }, - "authentication": { - "$ref": "Authentication", - "description": "Auth configuration." - }, - "experimental": { - "$ref": "Experimental", - "description": "Experimental configuration." - }, - "control": { - "description": "Configuration for the service control plane.", - "$ref": "Control" - }, - "configVersion": { - "format": "uint32", - "description": "The semantic version of the service configuration. The config version\naffects the interpretation of the service configuration. For example,\ncertain features are enabled by default for certain config versions.\nThe latest config version is `3`.", - "type": "integer" - }, - "monitoring": { - "$ref": "Monitoring", - "description": "Monitoring configuration." - }, - "systemTypes": { - "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.", - "items": { - "$ref": "Type" - }, - "type": "array" - }, - "producerProjectId": { - "description": "The Google project that owns this service.", - "type": "string" - }, "visibility": { - "$ref": "Visibility", - "description": "API visibility configuration." + "description": "API visibility configuration.", + "$ref": "Visibility" }, "quota": { - "description": "Quota configuration.", - "$ref": "Quota" + "$ref": "Quota", + "description": "Quota configuration." }, "name": { "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.", "type": "string" }, "customError": { - "$ref": "CustomError", - "description": "Custom error configuration." + "description": "Custom error configuration.", + "$ref": "CustomError" }, "title": { "description": "The product title for this service.", @@ -1390,8 +1931,8 @@ "description": "HTTP configuration." }, "systemParameters": { - "$ref": "SystemParameters", - "description": "System parameter configuration." + "description": "System parameter configuration.", + "$ref": "SystemParameters" }, "backend": { "$ref": "Backend", @@ -1401,10 +1942,6 @@ "description": "Additional API documentation.", "$ref": "Documentation" }, - "logging": { - "$ref": "Logging", - "description": "Logging configuration." - }, "monitoredResources": { "description": "Defines the monitored resources used by this service. This is required\nby the Service.monitoring and Service.logging configurations.", "items": { @@ -1412,6 +1949,10 @@ }, "type": "array" }, + "logging": { + "$ref": "Logging", + "description": "Logging configuration." + }, "enums": { "description": "A list of all enum types included in this API service. Enums\nreferenced directly or indirectly by the `apis` are automatically\nincluded. Enums which are not referenced but shall be included\nshould be listed here by name. Example:\n\n enums:\n - name: google.someapi.v1.SomeEnum", "items": { @@ -1420,19 +1961,83 @@ "type": "array" }, "context": { - "description": "Context configuration.", - "$ref": "Context" + "$ref": "Context", + "description": "Context configuration." }, "id": { "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.", "type": "string" }, "usage": { - "$ref": "Usage", - "description": "Configuration controlling usage of this service." + "description": "Configuration controlling usage of this service.", + "$ref": "Usage" + }, + "metrics": { + "description": "Defines the metrics used by this service.", + "items": { + "$ref": "MetricDescriptor" + }, + "type": "array" + }, + "authentication": { + "$ref": "Authentication", + "description": "Auth configuration." + }, + "experimental": { + "description": "Experimental configuration.", + "$ref": "Experimental" + }, + "control": { + "description": "Configuration for the service control plane.", + "$ref": "Control" + }, + "configVersion": { + "format": "uint32", + "description": "The semantic version of the service configuration. The config version\naffects the interpretation of the service configuration. For example,\ncertain features are enabled by default for certain config versions.\nThe latest config version is `3`.", + "type": "integer" + }, + "monitoring": { + "description": "Monitoring configuration.", + "$ref": "Monitoring" + }, + "systemTypes": { + "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.", + "items": { + "$ref": "Type" + }, + "type": "array" + }, + "producerProjectId": { + "description": "The Google project that owns this service.", + "type": "string" } }, - "id": "Service" + "id": "Service", + "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", + "type": "object" + }, + "EnumValue": { + "id": "EnumValue", + "description": "Enum value definition.", + "type": "object", + "properties": { + "options": { + "description": "Protocol buffer options.", + "items": { + "$ref": "Option" + }, + "type": "array" + }, + "number": { + "format": "int32", + "description": "Enum value number.", + "type": "integer" + }, + "name": { + "description": "Enum value name.", + "type": "string" + } + } }, "ListOperationsResponse": { "description": "The response message for Operations.ListOperations.", @@ -1452,14 +2057,30 @@ }, "id": "ListOperationsResponse" }, + "CustomHttpPattern": { + "properties": { + "path": { + "type": "string", + "description": "The path matched by this custom verb." + }, + "kind": { + "description": "The name of this custom HTTP verb.", + "type": "string" + } + }, + "id": "CustomHttpPattern", + "description": "A custom pattern is used for defining custom HTTP verb.", + "type": "object" + }, "OperationMetadata": { + "id": "OperationMetadata", "description": "The metadata associated with a long running operation resource.", "type": "object", "properties": { "startTime": { + "type": "string", "format": "google-datetime", - "description": "The start time of the operation.", - "type": "string" + "description": "The start time of the operation." }, "steps": { "description": "Detailed status information for each step. The order is undetermined.", @@ -1480,61 +2101,35 @@ "description": "Percentage of completion of this operation, ranging from 0 to 100.", "type": "integer" } - }, - "id": "OperationMetadata" - }, - "CustomHttpPattern": { - "description": "A custom pattern is used for defining custom HTTP verb.", - "type": "object", - "properties": { - "kind": { - "description": "The name of this custom HTTP verb.", - "type": "string" - }, - "path": { - "description": "The path matched by this custom verb.", - "type": "string" - } - }, - "id": "CustomHttpPattern" + } }, "SystemParameterRule": { "description": "Define a system parameter rule mapping system parameter definitions to\nmethods.", "type": "object", "properties": { + "selector": { + "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", + "type": "string" + }, "parameters": { "description": "Define parameters. Multiple names may be defined for a parameter.\nFor a given method call, only one of them should be used. If multiple\nnames are used the behavior is implementation-dependent.\nIf none of the specified names are present the behavior is\nparameter-dependent.", "items": { "$ref": "SystemParameter" }, "type": "array" - }, - "selector": { - "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", - "type": "string" } }, "id": "SystemParameterRule" }, - "VisibilityRule": { - "description": "A visibility rule provides visibility configuration for an individual API\nelement.", - "type": "object", - "properties": { - "restriction": { - "description": "A comma-separated list of visibility labels that apply to the `selector`.\nAny of the listed labels can be used to grant the visibility.\n\nIf a rule has multiple labels, removing one of the labels but not all of\nthem can break clients.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: GOOGLE_INTERNAL, TRUSTED_TESTER\n\nRemoving GOOGLE_INTERNAL from this restriction will break clients that\nrely on this method and only had access to it through GOOGLE_INTERNAL.", - "type": "string" - }, - "selector": { - "description": "Selects methods, messages, fields, enums, etc. to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "VisibilityRule" - }, "HttpRule": { + "id": "HttpRule", "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind. The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n SubMessage sub = 2; // `sub.subfield` is url-mapped\n }\n message Message {\n string text = 1; // content of the resource\n }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n http:\n rules:\n - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo` | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n int64 revision = 2; // becomes a parameter\n SubMessage sub = 3; // `sub.subfield` becomes a parameter\n }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A¶m=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n service Messaging {\n rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"message\"\n };\n }\n }\n message UpdateMessageRequest {\n string message_id = 1; // mapped to the URL\n Message message = 2; // mapped to the body\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body. This enables the following alternative definition of\nthe update method:\n\n service Messaging {\n rpc UpdateMessage(Message) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"*\"\n };\n }\n }\n message Message {\n string message_id = 1;\n string text = 2;\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http) = {\n get: \"/v1/messages/{message_id}\"\n additional_bindings {\n get: \"/v1/users/{user_id}/messages/{message_id}\"\n }\n };\n }\n }\n message GetMessageRequest {\n string message_id = 1;\n string user_id = 2;\n }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n request) can be classified into three types:\n (a) Matched in the URL template.\n (b) Covered by body (if body is `*`, everything except (a) fields;\n else everything under the body field)\n (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n Template = \"/\" Segments [ Verb ] ;\n Segments = Segment { \"/\" Segment } ;\n Segment = \"*\" | \"**\" | LITERAL | Variable ;\n Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n FieldPath = IDENT { \".\" IDENT } ;\n Verb = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.", "type": "object", "properties": { + "body": { + "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.", + "type": "string" + }, "post": { "description": "Used for creating a resource.", "type": "string" @@ -1581,34 +2176,43 @@ "delete": { "description": "Used for deleting a resource.", "type": "string" + } + } + }, + "VisibilityRule": { + "properties": { + "selector": { + "description": "Selects methods, messages, fields, enums, etc. to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" }, - "body": { - "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.", + "restriction": { + "description": "A comma-separated list of visibility labels that apply to the `selector`.\nAny of the listed labels can be used to grant the visibility.\n\nIf a rule has multiple labels, removing one of the labels but not all of\nthem can break clients.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: GOOGLE_INTERNAL, TRUSTED_TESTER\n\nRemoving GOOGLE_INTERNAL from this restriction will break clients that\nrely on this method and only had access to it through GOOGLE_INTERNAL.", "type": "string" } }, - "id": "HttpRule" + "id": "VisibilityRule", + "description": "A visibility rule provides visibility configuration for an individual API\nelement.", + "type": "object" }, "MonitoringDestination": { "description": "Configuration of a specific monitoring destination (the producer project\nor the consumer project).", "type": "object", "properties": { - "monitoredResource": { - "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.", - "type": "string" - }, "metrics": { "description": "Names of the metrics to report to this monitoring destination.\nEach name must be defined in Service.metrics section.", "items": { "type": "string" }, "type": "array" + }, + "monitoredResource": { + "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.", + "type": "string" } }, "id": "MonitoringDestination" }, "Visibility": { - "description": "`Visibility` defines restrictions for the visibility of service\nelements. Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: TRUSTED_TESTER\n - selector: google.calendar.Calendar.Delegate\n restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate.", "type": "object", "properties": { "rules": { @@ -1619,11 +2223,10 @@ "type": "array" } }, - "id": "Visibility" + "id": "Visibility", + "description": "`Visibility` defines restrictions for the visibility of service\nelements. Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: TRUSTED_TESTER\n - selector: google.calendar.Calendar.Delegate\n restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate." }, "SystemParameters": { - "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.", - "type": "object", "properties": { "rules": { "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n system_parameters\n rules:\n - selector: \"*\"\n parameters:\n - name: api_key\n url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n system_parameters\n rules:\n - selector: \"/ListShelves\"\n parameters:\n - name: api_key\n http_header: Api-Key1\n - name: api_key\n http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", @@ -1633,7 +2236,9 @@ "type": "array" } }, - "id": "SystemParameters" + "id": "SystemParameters", + "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.", + "type": "object" }, "ConfigChange": { "description": "Output generated from semantically comparing two versions of a service\nconfiguration.\n\nIncludes detailed information about a field that have changed with\napplicable advice about potential consequences for the change, such as\nbackwards-incompatibility.", @@ -1678,15 +2283,16 @@ "id": "ConfigChange" }, "Quota": { + "id": "Quota", "description": "Quota configuration helps to achieve fairness and budgeting in service\nusage.\n\nThe quota configuration works this way:\n- The service configuration defines a set of metrics.\n- For API calls, the quota.metric_rules maps methods to metrics with\n corresponding costs.\n- The quota.limits defines limits on the metrics, which will be used for\n quota checks at runtime.\n\nAn example quota configuration in yaml format:\n\n quota:\n\n - name: apiWriteQpsPerProject\n metric: library.googleapis.com/write_calls\n unit: \"1/min/{project}\" # rate limit for consumer projects\n values:\n STANDARD: 10000\n\n\n # The metric rules bind all methods to the read_calls metric,\n # except for the UpdateBook and DeleteBook methods. These two methods\n # are mapped to the write_calls metric, with the UpdateBook method\n # consuming at twice rate as the DeleteBook method.\n metric_rules:\n - selector: \"*\"\n metric_costs:\n library.googleapis.com/read_calls: 1\n - selector: google.example.library.v1.LibraryService.UpdateBook\n metric_costs:\n library.googleapis.com/write_calls: 2\n - selector: google.example.library.v1.LibraryService.DeleteBook\n metric_costs:\n library.googleapis.com/write_calls: 1\n\n Corresponding Metric definition:\n\n metrics:\n - name: library.googleapis.com/read_calls\n display_name: Read requests\n metric_kind: DELTA\n value_type: INT64\n\n - name: library.googleapis.com/write_calls\n display_name: Write requests\n metric_kind: DELTA\n value_type: INT64", "type": "object", "properties": { "limits": { - "description": "List of `QuotaLimit` definitions for the service.", "items": { "$ref": "QuotaLimit" }, - "type": "array" + "type": "array", + "description": "List of `QuotaLimit` definitions for the service." }, "metricRules": { "description": "List of `MetricRule` definitions, each one mapping a selected method to one\nor more metrics.", @@ -1695,34 +2301,12 @@ }, "type": "array" } - }, - "id": "Quota" + } }, "Rollout": { "description": "A rollout resource that defines how service configuration versions are pushed\nto control plane systems. Typically, you create a new version of the\nservice config, and then create a Rollout to push the service config.", "type": "object", "properties": { - "createdBy": { - "description": "The user who created the Rollout. Readonly.", - "type": "string" - }, - "trafficPercentStrategy": { - "$ref": "TrafficPercentStrategy", - "description": "Google Service Control selects service configurations based on\ntraffic percentage." - }, - "rolloutId": { - "description": "Optional unique identifier of this Rollout. Only lower case letters, digits\n and '-' are allowed.\n\nIf not specified by client, the server will generate one. The generated id\nwill have the form of \u003cdate\u003e\u003crevision number\u003e, where \"date\" is the create\ndate in ISO 8601 format. \"revision number\" is a monotonically increasing\npositive number that is reset every day for each service.\nAn example of the generated rollout_id is '2016-02-16r1'", - "type": "string" - }, - "deleteServiceStrategy": { - "$ref": "DeleteServiceStrategy", - "description": "The strategy associated with a rollout to delete a `ManagedService`.\nReadonly." - }, - "createTime": { - "format": "google-datetime", - "description": "Creation time of the rollout. Readonly.", - "type": "string" - }, "status": { "description": "The status of this rollout. Readonly. In case of a failed rollout,\nthe system will automatically rollback to the current Rollout\nversion. Readonly.", "type": "string", @@ -1748,6 +2332,27 @@ "serviceName": { "description": "The name of the service associated with this Rollout.", "type": "string" + }, + "createdBy": { + "description": "The user who created the Rollout. Readonly.", + "type": "string" + }, + "trafficPercentStrategy": { + "$ref": "TrafficPercentStrategy", + "description": "Google Service Control selects service configurations based on\ntraffic percentage." + }, + "rolloutId": { + "description": "Optional unique identifier of this Rollout. Only lower case letters, digits\n and '-' are allowed.\n\nIf not specified by client, the server will generate one. The generated id\nwill have the form of \u003cdate\u003e\u003crevision number\u003e, where \"date\" is the create\ndate in ISO 8601 format. \"revision number\" is a monotonically increasing\npositive number that is reset every day for each service.\nAn example of the generated rollout_id is '2016-02-16r1'", + "type": "string" + }, + "deleteServiceStrategy": { + "description": "The strategy associated with a rollout to delete a `ManagedService`.\nReadonly.", + "$ref": "DeleteServiceStrategy" + }, + "createTime": { + "format": "google-datetime", + "description": "Creation time of the rollout. Readonly.", + "type": "string" } }, "id": "Rollout" @@ -1757,20 +2362,20 @@ "type": "object", "properties": { "oldConfig": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, "description": "Service configuration against which the comparison will be done.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service", + "type": "object" + }, + "newConfig": { + "description": "Service configuration for which we want to generate the report.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service", "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" } - }, - "newConfig": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service configuration for which we want to generate the report.\nFor this version of API, the supported types are\ngoogle.api.servicemanagement.v1.ConfigRef,\ngoogle.api.servicemanagement.v1.ConfigSource,\nand google.api.Service", - "type": "object" } }, "id": "GenerateConfigReportRequest" @@ -1779,35 +2384,25 @@ "description": "Request message for `SetIamPolicy` method.", "type": "object", "properties": { - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - }, "updateMask": { "format": "google-fieldmask", "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", "type": "string" + }, + "policy": { + "$ref": "Policy", + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." } }, "id": "SetIamPolicyRequest" }, - "DeleteServiceStrategy": { - "description": "Strategy used to delete a service. This strategy is a placeholder only\nused by the system generated rollout to delete a service.", - "type": "object", - "properties": {}, - "id": "DeleteServiceStrategy" - }, "Step": { - "description": "Represents the status of one operation step.", - "type": "object", "properties": { "description": { "description": "The short description of the step.", "type": "string" }, "status": { - "description": "The status code.", - "type": "string", "enumDescriptions": [ "Unspecifed code.", "The operation or step has completed without errors.", @@ -1823,14 +2418,22 @@ "IN_PROGRESS", "FAILED", "CANCELLED" - ] + ], + "description": "The status code.", + "type": "string" } }, - "id": "Step" + "id": "Step", + "description": "Represents the status of one operation step.", + "type": "object" + }, + "DeleteServiceStrategy": { + "type": "object", + "properties": {}, + "id": "DeleteServiceStrategy", + "description": "Strategy used to delete a service. This strategy is a placeholder only\nused by the system generated rollout to delete a service." }, "LoggingDestination": { - "description": "Configuration of a specific logging destination (the producer project\nor the consumer project).", - "type": "object", "properties": { "logs": { "description": "Names of the logs to be sent to this destination. Each name must\nbe defined in the Service.logs section. If the log name is\nnot a domain scoped name, it will be automatically prefixed with\nthe service name followed by \"/\".", @@ -1844,37 +2447,37 @@ "type": "string" } }, - "id": "LoggingDestination" + "id": "LoggingDestination", + "description": "Configuration of a specific logging destination (the producer project\nor the consumer project).", + "type": "object" }, "Option": { "description": "A protocol buffer option, which can be attached to a message, field,\nenumeration, etc.", "type": "object", "properties": { - "value": { - "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, "name": { "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.", "type": "string" + }, + "value": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.", + "type": "object" } }, "id": "Option" }, "Logging": { - "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n logs:\n - name: activity_history\n labels:\n - key: /customer_id\n - name: purchase_history\n logging:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history\n - purchase_history\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history", - "type": "object", "properties": { "consumerDestinations": { - "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination.", "items": { "$ref": "LoggingDestination" }, - "type": "array" + "type": "array", + "description": "Logging configurations for sending logs to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none consumer destination." }, "producerDestinations": { "description": "Logging configurations for sending logs to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A log can be used in at most\none producer destination.", @@ -1884,66 +2487,21 @@ "type": "array" } }, - "id": "Logging" - }, - "QuotaLimit": { - "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.", - "type": "object", - "properties": { - "duration": { - "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "freeTier": { - "format": "int64", - "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "defaultLimit": { - "format": "int64", - "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "metric": { - "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.\n\nUsed by metric-based quotas only.", - "type": "string" - }, - "description": { - "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`).", - "type": "string" - }, - "displayName": { - "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.", - "type": "string" - }, - "values": { - "additionalProperties": { - "format": "int64", - "type": "string" - }, - "description": "Tiered limit values, currently only STANDARD is supported.", - "type": "object" - }, - "unit": { - "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nThe [Google Service Control](https://cloud.google.com/service-control)\nsupports the following unit components:\n* One of the time intevals:\n * \"/min\" for quota every minute.\n * \"/d\" for quota every 24 hours, starting 00:00 US Pacific Time.\n * Otherwise the quota won't be reset by time, such as storage limit.\n* One and only one of the granted containers:\n * \"/{project}\" quota for a project\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.\n\nUsed by metric-based quotas only.", - "type": "string" - }, - "maxLimit": { - "format": "int64", - "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "name": { - "description": "Name of the quota limit. The name is used to refer to the limit when\noverriding the default limit on per-consumer basis.\n\nFor metric-based quota limits, the name must be provided, and it must be\nunique within the service. The name can only include alphanumeric\ncharacters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.\n\nThe name of a limit is used as a unique identifier for this limit.\nTherefore, once a limit has been put into use, its name should be\nimmutable. You can use the display_name field to provide a user-friendly\nname for the limit. The display name can be evolved over time without\naffecting the identity of the limit.", - "type": "string" - } - }, - "id": "QuotaLimit" + "id": "Logging", + "description": "Logging configuration of the service.\n\nThe following example shows how to configure logs to be sent to the\nproducer and consumer projects. In the example, the `activity_history`\nlog is sent to both the producer and consumer projects, whereas the\n`purchase_history` log is only sent to the producer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n logs:\n - name: activity_history\n labels:\n - key: /customer_id\n - name: purchase_history\n logging:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history\n - purchase_history\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n logs:\n - activity_history", + "type": "object" }, "Method": { "description": "Method represents a method of an API interface.", "type": "object", "properties": { + "options": { + "description": "Any metadata attached to the method.", + "items": { + "$ref": "Option" + }, + "type": "array" + }, "responseStreaming": { "description": "If true, the response is streamed.", "type": "boolean" @@ -1975,17 +2533,75 @@ "responseTypeUrl": { "description": "The URL of the output message type.", "type": "string" - }, - "options": { - "description": "Any metadata attached to the method.", - "items": { - "$ref": "Option" - }, - "type": "array" } }, "id": "Method" }, + "QuotaLimit": { + "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.", + "type": "object", + "properties": { + "name": { + "description": "Name of the quota limit. The name is used to refer to the limit when\noverriding the default limit on per-consumer basis.\n\nFor metric-based quota limits, the name must be provided, and it must be\nunique within the service. The name can only include alphanumeric\ncharacters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.\n\nThe name of a limit is used as a unique identifier for this limit.\nTherefore, once a limit has been put into use, its name should be\nimmutable. You can use the display_name field to provide a user-friendly\nname for the limit. The display name can be evolved over time without\naffecting the identity of the limit.", + "type": "string" + }, + "freeTier": { + "format": "int64", + "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only.", + "type": "string" + }, + "duration": { + "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.", + "type": "string" + }, + "defaultLimit": { + "format": "int64", + "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.", + "type": "string" + }, + "description": { + "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`).", + "type": "string" + }, + "metric": { + "description": "The name of the metric this quota limit applies to. The quota limits with\nthe same metric will be checked together during runtime. The metric must be\ndefined within the service config.\n\nUsed by metric-based quotas only.", + "type": "string" + }, + "displayName": { + "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.", + "type": "string" + }, + "values": { + "additionalProperties": { + "format": "int64", + "type": "string" + }, + "description": "Tiered limit values, currently only STANDARD is supported.", + "type": "object" + }, + "unit": { + "description": "Specify the unit of the quota limit. It uses the same syntax as\nMetric.unit. The supported unit kinds are determined by the quota\nbackend system.\n\nThe [Google Service Control](https://cloud.google.com/service-control)\nsupports the following unit components:\n* One of the time intevals:\n * \"/min\" for quota every minute.\n * \"/d\" for quota every 24 hours, starting 00:00 US Pacific Time.\n * Otherwise the quota won't be reset by time, such as storage limit.\n* One and only one of the granted containers:\n * \"/{project}\" quota for a project\n\nHere are some examples:\n* \"1/min/{project}\" for quota per minute per project.\n\nNote: the order of unit components is insignificant.\nThe \"1\" at the beginning is required to follow the metric unit syntax.\n\nUsed by metric-based quotas only.", + "type": "string" + }, + "maxLimit": { + "format": "int64", + "description": "Maximum number of tokens that can be consumed during the specified\nduration. Client application developers can override the default limit up\nto this maximum. If specified, this value cannot be set to a value less\nthan the default limit. If not specified, it is set to the default limit.\n\nTo allow clients to apply overrides with no upper bound, set this to -1,\nindicating unlimited maximum quota.\n\nUsed by group-based quotas only.", + "type": "string" + } + }, + "id": "QuotaLimit" + }, + "ConfigRef": { + "id": "ConfigRef", + "description": "Represents a service configuration with its name and id.", + "type": "object", + "properties": { + "name": { + "description": "Resource name of a service config. It must have the following\nformat: \"services/{service name}/configs/{config id}\".", + "type": "string" + } + } + }, "ListServiceRolloutsResponse": { "description": "Response message for ListServiceRollouts method.", "type": "object", @@ -2004,28 +2620,17 @@ }, "id": "ListServiceRolloutsResponse" }, - "ConfigRef": { - "description": "Represents a service configuration with its name and id.", - "type": "object", - "properties": { - "name": { - "description": "Resource name of a service config. It must have the following\nformat: \"services/{service name}/configs/{config id}\".", - "type": "string" - } - }, - "id": "ConfigRef" - }, "Mixin": { "description": "Declares an API Interface to be included in this interface. The including\ninterface must redeclare all the methods from the included interface, but\ndocumentation and options are inherited as follows:\n\n- If after comment and whitespace stripping, the documentation\n string of the redeclared method is empty, it will be inherited\n from the original method.\n\n- Each annotation belonging to the service config (http,\n visibility) which is not set in the redeclared method will be\n inherited.\n\n- If an http annotation is inherited, the path pattern will be\n modified as follows. Any version prefix will be replaced by the\n version of the including interface plus the root path if\n specified.\n\nExample of a simple mixin:\n\n package google.acl.v1;\n service AccessControl {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v1/{resource=**}:getAcl\";\n }\n }\n\n package google.storage.v2;\n service Storage {\n // rpc GetAcl(GetAclRequest) returns (Acl);\n\n // Get a data record.\n rpc GetData(GetDataRequest) returns (Data) {\n option (google.api.http).get = \"/v2/{resource=**}\";\n }\n }\n\nExample of a mixin configuration:\n\n apis:\n - name: google.storage.v2.Storage\n mixins:\n - name: google.acl.v1.AccessControl\n\nThe mixin construct implies that all methods in `AccessControl` are\nalso declared with same name and request/response types in\n`Storage`. A documentation generator or annotation processor will\nsee the effective `Storage.GetAcl` method after inherting\ndocumentation and annotations as follows:\n\n service Storage {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v2/{resource=**}:getAcl\";\n }\n ...\n }\n\nNote how the version in the path pattern changed from `v1` to `v2`.\n\nIf the `root` field in the mixin is specified, it should be a\nrelative path under which inherited HTTP paths are placed. Example:\n\n apis:\n - name: google.storage.v2.Storage\n mixins:\n - name: google.acl.v1.AccessControl\n root: acls\n\nThis implies the following inherited HTTP annotation:\n\n service Storage {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\";\n }\n ...\n }", "type": "object", "properties": { + "name": { + "type": "string", + "description": "The fully qualified name of the interface which is included." + }, "root": { "description": "If non-empty specifies a path under which inherited HTTP paths\nare rooted.", "type": "string" - }, - "name": { - "description": "The fully qualified name of the interface which is included.", - "type": "string" } }, "id": "Mixin" @@ -2034,24 +2639,12 @@ "description": "The metadata associated with a long running operation resource.", "type": "object", "properties": { - "resourceNames": { - "description": "The full name of the resources that this flow is directly associated with.", - "items": { - "type": "string" - }, - "type": "array" - }, - "flowName": { - "description": "The name of the top-level flow corresponding to this operation.\nMust be equal to the \"name\" field for a FlowName enum.", - "type": "string" - }, "deadline": { "format": "google-datetime", "description": "Deadline for the flow to complete, to prevent orphaned Operations.\n\nIf the flow has not completed by this time, it may be terminated by\nthe engine, or force-failed by Operation lookup.\n\nNote that this is not a hard deadline after which the Flow will\ndefinitely be failed, rather it is a deadline after which it is reasonable\nto suspect a problem and other parts of the system may kill operation\nto ensure we don't have orphans.\nsee also: go/prevent-orphaned-operations", "type": "string" }, "cancelState": { - "description": "The state of the operation with respect to cancellation.", "type": "string", "enumDescriptions": [ "Default state, cancellable but not cancelled.", @@ -2062,12 +2655,24 @@ "RUNNING", "UNCANCELLABLE", "CANCELLED" - ] + ], + "description": "The state of the operation with respect to cancellation." }, "startTime": { "format": "google-datetime", "description": "The start time of the operation.", "type": "string" + }, + "resourceNames": { + "items": { + "type": "string" + }, + "type": "array", + "description": "The full name of the resources that this flow is directly associated with." + }, + "flowName": { + "description": "The name of the top-level flow corresponding to this operation.\nMust be equal to the \"name\" field for a FlowName enum.", + "type": "string" } }, "id": "FlowOperationMetadata" @@ -2112,37 +2717,37 @@ "description": "Defines the HTTP configuration for an API service. It contains a list of\nHttpRule, each specifying the mapping of an RPC method\nto one or more HTTP REST API methods.", "type": "object", "properties": { - "fullyDecodeReservedExpansion": { - "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.", - "type": "boolean" - }, "rules": { "description": "A list of HTTP configuration rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "HttpRule" }, "type": "array" + }, + "fullyDecodeReservedExpansion": { + "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.", + "type": "boolean" } }, "id": "Http" }, "SourceInfo": { - "description": "Source information used to create a Service Config", - "type": "object", "properties": { "sourceFiles": { - "description": "All files used during config generation.", "items": { "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." }, "type": "object" }, - "type": "array" + "type": "array", + "description": "All files used during config generation." } }, - "id": "SourceInfo" + "id": "SourceInfo", + "description": "Source information used to create a Service Config", + "type": "object" }, "Control": { "description": "Selects and configures the service controller used by the service. The\nservice controller handles features like abuse, quota, billing, logging,\nmonitoring, etc.", @@ -2159,10 +2764,6 @@ "description": "Define a parameter's name and location. The parameter may be passed as either\nan HTTP header or a URL query parameter, and if both are passed the behavior\nis implementation-dependent.", "type": "object", "properties": { - "httpHeader": { - "description": "Define the HTTP header name to use for the parameter. It is case\ninsensitive.", - "type": "string" - }, "name": { "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.", "type": "string" @@ -2170,24 +2771,59 @@ "urlQueryParameter": { "description": "Define the URL query parameter name to use for the parameter. It is case\nsensitive.", "type": "string" + }, + "httpHeader": { + "description": "Define the HTTP header name to use for the parameter. It is case\ninsensitive.", + "type": "string" } }, "id": "SystemParameter" }, + "Monitoring": { + "properties": { + "producerDestinations": { + "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.", + "items": { + "$ref": "MonitoringDestination" + }, + "type": "array" + }, + "consumerDestinations": { + "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.", + "items": { + "$ref": "MonitoringDestination" + }, + "type": "array" + } + }, + "id": "Monitoring", + "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n metrics:\n - name: library.googleapis.com/book/returned_count\n metric_kind: DELTA\n value_type: INT64\n labels:\n - key: /customer_id\n - name: library.googleapis.com/book/overdue_count\n metric_kind: GAUGE\n value_type: INT64\n labels:\n - key: /customer_id\n monitoring:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n - library.googleapis.com/book/overdue_count", + "type": "object" + }, "Field": { "description": "A single field of a message type.", "type": "object", "properties": { - "typeUrl": { - "description": "The field type URL, without the scheme, for message or enumeration\ntypes. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`.", + "name": { + "description": "The field name.", "type": "string" }, + "typeUrl": { + "type": "string", + "description": "The field type URL, without the scheme, for message or enumeration\ntypes. Example: `\"type.googleapis.com/google.protobuf.Timestamp\"`." + }, "number": { "format": "int32", "description": "The field number.", "type": "integer" }, + "jsonName": { + "description": "The field JSON name.", + "type": "string" + }, "kind": { + "description": "The field type.", + "type": "string", "enumDescriptions": [ "Field type unknown.", "Field type double.", @@ -2229,13 +2865,7 @@ "TYPE_SFIXED64", "TYPE_SINT32", "TYPE_SINT64" - ], - "description": "The field type.", - "type": "string" - }, - "jsonName": { - "description": "The field JSON name.", - "type": "string" + ] }, "options": { "description": "The protocol buffer options.", @@ -2254,6 +2884,12 @@ "type": "boolean" }, "cardinality": { + "enum": [ + "CARDINALITY_UNKNOWN", + "CARDINALITY_OPTIONAL", + "CARDINALITY_REQUIRED", + "CARDINALITY_REPEATED" + ], "description": "The field cardinality.", "type": "string", "enumDescriptions": [ @@ -2261,49 +2897,16 @@ "For optional fields.", "For required fields. Proto2 syntax only.", "For repeated fields." - ], - "enum": [ - "CARDINALITY_UNKNOWN", - "CARDINALITY_OPTIONAL", - "CARDINALITY_REQUIRED", - "CARDINALITY_REPEATED" ] }, "defaultValue": { "description": "The string value of the default value of this field. Proto2 syntax only.", "type": "string" - }, - "name": { - "description": "The field name.", - "type": "string" } }, "id": "Field" }, - "Monitoring": { - "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n metrics:\n - name: library.googleapis.com/book/returned_count\n metric_kind: DELTA\n value_type: INT64\n labels:\n - key: /customer_id\n - name: library.googleapis.com/book/overdue_count\n metric_kind: GAUGE\n value_type: INT64\n labels:\n - key: /customer_id\n monitoring:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n - library.googleapis.com/book/overdue_count", - "type": "object", - "properties": { - "consumerDestinations": { - "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.", - "items": { - "$ref": "MonitoringDestination" - }, - "type": "array" - }, - "producerDestinations": { - "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.", - "items": { - "$ref": "MonitoringDestination" - }, - "type": "array" - } - }, - "id": "Monitoring" - }, "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", "properties": { "permissions": { "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", @@ -2313,22 +2916,24 @@ "type": "array" } }, - "id": "TestIamPermissionsRequest" + "id": "TestIamPermissionsRequest", + "description": "Request message for `TestIamPermissions` method.", + "type": "object" }, "Enum": { "description": "Enum type definition.", "type": "object", "properties": { "enumvalue": { - "description": "Enum value definitions.", "items": { "$ref": "EnumValue" }, - "type": "array" + "type": "array", + "description": "Enum value definitions." }, "name": { - "description": "Enum type name.", - "type": "string" + "type": "string", + "description": "Enum type name." }, "options": { "description": "Protocol buffer options.", @@ -2338,6 +2943,8 @@ "type": "array" }, "syntax": { + "description": "The source syntax.", + "type": "string", "enumDescriptions": [ "Syntax `proto2`.", "Syntax `proto3`." @@ -2345,9 +2952,7 @@ "enum": [ "SYNTAX_PROTO2", "SYNTAX_PROTO3" - ], - "description": "The source syntax.", - "type": "string" + ] }, "sourceContext": { "$ref": "SourceContext", @@ -2356,9 +2961,18 @@ }, "id": "Enum" }, - "Diagnostic": { - "description": "Represents a diagnostic message (error or warning)", + "EnableServiceRequest": { + "id": "EnableServiceRequest", + "description": "Request message for EnableService method.", "type": "object", + "properties": { + "consumerId": { + "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.", + "type": "string" + } + } + }, + "Diagnostic": { "properties": { "kind": { "enumDescriptions": [ @@ -2381,44 +2995,35 @@ "type": "string" } }, - "id": "Diagnostic" - }, - "EnableServiceRequest": { - "description": "Request message for EnableService method.", - "type": "object", - "properties": { - "consumerId": { - "description": "The identity of consumer resource which service enablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.", - "type": "string" - } - }, - "id": "EnableServiceRequest" + "id": "Diagnostic", + "description": "Represents a diagnostic message (error or warning)", + "type": "object" }, "LabelDescriptor": { "description": "A description of a label.", "type": "object", "properties": { + "key": { + "description": "The label key.", + "type": "string" + }, "description": { "description": "A human-readable description for the label.", "type": "string" }, "valueType": { - "enumDescriptions": [ - "A variable-length string. This is the default.", - "Boolean; true or false.", - "A 64-bit signed integer." - ], "enum": [ "STRING", "BOOL", "INT64" ], "description": "The type of data that can be assigned to the label.", - "type": "string" - }, - "key": { - "description": "The label key.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "A variable-length string. This is the default.", + "Boolean; true or false.", + "A 64-bit signed integer." + ] } }, "id": "LabelDescriptor" @@ -2427,6 +3032,10 @@ "description": "Response message for GenerateConfigReport method.", "type": "object", "properties": { + "id": { + "description": "ID of the service configuration this report belongs to.", + "type": "string" + }, "diagnostics": { "description": "Errors / Linter warnings associated with the service definition this\nreport\nbelongs to.", "items": { @@ -2435,8 +3044,8 @@ "type": "array" }, "serviceName": { - "description": "Name of the service this report belongs to.", - "type": "string" + "type": "string", + "description": "Name of the service this report belongs to." }, "changeReports": { "description": "list of ChangeReport, each corresponding to comparison between two\nservice configurations.", @@ -2444,10 +3053,6 @@ "$ref": "ChangeReport" }, "type": "array" - }, - "id": { - "description": "ID of the service configuration this report belongs to.", - "type": "string" } }, "id": "GenerateConfigReportResponse" @@ -2456,29 +3061,6 @@ "description": "A protocol buffer message type.", "type": "object", "properties": { - "oneofs": { - "description": "The list of types appearing in `oneof` definitions in this type.", - "items": { - "type": "string" - }, - "type": "array" - }, - "sourceContext": { - "description": "The source context.", - "$ref": "SourceContext" - }, - "syntax": { - "enumDescriptions": [ - "Syntax `proto2`.", - "Syntax `proto3`." - ], - "enum": [ - "SYNTAX_PROTO2", - "SYNTAX_PROTO3" - ], - "description": "The source syntax.", - "type": "string" - }, "options": { "description": "The protocol buffer options.", "items": { @@ -2496,6 +3078,29 @@ "name": { "description": "The fully qualified message name.", "type": "string" + }, + "oneofs": { + "description": "The list of types appearing in `oneof` definitions in this type.", + "items": { + "type": "string" + }, + "type": "array" + }, + "syntax": { + "enumDescriptions": [ + "Syntax `proto2`.", + "Syntax `proto3`." + ], + "enum": [ + "SYNTAX_PROTO2", + "SYNTAX_PROTO3" + ], + "description": "The source syntax.", + "type": "string" + }, + "sourceContext": { + "$ref": "SourceContext", + "description": "The source context." } }, "id": "Type" @@ -2505,34 +3110,41 @@ "type": "object", "properties": { "authorization": { - "description": "Authorization configuration.", - "$ref": "AuthorizationConfig" + "$ref": "AuthorizationConfig", + "description": "Authorization configuration." } }, "id": "Experimental" }, "ListServiceConfigsResponse": { + "id": "ListServiceConfigsResponse", "description": "Response message for ListServiceConfigs method.", "type": "object", "properties": { "serviceConfigs": { - "description": "The list of service configuration resources.", "items": { "$ref": "Service" }, - "type": "array" + "type": "array", + "description": "The list of service configuration resources." }, "nextPageToken": { "description": "The token of the next page of results.", "type": "string" } - }, - "id": "ListServiceConfigsResponse" + } }, "AuditConfig": { + "id": "AuditConfig", "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", "type": "object", "properties": { + "exemptedMembers": { + "items": { + "type": "string" + }, + "type": "array" + }, "service": { "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", "type": "string" @@ -2543,29 +3155,22 @@ "$ref": "AuditLogConfig" }, "type": "array" - }, - "exemptedMembers": { - "items": { - "type": "string" - }, - "type": "array" } - }, - "id": "AuditConfig" + } }, "Backend": { - "description": "`Backend` defines the backend configuration for a service.", "type": "object", "properties": { "rules": { - "description": "A list of API backend rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "BackendRule" }, - "type": "array" + "type": "array", + "description": "A list of API backend rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order." } }, - "id": "Backend" + "id": "Backend", + "description": "`Backend` defines the backend configuration for a service." }, "SubmitConfigSourceRequest": { "description": "Request message for SubmitConfigSource method.", @@ -2587,8 +3192,8 @@ "type": "object", "properties": { "provider": { - "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.", - "type": "string" + "type": "string", + "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com." } }, "id": "AuthorizationConfig" @@ -2613,11 +3218,11 @@ "id": "DocumentationRule" }, "CloudAuditOptions": { + "id": "CloudAuditOptions", "description": "Write a Cloud Audit log", "type": "object", "properties": { "logName": { - "description": "The log_name to populate in the Cloud Audit Record.", "type": "string", "enumDescriptions": [ "Default. Should not be used.", @@ -2628,13 +3233,12 @@ "UNSPECIFIED_LOG_NAME", "ADMIN_ACTIVITY", "DATA_ACCESS" - ] + ], + "description": "The log_name to populate in the Cloud Audit Record." } - }, - "id": "CloudAuditOptions" + } }, "ContextRule": { - "description": "A context rule provides information about the context for an individual API\nelement.", "type": "object", "properties": { "selector": { @@ -2656,10 +3260,10 @@ "type": "array" } }, - "id": "ContextRule" + "id": "ContextRule", + "description": "A context rule provides information about the context for an individual API\nelement." }, "SourceContext": { - "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined.", "type": "object", "properties": { "fileName": { @@ -2667,36 +3271,12 @@ "type": "string" } }, - "id": "SourceContext" + "id": "SourceContext", + "description": "`SourceContext` represents information about the source of a\nprotobuf element, like the file in which it is defined." }, "MetricDescriptor": { - "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.", "type": "object", "properties": { - "metricKind": { - "enumDescriptions": [ - "Do not use this default value.", - "An instantaneous measurement of a value.", - "The change in a value during a time interval.", - "A value accumulated over a time interval. Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints." - ], - "enum": [ - "METRIC_KIND_UNSPECIFIED", - "GAUGE", - "DELTA", - "CUMULATIVE" - ], - "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.", - "type": "string" - }, - "displayName": { - "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".", - "type": "string" - }, - "description": { - "description": "A detailed description of the metric, which can be used in documentation.", - "type": "string" - }, "unit": { "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit` bit\n* `By` byte\n* `s` second\n* `min` minute\n* `h` hour\n* `d` day\n\n**Prefixes (PREFIX)**\n\n* `k` kilo (10**3)\n* `M` mega (10**6)\n* `G` giga (10**9)\n* `T` tera (10**12)\n* `P` peta (10**15)\n* `E` exa (10**18)\n* `Z` zetta (10**21)\n* `Y` yotta (10**24)\n* `m` milli (10**-3)\n* `u` micro (10**-6)\n* `n` nano (10**-9)\n* `p` pico (10**-12)\n* `f` femto (10**-15)\n* `a` atto (10**-18)\n* `z` zepto (10**-21)\n* `y` yocto (10**-24)\n* `Ki` kibi (2**10)\n* `Mi` mebi (2**20)\n* `Gi` gibi (2**30)\n* `Ti` tebi (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/` division (as an infix operator, e.g. `1/s`).\n* `.` multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n Expression = Component { \".\" Component } { \"/\" Component } ;\n\n Component = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\n Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n equivalent to `1` if it is used alone. For examples,\n `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n containing '{' or '}'.", "type": "string" @@ -2717,15 +3297,6 @@ "type": "string" }, "valueType": { - "enumDescriptions": [ - "Do not use this default value.", - "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.", - "The value is a signed 64-bit integer.", - "The value is a double precision floating point number.", - "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.", - "The value is a `Distribution`.", - "The value is money." - ], "enum": [ "VALUE_TYPE_UNSPECIFIED", "BOOL", @@ -2736,23 +3307,49 @@ "MONEY" ], "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.", + "type": "string", + "enumDescriptions": [ + "Do not use this default value.", + "The value is a boolean.\nThis value type can be used only if the metric kind is `GAUGE`.", + "The value is a signed 64-bit integer.", + "The value is a double precision floating point number.", + "The value is a text string.\nThis value type can be used only if the metric kind is `GAUGE`.", + "The value is a `Distribution`.", + "The value is money." + ] + }, + "metricKind": { + "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.", + "type": "string", + "enumDescriptions": [ + "Do not use this default value.", + "An instantaneous measurement of a value.", + "The change in a value during a time interval.", + "A value accumulated over a time interval. Cumulative\nmeasurements in a time series should have the same start time\nand increasing end times, until an event resets the cumulative\nvalue to zero and sets a new start time for the following\npoints." + ], + "enum": [ + "METRIC_KIND_UNSPECIFIED", + "GAUGE", + "DELTA", + "CUMULATIVE" + ] + }, + "displayName": { + "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".", + "type": "string" + }, + "description": { + "description": "A detailed description of the metric, which can be used in documentation.", "type": "string" } }, - "id": "MetricDescriptor" + "id": "MetricDescriptor", + "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable." }, "Expr": { "description": "Represents an expression text. Example:\n\n title: \"User account presence\"\n description: \"Determines whether the request has a user account\"\n expression: \"size(request.user) \u003e 0\"", "type": "object", "properties": { - "description": { - "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", - "type": "string" - }, - "expression": { - "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", - "type": "string" - }, "location": { "description": "An optional string indicating the location of the expression for error\nreporting, e.g. a file name and a position in the file.", "type": "string" @@ -2760,6 +3357,14 @@ "title": { "description": "An optional title for the expression, i.e. a short string describing\nits purpose. This can be used e.g. in UIs which allow to enter the\nexpression.", "type": "string" + }, + "description": { + "description": "An optional description of the expression. This is a longer text which\ndescribes the expression, e.g. when hovered over it in a UI.", + "type": "string" + }, + "expression": { + "description": "Textual representation of an expression in\nCommon Expression Language syntax.\n\nThe application context of the containing message determines which\nwell-known feature set of CEL is supported.", + "type": "string" } }, "id": "Expr" @@ -2769,8 +3374,8 @@ "type": "object", "properties": { "nextPageToken": { - "description": "Token that can be passed to `ListServices` to resume a paginated query.", - "type": "string" + "type": "string", + "description": "Token that can be passed to `ListServices` to resume a paginated query." }, "services": { "description": "The returned services will only have the name field set.", @@ -2781,625 +3386,20 @@ } }, "id": "ListServicesResponse" - }, - "Endpoint": { - "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n name: library-example.googleapis.com\n endpoints:\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address library-example.googleapis.com.\n # It also allows HTTP OPTIONS calls to be passed to the backend, for\n # it to decide whether the subsequent cross-origin request is\n # allowed to proceed.\n - name: library-example.googleapis.com\n allow_cors: true", - "type": "object", - "properties": { - "features": { - "description": "The list of features enabled on this endpoint.", - "items": { - "type": "string" - }, - "type": "array" - }, - "apis": { - "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.", - "items": { - "type": "string" - }, - "type": "array" - }, - "allowCors": { - "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.", - "type": "boolean" - }, - "aliases": { - "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intented\nalias.\n\nAdditional names that this endpoint will be hosted on.", - "items": { - "type": "string" - }, - "type": "array" - }, - "target": { - "description": "The specification of an Internet routable address of API frontend that will\nhandle requests to this [API Endpoint](https://cloud.google.com/apis/design/glossary).\nIt should be either a valid IPv4 address or a fully-qualified domain name.\nFor example, \"8.8.8.8\" or \"myservice.appspot.com\".", - "type": "string" - }, - "name": { - "description": "The canonical name of this endpoint.", - "type": "string" - } - }, - "id": "Endpoint" - }, - "OAuthRequirements": { - "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.", - "type": "object", - "properties": { - "canonicalScopes": { - "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n canonical_scopes: https://www.googleapis.com/auth/calendar,\n https://www.googleapis.com/auth/calendar.read", - "type": "string" - } - }, - "id": "OAuthRequirements" - }, - "Usage": { - "description": "Configuration controlling usage of a service.", - "type": "object", - "properties": { - "requirements": { - "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form \u003cservice.name\u003e/\u003crequirement-id\u003e;\nfor example 'serviceusage.googleapis.com/billing-enabled'.", - "items": { - "type": "string" - }, - "type": "array" - }, - "producerNotificationChannel": { - "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.", - "type": "string" - }, - "rules": { - "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "UsageRule" - }, - "type": "array" - } - }, - "id": "Usage" - }, - "GetIamPolicyRequest": { - "description": "Request message for `GetIamPolicy` method.", - "type": "object", - "properties": {}, - "id": "GetIamPolicyRequest" - }, - "TestIamPermissionsResponse": { - "description": "Response message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "A subset of `TestPermissionsRequest.permissions` that the caller is\nallowed.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsResponse" - }, - "Context": { - "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n context:\n rules:\n - selector: \"*\"\n requested:\n - google.rpc.context.ProjectContext\n - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.", - "type": "object", - "properties": { - "rules": { - "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "ContextRule" - }, - "type": "array" - } - }, - "id": "Context" - }, - "Rule": { - "description": "A rule to be applied in a Policy.", - "type": "object", - "properties": { - "notIn": { - "description": "If one or more 'not_in' clauses are specified, the rule matches\nif the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.\nThe format for in and not_in entries is the same as for members in a\nBinding (see google/iam/v1/policy.proto).", - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "description": "Human-readable description of the rule.", - "type": "string" - }, - "conditions": { - "description": "Additional restrictions that must be met", - "items": { - "$ref": "Condition" - }, - "type": "array" - }, - "logConfig": { - "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries\nthat match the LOG action.", - "items": { - "$ref": "LogConfig" - }, - "type": "array" - }, - "in": { - "description": "If one or more 'in' clauses are specified, the rule matches if\nthe PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.", - "items": { - "type": "string" - }, - "type": "array" - }, - "permissions": { - "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", - "items": { - "type": "string" - }, - "type": "array" - }, - "action": { - "enumDescriptions": [ - "Default no action.", - "Matching 'Entries' grant access.", - "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' deny access.", - "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' tell IAM.Check callers to generate logs." - ], - "enum": [ - "NO_ACTION", - "ALLOW", - "ALLOW_WITH_LOG", - "DENY", - "DENY_WITH_LOG", - "LOG" - ], - "description": "Required", - "type": "string" - } - }, - "id": "Rule" - }, - "LogConfig": { - "description": "Specifies what kind of log the caller must write", - "type": "object", - "properties": { - "counter": { - "description": "Counter options.", - "$ref": "CounterOptions" - }, - "dataAccess": { - "description": "Data access options.", - "$ref": "DataAccessOptions" - }, - "cloudAudit": { - "$ref": "CloudAuditOptions", - "description": "Cloud audit options." - } - }, - "id": "LogConfig" - }, - "LogDescriptor": { - "description": "A description of a log type. Example in YAML format:\n\n - name: library.googleapis.com/activity_history\n description: The history of borrowing and returning library items.\n display_name: Activity\n labels:\n - key: /customer_id\n description: Identifier of a library customer", - "type": "object", - "properties": { - "displayName": { - "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.", - "type": "string" - }, - "description": { - "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.", - "type": "string" - }, - "labels": { - "description": "The set of labels that are available to describe a specific log entry.\nRuntime requests that contain labels not specified here are\nconsidered invalid.", - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array" - }, - "name": { - "description": "The name of the log. It must be less than 512 characters long and can\ninclude the following characters: upper- and lower-case alphanumeric\ncharacters [A-Za-z0-9], and punctuation characters including\nslash, underscore, hyphen, period [/_-.].", - "type": "string" - } - }, - "id": "LogDescriptor" - }, - "ConfigFile": { - "description": "Generic specification of a source configuration file", - "type": "object", - "properties": { - "fileContents": { - "format": "byte", - "description": "The bytes that constitute the file.", - "type": "string" - }, - "filePath": { - "description": "The file name of the configuration file (full or relative path).", - "type": "string" - }, - "fileType": { - "enumDescriptions": [ - "Unknown file type.", - "YAML-specification of service.", - "OpenAPI specification, serialized in JSON.", - "OpenAPI specification, serialized in YAML.", - "FileDescriptorSet, generated by protoc.\n\nTo generate, use protoc with imports and source info included.\nFor an example test.proto file, the following command would put the value\nin a new file named out.pb.\n\n$protoc --include_imports --include_source_info test.proto -o out.pb" - ], - "enum": [ - "FILE_TYPE_UNSPECIFIED", - "SERVICE_CONFIG_YAML", - "OPEN_API_JSON", - "OPEN_API_YAML", - "FILE_DESCRIPTOR_SET_PROTO" - ], - "description": "The type of configuration file this represents.", - "type": "string" - } - }, - "id": "ConfigFile" - }, - "CustomErrorRule": { - "description": "A custom error rule.", - "type": "object", - "properties": { - "isErrorType": { - "description": "Mark this message as possible payload in error response. Otherwise,\nobjects of this type will be filtered when they appear in error payload.", - "type": "boolean" - }, - "selector": { - "description": "Selects messages to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "CustomErrorRule" - }, - "MonitoredResourceDescriptor": { - "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels. For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.", - "type": "object", - "properties": { - "labels": { - "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`.", - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array" - }, - "name": { - "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type. APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`.", - "type": "string" - }, - "description": { - "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.", - "type": "string" - }, - "displayName": { - "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.", - "type": "string" - }, - "type": { - "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters.", - "type": "string" - } - }, - "id": "MonitoredResourceDescriptor" - }, - "CustomAuthRequirements": { - "description": "Configuration for a custom authentication provider.", - "type": "object", - "properties": { - "provider": { - "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).", - "type": "string" - } - }, - "id": "CustomAuthRequirements" - }, - "MediaDownload": { - "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.", - "type": "object", - "properties": { - "useDirectDownload": { - "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.", - "type": "boolean" - }, - "enabled": { - "description": "Whether download is enabled.", - "type": "boolean" - }, - "downloadService": { - "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.", - "type": "string" - }, - "completeNotification": { - "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.", - "type": "boolean" - }, - "maxDirectDownloadSize": { - "format": "int64", - "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.", - "type": "string" - }, - "dropzone": { - "description": "Name of the Scotty dropzone to use for the current API.", - "type": "string" - } - }, - "id": "MediaDownload" - }, - "ChangeReport": { - "description": "Change report associated with a particular service configuration.\n\nIt contains a list of ConfigChanges based on the comparison between\ntwo service configurations.", - "type": "object", - "properties": { - "configChanges": { - "description": "List of changes between two service configurations.\nThe changes will be alphabetically sorted based on the identifier\nof each change.\nA ConfigChange identifier is a dot separated path to the configuration.\nExample: visibility.rules[selector='LibraryService.CreateBook'].restriction", - "items": { - "$ref": "ConfigChange" - }, - "type": "array" - } - }, - "id": "ChangeReport" - }, - "DisableServiceRequest": { - "description": "Request message for DisableService method.", - "type": "object", - "properties": { - "consumerId": { - "description": "The identity of consumer resource which service disablement will be\napplied to.\n\nThe Google Service Management implementation accepts the following\nforms:\n- \"project:\u003cproject_id\u003e\"\n\nNote: this is made compatible with\ngoogle.api.servicecontrol.v1.Operation.consumer_id.", - "type": "string" - } - }, - "id": "DisableServiceRequest" - }, - "SubmitConfigSourceResponse": { - "description": "Response message for SubmitConfigSource method.", - "type": "object", - "properties": { - "serviceConfig": { - "$ref": "Service", - "description": "The generated service configuration." - } - }, - "id": "SubmitConfigSourceResponse" - }, - "MediaUpload": { - "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.", - "type": "object", - "properties": { - "startNotification": { - "description": "Whether to receive a notification on the start of media upload.", - "type": "boolean" - }, - "uploadService": { - "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.", - "type": "string" - }, - "mimeTypes": { - "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.", - "items": { - "type": "string" - }, - "type": "array" - }, - "maxSize": { - "format": "int64", - "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.", - "type": "string" - }, - "enabled": { - "description": "Whether upload is enabled.", - "type": "boolean" - }, - "progressNotification": { - "description": "Whether to receive a notification for progress changes of media upload.", - "type": "boolean" - }, - "completeNotification": { - "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.", - "type": "boolean" - }, - "dropzone": { - "description": "Name of the Scotty dropzone to use for the current API.", - "type": "string" - } - }, - "id": "MediaUpload" - }, - "Advice": { - "description": "Generated advice about this change, used for providing more\ninformation about how a change will affect the existing service.", - "type": "object", - "properties": { - "description": { - "description": "Useful description for why this advice was applied and what actions should\nbe taken to mitigate any implied risks.", - "type": "string" - } - }, - "id": "Advice" - }, - "ManagedService": { - "description": "The full representation of a Service that is managed by\nGoogle Service Management.", - "type": "object", - "properties": { - "producerProjectId": { - "description": "ID of the project that produces and owns this service.", - "type": "string" - }, - "serviceName": { - "description": "The name of the service. See the [overview](/service-management/overview)\nfor naming requirements.", - "type": "string" - } - }, - "id": "ManagedService" - }, - "UsageRule": { - "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n usage:\n rules:\n - selector: \"*\"\n allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n usage:\n rules:\n - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n allow_unregistered_calls: true", - "type": "object", - "properties": { - "skipServiceControl": { - "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.", - "type": "boolean" - }, - "allowUnregisteredCalls": { - "description": "True, if the method allows unregistered calls; false otherwise.", - "type": "boolean" - }, - "selector": { - "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "UsageRule" - }, - "TrafficPercentStrategy": { - "description": "Strategy that specifies how clients of Google Service Controller want to\nsend traffic to use different config versions. This is generally\nused by API proxy to split traffic based on your configured precentage for\neach config version.\n\nOne example of how to gradually rollout a new service configuration using\nthis\nstrategy:\nDay 1\n\n Rollout {\n id: \"example.googleapis.com/rollout_20160206\"\n traffic_percent_strategy {\n percentages: {\n \"example.googleapis.com/20160201\": 70.00\n \"example.googleapis.com/20160206\": 30.00\n }\n }\n }\n\nDay 2\n\n Rollout {\n id: \"example.googleapis.com/rollout_20160207\"\n traffic_percent_strategy: {\n percentages: {\n \"example.googleapis.com/20160206\": 100.00\n }\n }\n }", - "type": "object", - "properties": { - "percentages": { - "description": "Maps service configuration IDs to their corresponding traffic percentage.\nKey is the service configuration ID, Value is the traffic percentage\nwhich must be greater than 0.0 and the sum must equal to 100.0.", - "type": "object", - "additionalProperties": { - "format": "double", - "type": "number" - } - } - }, - "id": "TrafficPercentStrategy" - }, - "AuthRequirement": { - "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", - "type": "object", - "properties": { - "providerId": { - "description": "id from authentication provider.\n\nExample:\n\n provider_id: bookstore_auth", - "type": "string" - }, - "audiences": { - "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com", - "type": "string" - } - }, - "id": "AuthRequirement" - }, - "Condition": { - "description": "A condition to be met.", - "type": "object", - "properties": { - "values": { - "description": "The objects of the condition. This is mutually exclusive with 'value'.", - "items": { - "type": "string" - }, - "type": "array" - }, - "iam": { - "description": "Trusted attributes supplied by the IAM system.", - "type": "string", - "enumDescriptions": [ - "Default non-attribute.", - "Either principal or (if present) authority selector.", - "The principal (even if an authority selector is present), which\nmust only be used for attribution, not authorization.", - "An approver (distinct from the requester) that has authorized this\nrequest.\nWhen used with IN, the condition indicates that one of the approvers\nassociated with the request matches the specified principal, or is a\nmember of the specified group. Approvers can only grant additional\naccess, and are thus only used in a strictly positive context\n(e.g. ALLOW/IN or DENY/NOT_IN).", - "What types of justifications have been supplied with this request.\nString values should match enum names from tech.iam.JustificationType,\ne.g. \"MANUAL_STRING\". It is not permitted to grant access based on\nthe *absence* of a justification, so justification conditions can only\nbe used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).\n\nMultiple justifications, e.g., a Buganizer ID and a manually-entered\nreason, are normal and supported." - ], - "enum": [ - "NO_ATTR", - "AUTHORITY", - "ATTRIBUTION", - "APPROVER", - "JUSTIFICATION_TYPE" - ] - }, - "op": { - "enumDescriptions": [ - "Default no-op.", - "DEPRECATED. Use IN instead.", - "DEPRECATED. Use NOT_IN instead.", - "The condition is true if the subject (or any element of it if it is\na set) matches any of the supplied values.", - "The condition is true if the subject (or every element of it if it is\na set) matches none of the supplied values.", - "Subject is discharged" - ], - "enum": [ - "NO_OP", - "EQUALS", - "NOT_EQUALS", - "IN", - "NOT_IN", - "DISCHARGED" - ], - "description": "An operator to apply the subject with.", - "type": "string" - }, - "svc": { - "description": "Trusted attributes discharged by the service.", - "type": "string" - }, - "value": { - "description": "DEPRECATED. Use 'values' instead.", - "type": "string" - }, - "sys": { - "enumDescriptions": [ - "Default non-attribute type", - "Region of the resource", - "Service name", - "Resource name", - "IP address of the caller" - ], - "enum": [ - "NO_ATTR", - "REGION", - "SERVICE", - "NAME", - "IP" - ], - "description": "Trusted attributes supplied by any service that owns resources and uses\nthe IAM system for access control.", - "type": "string" - } - }, - "id": "Condition" - }, - "Documentation": { - "description": "`Documentation` provides the information for describing a service.\n\nExample:\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: \u003e\n The Google Calendar API gives access\n to most calendar features.\n pages:\n - name: Overview\n content: (== include google/foo/overview.md ==)\n - name: Tutorial\n content: (== include google/foo/tutorial.md ==)\n subpages;\n - name: Java\n content: (== include google/foo/tutorial_java.md ==)\n rules:\n - selector: google.calendar.Calendar.Get\n description: \u003e\n ...\n - selector: google.calendar.Calendar.Put\n description: \u003e\n ...\n\u003c/code\u003e\u003c/pre\u003e\nDocumentation is provided in markdown syntax. In addition to\nstandard markdown features, definition lists, tables and fenced\ncode blocks are supported. Section headers can be provided and are\ninterpreted relative to the section nesting of the context where\na documentation fragment is embedded.\n\nDocumentation from the IDL is merged with documentation defined\nvia the config at normalization time, where documentation provided\nby config rules overrides IDL provided.\n\nA number of constructs specific to the API platform are supported\nin documentation text.\n\nIn order to reference a proto element, the following\nnotation can be used:\n\u003cpre\u003e\u003ccode\u003e[fully.qualified.proto.name][]\u003c/code\u003e\u003c/pre\u003e\nTo override the display text used for the link, this can be used:\n\u003cpre\u003e\u003ccode\u003e[display text][fully.qualified.proto.name]\u003c/code\u003e\u003c/pre\u003e\nText can be excluded from doc using the following notation:\n\u003cpre\u003e\u003ccode\u003e(-- internal comment --)\u003c/code\u003e\u003c/pre\u003e\nComments can be made conditional using a visibility label. The below\ntext will be only rendered if the `BETA` label is available:\n\u003cpre\u003e\u003ccode\u003e(--BETA: comment for BETA users --)\u003c/code\u003e\u003c/pre\u003e\nA few directives are available in documentation. Note that\ndirectives must appear on a single line to be properly\nidentified. The `include` directive includes a markdown file from\nan external source:\n\u003cpre\u003e\u003ccode\u003e(== include path/to/file ==)\u003c/code\u003e\u003c/pre\u003e\nThe `resource_for` directive marks a message to be the resource of\na collection in REST view. If it is not specified, tools attempt\nto infer the resource from the operations in a collection:\n\u003cpre\u003e\u003ccode\u003e(== resource_for v1.shelves.books ==)\u003c/code\u003e\u003c/pre\u003e\nThe directive `suppress_warning` does not directly affect documentation\nand is documented together with service config validation.", - "type": "object", - "properties": { - "pages": { - "description": "The top level pages for the documentation set.", - "items": { - "$ref": "Page" - }, - "type": "array" - }, - "summary": { - "description": "A short summary of what the service does. Can only be provided by\nplain text.", - "type": "string" - }, - "documentationRootUrl": { - "description": "The URL to the root of documentation.", - "type": "string" - }, - "overview": { - "description": "Declares a single overview page. For example:\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n overview: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nThis is a shortcut for the following declaration (using pages style):\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n pages:\n - name: Overview\n content: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nNote: you cannot specify both `overview` field and `pages` field.", - "type": "string" - }, - "rules": { - "description": "A list of documentation rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "DocumentationRule" - }, - "type": "array" - } - }, - "id": "Documentation" } }, + "protocol": "rest", "icons": { "x16": "http://www.google.com/images/icons/product/search-16.gif", "x32": "http://www.google.com/images/icons/product/search-32.gif" }, - "protocol": "rest", "canonicalName": "Service Management", "auth": { "oauth2": { "scopes": { + "https://www.googleapis.com/auth/service.management": { + "description": "Manage your Google API service configuration" + }, "https://www.googleapis.com/auth/service.management.readonly": { "description": "View your Google API service configuration" }, @@ -3408,12 +3408,12 @@ }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/service.management": { - "description": "Manage your Google API service configuration" } } } }, - "rootUrl": "https://servicemanagement.googleapis.com/" + "rootUrl": "https://servicemanagement.googleapis.com/", + "ownerDomain": "google.com", + "name": "servicemanagement", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/serviceuser/v1/serviceuser-api.json b/vendor/google.golang.org/api/serviceuser/v1/serviceuser-api.json index 1a16567..cd0fec8 100644 --- a/vendor/google.golang.org/api/serviceuser/v1/serviceuser-api.json +++ b/vendor/google.golang.org/api/serviceuser/v1/serviceuser-api.json @@ -1,53 +1,38 @@ { + "canonicalName": "Service User", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform.read-only": { + "description": "View your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/service.management": { + "description": "Manage your Google API service configuration" + } + } + } + }, + "rootUrl": "https://serviceuser.googleapis.com/", + "ownerDomain": "google.com", "name": "serviceuser", "batchPath": "batch", "title": "Google Service User API", "ownerName": "Google", "resources": { - "services": { - "methods": { - "search": { - "httpMethod": "GET", - "parameterOrder": [], - "response": { - "$ref": "SearchServicesResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "Token identifying which result to start with; returned by a previous list\ncall.", - "type": "string" - }, - "pageSize": { - "format": "int32", - "description": "Requested size of the next page of data.", - "type": "integer", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], - "flatPath": "v1/services:search", - "path": "v1/services:search", - "id": "serviceuser.services.search", - "description": "Search available services.\n\nWhen no filter is specified, returns all accessible services. For\nauthenticated users, also returns all services the calling user has\n\"servicemanagement.services.bind\" permission for." - } - } - }, "projects": { "resources": { "services": { "methods": { "disable": { - "flatPath": "v1/projects/{projectsId}/services/{servicesId}:disable", "path": "v1/{+name}:disable", "id": "serviceuser.projects.services.disable", + "description": "Disable a service so it can no longer be used with a\nproject. This prevents unintended usage that may cause unexpected billing\ncharges or security leaks.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e", "request": { "$ref": "DisableServiceRequest" }, - "description": "Disable a service so it can no longer be used with a\nproject. This prevents unintended usage that may cause unexpected billing\ncharges or security leaks.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e", "httpMethod": "POST", "parameterOrder": [ "name" @@ -55,21 +40,26 @@ "response": { "$ref": "Operation" }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/service.management" - ], "parameters": { "name": { + "location": "path", "description": "Name of the consumer and the service to disable for that consumer.\n\nThe Service User implementation accepts the following forms for consumer:\n- \"project:\u003cproject_id\u003e\"\n\nA valid path would be:\n- /v1/projects/my-project/services/servicemanagement.googleapis.com:disable", "type": "string", "required": true, - "pattern": "^projects/[^/]+/services/[^/]+$", - "location": "path" + "pattern": "^projects/[^/]+/services/[^/]+$" } - } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/service.management" + ], + "flatPath": "v1/projects/{projectsId}/services/{servicesId}:disable" }, "enable": { + "request": { + "$ref": "EnableServiceRequest" + }, + "description": "Enable a service so it can be used with a project.\nSee [Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e", "httpMethod": "POST", "parameterOrder": [ "name" @@ -83,40 +73,33 @@ ], "parameters": { "name": { - "description": "Name of the consumer and the service to enable for that consumer.\n\nA valid path would be:\n- /v1/projects/my-project/services/servicemanagement.googleapis.com:enable", "type": "string", "required": true, "pattern": "^projects/[^/]+/services/[^/]+$", - "location": "path" + "location": "path", + "description": "Name of the consumer and the service to enable for that consumer.\n\nA valid path would be:\n- /v1/projects/my-project/services/servicemanagement.googleapis.com:enable" } }, "flatPath": "v1/projects/{projectsId}/services/{servicesId}:enable", "path": "v1/{+name}:enable", - "id": "serviceuser.projects.services.enable", - "request": { - "$ref": "EnableServiceRequest" - }, - "description": "Enable a service so it can be used with a project.\nSee [Cloud Auth Guide](https://cloud.google.com/docs/authentication) for\nmore information.\n\nOperation\u003cresponse: google.protobuf.Empty\u003e" + "id": "serviceuser.projects.services.enable" }, "list": { - "response": { - "$ref": "ListEnabledServicesResponse" - }, - "parameterOrder": [ - "parent" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" ], - "httpMethod": "GET", "parameters": { "pageToken": { - "location": "query", "description": "Token identifying which result to start with; returned by a previous list\ncall.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { - "type": "integer", "location": "query", "format": "int32", - "description": "Requested size of the next page of data." + "description": "Requested size of the next page of data.", + "type": "integer" }, "parent": { "description": "List enabled services for the specified parent.\n\nAn example valid parent would be:\n- projects/my-project", @@ -126,71 +109,129 @@ "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-platform.read-only" - ], "flatPath": "v1/projects/{projectsId}/services", "id": "serviceuser.projects.services.list", "path": "v1/{+parent}/services", - "description": "List enabled services for the specified consumer." + "description": "List enabled services for the specified consumer.", + "response": { + "$ref": "ListEnabledServicesResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET" } } } } + }, + "services": { + "methods": { + "search": { + "description": "Search available services.\n\nWhen no filter is specified, returns all accessible services. For\nauthenticated users, also returns all services the calling user has\n\"servicemanagement.services.bind\" permission for.", + "response": { + "$ref": "SearchServicesResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-platform.read-only" + ], + "parameters": { + "pageSize": { + "location": "query", + "format": "int32", + "description": "Requested size of the next page of data.", + "type": "integer" + }, + "pageToken": { + "type": "string", + "location": "query", + "description": "Token identifying which result to start with; returned by a previous list\ncall." + } + }, + "flatPath": "v1/services:search", + "id": "serviceuser.services.search", + "path": "v1/services:search" + } + } } }, "parameters": { - "bearer_token": { - "description": "OAuth bearer token.", + "access_token": { + "type": "string", + "location": "query", + "description": "OAuth access token." + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "default": "true", + "type": "boolean", + "location": "query", + "description": "Pretty-print response." + }, "oauth_token": { "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" }, - "upload_protocol": { + "bearer_token": { "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "description": "OAuth bearer token.", "type": "string" }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, "prettyPrint": { "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, - "fields": { + "uploadType": { + "type": "string", "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." }, "callback": { "type": "string", "location": "query", "description": "JSONP" }, + "$.xgafv": { + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ] + }, "alt": { + "description": "Data format for response.", + "default": "json", "enum": [ "json", "media", @@ -202,30 +243,7 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query", - "description": "Data format for response.", - "default": "json" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", "location": "query" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" } }, "version": "v1", @@ -235,18 +253,672 @@ "kind": "discovery#restDescription", "basePath": "", "revision": "20170819", - "id": "serviceuser:v1", "documentationLink": "https://cloud.google.com/service-management/", + "id": "serviceuser:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { - "Step": { + "BackendRule": { + "description": "A backend rule provides configuration for an individual API element.", "type": "object", "properties": { - "description": { - "description": "The short description of the step.", + "selector": { + "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", "type": "string" }, + "deadline": { + "format": "double", + "description": "The number of seconds to wait for a response from a request. The\ndefault depends on the deployment context.", + "type": "number" + }, + "minDeadline": { + "format": "double", + "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.", + "type": "number" + }, + "address": { + "description": "The address of the API backend.", + "type": "string" + } + }, + "id": "BackendRule" + }, + "AuthenticationRule": { + "id": "AuthenticationRule", + "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.", + "type": "object", + "properties": { + "requirements": { + "description": "Requirements for additional authentication providers.", + "items": { + "$ref": "AuthRequirement" + }, + "type": "array" + }, + "allowWithoutCredential": { + "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject.", + "type": "boolean" + }, + "selector": { + "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + }, + "customAuth": { + "description": "Configuration for custom authentication.", + "$ref": "CustomAuthRequirements" + }, + "oauth": { + "$ref": "OAuthRequirements", + "description": "The requirements for OAuth credentials." + } + } + }, + "Api": { + "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.", + "type": "object", + "properties": { + "version": { + "description": "A version string for this interface. If specified, must have the form\n`major-version.minor-version`, as in `1.10`. If the minor version is\nomitted, it defaults to zero. If the entire version field is empty, the\nmajor version is derived from the package name, as outlined below. If the\nfield is not empty, the version in the package name will be verified to be\nconsistent with what is provided here.\n\nThe versioning schema uses [semantic\nversioning](http://semver.org) where the major version number\nindicates a breaking change and the minor version an additive,\nnon-breaking change. Both version numbers are signals to users\nwhat to expect from different versions, and should be carefully\nchosen based on the product plan.\n\nThe major version is also reflected in the package name of the\ninterface, which must end in `v\u003cmajor-version\u003e`, as in\n`google.feature.v1`. For major versions 0 and 1, the suffix can\nbe omitted. Zero major versions must only be used for\nexperimental, non-GA interfaces.\n", + "type": "string" + }, + "mixins": { + "description": "Included interfaces. See Mixin.", + "items": { + "$ref": "Mixin" + }, + "type": "array" + }, + "options": { + "description": "Any metadata attached to the interface.", + "items": { + "$ref": "Option" + }, + "type": "array" + }, + "methods": { + "description": "The methods of this interface, in unspecified order.", + "items": { + "$ref": "Method" + }, + "type": "array" + }, + "name": { + "description": "The fully qualified name of this interface, including package name\nfollowed by the interface's simple name.", + "type": "string" + }, + "syntax": { + "description": "The source syntax of the service.", + "type": "string", + "enumDescriptions": [ + "Syntax `proto2`.", + "Syntax `proto3`." + ], + "enum": [ + "SYNTAX_PROTO2", + "SYNTAX_PROTO3" + ] + }, + "sourceContext": { + "$ref": "SourceContext", + "description": "Source context for the protocol buffer service represented by this\nmessage." + } + }, + "id": "Api" + }, + "MetricRule": { + "description": "Bind API methods to metrics. Binding a method to a metric causes that\nmetric's configured quota behaviors to apply to the method call.", + "type": "object", + "properties": { + "metricCosts": { + "additionalProperties": { + "format": "int64", + "type": "string" + }, + "description": "Metrics to update when the selected methods are called, and the associated\ncost applied to each metric.\n\nThe key of the map is the metric name, and the values are the amount\nincreased for the metric against which the quota limits are defined.\nThe value must not be negative.", + "type": "object" + }, + "selector": { + "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + } + }, + "id": "MetricRule" + }, + "Authentication": { + "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", + "type": "object", + "properties": { + "rules": { + "description": "A list of authentication rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "AuthenticationRule" + }, + "type": "array" + }, + "providers": { + "description": "Defines a set of authentication providers that a service supports.", + "items": { + "$ref": "AuthProvider" + }, + "type": "array" + } + }, + "id": "Authentication" + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "response": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, + "error": { + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + } + }, + "id": "Operation" + }, + "Page": { + "description": "Represents a documentation page. A page can contain subpages to represent\nnested documentation set structure.", + "type": "object", + "properties": { + "subpages": { + "description": "Subpages of this page. The order of subpages specified here will be\nhonored in the generated docset.", + "items": { + "$ref": "Page" + }, + "type": "array" + }, + "name": { + "description": "The name of the page. It will be used as an identity of the page to\ngenerate URI of the page, text of the link to this page in navigation,\netc. The full page name (start from the root page name to this page\nconcatenated with `.`) can be used as reference to the page in your\ndocumentation. For example:\n\u003cpre\u003e\u003ccode\u003epages:\n- name: Tutorial\n content: (== include tutorial.md ==)\n subpages:\n - name: Java\n content: (== include tutorial_java.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nYou can reference `Java` page using Markdown reference link syntax:\n`Java`.", + "type": "string" + }, + "content": { + "description": "The Markdown content of the page. You can use \u003ccode\u003e(== include {path} ==)\u003c/code\u003e\nto include content from a Markdown file.", + "type": "string" + } + }, + "id": "Page" + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array", + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use." + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "AuthProvider": { + "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", + "type": "object", + "properties": { + "jwksUri": { + "type": "string", + "description": "URL of the provider's public key set to validate signature of the JWT. See\n[OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).\nOptional if the key set document:\n - can be retrieved from\n [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html\n of the issuer.\n - can be inferred from the email domain of the issuer (e.g. a Google service account).\n\nExample: https://www.googleapis.com/oauth2/v1/certs" + }, + "audiences": { + "description": "The list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com", + "type": "string" + }, + "authorizationUrl": { + "type": "string", + "description": "Redirect URL if JWT token is required but no present or is expired.\nImplement authorizationUrl of securityDefinitions in OpenAPI spec." + }, + "issuer": { + "description": "Identifies the principal that issued the JWT. See\nhttps://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1\nUsually a URL or an email address.\n\nExample: https://securetoken.google.com\nExample: 1234567-compute@developer.gserviceaccount.com", + "type": "string" + }, + "id": { + "description": "The unique identifier of the auth provider. It will be referred to by\n`AuthRequirement.provider_id`.\n\nExample: \"bookstore_auth\".", + "type": "string" + } + }, + "id": "AuthProvider" + }, + "EnumValue": { + "properties": { + "name": { + "description": "Enum value name.", + "type": "string" + }, + "options": { + "description": "Protocol buffer options.", + "items": { + "$ref": "Option" + }, + "type": "array" + }, + "number": { + "format": "int32", + "description": "Enum value number.", + "type": "integer" + } + }, + "id": "EnumValue", + "description": "Enum value definition.", + "type": "object" + }, + "Service": { + "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", + "type": "object", + "properties": { + "documentation": { + "description": "Additional API documentation.", + "$ref": "Documentation" + }, + "monitoredResources": { + "description": "Defines the monitored resources used by this service. This is required\nby the Service.monitoring and Service.logging configurations.", + "items": { + "$ref": "MonitoredResourceDescriptor" + }, + "type": "array" + }, + "logging": { + "$ref": "Logging", + "description": "Logging configuration." + }, + "context": { + "description": "Context configuration.", + "$ref": "Context" + }, + "enums": { + "description": "A list of all enum types included in this API service. Enums\nreferenced directly or indirectly by the `apis` are automatically\nincluded. Enums which are not referenced but shall be included\nshould be listed here by name. Example:\n\n enums:\n - name: google.someapi.v1.SomeEnum", + "items": { + "$ref": "Enum" + }, + "type": "array" + }, + "id": { + "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.", + "type": "string" + }, + "usage": { + "description": "Configuration controlling usage of this service.", + "$ref": "Usage" + }, + "metrics": { + "description": "Defines the metrics used by this service.", + "items": { + "$ref": "MetricDescriptor" + }, + "type": "array" + }, + "authentication": { + "description": "Auth configuration.", + "$ref": "Authentication" + }, + "experimental": { + "$ref": "Experimental", + "description": "Experimental configuration." + }, + "control": { + "$ref": "Control", + "description": "Configuration for the service control plane." + }, + "configVersion": { + "format": "uint32", + "description": "The semantic version of the service configuration. The config version\naffects the interpretation of the service configuration. For example,\ncertain features are enabled by default for certain config versions.\nThe latest config version is `3`.", + "type": "integer" + }, + "monitoring": { + "$ref": "Monitoring", + "description": "Monitoring configuration." + }, + "producerProjectId": { + "description": "The Google project that owns this service.", + "type": "string" + }, + "systemTypes": { + "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.", + "items": { + "$ref": "Type" + }, + "type": "array" + }, + "visibility": { + "$ref": "Visibility", + "description": "API visibility configuration." + }, + "quota": { + "$ref": "Quota", + "description": "Quota configuration." + }, + "name": { + "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.", + "type": "string" + }, + "customError": { + "$ref": "CustomError", + "description": "Custom error configuration." + }, + "title": { + "description": "The product title for this service.", + "type": "string" + }, + "endpoints": { + "description": "Configuration for network endpoints. If this is empty, then an endpoint\nwith the same name as the service is automatically generated to service all\ndefined APIs.", + "items": { + "$ref": "Endpoint" + }, + "type": "array" + }, + "apis": { + "description": "A list of API interfaces exported by this service. Only the `name` field\nof the google.protobuf.Api needs to be provided by the configuration\nauthor, as the remaining fields will be derived from the IDL during the\nnormalization process. It is an error to specify an API interface here\nwhich cannot be resolved against the associated IDL files.", + "items": { + "$ref": "Api" + }, + "type": "array" + }, + "logs": { + "description": "Defines the logs used by this service.", + "items": { + "$ref": "LogDescriptor" + }, + "type": "array" + }, + "types": { + "description": "A list of all proto message types included in this API service.\nTypes referenced directly or indirectly by the `apis` are\nautomatically included. Messages which are not referenced but\nshall be included, such as types used by the `google.protobuf.Any` type,\nshould be listed here by name. Example:\n\n types:\n - name: google.protobuf.Int32", + "items": { + "$ref": "Type" + }, + "type": "array" + }, + "sourceInfo": { + "description": "Output only. The source information for this configuration if available.", + "$ref": "SourceInfo" + }, + "http": { + "$ref": "Http", + "description": "HTTP configuration." + }, + "systemParameters": { + "$ref": "SystemParameters", + "description": "System parameter configuration." + }, + "backend": { + "$ref": "Backend", + "description": "API backend configuration." + } + }, + "id": "Service" + }, + "CustomHttpPattern": { + "description": "A custom pattern is used for defining custom HTTP verb.", + "type": "object", + "properties": { + "kind": { + "description": "The name of this custom HTTP verb.", + "type": "string" + }, + "path": { + "type": "string", + "description": "The path matched by this custom verb." + } + }, + "id": "CustomHttpPattern" + }, + "OperationMetadata": { + "description": "The metadata associated with a long running operation resource.", + "type": "object", + "properties": { + "startTime": { + "format": "google-datetime", + "description": "The start time of the operation.", + "type": "string" + }, + "steps": { + "description": "Detailed status information for each step. The order is undetermined.", + "items": { + "$ref": "Step" + }, + "type": "array" + }, + "resourceNames": { + "description": "The full name of the resources that this operation is directly\nassociated with.", + "items": { + "type": "string" + }, + "type": "array" + }, + "progressPercentage": { + "format": "int32", + "description": "Percentage of completion of this operation, ranging from 0 to 100.", + "type": "integer" + } + }, + "id": "OperationMetadata" + }, + "PublishedService": { + "description": "The published version of a Service that is managed by\nGoogle Service Management.", + "type": "object", + "properties": { + "service": { + "$ref": "Service", + "description": "The service's published configuration." + }, + "name": { + "description": "The resource name of the service.\n\nA valid name would be:\n- services/serviceuser.googleapis.com", + "type": "string" + } + }, + "id": "PublishedService" + }, + "SystemParameterRule": { + "type": "object", + "properties": { + "parameters": { + "description": "Define parameters. Multiple names may be defined for a parameter.\nFor a given method call, only one of them should be used. If multiple\nnames are used the behavior is implementation-dependent.\nIf none of the specified names are present the behavior is\nparameter-dependent.", + "items": { + "$ref": "SystemParameter" + }, + "type": "array" + }, + "selector": { + "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", + "type": "string" + } + }, + "id": "SystemParameterRule", + "description": "Define a system parameter rule mapping system parameter definitions to\nmethods." + }, + "VisibilityRule": { + "description": "A visibility rule provides visibility configuration for an individual API\nelement.", + "type": "object", + "properties": { + "restriction": { + "description": "A comma-separated list of visibility labels that apply to the `selector`.\nAny of the listed labels can be used to grant the visibility.\n\nIf a rule has multiple labels, removing one of the labels but not all of\nthem can break clients.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: GOOGLE_INTERNAL, TRUSTED_TESTER\n\nRemoving GOOGLE_INTERNAL from this restriction will break clients that\nrely on this method and only had access to it through GOOGLE_INTERNAL.", + "type": "string" + }, + "selector": { + "description": "Selects methods, messages, fields, enums, etc. to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + } + }, + "id": "VisibilityRule" + }, + "HttpRule": { + "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind. The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n SubMessage sub = 2; // `sub.subfield` is url-mapped\n }\n message Message {\n string text = 1; // content of the resource\n }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n http:\n rules:\n - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo` | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n int64 revision = 2; // becomes a parameter\n SubMessage sub = 3; // `sub.subfield` becomes a parameter\n }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A¶m=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n service Messaging {\n rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"message\"\n };\n }\n }\n message UpdateMessageRequest {\n string message_id = 1; // mapped to the URL\n Message message = 2; // mapped to the body\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body. This enables the following alternative definition of\nthe update method:\n\n service Messaging {\n rpc UpdateMessage(Message) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"*\"\n };\n }\n }\n message Message {\n string message_id = 1;\n string text = 2;\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http) = {\n get: \"/v1/messages/{message_id}\"\n additional_bindings {\n get: \"/v1/users/{user_id}/messages/{message_id}\"\n }\n };\n }\n }\n message GetMessageRequest {\n string message_id = 1;\n string user_id = 2;\n }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n request) can be classified into three types:\n (a) Matched in the URL template.\n (b) Covered by body (if body is `*`, everything except (a) fields;\n else everything under the body field)\n (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n Template = \"/\" Segments [ Verb ] ;\n Segments = Segment { \"/\" Segment } ;\n Segment = \"*\" | \"**\" | LITERAL | Variable ;\n Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n FieldPath = IDENT { \".\" IDENT } ;\n Verb = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields.", + "type": "object", + "properties": { + "body": { + "type": "string", + "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type." + }, + "post": { + "description": "Used for creating a resource.", + "type": "string" + }, + "mediaDownload": { + "$ref": "MediaDownload", + "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration." + }, + "restMethodName": { + "type": "string", + "description": "DO NOT USE. This is an experimental field.\n\nOptional. The rest method name is by default derived from the URL\npattern. If specified, this field overrides the default method name.\nExample:\n\n rpc CreateResource(CreateResourceRequest)\n returns (CreateResourceResponse) {\n option (google.api.http) = {\n post: \"/v1/resources\",\n body: \"resource\",\n rest_method_name: \"insert\"\n };\n }\n\nThis method has the automatically derived rest method name\n\"create\", but for backwards compatibility with apiary, it is specified as\ninsert." + }, + "additionalBindings": { + "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).", + "items": { + "$ref": "HttpRule" + }, + "type": "array" + }, + "restCollection": { + "type": "string", + "description": "DO NOT USE. This is an experimental field.\n\nOptional. The REST collection name is by default derived from the URL\npattern. If specified, this field overrides the default collection name.\nExample:\n\n rpc AddressesAggregatedList(AddressesAggregatedListRequest)\n returns (AddressesAggregatedListResponse) {\n option (google.api.http) = {\n get: \"/v1/projects/{project_id}/aggregated/addresses\"\n rest_collection: \"projects.addresses\"\n };\n }\n\nThis method has the automatically derived collection name\n\"projects.aggregated\". Because, semantically, this rpc is actually an\noperation on the \"projects.addresses\" collection, the `rest_collection`\nfield is configured to override the derived collection name." + }, + "responseBody": { + "description": "The name of the response field whose value is mapped to the HTTP body of\nresponse. Other response fields are ignored. This field is optional. When\nnot set, the response message will be used as HTTP body of response.\nNOTE: the referred field must be not a repeated field and must be present\nat the top-level of response message type.", + "type": "string" + }, + "mediaUpload": { + "$ref": "MediaUpload", + "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods." + }, + "selector": { + "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.", + "type": "string" + }, + "custom": { + "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients.", + "$ref": "CustomHttpPattern" + }, + "get": { + "description": "Used for listing and getting information about resources.", + "type": "string" + }, + "patch": { + "type": "string", + "description": "Used for updating a resource." + }, + "authorizations": { + "items": { + "$ref": "AuthorizationRule" + }, + "type": "array", + "description": "Specifies the permission(s) required for an API element for the overall\nAPI request to succeed. It is typically used to mark request message fields\nthat contain the name of the resource and indicates the permissions that\nwill be checked on that resource." + }, + "put": { + "description": "Used for updating a resource.", + "type": "string" + }, + "delete": { + "type": "string", + "description": "Used for deleting a resource." + } + }, + "id": "HttpRule" + }, + "MonitoringDestination": { + "description": "Configuration of a specific monitoring destination (the producer project\nor the consumer project).", + "type": "object", + "properties": { + "monitoredResource": { + "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.", + "type": "string" + }, + "metrics": { + "description": "Names of the metrics to report to this monitoring destination.\nEach name must be defined in Service.metrics section.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "MonitoringDestination" + }, + "Visibility": { + "type": "object", + "properties": { + "rules": { + "description": "A list of visibility rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "VisibilityRule" + }, + "type": "array" + } + }, + "id": "Visibility", + "description": "`Visibility` defines restrictions for the visibility of service\nelements. Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: TRUSTED_TESTER\n - selector: google.calendar.Calendar.Delegate\n restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate." + }, + "SystemParameters": { + "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.", + "type": "object", + "properties": { + "rules": { + "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n system_parameters\n rules:\n - selector: \"*\"\n parameters:\n - name: api_key\n url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n system_parameters\n rules:\n - selector: \"/ListShelves\"\n parameters:\n - name: api_key\n http_header: Api-Key1\n - name: api_key\n http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", + "items": { + "$ref": "SystemParameterRule" + }, + "type": "array" + } + }, + "id": "SystemParameters" + }, + "Quota": { + "id": "Quota", + "description": "Quota configuration helps to achieve fairness and budgeting in service\nusage.\n\nThe quota configuration works this way:\n- The service configuration defines a set of metrics.\n- For API calls, the quota.metric_rules maps methods to metrics with\n corresponding costs.\n- The quota.limits defines limits on the metrics, which will be used for\n quota checks at runtime.\n\nAn example quota configuration in yaml format:\n\n quota:\n\n - name: apiWriteQpsPerProject\n metric: library.googleapis.com/write_calls\n unit: \"1/min/{project}\" # rate limit for consumer projects\n values:\n STANDARD: 10000\n\n\n # The metric rules bind all methods to the read_calls metric,\n # except for the UpdateBook and DeleteBook methods. These two methods\n # are mapped to the write_calls metric, with the UpdateBook method\n # consuming at twice rate as the DeleteBook method.\n metric_rules:\n - selector: \"*\"\n metric_costs:\n library.googleapis.com/read_calls: 1\n - selector: google.example.library.v1.LibraryService.UpdateBook\n metric_costs:\n library.googleapis.com/write_calls: 2\n - selector: google.example.library.v1.LibraryService.DeleteBook\n metric_costs:\n library.googleapis.com/write_calls: 1\n\n Corresponding Metric definition:\n\n metrics:\n - name: library.googleapis.com/read_calls\n display_name: Read requests\n metric_kind: DELTA\n value_type: INT64\n\n - name: library.googleapis.com/write_calls\n display_name: Write requests\n metric_kind: DELTA\n value_type: INT64", + "type": "object", + "properties": { + "limits": { + "description": "List of `QuotaLimit` definitions for the service.", + "items": { + "$ref": "QuotaLimit" + }, + "type": "array" + }, + "metricRules": { + "description": "List of `MetricRule` definitions, each one mapping a selected method to one\nor more metrics.", + "items": { + "$ref": "MetricRule" + }, + "type": "array" + } + } + }, + "Step": { + "properties": { "status": { "enumDescriptions": [ "Unspecifed code.", @@ -266,13 +938,17 @@ ], "description": "The status code.", "type": "string" + }, + "description": { + "type": "string", + "description": "The short description of the step." } }, "id": "Step", - "description": "Represents the status of one operation step." + "description": "Represents the status of one operation step.", + "type": "object" }, "LoggingDestination": { - "description": "Configuration of a specific logging destination (the producer project\nor the consumer project).", "type": "object", "properties": { "logs": { @@ -287,23 +963,24 @@ "type": "string" } }, - "id": "LoggingDestination" + "id": "LoggingDestination", + "description": "Configuration of a specific logging destination (the producer project\nor the consumer project)." }, "Option": { "description": "A protocol buffer option, which can be attached to a message, field,\nenumeration, etc.", "type": "object", "properties": { - "value": { - "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, "name": { "description": "The option's name. For protobuf built-in options (options defined in\ndescriptor.proto), this is the short name. For example, `\"map_entry\"`.\nFor custom options, it should be the fully-qualified name. For example,\n`\"google.api.http\"`.", "type": "string" + }, + "value": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The option's value packed in an Any message. If the value is a primitive,\nthe corresponding wrapper type defined in google/protobuf/wrappers.proto\nshould be used. If the value is an enum, it should be stored as an int32\nvalue using the google.protobuf.Int32Value type.", + "type": "object" } }, "id": "Option" @@ -329,10 +1006,69 @@ }, "id": "Logging" }, - "QuotaLimit": { - "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`.", + "Method": { + "description": "Method represents a method of an API interface.", "type": "object", "properties": { + "name": { + "description": "The simple name of this method.", + "type": "string" + }, + "requestTypeUrl": { + "description": "A URL of the input message type.", + "type": "string" + }, + "requestStreaming": { + "type": "boolean", + "description": "If true, the request is streamed." + }, + "syntax": { + "enum": [ + "SYNTAX_PROTO2", + "SYNTAX_PROTO3" + ], + "description": "The source syntax of this method.", + "type": "string", + "enumDescriptions": [ + "Syntax `proto2`.", + "Syntax `proto3`." + ] + }, + "responseTypeUrl": { + "description": "The URL of the output message type.", + "type": "string" + }, + "options": { + "description": "Any metadata attached to the method.", + "items": { + "$ref": "Option" + }, + "type": "array" + }, + "responseStreaming": { + "description": "If true, the response is streamed.", + "type": "boolean" + } + }, + "id": "Method" + }, + "QuotaLimit": { + "type": "object", + "properties": { + "freeTier": { + "type": "string", + "format": "int64", + "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only." + }, + "duration": { + "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.", + "type": "string" + }, + "defaultLimit": { + "format": "int64", + "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.", + "type": "string" + }, "description": { "type": "string", "description": "Optional. User-visible, extended description for this quota limit.\nShould be used only when more context is needed to understand this limit\nthan provided by the limit's display name (see: `display_name`)." @@ -342,13 +1078,13 @@ "type": "string" }, "displayName": { - "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration.", - "type": "string" + "type": "string", + "description": "User-visible display name for this limit.\nOptional. If not set, the UI will provide a default display name based on\nthe quota configuration. This field can be used to override the default\ndisplay name generated from the configuration." }, "values": { "additionalProperties": { - "format": "int64", - "type": "string" + "type": "string", + "format": "int64" }, "description": "Tiered limit values, currently only STANDARD is supported.", "type": "object" @@ -365,77 +1101,18 @@ "name": { "description": "Name of the quota limit. The name is used to refer to the limit when\noverriding the default limit on per-consumer basis.\n\nFor metric-based quota limits, the name must be provided, and it must be\nunique within the service. The name can only include alphanumeric\ncharacters as well as '-'.\n\nThe maximum length of the limit name is 64 characters.\n\nThe name of a limit is used as a unique identifier for this limit.\nTherefore, once a limit has been put into use, its name should be\nimmutable. You can use the display_name field to provide a user-friendly\nname for the limit. The display name can be evolved over time without\naffecting the identity of the limit.", "type": "string" - }, - "freeTier": { - "format": "int64", - "description": "Free tier value displayed in the Developers Console for this limit.\nThe free tier is the number of tokens that will be subtracted from the\nbilled amount when billing is enabled.\nThis field can only be set on a limit with duration \"1d\", in a billable\ngroup; it is invalid on any other limit. If this field is not set, it\ndefaults to 0, indicating that there is no free tier for this service.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "duration": { - "description": "Duration of this limit in textual notation. Example: \"100s\", \"24h\", \"1d\".\nFor duration longer than a day, only multiple of days is supported. We\nsupport only \"100s\" and \"1d\" for now. Additional support will be added in\nthe future. \"0\" indicates indefinite duration.\n\nUsed by group-based quotas only.", - "type": "string" - }, - "defaultLimit": { - "format": "int64", - "description": "Default number of tokens that can be consumed during the specified\nduration. This is the number of tokens assigned when a client\napplication developer activates the service for his/her project.\n\nSpecifying a value of 0 will block all requests. This can be used if you\nare provisioning quota to selected consumers and blocking others.\nSimilarly, a value of -1 will indicate an unlimited quota. No other\nnegative values are allowed.\n\nUsed by group-based quotas only.", - "type": "string" } }, - "id": "QuotaLimit" - }, - "Method": { - "description": "Method represents a method of an API interface.", - "type": "object", - "properties": { - "responseTypeUrl": { - "description": "The URL of the output message type.", - "type": "string" - }, - "options": { - "description": "Any metadata attached to the method.", - "items": { - "$ref": "Option" - }, - "type": "array" - }, - "responseStreaming": { - "description": "If true, the response is streamed.", - "type": "boolean" - }, - "name": { - "description": "The simple name of this method.", - "type": "string" - }, - "requestTypeUrl": { - "description": "A URL of the input message type.", - "type": "string" - }, - "requestStreaming": { - "description": "If true, the request is streamed.", - "type": "boolean" - }, - "syntax": { - "description": "The source syntax of this method.", - "type": "string", - "enumDescriptions": [ - "Syntax `proto2`.", - "Syntax `proto3`." - ], - "enum": [ - "SYNTAX_PROTO2", - "SYNTAX_PROTO3" - ] - } - }, - "id": "Method" + "id": "QuotaLimit", + "description": "`QuotaLimit` defines a specific limit that applies over a specified duration\nfor a limit type. There can be at most one limit for a duration and limit\ntype combination defined within a `QuotaGroup`." }, "Mixin": { "description": "Declares an API Interface to be included in this interface. The including\ninterface must redeclare all the methods from the included interface, but\ndocumentation and options are inherited as follows:\n\n- If after comment and whitespace stripping, the documentation\n string of the redeclared method is empty, it will be inherited\n from the original method.\n\n- Each annotation belonging to the service config (http,\n visibility) which is not set in the redeclared method will be\n inherited.\n\n- If an http annotation is inherited, the path pattern will be\n modified as follows. Any version prefix will be replaced by the\n version of the including interface plus the root path if\n specified.\n\nExample of a simple mixin:\n\n package google.acl.v1;\n service AccessControl {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v1/{resource=**}:getAcl\";\n }\n }\n\n package google.storage.v2;\n service Storage {\n // rpc GetAcl(GetAclRequest) returns (Acl);\n\n // Get a data record.\n rpc GetData(GetDataRequest) returns (Data) {\n option (google.api.http).get = \"/v2/{resource=**}\";\n }\n }\n\nExample of a mixin configuration:\n\n apis:\n - name: google.storage.v2.Storage\n mixins:\n - name: google.acl.v1.AccessControl\n\nThe mixin construct implies that all methods in `AccessControl` are\nalso declared with same name and request/response types in\n`Storage`. A documentation generator or annotation processor will\nsee the effective `Storage.GetAcl` method after inherting\ndocumentation and annotations as follows:\n\n service Storage {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v2/{resource=**}:getAcl\";\n }\n ...\n }\n\nNote how the version in the path pattern changed from `v1` to `v2`.\n\nIf the `root` field in the mixin is specified, it should be a\nrelative path under which inherited HTTP paths are placed. Example:\n\n apis:\n - name: google.storage.v2.Storage\n mixins:\n - name: google.acl.v1.AccessControl\n root: acls\n\nThis implies the following inherited HTTP annotation:\n\n service Storage {\n // Get the underlying ACL object.\n rpc GetAcl(GetAclRequest) returns (Acl) {\n option (google.api.http).get = \"/v2/acls/{resource=**}:getAcl\";\n }\n ...\n }", "type": "object", "properties": { "name": { - "type": "string", - "description": "The fully qualified name of the interface which is included." + "description": "The fully qualified name of the interface which is included.", + "type": "string" }, "root": { "description": "If non-empty specifies a path under which inherited HTTP paths\nare rooted.", @@ -445,64 +1122,63 @@ "id": "Mixin" }, "CustomError": { + "description": "Customize service error responses. For example, list any service\nspecific protobuf types that can appear in error detail lists of\nerror responses.\n\nExample:\n\n custom_error:\n types:\n - google.foo.v1.CustomError\n - google.foo.v1.AnotherError", "type": "object", "properties": { + "types": { + "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'.", + "items": { + "type": "string" + }, + "type": "array" + }, "rules": { "description": "The list of custom error rules that apply to individual API messages.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "CustomErrorRule" }, "type": "array" - }, - "types": { - "items": { - "type": "string" - }, - "type": "array", - "description": "The list of custom error detail types, e.g. 'google.foo.v1.CustomError'." } }, - "id": "CustomError", - "description": "Customize service error responses. For example, list any service\nspecific protobuf types that can appear in error detail lists of\nerror responses.\n\nExample:\n\n custom_error:\n types:\n - google.foo.v1.CustomError\n - google.foo.v1.AnotherError" + "id": "CustomError" }, "Http": { "description": "Defines the HTTP configuration for an API service. It contains a list of\nHttpRule, each specifying the mapping of an RPC method\nto one or more HTTP REST API methods.", "type": "object", "properties": { - "fullyDecodeReservedExpansion": { - "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.", - "type": "boolean" - }, "rules": { "description": "A list of HTTP configuration rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "HttpRule" }, "type": "array" + }, + "fullyDecodeReservedExpansion": { + "description": "When set to true, URL path parmeters will be fully URI-decoded except in\ncases of single segment matches in reserved expansion, where \"%2F\" will be\nleft encoded.\n\nThe default behavior is to not decode RFC 6570 reserved characters in multi\nsegment matches.", + "type": "boolean" } }, "id": "Http" }, "SourceInfo": { - "description": "Source information used to create a Service Config", - "type": "object", "properties": { "sourceFiles": { + "description": "All files used during config generation.", "items": { "type": "object", "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" } }, - "type": "array", - "description": "All files used during config generation." + "type": "array" } }, - "id": "SourceInfo" + "id": "SourceInfo", + "description": "Source information used to create a Service Config", + "type": "object" }, "Control": { - "id": "Control", "description": "Selects and configures the service controller used by the service. The\nservice controller handles features like abuse, quota, billing, logging,\nmonitoring, etc.", "type": "object", "properties": { @@ -510,12 +1186,17 @@ "description": "The service control environment to use. If empty, no control plane\nfeature (like quota and billing) will be enabled.", "type": "string" } - } + }, + "id": "Control" }, "SystemParameter": { "description": "Define a parameter's name and location. The parameter may be passed as either\nan HTTP header or a URL query parameter, and if both are passed the behavior\nis implementation-dependent.", "type": "object", "properties": { + "urlQueryParameter": { + "description": "Define the URL query parameter name to use for the parameter. It is case\nsensitive.", + "type": "string" + }, "httpHeader": { "description": "Define the HTTP header name to use for the parameter. It is case\ninsensitive.", "type": "string" @@ -523,14 +1204,31 @@ "name": { "description": "Define the name of the parameter, such as \"api_key\" . It is case sensitive.", "type": "string" - }, - "urlQueryParameter": { - "description": "Define the URL query parameter name to use for the parameter. It is case\nsensitive.", - "type": "string" } }, "id": "SystemParameter" }, + "Monitoring": { + "properties": { + "consumerDestinations": { + "items": { + "$ref": "MonitoringDestination" + }, + "type": "array", + "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination." + }, + "producerDestinations": { + "items": { + "$ref": "MonitoringDestination" + }, + "type": "array", + "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination." + } + }, + "id": "Monitoring", + "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n metrics:\n - name: library.googleapis.com/book/returned_count\n metric_kind: DELTA\n value_type: INT64\n labels:\n - key: /customer_id\n - name: library.googleapis.com/book/overdue_count\n metric_kind: GAUGE\n value_type: INT64\n labels:\n - key: /customer_id\n monitoring:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n - library.googleapis.com/book/overdue_count", + "type": "object" + }, "Field": { "description": "A single field of a message type.", "type": "object", @@ -602,11 +1300,13 @@ "description": "The index of the field type in `Type.oneofs`, for message or enumeration\ntypes. The first type has index 1; zero means the type is not in the list.", "type": "integer" }, - "packed": { - "description": "Whether to use alternative packed wire representation.", - "type": "boolean" - }, "cardinality": { + "enumDescriptions": [ + "For fields with unknown cardinality.", + "For optional fields.", + "For required fields. Proto2 syntax only.", + "For repeated fields." + ], "enum": [ "CARDINALITY_UNKNOWN", "CARDINALITY_OPTIONAL", @@ -614,13 +1314,11 @@ "CARDINALITY_REPEATED" ], "description": "The field cardinality.", - "type": "string", - "enumDescriptions": [ - "For fields with unknown cardinality.", - "For optional fields.", - "For required fields. Proto2 syntax only.", - "For repeated fields." - ] + "type": "string" + }, + "packed": { + "type": "boolean", + "description": "Whether to use alternative packed wire representation." }, "defaultValue": { "description": "The string value of the default value of this field. Proto2 syntax only.", @@ -637,50 +1335,31 @@ }, "id": "Field" }, - "Monitoring": { - "description": "Monitoring configuration of the service.\n\nThe example below shows how to configure monitored resources and metrics\nfor monitoring. In the example, a monitored resource and two metrics are\ndefined. The `library.googleapis.com/book/returned_count` metric is sent\nto both producer and consumer projects, whereas the\n`library.googleapis.com/book/overdue_count` metric is only sent to the\nconsumer project.\n\n monitored_resources:\n - type: library.googleapis.com/branch\n labels:\n - key: /city\n description: The city where the library branch is located in.\n - key: /name\n description: The name of the branch.\n metrics:\n - name: library.googleapis.com/book/returned_count\n metric_kind: DELTA\n value_type: INT64\n labels:\n - key: /customer_id\n - name: library.googleapis.com/book/overdue_count\n metric_kind: GAUGE\n value_type: INT64\n labels:\n - key: /customer_id\n monitoring:\n producer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n consumer_destinations:\n - monitored_resource: library.googleapis.com/branch\n metrics:\n - library.googleapis.com/book/returned_count\n - library.googleapis.com/book/overdue_count", - "type": "object", - "properties": { - "consumerDestinations": { - "description": "Monitoring configurations for sending metrics to the consumer project.\nThere can be multiple consumer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none consumer destination.", - "items": { - "$ref": "MonitoringDestination" - }, - "type": "array" - }, - "producerDestinations": { - "description": "Monitoring configurations for sending metrics to the producer project.\nThere can be multiple producer destinations, each one must have a\ndifferent monitored resource type. A metric can be used in at most\none producer destination.", - "items": { - "$ref": "MonitoringDestination" - }, - "type": "array" - } - }, - "id": "Monitoring" - }, "Enum": { "description": "Enum type definition.", "type": "object", "properties": { "enumvalue": { + "description": "Enum value definitions.", "items": { "$ref": "EnumValue" }, - "type": "array", - "description": "Enum value definitions." + "type": "array" }, "name": { "description": "Enum type name.", "type": "string" }, "options": { - "description": "Protocol buffer options.", "items": { "$ref": "Option" }, - "type": "array" + "type": "array", + "description": "Protocol buffer options." }, "syntax": { + "description": "The source syntax.", + "type": "string", "enumDescriptions": [ "Syntax `proto2`.", "Syntax `proto3`." @@ -688,9 +1367,7 @@ "enum": [ "SYNTAX_PROTO2", "SYNTAX_PROTO3" - ], - "description": "The source syntax.", - "type": "string" + ] }, "sourceContext": { "$ref": "SourceContext", @@ -700,7 +1377,23 @@ "id": "Enum" }, "LabelDescriptor": { + "description": "A description of a label.", + "type": "object", "properties": { + "valueType": { + "enum": [ + "STRING", + "BOOL", + "INT64" + ], + "description": "The type of data that can be assigned to the label.", + "type": "string", + "enumDescriptions": [ + "A variable-length string. This is the default.", + "Boolean; true or false.", + "A 64-bit signed integer." + ] + }, "key": { "description": "The label key.", "type": "string" @@ -708,25 +1401,9 @@ "description": { "description": "A human-readable description for the label.", "type": "string" - }, - "valueType": { - "description": "The type of data that can be assigned to the label.", - "type": "string", - "enumDescriptions": [ - "A variable-length string. This is the default.", - "Boolean; true or false.", - "A 64-bit signed integer." - ], - "enum": [ - "STRING", - "BOOL", - "INT64" - ] } }, - "id": "LabelDescriptor", - "description": "A description of a label.", - "type": "object" + "id": "LabelDescriptor" }, "EnableServiceRequest": { "description": "Request message for EnableService method.", @@ -738,29 +1415,6 @@ "description": "A protocol buffer message type.", "type": "object", "properties": { - "oneofs": { - "items": { - "type": "string" - }, - "type": "array", - "description": "The list of types appearing in `oneof` definitions in this type." - }, - "sourceContext": { - "description": "The source context.", - "$ref": "SourceContext" - }, - "syntax": { - "enumDescriptions": [ - "Syntax `proto2`.", - "Syntax `proto3`." - ], - "enum": [ - "SYNTAX_PROTO2", - "SYNTAX_PROTO3" - ], - "description": "The source syntax.", - "type": "string" - }, "options": { "description": "The protocol buffer options.", "items": { @@ -769,20 +1423,44 @@ "type": "array" }, "fields": { - "description": "The list of fields.", "items": { "$ref": "Field" }, - "type": "array" + "type": "array", + "description": "The list of fields." }, "name": { "description": "The fully qualified message name.", "type": "string" + }, + "oneofs": { + "description": "The list of types appearing in `oneof` definitions in this type.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceContext": { + "$ref": "SourceContext", + "description": "The source context." + }, + "syntax": { + "enum": [ + "SYNTAX_PROTO2", + "SYNTAX_PROTO3" + ], + "description": "The source syntax.", + "type": "string", + "enumDescriptions": [ + "Syntax `proto2`.", + "Syntax `proto3`." + ] } }, "id": "Type" }, "Experimental": { + "id": "Experimental", "description": "Experimental service configuration. These configuration options can\nonly be used by whitelisted users.", "type": "object", "properties": { @@ -790,8 +1468,7 @@ "$ref": "AuthorizationConfig", "description": "Authorization configuration." } - }, - "id": "Experimental" + } }, "Backend": { "description": "`Backend` defines the backend configuration for a service.", @@ -807,47 +1484,40 @@ }, "id": "Backend" }, - "AuthorizationConfig": { + "DocumentationRule": { + "description": "A documentation rule provides information about individual API elements.", "type": "object", - "properties": { - "provider": { - "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com.", - "type": "string" - } - }, - "id": "AuthorizationConfig", - "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n experimental:\n authorization:\n provider: firebaserules.googleapis.com" - }, - "DocumentationRule": { "properties": { "deprecationDescription": { - "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`.", - "type": "string" + "type": "string", + "description": "Deprecation description of the selected element(s). It can be provided if an\nelement is marked as `deprecated`." }, "selector": { "description": "The selector is a comma-separated list of patterns. Each pattern is a\nqualified name of the element which may end in \"*\", indicating a wildcard.\nWildcards are only allowed at the end and for a whole component of the\nqualified name, i.e. \"foo.*\" is ok, but not \"foo.b*\" or \"foo.*.bar\". To\nspecify a default for all applicable elements, the whole pattern \"*\"\nis used.", "type": "string" }, "description": { - "type": "string", - "description": "Description of the selected API(s)." + "description": "Description of the selected API(s).", + "type": "string" } }, - "id": "DocumentationRule", - "description": "A documentation rule provides information about individual API elements.", - "type": "object" + "id": "DocumentationRule" + }, + "AuthorizationConfig": { + "description": "Configuration of authorization.\n\nThis section determines the authorization provider, if unspecified, then no\nauthorization check will be done.\n\nExample:\n\n experimental:\n authorization:\n provider: firebaserules.googleapis.com", + "type": "object", + "properties": { + "provider": { + "type": "string", + "description": "The name of the authorization provider, such as\nfirebaserules.googleapis.com." + } + }, + "id": "AuthorizationConfig" }, "ContextRule": { "description": "A context rule provides information about the context for an individual API\nelement.", "type": "object", "properties": { - "provided": { - "items": { - "type": "string" - }, - "type": "array", - "description": "A list of full type names of provided contexts." - }, "requested": { "description": "A list of full type names of requested contexts.", "items": { @@ -858,6 +1528,13 @@ "selector": { "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", "type": "string" + }, + "provided": { + "description": "A list of full type names of provided contexts.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "ContextRule" @@ -877,14 +1554,6 @@ "description": "Defines a metric type and its schema. Once a metric descriptor is created,\ndeleting or altering it stops data collection and makes the metric type's\nexisting data unusable.", "type": "object", "properties": { - "description": { - "type": "string", - "description": "A detailed description of the metric, which can be used in documentation." - }, - "displayName": { - "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".", - "type": "string" - }, "unit": { "description": "The unit in which the metric value is reported. It is only applicable\nif the `value_type` is `INT64`, `DOUBLE`, or `DISTRIBUTION`. The\nsupported units are a subset of [The Unified Code for Units of\nMeasure](http://unitsofmeasure.org/ucum.html) standard:\n\n**Basic units (UNIT)**\n\n* `bit` bit\n* `By` byte\n* `s` second\n* `min` minute\n* `h` hour\n* `d` day\n\n**Prefixes (PREFIX)**\n\n* `k` kilo (10**3)\n* `M` mega (10**6)\n* `G` giga (10**9)\n* `T` tera (10**12)\n* `P` peta (10**15)\n* `E` exa (10**18)\n* `Z` zetta (10**21)\n* `Y` yotta (10**24)\n* `m` milli (10**-3)\n* `u` micro (10**-6)\n* `n` nano (10**-9)\n* `p` pico (10**-12)\n* `f` femto (10**-15)\n* `a` atto (10**-18)\n* `z` zepto (10**-21)\n* `y` yocto (10**-24)\n* `Ki` kibi (2**10)\n* `Mi` mebi (2**20)\n* `Gi` gibi (2**30)\n* `Ti` tebi (2**40)\n\n**Grammar**\n\nThe grammar includes the dimensionless unit `1`, such as `1/s`.\n\nThe grammar also includes these connectors:\n\n* `/` division (as an infix operator, e.g. `1/s`).\n* `.` multiplication (as an infix operator, e.g. `GBy.d`)\n\nThe grammar for a unit is as follows:\n\n Expression = Component { \".\" Component } { \"/\" Component } ;\n\n Component = [ PREFIX ] UNIT [ Annotation ]\n | Annotation\n | \"1\"\n ;\n\n Annotation = \"{\" NAME \"}\" ;\n\nNotes:\n\n* `Annotation` is just a comment if it follows a `UNIT` and is\n equivalent to `1` if it is used alone. For examples,\n `{requests}/s == 1/s`, `By{transmitted}/s == By/s`.\n* `NAME` is a sequence of non-blank printable ASCII characters not\n containing '{' or '}'.", "type": "string" @@ -901,8 +1570,8 @@ "type": "string" }, "type": { - "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded. All user-defined custom metric types have the DNS name\n`custom.googleapis.com`. Metric types should use a natural hierarchical\ngrouping. For example:\n\n \"custom.googleapis.com/invoice/paid/amount\"\n \"appengine.googleapis.com/http/server/response_latencies\"", - "type": "string" + "type": "string", + "description": "The metric type, including its DNS name prefix. The type is not\nURL-encoded. All user-defined custom metric types have the DNS name\n`custom.googleapis.com`. Metric types should use a natural hierarchical\ngrouping. For example:\n\n \"custom.googleapis.com/invoice/paid/amount\"\n \"appengine.googleapis.com/http/server/response_latencies\"" }, "valueType": { "description": "Whether the measurement is an integer, a floating-point number, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.", @@ -927,7 +1596,6 @@ ] }, "metricKind": { - "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported.", "type": "string", "enumDescriptions": [ "Do not use this default value.", @@ -940,40 +1608,42 @@ "GAUGE", "DELTA", "CUMULATIVE" - ] + ], + "description": "Whether the metric records instantaneous values, changes to a value, etc.\nSome combinations of `metric_kind` and `value_type` might not be supported." + }, + "displayName": { + "description": "A concise name for the metric, which can be displayed in user interfaces.\nUse sentence case without an ending period, for example \"Request count\".", + "type": "string" + }, + "description": { + "type": "string", + "description": "A detailed description of the metric, which can be used in documentation." } }, "id": "MetricDescriptor" }, "ListEnabledServicesResponse": { - "description": "Response message for `ListEnabledServices` method.", - "type": "object", "properties": { "nextPageToken": { "description": "Token that can be passed to `ListEnabledServices` to resume a paginated\nquery.", "type": "string" }, "services": { - "description": "Services enabled for the specified parent.", "items": { "$ref": "PublishedService" }, - "type": "array" + "type": "array", + "description": "Services enabled for the specified parent." } }, - "id": "ListEnabledServicesResponse" + "id": "ListEnabledServicesResponse", + "description": "Response message for `ListEnabledServices` method.", + "type": "object" }, "Endpoint": { "description": "`Endpoint` describes a network endpoint that serves a set of APIs.\nA service may expose any number of endpoints, and all endpoints share the\nsame service configuration, such as quota configuration and monitoring\nconfiguration.\n\nExample service configuration:\n\n name: library-example.googleapis.com\n endpoints:\n # Below entry makes 'google.example.library.v1.Library'\n # API be served from endpoint address library-example.googleapis.com.\n # It also allows HTTP OPTIONS calls to be passed to the backend, for\n # it to decide whether the subsequent cross-origin request is\n # allowed to proceed.\n - name: library-example.googleapis.com\n allow_cors: true", "type": "object", "properties": { - "features": { - "description": "The list of features enabled on this endpoint.", - "items": { - "type": "string" - }, - "type": "array" - }, "apis": { "description": "The list of APIs served by this endpoint.\n\nIf no APIs are specified this translates to \"all APIs\" exported by the\nservice, as defined in the top-level service configuration.", "items": { @@ -982,8 +1652,8 @@ "type": "array" }, "allowCors": { - "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed.", - "type": "boolean" + "type": "boolean", + "description": "Allowing\n[CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing), aka\ncross-domain traffic, would allow the backends served from this endpoint to\nreceive and respond to HTTP OPTIONS requests. The response will be used by\nthe browser to determine whether the subsequent cross-origin request is\nallowed to proceed." }, "aliases": { "description": "DEPRECATED: This field is no longer supported. Instead of using aliases,\nplease specify multiple google.api.Endpoint for each of the intented\nalias.\n\nAdditional names that this endpoint will be hosted on.", @@ -999,11 +1669,19 @@ "name": { "description": "The canonical name of this endpoint.", "type": "string" + }, + "features": { + "description": "The list of features enabled on this endpoint.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "Endpoint" }, "OAuthRequirements": { + "id": "OAuthRequirements", "description": "OAuth scopes are a way to define data and permissions on data. For example,\nthere are scopes defined for \"Read-only access to Google Calendar\" and\n\"Access to Cloud Platform\". Users can consent to a scope for an application,\ngiving it permission to access that data on their behalf.\n\nOAuth scope specifications should be fairly coarse grained; a user will need\nto see and understand the text description of what your scope means.\n\nIn most cases: use one or at most two OAuth scopes for an entire family of\nproducts. If your product has multiple APIs, you should probably be sharing\nthe OAuth scope across all of those APIs.\n\nWhen you need finer grained OAuth consent screens: talk with your product\nmanagement about how developers will use them in practice.\n\nPlease note that even though each of the canonical scopes is enough for a\nrequest to be accepted and passed to the backend, a request can still fail\ndue to the backend requiring additional scopes or permissions.", "type": "object", "properties": { @@ -1011,37 +1689,34 @@ "description": "The list of publicly documented OAuth scopes that are allowed access. An\nOAuth token containing any of these scopes will be accepted.\n\nExample:\n\n canonical_scopes: https://www.googleapis.com/auth/calendar,\n https://www.googleapis.com/auth/calendar.read", "type": "string" } - }, - "id": "OAuthRequirements" + } }, "Usage": { "type": "object", "properties": { - "requirements": { - "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form \u003cservice.name\u003e/\u003crequirement-id\u003e;\nfor example 'serviceusage.googleapis.com/billing-enabled'.", - "items": { - "type": "string" - }, - "type": "array" - }, "producerNotificationChannel": { "description": "The full resource name of a channel used for sending notifications to the\nservice producer.\n\nGoogle Service Management currently only supports\n[Google Cloud Pub/Sub](https://cloud.google.com/pubsub) as a notification\nchannel. To use Google Cloud Pub/Sub as the channel, this must be the name\nof a Cloud Pub/Sub topic that uses the Cloud Pub/Sub topic name format\ndocumented in https://cloud.google.com/pubsub/docs/overview.", "type": "string" }, "rules": { + "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", "items": { "$ref": "UsageRule" }, + "type": "array" + }, + "requirements": { + "items": { + "type": "string" + }, "type": "array", - "description": "A list of usage rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order." + "description": "Requirements that must be satisfied before a consumer project can use the\nservice. Each requirement is of the form \u003cservice.name\u003e/\u003crequirement-id\u003e;\nfor example 'serviceusage.googleapis.com/billing-enabled'." } }, "id": "Usage", "description": "Configuration controlling usage of a service." }, "Context": { - "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n context:\n rules:\n - selector: \"*\"\n requested:\n - google.rpc.context.ProjectContext\n - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.", - "type": "object", "properties": { "rules": { "description": "A list of RPC context rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", @@ -1051,9 +1726,12 @@ "type": "array" } }, - "id": "Context" + "id": "Context", + "description": "`Context` defines which contexts an API requests.\n\nExample:\n\n context:\n rules:\n - selector: \"*\"\n requested:\n - google.rpc.context.ProjectContext\n - google.rpc.context.OriginContext\n\nThe above specifies that all methods in the API request\n`google.rpc.context.ProjectContext` and\n`google.rpc.context.OriginContext`.\n\nAvailable context types are defined in package\n`google.rpc.context`.", + "type": "object" }, "LogDescriptor": { + "description": "A description of a log type. Example in YAML format:\n\n - name: library.googleapis.com/activity_history\n description: The history of borrowing and returning library items.\n display_name: Activity\n labels:\n - key: /customer_id\n description: Identifier of a library customer", "type": "object", "properties": { "labels": { @@ -1068,48 +1746,18 @@ "type": "string" }, "displayName": { - "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise.", - "type": "string" + "type": "string", + "description": "The human-readable name for this log. This information appears on\nthe user interface and should be concise." }, "description": { "description": "A human-readable description of this log. This information appears in\nthe documentation and can contain details.", "type": "string" } }, - "id": "LogDescriptor", - "description": "A description of a log type. Example in YAML format:\n\n - name: library.googleapis.com/activity_history\n description: The history of borrowing and returning library items.\n display_name: Activity\n labels:\n - key: /customer_id\n description: Identifier of a library customer" - }, - "MonitoredResourceDescriptor": { - "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels. For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.", - "type": "object", - "properties": { - "labels": { - "items": { - "$ref": "LabelDescriptor" - }, - "type": "array", - "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`." - }, - "name": { - "type": "string", - "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type. APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`." - }, - "description": { - "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.", - "type": "string" - }, - "displayName": { - "type": "string", - "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`." - }, - "type": { - "type": "string", - "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters." - } - }, - "id": "MonitoredResourceDescriptor" + "id": "LogDescriptor" }, "CustomErrorRule": { + "description": "A custom error rule.", "type": "object", "properties": { "isErrorType": { @@ -1121,59 +1769,89 @@ "type": "string" } }, - "id": "CustomErrorRule", - "description": "A custom error rule." + "id": "CustomErrorRule" }, - "CustomAuthRequirements": { - "description": "Configuration for a custom authentication provider.", + "MonitoredResourceDescriptor": { + "description": "An object that describes the schema of a MonitoredResource object using a\ntype name and a set of labels. For example, the monitored resource\ndescriptor for Google Compute Engine VM instances has a type of\n`\"gce_instance\"` and specifies the use of the labels `\"instance_id\"` and\n`\"zone\"` to identify particular VM instances.\n\nDifferent APIs can support different monitored resource types. APIs generally\nprovide a `list` method that returns the monitored resource descriptors used\nby the API.", "type": "object", "properties": { - "provider": { - "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).", + "description": { + "description": "Optional. A detailed description of the monitored resource type that might\nbe used in documentation.", "type": "string" + }, + "displayName": { + "description": "Optional. A concise name for the monitored resource type that might be\ndisplayed in user interfaces. It should be a Title Cased Noun Phrase,\nwithout any article or other determiners. For example,\n`\"Google Cloud SQL Database\"`.", + "type": "string" + }, + "type": { + "type": "string", + "description": "Required. The monitored resource type. For example, the type\n`\"cloudsql_database\"` represents databases in Google Cloud SQL.\nThe maximum length of this value is 256 characters." + }, + "labels": { + "items": { + "$ref": "LabelDescriptor" + }, + "type": "array", + "description": "Required. A set of labels used to describe instances of this monitored\nresource type. For example, an individual Google Cloud SQL database is\nidentified by values for the labels `\"database_id\"` and `\"zone\"`." + }, + "name": { + "type": "string", + "description": "Optional. The resource name of the monitored resource descriptor:\n`\"projects/{project_id}/monitoredResourceDescriptors/{type}\"` where\n{type} is the value of the `type` field in this object and\n{project_id} is a project ID that provides API-specific context for\naccessing the type. APIs that do not use project information can use the\nresource name format `\"monitoredResourceDescriptors/{type}\"`." } }, - "id": "CustomAuthRequirements" + "id": "MonitoredResourceDescriptor" }, "MediaDownload": { - "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.", "type": "object", "properties": { "enabled": { - "description": "Whether download is enabled.", - "type": "boolean" + "type": "boolean", + "description": "Whether download is enabled." }, "downloadService": { "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the download service if one is used for download.", "type": "string" }, "completeNotification": { - "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend.", - "type": "boolean" - }, - "dropzone": { - "description": "Name of the Scotty dropzone to use for the current API.", - "type": "string" + "type": "boolean", + "description": "A boolean that determines whether a notification for the completion of a\ndownload should be sent to the backend." }, "maxDirectDownloadSize": { "format": "int64", "description": "Optional maximum acceptable size for direct download.\nThe size is specified in bytes.", "type": "string" }, + "dropzone": { + "description": "Name of the Scotty dropzone to use for the current API.", + "type": "string" + }, "useDirectDownload": { "description": "A boolean that determines if direct download from ESF should be used for\ndownload of this media.", "type": "boolean" } }, - "id": "MediaDownload" + "id": "MediaDownload", + "description": "Defines the Media configuration for a service in case of a download.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods." + }, + "CustomAuthRequirements": { + "properties": { + "provider": { + "description": "A configuration string containing connection information for the\nauthentication provider, typically formatted as a SmartService string\n(go/smartservice).", + "type": "string" + } + }, + "id": "CustomAuthRequirements", + "description": "Configuration for a custom authentication provider.", + "type": "object" }, "DisableServiceRequest": { + "id": "DisableServiceRequest", "description": "Request message for DisableService method.", "type": "object", - "properties": {}, - "id": "DisableServiceRequest" + "properties": {} }, "AuthorizationRule": { + "description": "Authorization rule for API services.\n\nIt specifies the permission(s) required for an API element for the overall\nAPI request to succeed. It is typically used to mark request message fields\nthat contain the name of the resource and indicates the permissions that\nwill be checked on that resource.\n\nFor example:\n\n package google.storage.v1;\n\n message CopyObjectRequest {\n string source = 1 [\n (google.api.authz).permissions = \"storage.objects.get\"];\n\n string destination = 2 [\n (google.api.authz).permissions =\n \"storage.objects.create,storage.objects.update\"];\n }", "type": "object", "properties": { "selector": { @@ -1185,16 +1863,15 @@ "type": "string" } }, - "id": "AuthorizationRule", - "description": "Authorization rule for API services.\n\nIt specifies the permission(s) required for an API element for the overall\nAPI request to succeed. It is typically used to mark request message fields\nthat contain the name of the resource and indicates the permissions that\nwill be checked on that resource.\n\nFor example:\n\n package google.storage.v1;\n\n message CopyObjectRequest {\n string source = 1 [\n (google.api.authz).permissions = \"storage.objects.get\"];\n\n string destination = 2 [\n (google.api.authz).permissions =\n \"storage.objects.create,storage.objects.update\"];\n }" + "id": "AuthorizationRule" }, "SearchServicesResponse": { "description": "Response message for SearchServices method.", "type": "object", "properties": { "nextPageToken": { - "description": "Token that can be passed to `ListAvailableServices` to resume a paginated\nquery.", - "type": "string" + "type": "string", + "description": "Token that can be passed to `ListAvailableServices` to resume a paginated\nquery." }, "services": { "description": "Services available publicly or available to the authenticated caller.", @@ -1210,28 +1887,28 @@ "description": "Defines the Media configuration for a service in case of an upload.\nUse this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead [][google.bytestream.RestByteStream] as an API to\nyour configuration for Bytestream methods.", "type": "object", "properties": { - "mimeTypes": { - "items": { - "type": "string" - }, - "type": "array", - "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns." - }, "maxSize": { "format": "int64", "description": "Optional maximum acceptable size for an upload.\nThe size is specified in bytes.", "type": "string" }, - "enabled": { - "description": "Whether upload is enabled.", + "mimeTypes": { + "description": "An array of mimetype patterns. Esf will only accept uploads that match one\nof the given patterns.", + "items": { + "type": "string" + }, + "type": "array" + }, + "completeNotification": { + "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.", "type": "boolean" }, "progressNotification": { "description": "Whether to receive a notification for progress changes of media upload.", "type": "boolean" }, - "completeNotification": { - "description": "A boolean that determines whether a notification for the completion of an\nupload should be sent to the backend. These notifications will not be seen\nby the client and will not consume quota.", + "enabled": { + "description": "Whether upload is enabled.", "type": "boolean" }, "dropzone": { @@ -1239,8 +1916,8 @@ "type": "string" }, "startNotification": { - "description": "Whether to receive a notification on the start of media upload.", - "type": "boolean" + "type": "boolean", + "description": "Whether to receive a notification on the start of media upload." }, "uploadService": { "description": "DO NOT USE FIELDS BELOW THIS LINE UNTIL THIS WARNING IS REMOVED.\n\nSpecify name of the upload service if one is used for upload.", @@ -1253,10 +1930,6 @@ "description": "Usage configuration rules for the service.\n\nNOTE: Under development.\n\n\nUse this rule to configure unregistered calls for the service. Unregistered\ncalls are calls that do not contain consumer project identity.\n(Example: calls that do not contain an API key).\nBy default, API methods do not allow unregistered calls, and each method call\nmust be identified by a consumer project identity. Use this rule to\nallow/disallow unregistered calls.\n\nExample of an API that wants to allow unregistered calls for entire service.\n\n usage:\n rules:\n - selector: \"*\"\n allow_unregistered_calls: true\n\nExample of a method that wants to allow unregistered calls.\n\n usage:\n rules:\n - selector: \"google.example.library.v1.LibraryService.CreateBook\"\n allow_unregistered_calls: true", "type": "object", "properties": { - "allowUnregisteredCalls": { - "type": "boolean", - "description": "True, if the method allows unregistered calls; false otherwise." - }, "selector": { "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", "type": "string" @@ -1264,6 +1937,10 @@ "skipServiceControl": { "description": "True, if the method should skip service control. If so, no control plane\nfeature (like quota and billing) will be enabled.", "type": "boolean" + }, + "allowUnregisteredCalls": { + "description": "True, if the method allows unregistered calls; false otherwise.", + "type": "boolean" } }, "id": "UsageRule" @@ -1272,13 +1949,13 @@ "description": "User-defined authentication requirements, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", "type": "object", "properties": { - "providerId": { - "type": "string", - "description": "id from authentication provider.\n\nExample:\n\n provider_id: bookstore_auth" - }, "audiences": { "type": "string", "description": "NOTE: This will be deprecated soon, once AuthProvider.audiences is\nimplemented and accepted in all the runtime components.\n\nThe list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com" + }, + "providerId": { + "description": "id from authentication provider.\n\nExample:\n\n provider_id: bookstore_auth", + "type": "string" } }, "id": "AuthRequirement" @@ -1292,8 +1969,8 @@ "type": "string" }, "documentationRootUrl": { - "type": "string", - "description": "The URL to the root of documentation." + "description": "The URL to the root of documentation.", + "type": "string" }, "overview": { "description": "Declares a single overview page. For example:\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n overview: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nThis is a shortcut for the following declaration (using pages style):\n\u003cpre\u003e\u003ccode\u003edocumentation:\n summary: ...\n pages:\n - name: Overview\n content: (== include overview.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nNote: you cannot specify both `overview` field and `pages` field.", @@ -1315,688 +1992,11 @@ } }, "id": "Documentation" - }, - "AuthenticationRule": { - "description": "Authentication rules for the service.\n\nBy default, if a method has any authentication requirements, every request\nmust include a valid credential matching one of the requirements.\nIt's an error to include more than one kind of credential in a single\nrequest.\n\nIf a method doesn't have any auth requirements, request credentials will be\nignored.", - "type": "object", - "properties": { - "requirements": { - "description": "Requirements for additional authentication providers.", - "items": { - "$ref": "AuthRequirement" - }, - "type": "array" - }, - "allowWithoutCredential": { - "type": "boolean", - "description": "Whether to allow requests without a credential. The credential can be\nan OAuth token, Google cookies (first-party auth) or EndUserCreds.\n\nFor requests without credentials, if the service control environment is\nspecified, each incoming request **must** be associated with a service\nconsumer. This can be done by passing an API key that belongs to a consumer\nproject." - }, - "selector": { - "type": "string", - "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details." - }, - "customAuth": { - "$ref": "CustomAuthRequirements", - "description": "Configuration for custom authentication." - }, - "oauth": { - "$ref": "OAuthRequirements", - "description": "The requirements for OAuth credentials." - } - }, - "id": "AuthenticationRule" - }, - "BackendRule": { - "description": "A backend rule provides configuration for an individual API element.", - "type": "object", - "properties": { - "deadline": { - "type": "number", - "format": "double", - "description": "The number of seconds to wait for a response from a request. The\ndefault depends on the deployment context." - }, - "minDeadline": { - "format": "double", - "description": "Minimum deadline in seconds needed for this method. Calls having deadline\nvalue lower than this will be rejected.", - "type": "number" - }, - "address": { - "description": "The address of the API backend.", - "type": "string" - }, - "selector": { - "type": "string", - "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details." - } - }, - "id": "BackendRule" - }, - "Api": { - "description": "Api is a light-weight descriptor for an API Interface.\n\nInterfaces are also described as \"protocol buffer services\" in some contexts,\nsuch as by the \"service\" keyword in a .proto file, but they are different\nfrom API Services, which represent a concrete implementation of an interface\nas opposed to simply a description of methods and bindings. They are also\nsometimes simply referred to as \"APIs\" in other contexts, such as the name of\nthis message itself. See https://cloud.google.com/apis/design/glossary for\ndetailed terminology.", - "type": "object", - "properties": { - "methods": { - "description": "The methods of this interface, in unspecified order.", - "items": { - "$ref": "Method" - }, - "type": "array" - }, - "name": { - "description": "The fully qualified name of this interface, including package name\nfollowed by the interface's simple name.", - "type": "string" - }, - "syntax": { - "type": "string", - "enumDescriptions": [ - "Syntax `proto2`.", - "Syntax `proto3`." - ], - "enum": [ - "SYNTAX_PROTO2", - "SYNTAX_PROTO3" - ], - "description": "The source syntax of the service." - }, - "sourceContext": { - "description": "Source context for the protocol buffer service represented by this\nmessage.", - "$ref": "SourceContext" - }, - "version": { - "description": "A version string for this interface. If specified, must have the form\n`major-version.minor-version`, as in `1.10`. If the minor version is\nomitted, it defaults to zero. If the entire version field is empty, the\nmajor version is derived from the package name, as outlined below. If the\nfield is not empty, the version in the package name will be verified to be\nconsistent with what is provided here.\n\nThe versioning schema uses [semantic\nversioning](http://semver.org) where the major version number\nindicates a breaking change and the minor version an additive,\nnon-breaking change. Both version numbers are signals to users\nwhat to expect from different versions, and should be carefully\nchosen based on the product plan.\n\nThe major version is also reflected in the package name of the\ninterface, which must end in `v\u003cmajor-version\u003e`, as in\n`google.feature.v1`. For major versions 0 and 1, the suffix can\nbe omitted. Zero major versions must only be used for\nexperimental, non-GA interfaces.\n", - "type": "string" - }, - "mixins": { - "items": { - "$ref": "Mixin" - }, - "type": "array", - "description": "Included interfaces. See Mixin." - }, - "options": { - "description": "Any metadata attached to the interface.", - "items": { - "$ref": "Option" - }, - "type": "array" - } - }, - "id": "Api" - }, - "MetricRule": { - "type": "object", - "properties": { - "metricCosts": { - "additionalProperties": { - "format": "int64", - "type": "string" - }, - "description": "Metrics to update when the selected methods are called, and the associated\ncost applied to each metric.\n\nThe key of the map is the metric name, and the values are the amount\nincreased for the metric against which the quota limits are defined.\nThe value must not be negative.", - "type": "object" - }, - "selector": { - "description": "Selects the methods to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "MetricRule", - "description": "Bind API methods to metrics. Binding a method to a metric causes that\nmetric's configured quota behaviors to apply to the method call." - }, - "Authentication": { - "properties": { - "providers": { - "description": "Defines a set of authentication providers that a service supports.", - "items": { - "$ref": "AuthProvider" - }, - "type": "array" - }, - "rules": { - "description": "A list of authentication rules that apply to individual API methods.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "AuthenticationRule" - }, - "type": "array" - } - }, - "id": "Authentication", - "description": "`Authentication` defines the authentication configuration for an API.\n\nExample for an API targeted for external use:\n\n name: calendar.googleapis.com\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", - "type": "object" - }, - "Operation": { - "id": "Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object", - "properties": { - "metadata": { - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object", - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - } - }, - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object" - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" - }, - "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." - } - } - }, - "Page": { - "description": "Represents a documentation page. A page can contain subpages to represent\nnested documentation set structure.", - "type": "object", - "properties": { - "name": { - "description": "The name of the page. It will be used as an identity of the page to\ngenerate URI of the page, text of the link to this page in navigation,\netc. The full page name (start from the root page name to this page\nconcatenated with `.`) can be used as reference to the page in your\ndocumentation. For example:\n\u003cpre\u003e\u003ccode\u003epages:\n- name: Tutorial\n content: (== include tutorial.md ==)\n subpages:\n - name: Java\n content: (== include tutorial_java.md ==)\n\u003c/code\u003e\u003c/pre\u003e\nYou can reference `Java` page using Markdown reference link syntax:\n`Java`.", - "type": "string" - }, - "content": { - "description": "The Markdown content of the page. You can use \u003ccode\u003e(== include {path} ==)\u003c/code\u003e\nto include content from a Markdown file.", - "type": "string" - }, - "subpages": { - "description": "Subpages of this page. The order of subpages specified here will be\nhonored in the generated docset.", - "items": { - "$ref": "Page" - }, - "type": "array" - } - }, - "id": "Page" - }, - "Status": { - "type": "object", - "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "type": "any", - "description": "Properties of the object. Contains field @type with type URL." - }, - "type": "object" - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - } - }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons." - }, - "AuthProvider": { - "id": "AuthProvider", - "description": "Configuration for an anthentication provider, including support for\n[JSON Web Token (JWT)](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32).", - "type": "object", - "properties": { - "audiences": { - "description": "The list of JWT\n[audiences](https://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.3).\nthat are allowed to access. A JWT containing any of these audiences will\nbe accepted. When this setting is absent, only JWTs with audience\n\"https://Service_name/API_name\"\nwill be accepted. For example, if no audiences are in the setting,\nLibraryService API will only accept JWTs with the following audience\n\"https://library-example.googleapis.com/google.example.library.v1.LibraryService\".\n\nExample:\n\n audiences: bookstore_android.apps.googleusercontent.com,\n bookstore_web.apps.googleusercontent.com", - "type": "string" - }, - "authorizationUrl": { - "description": "Redirect URL if JWT token is required but no present or is expired.\nImplement authorizationUrl of securityDefinitions in OpenAPI spec.", - "type": "string" - }, - "issuer": { - "description": "Identifies the principal that issued the JWT. See\nhttps://tools.ietf.org/html/draft-ietf-oauth-json-web-token-32#section-4.1.1\nUsually a URL or an email address.\n\nExample: https://securetoken.google.com\nExample: 1234567-compute@developer.gserviceaccount.com", - "type": "string" - }, - "id": { - "description": "The unique identifier of the auth provider. It will be referred to by\n`AuthRequirement.provider_id`.\n\nExample: \"bookstore_auth\".", - "type": "string" - }, - "jwksUri": { - "description": "URL of the provider's public key set to validate signature of the JWT. See\n[OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata).\nOptional if the key set document:\n - can be retrieved from\n [OpenID Discovery](https://openid.net/specs/openid-connect-discovery-1_0.html\n of the issuer.\n - can be inferred from the email domain of the issuer (e.g. a Google service account).\n\nExample: https://www.googleapis.com/oauth2/v1/certs", - "type": "string" - } - } - }, - "Service": { - "id": "Service", - "description": "`Service` is the root object of Google service configuration schema. It\ndescribes basic information about a service, such as the name and the\ntitle, and delegates other aspects to sub-sections. Each sub-section is\neither a proto message or a repeated proto message that configures a\nspecific aspect, such as auth. See each proto message definition for details.\n\nExample:\n\n type: google.api.Service\n config_version: 3\n name: calendar.googleapis.com\n title: Google Calendar API\n apis:\n - name: google.calendar.v3.Calendar\n authentication:\n providers:\n - id: google_calendar_auth\n jwks_uri: https://www.googleapis.com/oauth2/v1/certs\n issuer: https://securetoken.google.com\n rules:\n - selector: \"*\"\n requirements:\n provider_id: google_calendar_auth", - "type": "object", - "properties": { - "usage": { - "description": "Configuration controlling usage of this service.", - "$ref": "Usage" - }, - "metrics": { - "description": "Defines the metrics used by this service.", - "items": { - "$ref": "MetricDescriptor" - }, - "type": "array" - }, - "authentication": { - "$ref": "Authentication", - "description": "Auth configuration." - }, - "experimental": { - "description": "Experimental configuration.", - "$ref": "Experimental" - }, - "control": { - "description": "Configuration for the service control plane.", - "$ref": "Control" - }, - "configVersion": { - "format": "uint32", - "description": "The semantic version of the service configuration. The config version\naffects the interpretation of the service configuration. For example,\ncertain features are enabled by default for certain config versions.\nThe latest config version is `3`.", - "type": "integer" - }, - "monitoring": { - "$ref": "Monitoring", - "description": "Monitoring configuration." - }, - "producerProjectId": { - "description": "The Google project that owns this service.", - "type": "string" - }, - "systemTypes": { - "description": "A list of all proto message types included in this API service.\nIt serves similar purpose as [google.api.Service.types], except that\nthese types are not needed by user-defined APIs. Therefore, they will not\nshow up in the generated discovery doc. This field should only be used\nto define system APIs in ESF.", - "items": { - "$ref": "Type" - }, - "type": "array" - }, - "visibility": { - "description": "API visibility configuration.", - "$ref": "Visibility" - }, - "quota": { - "$ref": "Quota", - "description": "Quota configuration." - }, - "name": { - "description": "The DNS address at which this service is available,\ne.g. `calendar.googleapis.com`.", - "type": "string" - }, - "customError": { - "description": "Custom error configuration.", - "$ref": "CustomError" - }, - "title": { - "description": "The product title for this service.", - "type": "string" - }, - "endpoints": { - "description": "Configuration for network endpoints. If this is empty, then an endpoint\nwith the same name as the service is automatically generated to service all\ndefined APIs.", - "items": { - "$ref": "Endpoint" - }, - "type": "array" - }, - "logs": { - "description": "Defines the logs used by this service.", - "items": { - "$ref": "LogDescriptor" - }, - "type": "array" - }, - "apis": { - "description": "A list of API interfaces exported by this service. Only the `name` field\nof the google.protobuf.Api needs to be provided by the configuration\nauthor, as the remaining fields will be derived from the IDL during the\nnormalization process. It is an error to specify an API interface here\nwhich cannot be resolved against the associated IDL files.", - "items": { - "$ref": "Api" - }, - "type": "array" - }, - "types": { - "description": "A list of all proto message types included in this API service.\nTypes referenced directly or indirectly by the `apis` are\nautomatically included. Messages which are not referenced but\nshall be included, such as types used by the `google.protobuf.Any` type,\nshould be listed here by name. Example:\n\n types:\n - name: google.protobuf.Int32", - "items": { - "$ref": "Type" - }, - "type": "array" - }, - "sourceInfo": { - "$ref": "SourceInfo", - "description": "Output only. The source information for this configuration if available." - }, - "http": { - "description": "HTTP configuration.", - "$ref": "Http" - }, - "systemParameters": { - "$ref": "SystemParameters", - "description": "System parameter configuration." - }, - "backend": { - "description": "API backend configuration.", - "$ref": "Backend" - }, - "documentation": { - "$ref": "Documentation", - "description": "Additional API documentation." - }, - "monitoredResources": { - "description": "Defines the monitored resources used by this service. This is required\nby the Service.monitoring and Service.logging configurations.", - "items": { - "$ref": "MonitoredResourceDescriptor" - }, - "type": "array" - }, - "logging": { - "$ref": "Logging", - "description": "Logging configuration." - }, - "enums": { - "description": "A list of all enum types included in this API service. Enums\nreferenced directly or indirectly by the `apis` are automatically\nincluded. Enums which are not referenced but shall be included\nshould be listed here by name. Example:\n\n enums:\n - name: google.someapi.v1.SomeEnum", - "items": { - "$ref": "Enum" - }, - "type": "array" - }, - "context": { - "$ref": "Context", - "description": "Context configuration." - }, - "id": { - "description": "A unique ID for a specific instance of this message, typically assigned\nby the client for tracking purpose. If empty, the server may choose to\ngenerate one instead.", - "type": "string" - } - } - }, - "EnumValue": { - "id": "EnumValue", - "description": "Enum value definition.", - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Enum value name." - }, - "options": { - "description": "Protocol buffer options.", - "items": { - "$ref": "Option" - }, - "type": "array" - }, - "number": { - "format": "int32", - "description": "Enum value number.", - "type": "integer" - } - } - }, - "OperationMetadata": { - "description": "The metadata associated with a long running operation resource.", - "type": "object", - "properties": { - "steps": { - "description": "Detailed status information for each step. The order is undetermined.", - "items": { - "$ref": "Step" - }, - "type": "array" - }, - "resourceNames": { - "description": "The full name of the resources that this operation is directly\nassociated with.", - "items": { - "type": "string" - }, - "type": "array" - }, - "progressPercentage": { - "format": "int32", - "description": "Percentage of completion of this operation, ranging from 0 to 100.", - "type": "integer" - }, - "startTime": { - "format": "google-datetime", - "description": "The start time of the operation.", - "type": "string" - } - }, - "id": "OperationMetadata" - }, - "CustomHttpPattern": { - "properties": { - "kind": { - "description": "The name of this custom HTTP verb.", - "type": "string" - }, - "path": { - "description": "The path matched by this custom verb.", - "type": "string" - } - }, - "id": "CustomHttpPattern", - "description": "A custom pattern is used for defining custom HTTP verb.", - "type": "object" - }, - "PublishedService": { - "description": "The published version of a Service that is managed by\nGoogle Service Management.", - "type": "object", - "properties": { - "service": { - "$ref": "Service", - "description": "The service's published configuration." - }, - "name": { - "description": "The resource name of the service.\n\nA valid name would be:\n- services/serviceuser.googleapis.com", - "type": "string" - } - }, - "id": "PublishedService" - }, - "SystemParameterRule": { - "description": "Define a system parameter rule mapping system parameter definitions to\nmethods.", - "type": "object", - "properties": { - "parameters": { - "items": { - "$ref": "SystemParameter" - }, - "type": "array", - "description": "Define parameters. Multiple names may be defined for a parameter.\nFor a given method call, only one of them should be used. If multiple\nnames are used the behavior is implementation-dependent.\nIf none of the specified names are present the behavior is\nparameter-dependent." - }, - "selector": { - "description": "Selects the methods to which this rule applies. Use '*' to indicate all\nmethods in all APIs.\n\nRefer to selector for syntax details.", - "type": "string" - } - }, - "id": "SystemParameterRule" - }, - "VisibilityRule": { - "id": "VisibilityRule", - "description": "A visibility rule provides visibility configuration for an individual API\nelement.", - "type": "object", - "properties": { - "restriction": { - "description": "A comma-separated list of visibility labels that apply to the `selector`.\nAny of the listed labels can be used to grant the visibility.\n\nIf a rule has multiple labels, removing one of the labels but not all of\nthem can break clients.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: GOOGLE_INTERNAL, TRUSTED_TESTER\n\nRemoving GOOGLE_INTERNAL from this restriction will break clients that\nrely on this method and only had access to it through GOOGLE_INTERNAL.", - "type": "string" - }, - "selector": { - "description": "Selects methods, messages, fields, enums, etc. to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - } - } - }, - "HttpRule": { - "type": "object", - "properties": { - "mediaUpload": { - "$ref": "MediaUpload", - "description": "Use this only for Scotty Requests. Do not use this for media support using\nBytestream, add instead\n[][google.bytestream.RestByteStream] as an API to your\nconfiguration for Bytestream methods." - }, - "selector": { - "description": "Selects methods to which this rule applies.\n\nRefer to selector for syntax details.", - "type": "string" - }, - "custom": { - "$ref": "CustomHttpPattern", - "description": "The custom pattern is used for specifying an HTTP method that is not\nincluded in the `pattern` field, such as HEAD, or \"*\" to leave the\nHTTP method unspecified for this rule. The wild-card rule is useful\nfor services that provide content to Web (HTML) clients." - }, - "get": { - "description": "Used for listing and getting information about resources.", - "type": "string" - }, - "patch": { - "description": "Used for updating a resource.", - "type": "string" - }, - "put": { - "description": "Used for updating a resource.", - "type": "string" - }, - "authorizations": { - "description": "Specifies the permission(s) required for an API element for the overall\nAPI request to succeed. It is typically used to mark request message fields\nthat contain the name of the resource and indicates the permissions that\nwill be checked on that resource.", - "items": { - "$ref": "AuthorizationRule" - }, - "type": "array" - }, - "delete": { - "description": "Used for deleting a resource.", - "type": "string" - }, - "body": { - "description": "The name of the request field whose value is mapped to the HTTP body, or\n`*` for mapping all fields not captured by the path pattern to the HTTP\nbody. NOTE: the referred field must not be a repeated field and must be\npresent at the top-level of request message type.", - "type": "string" - }, - "post": { - "description": "Used for creating a resource.", - "type": "string" - }, - "mediaDownload": { - "$ref": "MediaDownload", - "description": "Use this only for Scotty Requests. Do not use this for bytestream methods.\nFor media support, add instead [][google.bytestream.RestByteStream] as an\nAPI to your configuration." - }, - "restMethodName": { - "description": "DO NOT USE. This is an experimental field.\n\nOptional. The rest method name is by default derived from the URL\npattern. If specified, this field overrides the default method name.\nExample:\n\n rpc CreateResource(CreateResourceRequest)\n returns (CreateResourceResponse) {\n option (google.api.http) = {\n post: \"/v1/resources\",\n body: \"resource\",\n rest_method_name: \"insert\"\n };\n }\n\nThis method has the automatically derived rest method name\n\"create\", but for backwards compatibility with apiary, it is specified as\ninsert.", - "type": "string" - }, - "additionalBindings": { - "description": "Additional HTTP bindings for the selector. Nested bindings must\nnot contain an `additional_bindings` field themselves (that is,\nthe nesting may only be one level deep).", - "items": { - "$ref": "HttpRule" - }, - "type": "array" - }, - "responseBody": { - "description": "The name of the response field whose value is mapped to the HTTP body of\nresponse. Other response fields are ignored. This field is optional. When\nnot set, the response message will be used as HTTP body of response.\nNOTE: the referred field must be not a repeated field and must be present\nat the top-level of response message type.", - "type": "string" - }, - "restCollection": { - "description": "DO NOT USE. This is an experimental field.\n\nOptional. The REST collection name is by default derived from the URL\npattern. If specified, this field overrides the default collection name.\nExample:\n\n rpc AddressesAggregatedList(AddressesAggregatedListRequest)\n returns (AddressesAggregatedListResponse) {\n option (google.api.http) = {\n get: \"/v1/projects/{project_id}/aggregated/addresses\"\n rest_collection: \"projects.addresses\"\n };\n }\n\nThis method has the automatically derived collection name\n\"projects.aggregated\". Because, semantically, this rpc is actually an\noperation on the \"projects.addresses\" collection, the `rest_collection`\nfield is configured to override the derived collection name.", - "type": "string" - } - }, - "id": "HttpRule", - "description": "`HttpRule` defines the mapping of an RPC method to one or more HTTP\nREST API methods. The mapping specifies how different portions of the RPC\nrequest message are mapped to URL path, URL query parameters, and\nHTTP request body. The mapping is typically specified as an\n`google.api.http` annotation on the RPC method,\nsee \"google/api/annotations.proto\" for details.\n\nThe mapping consists of a field specifying the path template and\nmethod kind. The path template can refer to fields in the request\nmessage, as in the example below which describes a REST GET\noperation on a resource collection of messages:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}/{sub.subfield}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n SubMessage sub = 2; // `sub.subfield` is url-mapped\n }\n message Message {\n string text = 1; // content of the resource\n }\n\nThe same http annotation can alternatively be expressed inside the\n`GRPC API Configuration` YAML file.\n\n http:\n rules:\n - selector: \u003cproto_package_name\u003e.Messaging.GetMessage\n get: /v1/messages/{message_id}/{sub.subfield}\n\nThis definition enables an automatic, bidrectional mapping of HTTP\nJSON to RPC. Example:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456/foo` | `GetMessage(message_id: \"123456\" sub: SubMessage(subfield: \"foo\"))`\n\nIn general, not only fields but also field paths can be referenced\nfrom a path pattern. Fields mapped to the path pattern cannot be\nrepeated and must have a primitive (non-message) type.\n\nAny fields in the request message which are not bound by the path\npattern automatically become (optional) HTTP query\nparameters. Assume the following definition of the request message:\n\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http).get = \"/v1/messages/{message_id}\";\n }\n }\n message GetMessageRequest {\n message SubMessage {\n string subfield = 1;\n }\n string message_id = 1; // mapped to the URL\n int64 revision = 2; // becomes a parameter\n SubMessage sub = 3; // `sub.subfield` becomes a parameter\n }\n\n\nThis enables a HTTP JSON to RPC mapping as below:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456?revision=2&sub.subfield=foo` | `GetMessage(message_id: \"123456\" revision: 2 sub: SubMessage(subfield: \"foo\"))`\n\nNote that fields which are mapped to HTTP parameters must have a\nprimitive type or a repeated primitive type. Message types are not\nallowed. In the case of a repeated type, the parameter can be\nrepeated in the URL, as in `...?param=A¶m=B`.\n\nFor HTTP method kinds which allow a request body, the `body` field\nspecifies the mapping. Consider a REST update method on the\nmessage resource collection:\n\n\n service Messaging {\n rpc UpdateMessage(UpdateMessageRequest) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"message\"\n };\n }\n }\n message UpdateMessageRequest {\n string message_id = 1; // mapped to the URL\n Message message = 2; // mapped to the body\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled, where the\nrepresentation of the JSON in the request body is determined by\nprotos JSON encoding:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" message { text: \"Hi!\" })`\n\nThe special name `*` can be used in the body mapping to define that\nevery field not bound by the path template should be mapped to the\nrequest body. This enables the following alternative definition of\nthe update method:\n\n service Messaging {\n rpc UpdateMessage(Message) returns (Message) {\n option (google.api.http) = {\n put: \"/v1/messages/{message_id}\"\n body: \"*\"\n };\n }\n }\n message Message {\n string message_id = 1;\n string text = 2;\n }\n\n\nThe following HTTP JSON to RPC mapping is enabled:\n\nHTTP | RPC\n-----|-----\n`PUT /v1/messages/123456 { \"text\": \"Hi!\" }` | `UpdateMessage(message_id: \"123456\" text: \"Hi!\")`\n\nNote that when using `*` in the body mapping, it is not possible to\nhave HTTP parameters, as all fields not bound by the path end in\nthe body. This makes this option more rarely used in practice of\ndefining REST APIs. The common usage of `*` is in custom methods\nwhich don't use the URL at all for transferring data.\n\nIt is possible to define multiple HTTP methods for one RPC by using\nthe `additional_bindings` option. Example:\n\n service Messaging {\n rpc GetMessage(GetMessageRequest) returns (Message) {\n option (google.api.http) = {\n get: \"/v1/messages/{message_id}\"\n additional_bindings {\n get: \"/v1/users/{user_id}/messages/{message_id}\"\n }\n };\n }\n }\n message GetMessageRequest {\n string message_id = 1;\n string user_id = 2;\n }\n\n\nThis enables the following two alternative HTTP JSON to RPC\nmappings:\n\nHTTP | RPC\n-----|-----\n`GET /v1/messages/123456` | `GetMessage(message_id: \"123456\")`\n`GET /v1/users/me/messages/123456` | `GetMessage(user_id: \"me\" message_id: \"123456\")`\n\n# Rules for HTTP mapping\n\nThe rules for mapping HTTP path, query parameters, and body fields\nto the request message are as follows:\n\n1. The `body` field specifies either `*` or a field path, or is\n omitted. If omitted, it indicates there is no HTTP request body.\n2. Leaf fields (recursive expansion of nested messages in the\n request) can be classified into three types:\n (a) Matched in the URL template.\n (b) Covered by body (if body is `*`, everything except (a) fields;\n else everything under the body field)\n (c) All other fields.\n3. URL query parameters found in the HTTP request are mapped to (c) fields.\n4. Any body sent with an HTTP request can contain only (b) fields.\n\nThe syntax of the path template is as follows:\n\n Template = \"/\" Segments [ Verb ] ;\n Segments = Segment { \"/\" Segment } ;\n Segment = \"*\" | \"**\" | LITERAL | Variable ;\n Variable = \"{\" FieldPath [ \"=\" Segments ] \"}\" ;\n FieldPath = IDENT { \".\" IDENT } ;\n Verb = \":\" LITERAL ;\n\nThe syntax `*` matches a single path segment. The syntax `**` matches zero\nor more path segments, which must be the last part of the path except the\n`Verb`. The syntax `LITERAL` matches literal text in the path.\n\nThe syntax `Variable` matches part of the URL path as specified by its\ntemplate. A variable template must not contain other variables. If a variable\nmatches a single path segment, its template may be omitted, e.g. `{var}`\nis equivalent to `{var=*}`.\n\nIf a variable contains exactly one path segment, such as `\"{var}\"` or\n`\"{var=*}\"`, when such a variable is expanded into a URL path, all characters\nexcept `[-_.~0-9a-zA-Z]` are percent-encoded. Such variables show up in the\nDiscovery Document as `{var}`.\n\nIf a variable contains one or more path segments, such as `\"{var=foo/*}\"`\nor `\"{var=**}\"`, when such a variable is expanded into a URL path, all\ncharacters except `[-_.~/0-9a-zA-Z]` are percent-encoded. Such variables\nshow up in the Discovery Document as `{+var}`.\n\nNOTE: While the single segment variable matches the semantics of\n[RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2\nSimple String Expansion, the multi segment variable **does not** match\nRFC 6570 Reserved Expansion. The reason is that the Reserved Expansion\ndoes not expand special characters like `?` and `#`, which would lead\nto invalid URLs.\n\nNOTE: the field paths in variables and in the `body` must not refer to\nrepeated fields or map fields." - }, - "MonitoringDestination": { - "description": "Configuration of a specific monitoring destination (the producer project\nor the consumer project).", - "type": "object", - "properties": { - "monitoredResource": { - "description": "The monitored resource type. The type must be defined in\nService.monitored_resources section.", - "type": "string" - }, - "metrics": { - "description": "Names of the metrics to report to this monitoring destination.\nEach name must be defined in Service.metrics section.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "MonitoringDestination" - }, - "Visibility": { - "properties": { - "rules": { - "description": "A list of visibility rules that apply to individual API elements.\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "VisibilityRule" - }, - "type": "array" - } - }, - "id": "Visibility", - "description": "`Visibility` defines restrictions for the visibility of service\nelements. Restrictions are specified using visibility labels\n(e.g., TRUSTED_TESTER) that are elsewhere linked to users and projects.\n\nUsers and projects can have access to more than one visibility label. The\neffective visibility for multiple labels is the union of each label's\nelements, plus any unrestricted elements.\n\nIf an element and its parents have no restrictions, visibility is\nunconditionally granted.\n\nExample:\n\n visibility:\n rules:\n - selector: google.calendar.Calendar.EnhancedSearch\n restriction: TRUSTED_TESTER\n - selector: google.calendar.Calendar.Delegate\n restriction: GOOGLE_INTERNAL\n\nHere, all methods are publicly visible except for the restricted methods\nEnhancedSearch and Delegate.", - "type": "object" - }, - "SystemParameters": { - "description": "### System parameter configuration\n\nA system parameter is a special kind of parameter defined by the API\nsystem, not by an individual API. It is typically mapped to an HTTP header\nand/or a URL query parameter. This configuration specifies which methods\nchange the names of the system parameters.", - "type": "object", - "properties": { - "rules": { - "description": "Define system parameters.\n\nThe parameters defined here will override the default parameters\nimplemented by the system. If this field is missing from the service\nconfig, default system parameters will be used. Default system parameters\nand names is implementation-dependent.\n\nExample: define api key for all methods\n\n system_parameters\n rules:\n - selector: \"*\"\n parameters:\n - name: api_key\n url_query_parameter: api_key\n\n\nExample: define 2 api key names for a specific method.\n\n system_parameters\n rules:\n - selector: \"/ListShelves\"\n parameters:\n - name: api_key\n http_header: Api-Key1\n - name: api_key\n http_header: Api-Key2\n\n**NOTE:** All service configuration rules follow \"last one wins\" order.", - "items": { - "$ref": "SystemParameterRule" - }, - "type": "array" - } - }, - "id": "SystemParameters" - }, - "Quota": { - "type": "object", - "properties": { - "limits": { - "description": "List of `QuotaLimit` definitions for the service.", - "items": { - "$ref": "QuotaLimit" - }, - "type": "array" - }, - "metricRules": { - "description": "List of `MetricRule` definitions, each one mapping a selected method to one\nor more metrics.", - "items": { - "$ref": "MetricRule" - }, - "type": "array" - } - }, - "id": "Quota", - "description": "Quota configuration helps to achieve fairness and budgeting in service\nusage.\n\nThe quota configuration works this way:\n- The service configuration defines a set of metrics.\n- For API calls, the quota.metric_rules maps methods to metrics with\n corresponding costs.\n- The quota.limits defines limits on the metrics, which will be used for\n quota checks at runtime.\n\nAn example quota configuration in yaml format:\n\n quota:\n\n - name: apiWriteQpsPerProject\n metric: library.googleapis.com/write_calls\n unit: \"1/min/{project}\" # rate limit for consumer projects\n values:\n STANDARD: 10000\n\n\n # The metric rules bind all methods to the read_calls metric,\n # except for the UpdateBook and DeleteBook methods. These two methods\n # are mapped to the write_calls metric, with the UpdateBook method\n # consuming at twice rate as the DeleteBook method.\n metric_rules:\n - selector: \"*\"\n metric_costs:\n library.googleapis.com/read_calls: 1\n - selector: google.example.library.v1.LibraryService.UpdateBook\n metric_costs:\n library.googleapis.com/write_calls: 2\n - selector: google.example.library.v1.LibraryService.DeleteBook\n metric_costs:\n library.googleapis.com/write_calls: 1\n\n Corresponding Metric definition:\n\n metrics:\n - name: library.googleapis.com/read_calls\n display_name: Read requests\n metric_kind: DELTA\n value_type: INT64\n\n - name: library.googleapis.com/write_calls\n display_name: Write requests\n metric_kind: DELTA\n value_type: INT64" } }, - "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - }, "protocol": "rest", - "canonicalName": "Service User", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - }, - "https://www.googleapis.com/auth/service.management": { - "description": "Manage your Google API service configuration" - }, - "https://www.googleapis.com/auth/cloud-platform.read-only": { - "description": "View your data across Google Cloud Platform services" - } - } - } - }, - "rootUrl": "https://serviceuser.googleapis.com/", - "ownerDomain": "google.com" + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + } } diff --git a/vendor/google.golang.org/api/sheets/v4/sheets-api.json b/vendor/google.golang.org/api/sheets/v4/sheets-api.json index 76d3d82..62d798c 100644 --- a/vendor/google.golang.org/api/sheets/v4/sheets-api.json +++ b/vendor/google.golang.org/api/sheets/v4/sheets-api.json @@ -30,60 +30,7 @@ "resources": { "spreadsheets": { "methods": { - "batchUpdate": { - "description": "Applies one or more updates to the spreadsheet.\n\nEach request is validated before\nbeing applied. If any request is not valid then the entire request will\nfail and nothing will be applied.\n\nSome requests have replies to\ngive you some information about how\nthey are applied. The replies will mirror the requests. For example,\nif you applied 4 updates and the 3rd one had a reply, then the\nresponse will have 2 empty replies, the actual reply, and another empty\nreply, in that order.\n\nDue to the collaborative nature of spreadsheets, it is not guaranteed that\nthe spreadsheet will reflect exactly your changes after this completes,\nhowever it is guaranteed that the updates in the request will be\napplied together atomically. Your changes may be altered with respect to\ncollaborator changes. If there are no collaborators, the spreadsheet\nshould reflect your changes.", - "request": { - "$ref": "BatchUpdateSpreadsheetRequest" - }, - "response": { - "$ref": "BatchUpdateSpreadsheetResponse" - }, - "parameterOrder": [ - "spreadsheetId" - ], - "httpMethod": "POST", - "parameters": { - "spreadsheetId": { - "description": "The spreadsheet to apply the updates to.", - "type": "string", - "required": true, - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/spreadsheets" - ], - "flatPath": "v4/spreadsheets/{spreadsheetId}:batchUpdate", - "id": "sheets.spreadsheets.batchUpdate", - "path": "v4/spreadsheets/{spreadsheetId}:batchUpdate" - }, - "create": { - "response": { - "$ref": "Spreadsheet" - }, - "parameterOrder": [], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/spreadsheets" - ], - "parameters": {}, - "flatPath": "v4/spreadsheets", - "id": "sheets.spreadsheets.create", - "path": "v4/spreadsheets", - "request": { - "$ref": "Spreadsheet" - }, - "description": "Creates a spreadsheet, returning the newly created spreadsheet." - }, "get": { - "flatPath": "v4/spreadsheets/{spreadsheetId}", - "id": "sheets.spreadsheets.get", - "path": "v4/spreadsheets/{spreadsheetId}", - "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nURL parameter to true. If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.\n\nTo retrieve only subsets of the spreadsheet, use the\nranges URL parameter.\nMultiple ranges can be specified. Limiting the range will\nreturn only the portions of the spreadsheet that intersect the requested\nranges. Ranges are specified using A1 notation.", "response": { "$ref": "Spreadsheet" }, @@ -106,9 +53,9 @@ "location": "path" }, "includeGridData": { + "location": "query", "description": "True if grid data should be returned.\nThis parameter is ignored if a field mask was set in the request.", - "type": "boolean", - "location": "query" + "type": "boolean" }, "ranges": { "description": "The ranges to retrieve from the spreadsheet.", @@ -116,6 +63,59 @@ "repeated": true, "location": "query" } + }, + "flatPath": "v4/spreadsheets/{spreadsheetId}", + "id": "sheets.spreadsheets.get", + "path": "v4/spreadsheets/{spreadsheetId}", + "description": "Returns the spreadsheet at the given ID.\nThe caller must specify the spreadsheet ID.\n\nBy default, data within grids will not be returned.\nYou can include grid data one of two ways:\n\n* Specify a field mask listing your desired fields using the `fields` URL\nparameter in HTTP\n\n* Set the includeGridData\nURL parameter to true. If a field mask is set, the `includeGridData`\nparameter is ignored\n\nFor large spreadsheets, it is recommended to retrieve only the specific\nfields of the spreadsheet that you want.\n\nTo retrieve only subsets of the spreadsheet, use the\nranges URL parameter.\nMultiple ranges can be specified. Limiting the range will\nreturn only the portions of the spreadsheet that intersect the requested\nranges. Ranges are specified using A1 notation." + }, + "batchUpdate": { + "response": { + "$ref": "BatchUpdateSpreadsheetResponse" + }, + "parameterOrder": [ + "spreadsheetId" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/spreadsheets" + ], + "parameters": { + "spreadsheetId": { + "description": "The spreadsheet to apply the updates to.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v4/spreadsheets/{spreadsheetId}:batchUpdate", + "id": "sheets.spreadsheets.batchUpdate", + "path": "v4/spreadsheets/{spreadsheetId}:batchUpdate", + "request": { + "$ref": "BatchUpdateSpreadsheetRequest" + }, + "description": "Applies one or more updates to the spreadsheet.\n\nEach request is validated before\nbeing applied. If any request is not valid then the entire request will\nfail and nothing will be applied.\n\nSome requests have replies to\ngive you some information about how\nthey are applied. The replies will mirror the requests. For example,\nif you applied 4 updates and the 3rd one had a reply, then the\nresponse will have 2 empty replies, the actual reply, and another empty\nreply, in that order.\n\nDue to the collaborative nature of spreadsheets, it is not guaranteed that\nthe spreadsheet will reflect exactly your changes after this completes,\nhowever it is guaranteed that the updates in the request will be\napplied together atomically. Your changes may be altered with respect to\ncollaborator changes. If there are no collaborators, the spreadsheet\nshould reflect your changes." + }, + "create": { + "response": { + "$ref": "Spreadsheet" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/spreadsheets" + ], + "flatPath": "v4/spreadsheets", + "id": "sheets.spreadsheets.create", + "path": "v4/spreadsheets", + "description": "Creates a spreadsheet, returning the newly created spreadsheet.", + "request": { + "$ref": "Spreadsheet" } } }, @@ -142,11 +142,11 @@ ], "parameters": { "sheetId": { - "location": "path", "format": "int32", "description": "The ID of the sheet to copy.", "type": "integer", - "required": true + "required": true, + "location": "path" }, "spreadsheetId": { "description": "The ID of the spreadsheet containing the sheet to copy.", @@ -163,230 +163,15 @@ }, "values": { "methods": { - "get": { - "path": "v4/spreadsheets/{spreadsheetId}/values/{range}", - "id": "sheets.spreadsheets.values.get", - "description": "Returns a range of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and a range.", - "httpMethod": "GET", - "parameterOrder": [ - "spreadsheetId", - "range" - ], - "response": { - "$ref": "ValueRange" - }, - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/drive.readonly", - "https://www.googleapis.com/auth/spreadsheets", - "https://www.googleapis.com/auth/spreadsheets.readonly" - ], - "parameters": { - "majorDimension": { - "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.", - "type": "string", - "location": "query", - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ] - }, - "spreadsheetId": { - "location": "path", - "description": "The ID of the spreadsheet to retrieve data from.", - "type": "string", - "required": true - }, - "range": { - "description": "The A1 notation of the values to retrieve.", - "type": "string", - "required": true, - "location": "path" - }, - "dateTimeRenderOption": { - "location": "query", - "enum": [ - "SERIAL_NUMBER", - "FORMATTED_STRING" - ], - "description": "How dates, times, and durations should be represented in the output.\nThis is ignored if value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", - "type": "string" - }, - "valueRenderOption": { - "enum": [ - "FORMATTED_VALUE", - "UNFORMATTED_VALUE", - "FORMULA" - ], - "description": "How values should be represented in the output.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", - "type": "string", - "location": "query" - } - }, - "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}" - }, - "update": { - "description": "Sets values in a range of a spreadsheet.\nThe caller must specify the spreadsheet ID, range, and\na valueInputOption.", - "request": { - "$ref": "ValueRange" - }, - "response": { - "$ref": "UpdateValuesResponse" - }, - "parameterOrder": [ - "spreadsheetId", - "range" - ], - "httpMethod": "PUT", - "parameters": { - "spreadsheetId": { - "location": "path", - "description": "The ID of the spreadsheet to update.", - "type": "string", - "required": true - }, - "responseValueRenderOption": { - "location": "query", - "enum": [ - "FORMATTED_VALUE", - "UNFORMATTED_VALUE", - "FORMULA" - ], - "description": "Determines how values in the response should be rendered.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", - "type": "string" - }, - "valueInputOption": { - "description": "How the input data should be interpreted.", - "type": "string", - "location": "query", - "enum": [ - "INPUT_VALUE_OPTION_UNSPECIFIED", - "RAW", - "USER_ENTERED" - ] - }, - "responseDateTimeRenderOption": { - "location": "query", - "enum": [ - "SERIAL_NUMBER", - "FORMATTED_STRING" - ], - "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", - "type": "string" - }, - "range": { - "type": "string", - "required": true, - "location": "path", - "description": "The A1 notation of the values to update." - }, - "includeValuesInResponse": { - "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values.\nIf the range to write was larger than than the range actually written,\nthe response will include all values in the requested range (excluding\ntrailing empty rows and columns).", - "type": "boolean", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/spreadsheets" - ], - "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}", - "id": "sheets.spreadsheets.values.update", - "path": "v4/spreadsheets/{spreadsheetId}/values/{range}" - }, - "batchUpdate": { - "request": { - "$ref": "BatchUpdateValuesRequest" - }, - "description": "Sets values in one or more ranges of a spreadsheet.\nThe caller must specify the spreadsheet ID,\na valueInputOption, and one or more\nValueRanges.", - "httpMethod": "POST", - "parameterOrder": [ - "spreadsheetId" - ], - "response": { - "$ref": "BatchUpdateValuesResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/spreadsheets" - ], - "parameters": { - "spreadsheetId": { - "location": "path", - "description": "The ID of the spreadsheet to update.", - "type": "string", - "required": true - } - }, - "flatPath": "v4/spreadsheets/{spreadsheetId}/values:batchUpdate", - "path": "v4/spreadsheets/{spreadsheetId}/values:batchUpdate", - "id": "sheets.spreadsheets.values.batchUpdate" - }, - "clear": { - "id": "sheets.spreadsheets.values.clear", - "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear", - "request": { - "$ref": "ClearValuesRequest" - }, - "description": "Clears values from a spreadsheet.\nThe caller must specify the spreadsheet ID and range.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept.", - "response": { - "$ref": "ClearValuesResponse" - }, - "parameterOrder": [ - "spreadsheetId", - "range" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.file", - "https://www.googleapis.com/auth/spreadsheets" - ], - "parameters": { - "spreadsheetId": { - "location": "path", - "description": "The ID of the spreadsheet to update.", - "type": "string", - "required": true - }, - "range": { - "location": "path", - "description": "The A1 notation of the values to clear.", - "type": "string", - "required": true - } - }, - "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear" - }, "batchGet": { - "httpMethod": "GET", "response": { "$ref": "BatchGetValuesResponse" }, "parameterOrder": [ "spreadsheetId" ], + "httpMethod": "GET", "parameters": { - "majorDimension": { - "type": "string", - "location": "query", - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ], - "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`." - }, - "ranges": { - "description": "The A1 notation of the values to retrieve.", - "type": "string", - "repeated": true, - "location": "query" - }, "spreadsheetId": { "location": "path", "description": "The ID of the spreadsheet to retrieve data from.", @@ -394,22 +179,38 @@ "required": true }, "dateTimeRenderOption": { - "location": "query", "enum": [ "SERIAL_NUMBER", "FORMATTED_STRING" ], "description": "How dates, times, and durations should be represented in the output.\nThis is ignored if value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", - "type": "string" + "type": "string", + "location": "query" }, "valueRenderOption": { - "location": "query", "enum": [ "FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA" ], "description": "How values should be represented in the output.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", + "type": "string", + "location": "query" + }, + "majorDimension": { + "location": "query", + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.", + "type": "string" + }, + "ranges": { + "repeated": true, + "location": "query", + "description": "The A1 notation of the values to retrieve.", "type": "string" } }, @@ -421,19 +222,55 @@ "https://www.googleapis.com/auth/spreadsheets.readonly" ], "flatPath": "v4/spreadsheets/{spreadsheetId}/values:batchGet", - "path": "v4/spreadsheets/{spreadsheetId}/values:batchGet", "id": "sheets.spreadsheets.values.batchGet", + "path": "v4/spreadsheets/{spreadsheetId}/values:batchGet", "description": "Returns one or more ranges of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and one or more ranges." }, - "append": { - "httpMethod": "POST", + "clear": { + "description": "Clears values from a spreadsheet.\nThe caller must specify the spreadsheet ID and range.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept.", + "request": { + "$ref": "ClearValuesRequest" + }, + "response": { + "$ref": "ClearValuesResponse" + }, "parameterOrder": [ "spreadsheetId", "range" ], + "httpMethod": "POST", + "parameters": { + "spreadsheetId": { + "description": "The ID of the spreadsheet to update.", + "type": "string", + "required": true, + "location": "path" + }, + "range": { + "description": "The A1 notation of the values to clear.", + "type": "string", + "required": true, + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/spreadsheets" + ], + "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear", + "id": "sheets.spreadsheets.values.clear", + "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:clear" + }, + "append": { "response": { "$ref": "AppendValuesResponse" }, + "parameterOrder": [ + "spreadsheetId", + "range" + ], + "httpMethod": "POST", "parameters": { "range": { "location": "path", @@ -463,13 +300,13 @@ "type": "string" }, "insertDataOption": { - "description": "How the input data should be inserted.", - "type": "string", "location": "query", "enum": [ "OVERWRITE", "INSERT_ROWS" - ] + ], + "description": "How the input data should be inserted.", + "type": "string" }, "valueInputOption": { "location": "query", @@ -482,13 +319,13 @@ "type": "string" }, "responseDateTimeRenderOption": { - "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", - "type": "string", "location": "query", "enum": [ "SERIAL_NUMBER", "FORMATTED_STRING" - ] + ], + "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", + "type": "string" } }, "scopes": [ @@ -497,21 +334,184 @@ "https://www.googleapis.com/auth/spreadsheets" ], "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}:append", - "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:append", "id": "sheets.spreadsheets.values.append", + "path": "v4/spreadsheets/{spreadsheetId}/values/{range}:append", "description": "Appends values to a spreadsheet. The input range is used to search for\nexisting data and find a \"table\" within that range. Values will be\nappended to the next row of the table, starting with the first column of\nthe table. See the\n[guide](/sheets/api/guides/values#appending_values)\nand\n[sample code](/sheets/api/samples/writing#append_values)\nfor specific details of how tables are detected and data is appended.\n\nThe caller must specify the spreadsheet ID, range, and\na valueInputOption. The `valueInputOption` only\ncontrols how the input data will be added to the sheet (column-wise or\nrow-wise), it does not influence what cell the data starts being written\nto.", "request": { "$ref": "ValueRange" } }, "batchClear": { - "httpMethod": "POST", - "parameterOrder": [ - "spreadsheetId" - ], + "id": "sheets.spreadsheets.values.batchClear", + "path": "v4/spreadsheets/{spreadsheetId}/values:batchClear", + "description": "Clears one or more ranges of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and one or more ranges.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept.", + "request": { + "$ref": "BatchClearValuesRequest" + }, "response": { "$ref": "BatchClearValuesResponse" }, + "parameterOrder": [ + "spreadsheetId" + ], + "httpMethod": "POST", + "parameters": { + "spreadsheetId": { + "location": "path", + "description": "The ID of the spreadsheet to update.", + "type": "string", + "required": true + } + }, + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/spreadsheets" + ], + "flatPath": "v4/spreadsheets/{spreadsheetId}/values:batchClear" + }, + "get": { + "description": "Returns a range of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and a range.", + "response": { + "$ref": "ValueRange" + }, + "parameterOrder": [ + "spreadsheetId", + "range" + ], + "httpMethod": "GET", + "parameters": { + "spreadsheetId": { + "description": "The ID of the spreadsheet to retrieve data from.", + "type": "string", + "required": true, + "location": "path" + }, + "range": { + "description": "The A1 notation of the values to retrieve.", + "type": "string", + "required": true, + "location": "path" + }, + "dateTimeRenderOption": { + "location": "query", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "description": "How dates, times, and durations should be represented in the output.\nThis is ignored if value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", + "type": "string" + }, + "valueRenderOption": { + "location": "query", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "description": "How values should be represented in the output.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", + "type": "string" + }, + "majorDimension": { + "location": "query", + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The major dimension that results should use.\n\nFor example, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/drive.readonly", + "https://www.googleapis.com/auth/spreadsheets", + "https://www.googleapis.com/auth/spreadsheets.readonly" + ], + "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}", + "id": "sheets.spreadsheets.values.get", + "path": "v4/spreadsheets/{spreadsheetId}/values/{range}" + }, + "update": { + "httpMethod": "PUT", + "parameterOrder": [ + "spreadsheetId", + "range" + ], + "response": { + "$ref": "UpdateValuesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.file", + "https://www.googleapis.com/auth/spreadsheets" + ], + "parameters": { + "range": { + "description": "The A1 notation of the values to update.", + "type": "string", + "required": true, + "location": "path" + }, + "includeValuesInResponse": { + "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values.\nIf the range to write was larger than than the range actually written,\nthe response will include all values in the requested range (excluding\ntrailing empty rows and columns).", + "type": "boolean", + "location": "query" + }, + "spreadsheetId": { + "description": "The ID of the spreadsheet to update.", + "type": "string", + "required": true, + "location": "path" + }, + "responseValueRenderOption": { + "location": "query", + "enum": [ + "FORMATTED_VALUE", + "UNFORMATTED_VALUE", + "FORMULA" + ], + "description": "Determines how values in the response should be rendered.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", + "type": "string" + }, + "valueInputOption": { + "location": "query", + "enum": [ + "INPUT_VALUE_OPTION_UNSPECIFIED", + "RAW", + "USER_ENTERED" + ], + "description": "How the input data should be interpreted.", + "type": "string" + }, + "responseDateTimeRenderOption": { + "location": "query", + "enum": [ + "SERIAL_NUMBER", + "FORMATTED_STRING" + ], + "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is [DateTimeRenderOption.SERIAL_NUMBER].", + "type": "string" + } + }, + "flatPath": "v4/spreadsheets/{spreadsheetId}/values/{range}", + "path": "v4/spreadsheets/{spreadsheetId}/values/{range}", + "id": "sheets.spreadsheets.values.update", + "request": { + "$ref": "ValueRange" + }, + "description": "Sets values in a range of a spreadsheet.\nThe caller must specify the spreadsheet ID, range, and\na valueInputOption." + }, + "batchUpdate": { + "response": { + "$ref": "BatchUpdateValuesResponse" + }, + "parameterOrder": [ + "spreadsheetId" + ], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.file", @@ -525,13 +525,13 @@ "required": true } }, - "flatPath": "v4/spreadsheets/{spreadsheetId}/values:batchClear", - "path": "v4/spreadsheets/{spreadsheetId}/values:batchClear", - "id": "sheets.spreadsheets.values.batchClear", + "flatPath": "v4/spreadsheets/{spreadsheetId}/values:batchUpdate", + "id": "sheets.spreadsheets.values.batchUpdate", + "path": "v4/spreadsheets/{spreadsheetId}/values:batchUpdate", "request": { - "$ref": "BatchClearValuesRequest" + "$ref": "BatchUpdateValuesRequest" }, - "description": "Clears one or more ranges of values from a spreadsheet.\nThe caller must specify the spreadsheet ID and one or more ranges.\nOnly values are cleared -- all other properties of the cell (such as\nformatting, data validation, etc..) are kept." + "description": "Sets values in one or more ranges of a spreadsheet.\nThe caller must specify the spreadsheet ID,\na valueInputOption, and one or more\nValueRanges." } } } @@ -539,42 +539,21 @@ } }, "parameters": { - "quotaUser": { - "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "type": "string", - "location": "query", - "description": "OAuth 2.0 token for the current user." - }, "upload_protocol": { "location": "query", "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string" }, "prettyPrint": { + "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean", - "location": "query", - "description": "Returns response with indentations and line breaks." + "location": "query" }, "uploadType": { + "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" + "type": "string" }, "fields": { "description": "Selector specifying which fields to include in a partial response.", @@ -595,11 +574,17 @@ "type": "string" }, "callback": { - "location": "query", "description": "JSONP", - "type": "string" + "type": "string", + "location": "query" }, "alt": { + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", @@ -607,1154 +592,52 @@ ], "location": "query", "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "default": "json" }, "access_token": { "description": "OAuth access token.", "type": "string", "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" } }, "version": "v4", "baseUrl": "https://sheets.googleapis.com/", + "servicePath": "", "kind": "discovery#restDescription", "description": "Reads and writes Google Sheets.", - "servicePath": "", "basePath": "", + "id": "sheets:v4", "revision": "20170822", "documentationLink": "https://developers.google.com/sheets/", - "id": "sheets:v4", "discoveryVersion": "v1", "version_module": true, "schemas": { - "SetDataValidationRequest": { - "id": "SetDataValidationRequest", - "description": "Sets a data validation rule to every cell in the range.\nTo clear validation in a range, call this with no rule specified.", - "type": "object", - "properties": { - "rule": { - "description": "The data validation rule to set on each cell in the range,\nor empty to clear the data validation in the range.", - "$ref": "DataValidationRule" - }, - "range": { - "description": "The range the data validation rule should apply to.", - "$ref": "GridRange" - } - } - }, - "BubbleChartSpec": { - "description": "A \u003ca href=\"/chart/interactive/docs/gallery/bubblechart\"\u003ebubble chart\u003c/a\u003e.", - "type": "object", - "properties": { - "bubbleMaxRadiusSize": { - "format": "int32", - "description": "The max radius size of the bubbles, in pixels.\nIf specified, the field must be a positive value.", - "type": "integer" - }, - "series": { - "$ref": "ChartData", - "description": "The data contianing the bubble y-values. These values locate the bubbles\nin the chart vertically." - }, - "legendPosition": { - "description": "Where the legend of the chart should be drawn.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "The legend is rendered on the bottom of the chart.", - "The legend is rendered on the left of the chart.", - "The legend is rendered on the right of the chart.", - "The legend is rendered on the top of the chart.", - "No legend is rendered.", - "The legend is rendered inside the chart area." - ], - "enum": [ - "BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED", - "BOTTOM_LEGEND", - "LEFT_LEGEND", - "RIGHT_LEGEND", - "TOP_LEGEND", - "NO_LEGEND", - "INSIDE_LEGEND" - ] - }, - "bubbleSizes": { - "$ref": "ChartData", - "description": "The data contianing the bubble sizes. Bubble sizes are used to draw\nthe bubbles at different sizes relative to each other.\nIf specified, group_ids must also be specified. This field is\noptional." - }, - "domain": { - "$ref": "ChartData", - "description": "The data containing the bubble x-values. These values locate the bubbles\nin the chart horizontally." - }, - "bubbleOpacity": { - "format": "float", - "description": "The opacity of the bubbles between 0 and 1.0.\n0 is fully transparent and 1 is fully opaque.", - "type": "number" - }, - "bubbleTextStyle": { - "description": "The format of the text inside the bubbles.\nUnderline and Strikethrough are not supported.", - "$ref": "TextFormat" - }, - "bubbleBorderColor": { - "description": "The bubble border color.", - "$ref": "Color" - }, - "groupIds": { - "$ref": "ChartData", - "description": "The data containing the bubble group IDs. All bubbles with the same group\nID will be drawn in the same color. If bubble_sizes is specified then\nthis field must also be specified but may contain blank values.\nThis field is optional." - }, - "bubbleLabels": { - "description": "The data containing the bubble labels. These do not need to be unique.", - "$ref": "ChartData" - }, - "bubbleMinRadiusSize": { - "format": "int32", - "description": "The minimum radius size of the bubbles, in pixels.\nIf specific, the field must be a positive value.", - "type": "integer" - } - }, - "id": "BubbleChartSpec" - }, - "CellData": { - "description": "Data about a specific cell.", - "type": "object", - "properties": { - "userEnteredFormat": { - "$ref": "CellFormat", - "description": "The format the user entered for the cell.\n\nWhen writing, the new format will be merged with the existing format." - }, - "note": { - "type": "string", - "description": "Any note on the cell." - }, - "effectiveFormat": { - "description": "The effective format being used by the cell.\nThis includes the results of applying any conditional formatting and,\nif the cell contains a formula, the computed number format.\nIf the effective format is the default format, effective format will\nnot be written.\nThis field is read-only.", - "$ref": "CellFormat" - }, - "userEnteredValue": { - "$ref": "ExtendedValue", - "description": "The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`\nNote: Dates, Times and DateTimes are represented as doubles in\nserial number format." - }, - "dataValidation": { - "description": "A data validation rule on the cell, if any.\n\nWhen writing, the new data validation rule will overwrite any prior rule.", - "$ref": "DataValidationRule" - }, - "effectiveValue": { - "description": "The effective value of the cell. For cells with formulas, this will be\nthe calculated value. For cells with literals, this will be\nthe same as the user_entered_value.\nThis field is read-only.", - "$ref": "ExtendedValue" - }, - "textFormatRuns": { - "description": "Runs of rich text applied to subsections of the cell. Runs are only valid\non user entered strings, not formulas, bools, or numbers.\nRuns start at specific indexes in the text and continue until the next\nrun. Properties of a run will continue unless explicitly changed\nin a subsequent run (and properties of the first run will continue\nthe properties of the cell unless explicitly changed).\n\nWhen writing, the new runs will overwrite any prior runs. When writing a\nnew user_entered_value, previous runs will be erased.", - "items": { - "$ref": "TextFormatRun" - }, - "type": "array" - }, - "formattedValue": { - "type": "string", - "description": "The formatted value of the cell.\nThis is the value as it's shown to the user.\nThis field is read-only." - }, - "hyperlink": { - "description": "A hyperlink this cell points to, if any.\nThis field is read-only. (To set it, use a `=HYPERLINK` formula\nin the userEnteredValue.formulaValue\nfield.)", - "type": "string" - }, - "pivotTable": { - "$ref": "PivotTable", - "description": "A pivot table anchored at this cell. The size of pivot table itself\nis computed dynamically based on its data, grouping, filters, values,\netc. Only the top-left cell of the pivot table contains the pivot table\ndefinition. The other cells will contain the calculated values of the\nresults of the pivot in their effective_value fields." - } - }, - "id": "CellData" - }, - "BatchUpdateSpreadsheetRequest": { - "description": "The request for updating any aspect of a spreadsheet.", - "type": "object", - "properties": { - "responseIncludeGridData": { - "description": "True if grid data should be returned. Meaningful only if\nif include_spreadsheet_response is 'true'.\nThis parameter is ignored if a field mask was set in the request.", - "type": "boolean" - }, - "responseRanges": { - "description": "Limits the ranges included in the response spreadsheet.\nMeaningful only if include_spreadsheet_response is 'true'.", - "items": { - "type": "string" - }, - "type": "array" - }, - "includeSpreadsheetInResponse": { - "description": "Determines if the update response should include the spreadsheet\nresource.", - "type": "boolean" - }, - "requests": { - "description": "A list of updates to apply to the spreadsheet.\nRequests will be applied in the order they are specified.\nIf any request is not valid, no requests will be applied.", - "items": { - "$ref": "Request" - }, - "type": "array" - } - }, - "id": "BatchUpdateSpreadsheetRequest" - }, - "Padding": { - "description": "The amount of padding around the cell, in pixels.\nWhen updating padding, every field must be specified.", - "type": "object", - "properties": { - "right": { - "format": "int32", - "description": "The right padding of the cell.", - "type": "integer" - }, - "bottom": { - "type": "integer", - "format": "int32", - "description": "The bottom padding of the cell." - }, - "top": { - "format": "int32", - "description": "The top padding of the cell.", - "type": "integer" - }, - "left": { - "format": "int32", - "description": "The left padding of the cell.", - "type": "integer" - } - }, - "id": "Padding" - }, - "BasicChartAxis": { - "description": "An axis of the chart.\nA chart may not have more than one axis per\naxis position.", - "type": "object", - "properties": { - "format": { - "$ref": "TextFormat", - "description": "The format of the title.\nOnly valid if the axis is not associated with the domain." - }, - "title": { - "description": "The title of this axis. If set, this overrides any title inferred\nfrom headers of the data.", - "type": "string" - }, - "position": { - "enum": [ - "BASIC_CHART_AXIS_POSITION_UNSPECIFIED", - "BOTTOM_AXIS", - "LEFT_AXIS", - "RIGHT_AXIS" - ], - "description": "The position of this axis.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.", - "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.", - "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis." - ] - } - }, - "id": "BasicChartAxis" - }, - "DeleteDimensionRequest": { - "description": "Deletes the dimensions from the sheet.", - "type": "object", - "properties": { - "range": { - "$ref": "DimensionRange", - "description": "The dimensions to delete from the sheet." - } - }, - "id": "DeleteDimensionRequest" - }, - "UpdateChartSpecRequest": { - "description": "Updates a chart's specifications.\n(This does not move or resize a chart. To move or resize a chart, use\n UpdateEmbeddedObjectPositionRequest.)", - "type": "object", - "properties": { - "spec": { - "$ref": "ChartSpec", - "description": "The specification to apply to the chart." - }, - "chartId": { - "format": "int32", - "description": "The ID of the chart to update.", - "type": "integer" - } - }, - "id": "UpdateChartSpecRequest" - }, - "DeleteFilterViewRequest": { - "description": "Deletes a particular filter view.", - "type": "object", - "properties": { - "filterId": { - "format": "int32", - "description": "The ID of the filter to delete.", - "type": "integer" - } - }, - "id": "DeleteFilterViewRequest" - }, - "BatchUpdateValuesResponse": { - "description": "The response when updating a range of values in a spreadsheet.", - "type": "object", - "properties": { - "totalUpdatedSheets": { - "format": "int32", - "description": "The total number of sheets where at least one cell in the sheet was\nupdated.", - "type": "integer" - }, - "totalUpdatedCells": { - "format": "int32", - "description": "The total number of cells updated.", - "type": "integer" - }, - "totalUpdatedColumns": { - "format": "int32", - "description": "The total number of columns where at least one cell in the column was\nupdated.", - "type": "integer" - }, - "spreadsheetId": { - "type": "string", - "description": "The spreadsheet the updates were applied to." - }, - "totalUpdatedRows": { - "format": "int32", - "description": "The total number of rows where at least one cell in the row was updated.", - "type": "integer" - }, - "responses": { - "description": "One UpdateValuesResponse per requested range, in the same order as\nthe requests appeared.", - "items": { - "$ref": "UpdateValuesResponse" - }, - "type": "array" - } - }, - "id": "BatchUpdateValuesResponse" - }, - "SortRangeRequest": { - "description": "Sorts data in rows based on a sort order per column.", - "type": "object", - "properties": { - "range": { - "$ref": "GridRange", - "description": "The range to sort." - }, - "sortSpecs": { - "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", - "items": { - "$ref": "SortSpec" - }, - "type": "array" - } - }, - "id": "SortRangeRequest" - }, - "MergeCellsRequest": { - "properties": { - "range": { - "$ref": "GridRange", - "description": "The range of cells to merge." - }, - "mergeType": { - "description": "How the cells should be merged.", - "type": "string", - "enumDescriptions": [ - "Create a single merge from the range", - "Create a merge for each column in the range", - "Create a merge for each row in the range" - ], - "enum": [ - "MERGE_ALL", - "MERGE_COLUMNS", - "MERGE_ROWS" - ] - } - }, - "id": "MergeCellsRequest", - "description": "Merges all cells in the range.", - "type": "object" - }, - "AddProtectedRangeRequest": { - "description": "Adds a new protected range.", - "type": "object", - "properties": { - "protectedRange": { - "$ref": "ProtectedRange", - "description": "The protected range to be added. The\nprotectedRangeId field is optional; if\none is not set, an id will be randomly generated. (It is an error to\nspecify the ID of a range that already exists.)" - } - }, - "id": "AddProtectedRangeRequest" - }, - "BatchClearValuesRequest": { - "description": "The request for clearing more than one range of values in a spreadsheet.", - "type": "object", - "properties": { - "ranges": { - "description": "The ranges to clear, in A1 notation.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "BatchClearValuesRequest" - }, - "DuplicateFilterViewResponse": { - "id": "DuplicateFilterViewResponse", - "description": "The result of a filter view being duplicated.", - "type": "object", - "properties": { - "filter": { - "description": "The newly created filter.", - "$ref": "FilterView" - } - } - }, - "DuplicateSheetResponse": { - "description": "The result of duplicating a sheet.", - "type": "object", - "properties": { - "properties": { - "$ref": "SheetProperties", - "description": "The properties of the duplicate sheet." - } - }, - "id": "DuplicateSheetResponse" - }, - "ClearBasicFilterRequest": { - "description": "Clears the basic filter, if any exists on the sheet.", - "type": "object", - "properties": { - "sheetId": { - "format": "int32", - "description": "The sheet ID on which the basic filter should be cleared.", - "type": "integer" - } - }, - "id": "ClearBasicFilterRequest" - }, - "TextToColumnsRequest": { - "id": "TextToColumnsRequest", - "description": "Splits a column of text into multiple columns,\nbased on a delimiter in each cell.", - "type": "object", - "properties": { - "delimiterType": { - "enumDescriptions": [ - "Default value. This value must not be used.", - "\",\"", - "\";\"", - "\".\"", - "\" \"", - "A custom value as defined in delimiter." - ], - "enum": [ - "DELIMITER_TYPE_UNSPECIFIED", - "COMMA", - "SEMICOLON", - "PERIOD", - "SPACE", - "CUSTOM" - ], - "description": "The delimiter type to use.", - "type": "string" - }, - "source": { - "$ref": "GridRange", - "description": "The source data range. This must span exactly one column." - }, - "delimiter": { - "description": "The delimiter to use. Used only if delimiterType is\nCUSTOM.", - "type": "string" - } - } - }, - "DeleteBandingRequest": { - "description": "Removes the banded range with the given ID from the spreadsheet.", - "type": "object", - "properties": { - "bandedRangeId": { - "format": "int32", - "description": "The ID of the banded range to delete.", - "type": "integer" - } - }, - "id": "DeleteBandingRequest" - }, - "BatchUpdateSpreadsheetResponse": { - "description": "The reply for batch updating a spreadsheet.", - "type": "object", - "properties": { - "updatedSpreadsheet": { - "description": "The spreadsheet after updates were applied. This is only set if\n[BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`.", - "$ref": "Spreadsheet" - }, - "replies": { - "description": "The reply of the updates. This maps 1:1 with the updates, although\nreplies to some requests may be empty.", - "items": { - "$ref": "Response" - }, - "type": "array" - }, - "spreadsheetId": { - "type": "string", - "description": "The spreadsheet the updates were applied to." - } - }, - "id": "BatchUpdateSpreadsheetResponse" - }, - "AppendValuesResponse": { - "description": "The response when updating a range of values in a spreadsheet.", - "type": "object", - "properties": { - "updates": { - "description": "Information about the updates that were applied.", - "$ref": "UpdateValuesResponse" - }, - "tableRange": { - "description": "The range (in A1 notation) of the table that values are being appended to\n(before the values were appended).\nEmpty if no table was found.", - "type": "string" - }, - "spreadsheetId": { - "description": "The spreadsheet the updates were applied to.", - "type": "string" - } - }, - "id": "AppendValuesResponse" - }, - "MoveDimensionRequest": { - "description": "Moves one or more rows or columns.", - "type": "object", - "properties": { - "destinationIndex": { - "format": "int32", - "description": "The zero-based start index of where to move the source data to,\nbased on the coordinates *before* the source data is removed\nfrom the grid. Existing data will be shifted down or right\n(depending on the dimension) to make room for the moved dimensions.\nThe source dimensions are removed from the grid, so the\nthe data may end up in a different index than specified.\n\nFor example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move\n`\"1\"` and `\"2\"` to between `\"3\"` and `\"4\"`, the source would be\n`ROWS [1..3)`,and the destination index would be `\"4\"`\n(the zero-based index of row 5).\nThe end result would be `A1..A5` of `0, 3, 1, 2, 4`.", - "type": "integer" - }, - "source": { - "$ref": "DimensionRange", - "description": "The source dimensions to move." - } - }, - "id": "MoveDimensionRequest" - }, - "PivotFilterCriteria": { - "description": "Criteria for showing/hiding rows in a pivot table.", - "type": "object", - "properties": { - "visibleValues": { - "description": "Values that should be included. Values not listed here are excluded.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "PivotFilterCriteria" - }, - "AddFilterViewRequest": { - "description": "Adds a filter view.", - "type": "object", - "properties": { - "filter": { - "$ref": "FilterView", - "description": "The filter to add. The filterViewId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a filter that already exists.)" - } - }, - "id": "AddFilterViewRequest" - }, - "AddConditionalFormatRuleRequest": { - "description": "Adds a new conditional format rule at the given index.\nAll subsequent rules' indexes are incremented.", - "type": "object", - "properties": { - "rule": { - "$ref": "ConditionalFormatRule", - "description": "The rule to add." - }, - "index": { - "format": "int32", - "description": "The zero-based index where the rule should be inserted.", - "type": "integer" - } - }, - "id": "AddConditionalFormatRuleRequest" - }, - "ChartSpec": { - "description": "The specifications of a chart.", - "type": "object", - "properties": { - "candlestickChart": { - "description": "A candlestick chart specification.", - "$ref": "CandlestickChartSpec" - }, - "bubbleChart": { - "description": "A bubble chart specification.", - "$ref": "BubbleChartSpec" - }, - "fontName": { - "description": "The name of the font to use by default for all chart text (e.g. title,\naxis labels, legend). If a font is specified for a specific part of the\nchart it will override this font name.", - "type": "string" - }, - "maximized": { - "description": "True to make a chart fill the entire space in which it's rendered with\nminimum padding. False to use the default padding.\n(Not applicable to Geo and Org charts.)", - "type": "boolean" - }, - "hiddenDimensionStrategy": { - "description": "Determines how the charts will use hidden rows or columns.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "Charts will skip hidden rows and columns.", - "Charts will skip hidden rows only.", - "Charts will skip hidden columns only.", - "Charts will not skip any hidden rows or columns." - ], - "enum": [ - "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED", - "SKIP_HIDDEN_ROWS_AND_COLUMNS", - "SKIP_HIDDEN_ROWS", - "SKIP_HIDDEN_COLUMNS", - "SHOW_ALL" - ] - }, - "backgroundColor": { - "$ref": "Color", - "description": "The background color of the entire chart.\nNot applicable to Org charts." - }, - "basicChart": { - "$ref": "BasicChartSpec", - "description": "A basic chart specification, can be one of many kinds of charts.\nSee BasicChartType for the list of all\ncharts this supports." - }, - "orgChart": { - "$ref": "OrgChartSpec", - "description": "An org chart specification." - }, - "pieChart": { - "description": "A pie chart specification.", - "$ref": "PieChartSpec" - }, - "titleTextFormat": { - "description": "The title text format.\nStrikethrough and underline are not supported.", - "$ref": "TextFormat" - }, - "title": { - "description": "The title of the chart.", - "type": "string" - }, - "altText": { - "description": "The alternative text that describes the chart. This is often used\nfor accessibility.", - "type": "string" - }, - "histogramChart": { - "$ref": "HistogramChartSpec", - "description": "A histogram chart specification." - } - }, - "id": "ChartSpec" - }, - "NumberFormat": { - "id": "NumberFormat", - "description": "The number format of a cell.", - "type": "object", - "properties": { - "pattern": { - "type": "string", - "description": "Pattern string used for formatting. If not set, a default pattern based on\nthe user's locale will be used if necessary for the given type.\nSee the [Date and Number Formats guide](/sheets/api/guides/formats) for more\ninformation about the supported patterns." - }, - "type": { - "enumDescriptions": [ - "The number format is not specified\nand is based on the contents of the cell.\nDo not explicitly use this.", - "Text formatting, e.g `1000.12`", - "Number formatting, e.g, `1,000.12`", - "Percent formatting, e.g `10.12%`", - "Currency formatting, e.g `$1,000.12`", - "Date formatting, e.g `9/26/2008`", - "Time formatting, e.g `3:59:00 PM`", - "Date+Time formatting, e.g `9/26/08 15:59:00`", - "Scientific number formatting, e.g `1.01E+03`" - ], - "enum": [ - "NUMBER_FORMAT_TYPE_UNSPECIFIED", - "TEXT", - "NUMBER", - "PERCENT", - "CURRENCY", - "DATE", - "TIME", - "DATE_TIME", - "SCIENTIFIC" - ], - "description": "The type of the number format.\nWhen writing, this field must be set.", - "type": "string" - } - } - }, - "CandlestickDomain": { - "description": "The domain of a CandlestickChart.", - "type": "object", - "properties": { - "data": { - "$ref": "ChartData", - "description": "The data of the CandlestickDomain." - }, - "reversed": { - "type": "boolean", - "description": "True to reverse the order of the domain values (horizontal axis)." - } - }, - "id": "CandlestickDomain" - }, - "SheetProperties": { - "description": "Properties of a sheet.", - "type": "object", - "properties": { - "title": { - "description": "The name of the sheet.", - "type": "string" - }, - "index": { - "format": "int32", - "description": "The index of the sheet within the spreadsheet.\nWhen adding or updating sheet properties, if this field\nis excluded then the sheet will be added or moved to the end\nof the sheet list. When updating sheet indices or inserting\nsheets, movement is considered in \"before the move\" indexes.\nFor example, if there were 3 sheets (S1, S2, S3) in order to\nmove S1 ahead of S2 the index would have to be set to 2. A sheet\nindex update request will be ignored if the requested index is\nidentical to the sheets current index or if the requested new\nindex is equal to the current sheet index + 1.", - "type": "integer" - }, - "tabColor": { - "description": "The color of the tab in the UI.", - "$ref": "Color" - }, - "sheetId": { - "format": "int32", - "description": "The ID of the sheet. Must be non-negative.\nThis field cannot be changed once set.", - "type": "integer" - }, - "rightToLeft": { - "description": "True if the sheet is an RTL sheet instead of an LTR sheet.", - "type": "boolean" - }, - "hidden": { - "description": "True if the sheet is hidden in the UI, false if it's visible.", - "type": "boolean" - }, - "gridProperties": { - "$ref": "GridProperties", - "description": "Additional properties of the sheet if this sheet is a grid.\n(If the sheet is an object sheet, containing a chart or image, then\nthis field will be absent.)\nWhen writing it is an error to set any grid properties on non-grid sheets." - }, - "sheetType": { - "description": "The type of sheet. Defaults to GRID.\nThis field cannot be changed once set.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "The sheet is a grid.", - "The sheet has no grid and instead has an object like a chart or image." - ], - "enum": [ - "SHEET_TYPE_UNSPECIFIED", - "GRID", - "OBJECT" - ] - } - }, - "id": "SheetProperties" - }, - "UpdateDimensionPropertiesRequest": { - "description": "Updates properties of dimensions within the specified range.", - "type": "object", - "properties": { - "properties": { - "$ref": "DimensionProperties", - "description": "Properties to update." - }, - "range": { - "$ref": "DimensionRange", - "description": "The rows or columns to update." - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated. At least one field must be specified.\nThe root `properties` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", - "type": "string" - } - }, - "id": "UpdateDimensionPropertiesRequest" - }, - "SourceAndDestination": { - "description": "A combination of a source range and how to extend that source.", - "type": "object", - "properties": { - "fillLength": { - "format": "int32", - "description": "The number of rows or columns that data should be filled into.\nPositive numbers expand beyond the last row or last column\nof the source. Negative numbers expand before the first row\nor first column of the source.", - "type": "integer" - }, - "source": { - "description": "The location of the data to use as the source of the autofill.", - "$ref": "GridRange" - }, - "dimension": { - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ], - "description": "The dimension that data should be filled into.", - "type": "string", - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ] - } - }, - "id": "SourceAndDestination" - }, - "OrgChartSpec": { - "type": "object", - "properties": { - "nodeColor": { - "$ref": "Color", - "description": "The color of the org chart nodes." - }, - "tooltips": { - "description": "The data containing the tooltip for the corresponding node. A blank value\nresults in no tooltip being displayed for the node.\nThis field is optional.", - "$ref": "ChartData" - }, - "selectedNodeColor": { - "description": "The color of the selected org chart nodes.", - "$ref": "Color" - }, - "parentLabels": { - "$ref": "ChartData", - "description": "The data containing the label of the parent for the corresponding node.\nA blank value indicates that the node has no parent and is a top-level\nnode.\nThis field is optional." - }, - "nodeSize": { - "enumDescriptions": [ - "Default value, do not use.", - "The small org chart node size.", - "The medium org chart node size.", - "The large org chart node size." - ], - "enum": [ - "ORG_CHART_LABEL_SIZE_UNSPECIFIED", - "SMALL", - "MEDIUM", - "LARGE" - ], - "description": "The size of the org chart nodes.", - "type": "string" - }, - "labels": { - "description": "The data containing the labels for all the nodes in the chart. Labels\nmust be unique.", - "$ref": "ChartData" - } - }, - "id": "OrgChartSpec", - "description": "An \u003ca href=\"/chart/interactive/docs/gallery/orgchart\"\u003eorg chart\u003c/a\u003e.\nOrg charts require a unique set of labels in labels and may\noptionally include parent_labels and tooltips.\nparent_labels contain, for each node, the label identifying the parent\nnode. tooltips contain, for each node, an optional tooltip.\n\nFor example, to describe an OrgChart with Alice as the CEO, Bob as the\nPresident (reporting to Alice) and Cathy as VP of Sales (also reporting to\nAlice), have labels contain \"Alice\", \"Bob\", \"Cathy\",\nparent_labels contain \"\", \"Alice\", \"Alice\" and tooltips contain\n\"CEO\", \"President\", \"VP Sales\"." - }, - "FilterView": { - "description": "A filter view.", - "type": "object", - "properties": { - "filterViewId": { - "format": "int32", - "description": "The ID of the filter view.", - "type": "integer" - }, - "range": { - "$ref": "GridRange", - "description": "The range this filter view covers.\n\nWhen writing, only one of range or named_range_id\nmay be set." - }, - "criteria": { - "type": "object", - "additionalProperties": { - "$ref": "FilterCriteria" - }, - "description": "The criteria for showing/hiding values per column.\nThe map's key is the column index, and the value is the criteria for\nthat column." - }, - "title": { - "description": "The name of the filter view.", - "type": "string" - }, - "sortSpecs": { - "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", - "items": { - "$ref": "SortSpec" - }, - "type": "array" - }, - "namedRangeId": { - "description": "The named range this filter view is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.", - "type": "string" - } - }, - "id": "FilterView" - }, - "BandingProperties": { - "description": "Properties referring a single dimension (either row or column). If both\nBandedRange.row_properties and BandedRange.column_properties are\nset, the fill colors are applied to cells according to the following rules:\n\n* header_color and footer_color take priority over band colors.\n* first_band_color takes priority over second_band_color.\n* row_properties takes priority over column_properties.\n\nFor example, the first row color takes priority over the first column\ncolor, but the first column color takes priority over the second row color.\nSimilarly, the row header takes priority over the column header in the\ntop left cell, but the column header takes priority over the first row\ncolor if the row header is not set.", - "type": "object", - "properties": { - "footerColor": { - "$ref": "Color", - "description": "The color of the last row or column. If this field is not set, the last\nrow or column will be filled with either first_band_color or\nsecond_band_color, depending on the color of the previous row or\ncolumn." - }, - "headerColor": { - "$ref": "Color", - "description": "The color of the first row or column. If this field is set, the first\nrow or column will be filled with this color and the colors will\nalternate between first_band_color and second_band_color starting\nfrom the second row or column. Otherwise, the first row or column will be\nfilled with first_band_color and the colors will proceed to alternate\nas they normally would." - }, - "firstBandColor": { - "$ref": "Color", - "description": "The first color that is alternating. (Required)" - }, - "secondBandColor": { - "$ref": "Color", - "description": "The second color that is alternating. (Required)" - } - }, - "id": "BandingProperties" - }, - "CandlestickSeries": { - "properties": { - "data": { - "$ref": "ChartData", - "description": "The data of the CandlestickSeries." - } - }, - "id": "CandlestickSeries", - "description": "The series of a CandlestickData.", - "type": "object" - }, - "BasicFilter": { - "description": "The default filter associated with a sheet.", - "type": "object", - "properties": { - "criteria": { - "description": "The criteria for showing/hiding values per column.\nThe map's key is the column index, and the value is the criteria for\nthat column.", - "type": "object", - "additionalProperties": { - "$ref": "FilterCriteria" - } - }, - "range": { - "$ref": "GridRange", - "description": "The range the filter covers." - }, - "sortSpecs": { - "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", - "items": { - "$ref": "SortSpec" - }, - "type": "array" - } - }, - "id": "BasicFilter" - }, - "AddProtectedRangeResponse": { - "properties": { - "protectedRange": { - "$ref": "ProtectedRange", - "description": "The newly added protected range." - } - }, - "id": "AddProtectedRangeResponse", - "description": "The result of adding a new protected range.", - "type": "object" - }, - "HistogramChartSpec": { - "description": "A \u003ca href=\"/chart/interactive/docs/gallery/histogram\"\u003ehistogram chart\u003c/a\u003e.\nA histogram chart groups data items into bins, displaying each bin as a\ncolumn of stacked items. Histograms are used to display the distribution\nof a dataset. Each column of items represents a range into which those\nitems fall. The number of bins can be chosen automatically or specified\nexplicitly.", - "type": "object", - "properties": { - "legendPosition": { - "enum": [ - "HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED", - "BOTTOM_LEGEND", - "LEFT_LEGEND", - "RIGHT_LEGEND", - "TOP_LEGEND", - "NO_LEGEND", - "INSIDE_LEGEND" - ], - "description": "The position of the chart legend.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "The legend is rendered on the bottom of the chart.", - "The legend is rendered on the left of the chart.", - "The legend is rendered on the right of the chart.", - "The legend is rendered on the top of the chart.", - "No legend is rendered.", - "The legend is rendered inside the chart area." - ] - }, - "bucketSize": { - "format": "double", - "description": "By default the bucket size (the range of values stacked in a single\ncolumn) is chosen automatically, but it may be overridden here.\nE.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.\nCannot be negative.\nThis field is optional.", - "type": "number" - }, - "outlierPercentile": { - "format": "double", - "description": "The outlier percentile is used to ensure that outliers do not adversely\naffect the calculation of bucket sizes. For example, setting an outlier\npercentile of 0.05 indicates that the top and bottom 5% of values when\ncalculating buckets. The values are still included in the chart, they will\nbe added to the first or last buckets instead of their own buckets.\nMust be between 0.0 and 0.5.", - "type": "number" - }, - "showItemDividers": { - "description": "Whether horizontal divider lines should be displayed between items in each\ncolumn.", - "type": "boolean" - }, - "series": { - "description": "The series for a histogram may be either a single series of values to be\nbucketed or multiple series, each of the same length, containing the name\nof the series followed by the values to be bucketed for that series.", - "items": { - "$ref": "HistogramSeries" - }, - "type": "array" - } - }, - "id": "HistogramChartSpec" - }, - "UpdateValuesResponse": { - "id": "UpdateValuesResponse", - "description": "The response when updating a range of values in a spreadsheet.", - "type": "object", - "properties": { - "spreadsheetId": { - "description": "The spreadsheet the updates were applied to.", - "type": "string" - }, - "updatedRange": { - "description": "The range (in A1 notation) that updates were applied to.", - "type": "string" - }, - "updatedCells": { - "format": "int32", - "description": "The number of cells updated.", - "type": "integer" - }, - "updatedData": { - "$ref": "ValueRange", - "description": "The values of the cells after updates were applied.\nThis is only included if the request's `includeValuesInResponse` field\nwas `true`." - }, - "updatedRows": { - "format": "int32", - "description": "The number of rows where at least one cell in the row was updated.", - "type": "integer" - }, - "updatedColumns": { - "format": "int32", - "description": "The number of columns where at least one cell in the column was updated.", - "type": "integer" - } - } - }, - "ErrorValue": { - "description": "An error in a cell.", - "type": "object", - "properties": { - "type": { - "enumDescriptions": [ - "The default error type, do not use this.", - "Corresponds to the `#ERROR!` error.", - "Corresponds to the `#NULL!` error.", - "Corresponds to the `#DIV/0` error.", - "Corresponds to the `#VALUE!` error.", - "Corresponds to the `#REF!` error.", - "Corresponds to the `#NAME?` error.", - "Corresponds to the `#NUM`! error.", - "Corresponds to the `#N/A` error.", - "Corresponds to the `Loading...` state." - ], - "enum": [ - "ERROR_TYPE_UNSPECIFIED", - "ERROR", - "NULL_VALUE", - "DIVIDE_BY_ZERO", - "VALUE", - "REF", - "NAME", - "NUM", - "N_A", - "LOADING" - ], - "description": "The type of error.", - "type": "string" - }, - "message": { - "description": "A message with more information about the error\n(in the spreadsheet's locale).", - "type": "string" - } - }, - "id": "ErrorValue" - }, - "PivotValue": { - "properties": { - "formula": { - "description": "A custom formula to calculate the value. The formula must start\nwith an `=` character.", - "type": "string" - }, - "summarizeFunction": { - "description": "A function to summarize the value.\nIf formula is set, the only supported values are\nSUM and\nCUSTOM.\nIf sourceColumnOffset is set, then `CUSTOM`\nis not supported.", - "type": "string", - "enumDescriptions": [ - "The default, do not use.", - "Corresponds to the `SUM` function.", - "Corresponds to the `COUNTA` function.", - "Corresponds to the `COUNT` function.", - "Corresponds to the `COUNTUNIQUE` function.", - "Corresponds to the `AVERAGE` function.", - "Corresponds to the `MAX` function.", - "Corresponds to the `MIN` function.", - "Corresponds to the `MEDIAN` function.", - "Corresponds to the `PRODUCT` function.", - "Corresponds to the `STDEV` function.", - "Corresponds to the `STDEVP` function.", - "Corresponds to the `VAR` function.", - "Corresponds to the `VARP` function.", - "Indicates the formula should be used as-is.\nOnly valid if PivotValue.formula was set." - ], - "enum": [ - "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED", - "SUM", - "COUNTA", - "COUNT", - "COUNTUNIQUE", - "AVERAGE", - "MAX", - "MIN", - "MEDIAN", - "PRODUCT", - "STDEV", - "STDEVP", - "VAR", - "VARP", - "CUSTOM" - ] - }, - "sourceColumnOffset": { - "type": "integer", - "format": "int32", - "description": "The column offset of the source range that this value reads from.\n\nFor example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`\nmeans this value refers to column `C`, whereas the offset `1` would\nrefer to column `D`." - }, - "name": { - "description": "A name to use for the value. This is only used if formula was set.\nOtherwise, the column name is used.", - "type": "string" - } - }, - "id": "PivotValue", - "description": "The definition of how a value in a pivot table should be calculated.", - "type": "object" - }, - "CopySheetToAnotherSpreadsheetRequest": { - "description": "The request to copy a sheet across spreadsheets.", - "type": "object", - "properties": { - "destinationSpreadsheetId": { - "description": "The ID of the spreadsheet to copy the sheet to.", - "type": "string" - } - }, - "id": "CopySheetToAnotherSpreadsheetRequest" - }, "PivotGroupSortValueBucket": { "description": "Information about which values in a pivot group should be used for sorting.", "type": "object", @@ -1793,29 +676,30 @@ "id": "CandlestickChartSpec" }, "CandlestickData": { - "id": "CandlestickData", "description": "The Candlestick chart data, each containing the low, open, close, and high\nvalues for a series.", "type": "object", "properties": { - "openSeries": { - "$ref": "CandlestickSeries", - "description": "The range data (vertical axis) for the open/initial value for each\ncandle. This is the bottom of the candle body. If less than the close\nvalue the candle will be filled. Otherwise the candle will be hollow." - }, "highSeries": { - "$ref": "CandlestickSeries", - "description": "The range data (vertical axis) for the high/maximum value for each\ncandle. This is the top of the candle's center line." + "description": "The range data (vertical axis) for the high/maximum value for each\ncandle. This is the top of the candle's center line.", + "$ref": "CandlestickSeries" }, "closeSeries": { - "$ref": "CandlestickSeries", - "description": "The range data (vertical axis) for the close/final value for each candle.\nThis is the top of the candle body. If greater than the open value the\ncandle will be filled. Otherwise the candle will be hollow." + "description": "The range data (vertical axis) for the close/final value for each candle.\nThis is the top of the candle body. If greater than the open value the\ncandle will be filled. Otherwise the candle will be hollow.", + "$ref": "CandlestickSeries" }, "lowSeries": { "description": "The range data (vertical axis) for the low/minimum value for each candle.\nThis is the bottom of the candle's center line.", "$ref": "CandlestickSeries" + }, + "openSeries": { + "description": "The range data (vertical axis) for the open/initial value for each\ncandle. This is the bottom of the candle body. If less than the close\nvalue the candle will be filled. Otherwise the candle will be hollow.", + "$ref": "CandlestickSeries" } - } + }, + "id": "CandlestickData" }, "EmbeddedObjectPosition": { + "description": "The position of an embedded object such as a chart.", "type": "object", "properties": { "newSheet": { @@ -1823,8 +707,8 @@ "type": "boolean" }, "overlayPosition": { - "$ref": "OverlayPosition", - "description": "The position at which the object is overlaid on top of a grid." + "description": "The position at which the object is overlaid on top of a grid.", + "$ref": "OverlayPosition" }, "sheetId": { "format": "int32", @@ -1832,12 +716,9 @@ "type": "integer" } }, - "id": "EmbeddedObjectPosition", - "description": "The position of an embedded object such as a chart." + "id": "EmbeddedObjectPosition" }, "DeleteProtectedRangeRequest": { - "description": "Deletes the protected range with the given ID.", - "type": "object", "properties": { "protectedRangeId": { "format": "int32", @@ -1845,12 +726,11 @@ "type": "integer" } }, - "id": "DeleteProtectedRangeRequest" + "id": "DeleteProtectedRangeRequest", + "description": "Deletes the protected range with the given ID.", + "type": "object" }, "AutoFillRequest": { - "id": "AutoFillRequest", - "description": "Fills in more data based on existing data.", - "type": "object", "properties": { "useAlternateSeries": { "description": "True if we should generate data with the \"alternate\" series.\nThis differs based on the type and amount of source data.", @@ -1861,29 +741,43 @@ "description": "The source and destination areas to autofill.\nThis explicitly lists the source of the autofill and where to\nextend that data." }, "range": { - "$ref": "GridRange", - "description": "The range to autofill. This will examine the range and detect\nthe location that has data and automatically fill that data\nin to the rest of the range." + "description": "The range to autofill. This will examine the range and detect\nthe location that has data and automatically fill that data\nin to the rest of the range.", + "$ref": "GridRange" } - } + }, + "id": "AutoFillRequest", + "description": "Fills in more data based on existing data.", + "type": "object" }, "GradientRule": { - "description": "A rule that applies a gradient color scale format, based on\nthe interpolation points listed. The format of a cell will vary\nbased on its contents as compared to the values of the interpolation\npoints.", - "type": "object", "properties": { "maxpoint": { - "description": "The final interpolation point.", - "$ref": "InterpolationPoint" + "$ref": "InterpolationPoint", + "description": "The final interpolation point." }, "minpoint": { - "description": "The starting interpolation point.", - "$ref": "InterpolationPoint" + "$ref": "InterpolationPoint", + "description": "The starting interpolation point." }, "midpoint": { "$ref": "InterpolationPoint", "description": "An optional midway interpolation point." } }, - "id": "GradientRule" + "id": "GradientRule", + "description": "A rule that applies a gradient color scale format, based on\nthe interpolation points listed. The format of a cell will vary\nbased on its contents as compared to the values of the interpolation\npoints.", + "type": "object" + }, + "SetBasicFilterRequest": { + "description": "Sets the basic filter associated with a sheet.", + "type": "object", + "properties": { + "filter": { + "description": "The filter to set.", + "$ref": "BasicFilter" + } + }, + "id": "SetBasicFilterRequest" }, "ClearValuesRequest": { "description": "The request for clearing a range of values in a spreadsheet.", @@ -1891,23 +785,17 @@ "properties": {}, "id": "ClearValuesRequest" }, - "SetBasicFilterRequest": { - "description": "Sets the basic filter associated with a sheet.", - "type": "object", - "properties": { - "filter": { - "$ref": "BasicFilter", - "description": "The filter to set." - } - }, - "id": "SetBasicFilterRequest" - }, "InterpolationPoint": { + "description": "A single interpolation point on a gradient conditional format.\nThese pin the gradient color scale according to the color,\ntype and value chosen.", "type": "object", "properties": { + "value": { + "description": "The value this interpolation point uses. May be a formula.\nUnused if type is MIN or\nMAX.", + "type": "string" + }, "color": { - "$ref": "Color", - "description": "The color this interpolation point should use." + "description": "The color this interpolation point should use.", + "$ref": "Color" }, "type": { "enum": [ @@ -1928,14 +816,9 @@ "The interpolation point will be the given percentage over\nall the cells in the range of the conditional format.\nThis is equivalent to NUMBER if the value was:\n`=(MAX(FLATTEN(range)) * (value / 100))\n + (MIN(FLATTEN(range)) * (1 - (value / 100)))`\n(where errors in the range are ignored when flattening).", "The interpolation point will be the given percentile\nover all the cells in the range of the conditional format.\nThis is equivalent to NUMBER if the value was:\n`=PERCENTILE(FLATTEN(range), value / 100)`\n(where errors in the range are ignored when flattening)." ] - }, - "value": { - "type": "string", - "description": "The value this interpolation point uses. May be a formula.\nUnused if type is MIN or\nMAX." } }, - "id": "InterpolationPoint", - "description": "A single interpolation point on a gradient conditional format.\nThese pin the gradient color scale according to the color,\ntype and value chosen." + "id": "InterpolationPoint" }, "DeleteEmbeddedObjectRequest": { "properties": { @@ -1950,10 +833,17 @@ "type": "object" }, "FindReplaceResponse": { - "id": "FindReplaceResponse", - "description": "The result of the find/replace.", - "type": "object", "properties": { + "sheetsChanged": { + "format": "int32", + "description": "The number of sheets changed.", + "type": "integer" + }, + "formulasChanged": { + "format": "int32", + "description": "The number of formula cells changed.", + "type": "integer" + }, "valuesChanged": { "format": "int32", "description": "The number of non-formula cells changed.", @@ -1968,18 +858,11 @@ "format": "int32", "description": "The number of rows changed.", "type": "integer" - }, - "sheetsChanged": { - "type": "integer", - "format": "int32", - "description": "The number of sheets changed." - }, - "formulasChanged": { - "format": "int32", - "description": "The number of formula cells changed.", - "type": "integer" } - } + }, + "id": "FindReplaceResponse", + "description": "The result of the find/replace.", + "type": "object" }, "DeleteSheetRequest": { "description": "Deletes the requested sheet.", @@ -2006,18 +889,12 @@ "type": "object" }, "UpdateConditionalFormatRuleResponse": { - "id": "UpdateConditionalFormatRuleResponse", "description": "The result of updating a conditional format rule.", "type": "object", "properties": { - "newIndex": { - "format": "int32", - "description": "The index of the new rule.", - "type": "integer" - }, "newRule": { - "$ref": "ConditionalFormatRule", - "description": "The new rule that replaced the old rule (if replacing),\nor the rule that was moved (if moved)" + "description": "The new rule that replaced the old rule (if replacing),\nor the rule that was moved (if moved)", + "$ref": "ConditionalFormatRule" }, "oldIndex": { "format": "int32", @@ -2027,20 +904,22 @@ "oldRule": { "description": "The old (deleted) rule. Not set if a rule was moved\n(because it is the same as new_rule).", "$ref": "ConditionalFormatRule" + }, + "newIndex": { + "format": "int32", + "description": "The index of the new rule.", + "type": "integer" } - } + }, + "id": "UpdateConditionalFormatRuleResponse" }, "ConditionValue": { - "description": "The value of the condition.", - "type": "object", "properties": { "userEnteredValue": { "description": "A value the condition is based on.\nThe value will be parsed as if the user typed into a cell.\nFormulas are supported (and must begin with an `=`).", "type": "string" }, "relativeDate": { - "description": "A relative date (based on the current date).\nValid only if the type is\nDATE_BEFORE,\nDATE_AFTER,\nDATE_ON_OR_BEFORE or\nDATE_ON_OR_AFTER.\n\nRelative dates are not supported in data validation.\nThey are supported only in conditional formatting and\nconditional filters.", - "type": "string", "enumDescriptions": [ "Default value, do not use.", "The value is one year before today.", @@ -2058,19 +937,17 @@ "YESTERDAY", "TODAY", "TOMORROW" - ] + ], + "description": "A relative date (based on the current date).\nValid only if the type is\nDATE_BEFORE,\nDATE_AFTER,\nDATE_ON_OR_BEFORE or\nDATE_ON_OR_AFTER.\n\nRelative dates are not supported in data validation.\nThey are supported only in conditional formatting and\nconditional filters.", + "type": "string" } }, - "id": "ConditionValue" + "id": "ConditionValue", + "description": "The value of the condition.", + "type": "object" }, "DuplicateSheetRequest": { - "type": "object", "properties": { - "insertSheetIndex": { - "format": "int32", - "description": "The zero-based index where the new sheet should be inserted.\nThe index of all sheets after this are incremented.", - "type": "integer" - }, "newSheetName": { "description": "The name of the new sheet. If empty, a new name is chosen for you.", "type": "string" @@ -2084,18 +961,24 @@ "format": "int32", "description": "If set, the ID of the new sheet. If not set, an ID is chosen.\nIf set, the ID must not conflict with any existing sheet ID.\nIf set, it must be non-negative.", "type": "integer" + }, + "insertSheetIndex": { + "format": "int32", + "description": "The zero-based index where the new sheet should be inserted.\nThe index of all sheets after this are incremented.", + "type": "integer" } }, "id": "DuplicateSheetRequest", - "description": "Duplicates the contents of a sheet." + "description": "Duplicates the contents of a sheet.", + "type": "object" }, "ExtendedValue": { "description": "The kinds of value that a cell in a spreadsheet can have.", "type": "object", "properties": { "errorValue": { - "description": "Represents an error.\nThis field is read-only.", - "$ref": "ErrorValue" + "$ref": "ErrorValue", + "description": "Represents an error.\nThis field is read-only." }, "formulaValue": { "description": "Represents a formula.", @@ -2117,71 +1000,22 @@ }, "id": "ExtendedValue" }, - "BandedRange": { - "description": "A banded (alternating colors) range in a sheet.", + "AddChartRequest": { + "description": "Adds a chart to a sheet in the spreadsheet.", "type": "object", "properties": { - "bandedRangeId": { - "format": "int32", - "description": "The id of the banded range.", - "type": "integer" - }, - "columnProperties": { - "description": "Properties for column bands. These properties will be applied on a column-\nby-column basis throughout all the columns in the range. At least one of\nrow_properties or column_properties must be specified.", - "$ref": "BandingProperties" - }, - "rowProperties": { - "description": "Properties for row bands. These properties will be applied on a row-by-row\nbasis throughout all the rows in the range. At least one of\nrow_properties or column_properties must be specified.", - "$ref": "BandingProperties" - }, - "range": { - "$ref": "GridRange", - "description": "The range over which these properties are applied." + "chart": { + "$ref": "EmbeddedChart", + "description": "The chart that should be added to the spreadsheet, including the position\nwhere it should be placed. The chartId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a chart that already exists.)" } }, - "id": "BandedRange" - }, - "HistogramSeries": { - "properties": { - "barColor": { - "$ref": "Color", - "description": "The color of the column representing this series in each bucket.\nThis field is optional." - }, - "data": { - "description": "The data for this histogram series.", - "$ref": "ChartData" - } - }, - "id": "HistogramSeries", - "description": "A histogram series containing the series color and data.", - "type": "object" - }, - "BatchClearValuesResponse": { - "description": "The response when clearing a range of values in a spreadsheet.", - "type": "object", - "properties": { - "clearedRanges": { - "description": "The ranges that were cleared, in A1 notation.\n(If the requests were for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual ranges\n that were cleared, bounded to the sheet's limits.)", - "items": { - "type": "string" - }, - "type": "array" - }, - "spreadsheetId": { - "description": "The spreadsheet the updates were applied to.", - "type": "string" - } - }, - "id": "BatchClearValuesResponse" + "id": "AddChartRequest" }, "Spreadsheet": { - "id": "Spreadsheet", - "description": "Resource that represents a spreadsheet.", - "type": "object", "properties": { "properties": { - "$ref": "SpreadsheetProperties", - "description": "Overall properties of a spreadsheet." + "description": "Overall properties of a spreadsheet.", + "$ref": "SpreadsheetProperties" }, "namedRanges": { "description": "The named ranges defined in a spreadsheet.", @@ -2205,22 +1039,69 @@ "description": "The url of the spreadsheet.\nThis field is read-only.", "type": "string" } - } + }, + "id": "Spreadsheet", + "description": "Resource that represents a spreadsheet.", + "type": "object" }, - "AddChartRequest": { - "description": "Adds a chart to a sheet in the spreadsheet.", + "BatchClearValuesResponse": { + "description": "The response when clearing a range of values in a spreadsheet.", "type": "object", "properties": { - "chart": { - "description": "The chart that should be added to the spreadsheet, including the position\nwhere it should be placed. The chartId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a chart that already exists.)", - "$ref": "EmbeddedChart" + "clearedRanges": { + "description": "The ranges that were cleared, in A1 notation.\n(If the requests were for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual ranges\n that were cleared, bounded to the sheet's limits.)", + "items": { + "type": "string" + }, + "type": "array" + }, + "spreadsheetId": { + "description": "The spreadsheet the updates were applied to.", + "type": "string" } }, - "id": "AddChartRequest" + "id": "BatchClearValuesResponse" + }, + "HistogramSeries": { + "description": "A histogram series containing the series color and data.", + "type": "object", + "properties": { + "data": { + "description": "The data for this histogram series.", + "$ref": "ChartData" + }, + "barColor": { + "$ref": "Color", + "description": "The color of the column representing this series in each bucket.\nThis field is optional." + } + }, + "id": "HistogramSeries" + }, + "BandedRange": { + "description": "A banded (alternating colors) range in a sheet.", + "type": "object", + "properties": { + "range": { + "description": "The range over which these properties are applied.", + "$ref": "GridRange" + }, + "bandedRangeId": { + "format": "int32", + "description": "The id of the banded range.", + "type": "integer" + }, + "columnProperties": { + "$ref": "BandingProperties", + "description": "Properties for column bands. These properties will be applied on a column-\nby-column basis throughout all the columns in the range. At least one of\nrow_properties or column_properties must be specified." + }, + "rowProperties": { + "description": "Properties for row bands. These properties will be applied on a row-by-row\nbasis throughout all the rows in the range. At least one of\nrow_properties or column_properties must be specified.", + "$ref": "BandingProperties" + } + }, + "id": "BandedRange" }, "UpdateProtectedRangeRequest": { - "description": "Updates an existing protected range with the specified\nprotectedRangeId.", - "type": "object", "properties": { "fields": { "format": "google-fieldmask", @@ -2228,35 +1109,35 @@ "type": "string" }, "protectedRange": { - "$ref": "ProtectedRange", - "description": "The protected range to update with the new properties." + "description": "The protected range to update with the new properties.", + "$ref": "ProtectedRange" } }, - "id": "UpdateProtectedRangeRequest" + "id": "UpdateProtectedRangeRequest", + "description": "Updates an existing protected range with the specified\nprotectedRangeId.", + "type": "object" }, "TextFormat": { - "description": "The format of a run of text in a cell.\nAbsent values indicate that the field isn't specified.", - "type": "object", "properties": { "underline": { "description": "True if the text is underlined.", "type": "boolean" }, - "bold": { - "description": "True if the text is bold.", - "type": "boolean" - }, "foregroundColor": { "description": "The foreground color of the text.", "$ref": "Color" }, + "bold": { + "description": "True if the text is bold.", + "type": "boolean" + }, "fontFamily": { "description": "The font family.", "type": "string" }, "strikethrough": { - "type": "boolean", - "description": "True if the text has a strikethrough." + "description": "True if the text has a strikethrough.", + "type": "boolean" }, "italic": { "description": "True if the text is italicized.", @@ -2268,7 +1149,9 @@ "type": "integer" } }, - "id": "TextFormat" + "id": "TextFormat", + "description": "The format of a run of text in a cell.\nAbsent values indicate that the field isn't specified.", + "type": "object" }, "AddSheetResponse": { "description": "The result of adding a sheet.", @@ -2286,8 +1169,8 @@ "type": "object", "properties": { "filter": { - "description": "The newly added filter view.", - "$ref": "FilterView" + "$ref": "FilterView", + "description": "The newly added filter view." } }, "id": "AddFilterViewResponse" @@ -2309,53 +1192,13 @@ }, "id": "IterativeCalculationSettings" }, - "SpreadsheetProperties": { - "properties": { - "locale": { - "description": "The locale of the spreadsheet in one of the following formats:\n\n* an ISO 639-1 language code such as `en`\n\n* an ISO 639-2 language code such as `fil`, if no 639-1 code exists\n\n* a combination of the ISO language code and country code, such as `en_US`\n\nNote: when updating this field, not all locales/languages are supported.", - "type": "string" - }, - "iterativeCalculationSettings": { - "description": "Determines whether and how circular references are resolved with iterative\ncalculation. Absence of this field means that circular references will\nresult in calculation errors.", - "$ref": "IterativeCalculationSettings" - }, - "autoRecalc": { - "enumDescriptions": [ - "Default value. This value must not be used.", - "Volatile functions are updated on every change.", - "Volatile functions are updated on every change and every minute.", - "Volatile functions are updated on every change and hourly." - ], - "enum": [ - "RECALCULATION_INTERVAL_UNSPECIFIED", - "ON_CHANGE", - "MINUTE", - "HOUR" - ], - "description": "The amount of time to wait before volatile functions are recalculated.", - "type": "string" - }, - "defaultFormat": { - "description": "The default format of all cells in the spreadsheet.\nCellData.effectiveFormat will not be set if the\ncell's format is equal to this default format.\nThis field is read-only.", - "$ref": "CellFormat" - }, - "title": { - "type": "string", - "description": "The title of the spreadsheet." - }, - "timeZone": { - "description": "The time zone of the spreadsheet, in CLDR format such as\n`America/New_York`. If the time zone isn't recognized, this may\nbe a custom time zone such as `GMT-07:00`.", - "type": "string" - } - }, - "id": "SpreadsheetProperties", - "description": "Properties of a spreadsheet.", - "type": "object" - }, "OverlayPosition": { - "description": "The location an object is overlaid on top of a grid.", - "type": "object", "properties": { + "widthPixels": { + "format": "int32", + "description": "The width of the object, in pixels. Defaults to 600.", + "type": "integer" + }, "offsetXPixels": { "format": "int32", "description": "The horizontal offset, in pixels, that the object is offset\nfrom the anchor cell.", @@ -2374,42 +1217,82 @@ "format": "int32", "description": "The vertical offset, in pixels, that the object is offset\nfrom the anchor cell.", "type": "integer" - }, - "widthPixels": { - "format": "int32", - "description": "The width of the object, in pixels. Defaults to 600.", - "type": "integer" } }, - "id": "OverlayPosition" + "id": "OverlayPosition", + "description": "The location an object is overlaid on top of a grid.", + "type": "object" + }, + "SpreadsheetProperties": { + "properties": { + "locale": { + "description": "The locale of the spreadsheet in one of the following formats:\n\n* an ISO 639-1 language code such as `en`\n\n* an ISO 639-2 language code such as `fil`, if no 639-1 code exists\n\n* a combination of the ISO language code and country code, such as `en_US`\n\nNote: when updating this field, not all locales/languages are supported.", + "type": "string" + }, + "iterativeCalculationSettings": { + "description": "Determines whether and how circular references are resolved with iterative\ncalculation. Absence of this field means that circular references will\nresult in calculation errors.", + "$ref": "IterativeCalculationSettings" + }, + "autoRecalc": { + "enum": [ + "RECALCULATION_INTERVAL_UNSPECIFIED", + "ON_CHANGE", + "MINUTE", + "HOUR" + ], + "description": "The amount of time to wait before volatile functions are recalculated.", + "type": "string", + "enumDescriptions": [ + "Default value. This value must not be used.", + "Volatile functions are updated on every change.", + "Volatile functions are updated on every change and every minute.", + "Volatile functions are updated on every change and hourly." + ] + }, + "defaultFormat": { + "description": "The default format of all cells in the spreadsheet.\nCellData.effectiveFormat will not be set if the\ncell's format is equal to this default format.\nThis field is read-only.", + "$ref": "CellFormat" + }, + "title": { + "description": "The title of the spreadsheet.", + "type": "string" + }, + "timeZone": { + "description": "The time zone of the spreadsheet, in CLDR format such as\n`America/New_York`. If the time zone isn't recognized, this may\nbe a custom time zone such as `GMT-07:00`.", + "type": "string" + } + }, + "id": "SpreadsheetProperties", + "description": "Properties of a spreadsheet.", + "type": "object" }, "RepeatCellRequest": { + "description": "Updates all cells in the range to the values in the given Cell object.\nOnly the fields listed in the fields field are updated; others are\nunchanged.\n\nIf writing a cell with a formula, the formula's ranges will automatically\nincrement for each field in the range.\nFor example, if writing a cell with formula `=A1` into range B2:C4,\nB2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,\nC2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.\n\nTo keep the formula's ranges static, use the `$` indicator.\nFor example, use the formula `=$A$1` to prevent both the row and the\ncolumn from incrementing.", + "type": "object", "properties": { - "range": { - "$ref": "GridRange", - "description": "The range to repeat the cell in." - }, "fields": { "format": "google-fieldmask", "description": "The fields that should be updated. At least one field must be specified.\nThe root `cell` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", "type": "string" }, "cell": { - "description": "The data to write.", - "$ref": "CellData" + "$ref": "CellData", + "description": "The data to write." + }, + "range": { + "description": "The range to repeat the cell in.", + "$ref": "GridRange" } }, - "id": "RepeatCellRequest", - "description": "Updates all cells in the range to the values in the given Cell object.\nOnly the fields listed in the fields field are updated; others are\nunchanged.\n\nIf writing a cell with a formula, the formula's ranges will automatically\nincrement for each field in the range.\nFor example, if writing a cell with formula `=A1` into range B2:C4,\nB2 would be `=A1`, B3 would be `=A2`, B4 would be `=A3`,\nC2 would be `=B1`, C3 would be `=B2`, C4 would be `=B3`.\n\nTo keep the formula's ranges static, use the `$` indicator.\nFor example, use the formula `=$A$1` to prevent both the row and the\ncolumn from incrementing.", - "type": "object" + "id": "RepeatCellRequest" }, "AddChartResponse": { "description": "The result of adding a chart to a spreadsheet.", "type": "object", "properties": { "chart": { - "$ref": "EmbeddedChart", - "description": "The newly added chart." + "description": "The newly added chart.", + "$ref": "EmbeddedChart" } }, "id": "AddChartResponse" @@ -2423,18 +1306,17 @@ "description": "The dimensions to insert. Both the start and end indexes must be bounded." }, "inheritFromBefore": { - "type": "boolean", - "description": "Whether dimension properties should be extended from the dimensions\nbefore or after the newly inserted dimensions.\nTrue to inherit from the dimensions before (in which case the start\nindex must be greater than 0), and false to inherit from the dimensions\nafter.\n\nFor example, if row index 0 has red background and row index 1\nhas a green background, then inserting 2 rows at index 1 can inherit\neither the green or red background. If `inheritFromBefore` is true,\nthe two new rows will be red (because the row before the insertion point\nwas red), whereas if `inheritFromBefore` is false, the two new rows will\nbe green (because the row after the insertion point was green)." + "description": "Whether dimension properties should be extended from the dimensions\nbefore or after the newly inserted dimensions.\nTrue to inherit from the dimensions before (in which case the start\nindex must be greater than 0), and false to inherit from the dimensions\nafter.\n\nFor example, if row index 0 has red background and row index 1\nhas a green background, then inserting 2 rows at index 1 can inherit\neither the green or red background. If `inheritFromBefore` is true,\nthe two new rows will be red (because the row before the insertion point\nwas red), whereas if `inheritFromBefore` is false, the two new rows will\nbe green (because the row after the insertion point was green).", + "type": "boolean" } }, "id": "InsertDimensionRequest" }, "UpdateSpreadsheetPropertiesRequest": { - "type": "object", "properties": { "properties": { - "description": "The properties to update.", - "$ref": "SpreadsheetProperties" + "$ref": "SpreadsheetProperties", + "description": "The properties to update." }, "fields": { "format": "google-fieldmask", @@ -2443,13 +1325,29 @@ } }, "id": "UpdateSpreadsheetPropertiesRequest", - "description": "Updates properties of a spreadsheet." + "description": "Updates properties of a spreadsheet.", + "type": "object" }, "ProtectedRange": { - "id": "ProtectedRange", "description": "A protected range.", "type": "object", "properties": { + "requestingUserCanEdit": { + "description": "True if the user who requested this protected range can edit the\nprotected area.\nThis field is read-only.", + "type": "boolean" + }, + "editors": { + "$ref": "Editors", + "description": "The users and groups with edit access to the protected range.\nThis field is only visible to users with edit access to the protected\nrange and the document.\nEditors are not supported with warning_only protection." + }, + "range": { + "description": "The range that is being protected.\nThe range may be fully unbounded, in which case this is considered\na protected sheet.\n\nWhen writing, only one of range or named_range_id\nmay be set.", + "$ref": "GridRange" + }, + "description": { + "description": "The description of this protected range.", + "type": "string" + }, "unprotectedRanges": { "description": "The list of unprotected ranges within a protected sheet.\nUnprotected ranges are only supported on protected sheets.", "items": { @@ -2467,35 +1365,14 @@ "type": "integer" }, "warningOnly": { - "type": "boolean", - "description": "True if this protected range will show a warning when editing.\nWarning-based protection means that every user can edit data in the\nprotected range, except editing will prompt a warning asking the user\nto confirm the edit.\n\nWhen writing: if this field is true, then editors is ignored.\nAdditionally, if this field is changed from true to false and the\n`editors` field is not set (nor included in the field mask), then\nthe editors will be set to all the editors in the document." - }, - "requestingUserCanEdit": { - "description": "True if the user who requested this protected range can edit the\nprotected area.\nThis field is read-only.", + "description": "True if this protected range will show a warning when editing.\nWarning-based protection means that every user can edit data in the\nprotected range, except editing will prompt a warning asking the user\nto confirm the edit.\n\nWhen writing: if this field is true, then editors is ignored.\nAdditionally, if this field is changed from true to false and the\n`editors` field is not set (nor included in the field mask), then\nthe editors will be set to all the editors in the document.", "type": "boolean" - }, - "range": { - "description": "The range that is being protected.\nThe range may be fully unbounded, in which case this is considered\na protected sheet.\n\nWhen writing, only one of range or named_range_id\nmay be set.", - "$ref": "GridRange" - }, - "editors": { - "description": "The users and groups with edit access to the protected range.\nThis field is only visible to users with edit access to the protected\nrange and the document.\nEditors are not supported with warning_only protection.", - "$ref": "Editors" - }, - "description": { - "type": "string", - "description": "The description of this protected range." } - } + }, + "id": "ProtectedRange" }, "BatchUpdateValuesRequest": { - "description": "The request for updating more than one range of values in a spreadsheet.", - "type": "object", "properties": { - "includeValuesInResponse": { - "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values. The `updatedData` field within\neach of the BatchUpdateValuesResponse.responses will contain\nthe updated values. If the range to write was larger than than the range\nactually written, the response will include all values in the requested\nrange (excluding trailing empty rows and columns).", - "type": "boolean" - }, "data": { "description": "The new values to apply to the spreadsheet.", "items": { @@ -2504,8 +1381,6 @@ "type": "array" }, "valueInputOption": { - "description": "How the input data should be interpreted.", - "type": "string", "enumDescriptions": [ "Default input value. This value must not be used.", "The values the user has entered will not be parsed and will be stored\nas-is.", @@ -2515,11 +1390,11 @@ "INPUT_VALUE_OPTION_UNSPECIFIED", "RAW", "USER_ENTERED" - ] + ], + "description": "How the input data should be interpreted.", + "type": "string" }, "responseDateTimeRenderOption": { - "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is\nDateTimeRenderOption.SERIAL_NUMBER.", - "type": "string", "enumDescriptions": [ "Instructs date, time, datetime, and duration fields to be output\nas doubles in \"serial number\" format, as popularized by Lotus 1-2-3.\nThe whole number portion of the value (left of the decimal) counts\nthe days since December 30th 1899. The fractional portion (right of\nthe decimal) counts the time as a fraction of the day. For example,\nJanuary 1st 1900 at noon would be 2.5, 2 because it's 2 days after\nDecember 30st 1899, and .5 because noon is half a day. February 1st\n1900 at 3pm would be 33.625. This correctly treats the year 1900 as\nnot a leap year.", "Instructs date, time, datetime, and duration fields to be output\nas strings in their given number format (which is dependent\non the spreadsheet locale)." @@ -2527,24 +1402,32 @@ "enum": [ "SERIAL_NUMBER", "FORMATTED_STRING" - ] + ], + "description": "Determines how dates, times, and durations in the response should be\nrendered. This is ignored if response_value_render_option is\nFORMATTED_VALUE.\nThe default dateTime render option is\nDateTimeRenderOption.SERIAL_NUMBER.", + "type": "string" }, "responseValueRenderOption": { - "type": "string", - "enumDescriptions": [ - "Values will be calculated & formatted in the reply according to the\ncell's formatting. Formatting is based on the spreadsheet's locale,\nnot the requesting user's locale.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen `A2` would return `\"$1.23\"`.", - "Values will be calculated, but not formatted in the reply.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen `A2` would return the number `1.23`.", - "Values will not be calculated. The reply will include the formulas.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen A2 would return `\"=A1\"`." - ], "enum": [ "FORMATTED_VALUE", "UNFORMATTED_VALUE", "FORMULA" ], - "description": "Determines how values in the response should be rendered.\nThe default render option is ValueRenderOption.FORMATTED_VALUE." + "description": "Determines how values in the response should be rendered.\nThe default render option is ValueRenderOption.FORMATTED_VALUE.", + "type": "string", + "enumDescriptions": [ + "Values will be calculated & formatted in the reply according to the\ncell's formatting. Formatting is based on the spreadsheet's locale,\nnot the requesting user's locale.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen `A2` would return `\"$1.23\"`.", + "Values will be calculated, but not formatted in the reply.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen `A2` would return the number `1.23`.", + "Values will not be calculated. The reply will include the formulas.\nFor example, if `A1` is `1.23` and `A2` is `=A1` and formatted as currency,\nthen A2 would return `\"=A1\"`." + ] + }, + "includeValuesInResponse": { + "description": "Determines if the update response should include the values\nof the cells that were updated. By default, responses\ndo not include the updated values. The `updatedData` field within\neach of the BatchUpdateValuesResponse.responses will contain\nthe updated values. If the range to write was larger than than the range\nactually written, the response will include all values in the requested\nrange (excluding trailing empty rows and columns).", + "type": "boolean" } }, - "id": "BatchUpdateValuesRequest" + "id": "BatchUpdateValuesRequest", + "description": "The request for updating more than one range of values in a spreadsheet.", + "type": "object" }, "DimensionProperties": { "description": "Properties about a dimension.", @@ -2566,42 +1449,6 @@ }, "id": "DimensionProperties" }, - "DimensionRange": { - "type": "object", - "properties": { - "endIndex": { - "format": "int32", - "description": "The end (exclusive) of the span, or not set if unbounded.", - "type": "integer" - }, - "startIndex": { - "format": "int32", - "description": "The start (inclusive) of the span, or not set if unbounded.", - "type": "integer" - }, - "sheetId": { - "format": "int32", - "description": "The sheet this span is on.", - "type": "integer" - }, - "dimension": { - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ], - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ], - "description": "The dimension of the span.", - "type": "string" - } - }, - "id": "DimensionRange", - "description": "A range along a single dimension on a sheet.\nAll indexes are zero-based.\nIndexes are half open: the start index is inclusive\nand the end index is exclusive.\nMissing indexes indicate the range is unbounded on that side." - }, "NamedRange": { "description": "A named range.", "type": "object", @@ -2615,19 +1462,51 @@ "type": "string" }, "range": { - "$ref": "GridRange", - "description": "The range this represents." + "description": "The range this represents.", + "$ref": "GridRange" } }, "id": "NamedRange" }, - "CutPasteRequest": { - "id": "CutPasteRequest", - "description": "Moves data from the source to the destination.", + "DimensionRange": { + "description": "A range along a single dimension on a sheet.\nAll indexes are zero-based.\nIndexes are half open: the start index is inclusive\nand the end index is exclusive.\nMissing indexes indicate the range is unbounded on that side.", "type": "object", "properties": { - "pasteType": { + "sheetId": { + "format": "int32", + "description": "The sheet this span is on.", + "type": "integer" + }, + "dimension": { + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The dimension of the span.", "type": "string", + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ] + }, + "endIndex": { + "format": "int32", + "description": "The end (exclusive) of the span, or not set if unbounded.", + "type": "integer" + }, + "startIndex": { + "format": "int32", + "description": "The start (inclusive) of the span, or not set if unbounded.", + "type": "integer" + } + }, + "id": "DimensionRange" + }, + "CutPasteRequest": { + "properties": { + "pasteType": { "enumDescriptions": [ "Paste values, formulas, formats, and merges.", "Paste the values ONLY without formats, formulas, or merges.", @@ -2646,25 +1525,50 @@ "PASTE_DATA_VALIDATION", "PASTE_CONDITIONAL_FORMATTING" ], - "description": "What kind of data to paste. All the source data will be cut, regardless\nof what is pasted." + "description": "What kind of data to paste. All the source data will be cut, regardless\nof what is pasted.", + "type": "string" }, "source": { "$ref": "GridRange", "description": "The source data to cut." }, "destination": { - "description": "The top-left coordinate where the data should be pasted.", - "$ref": "GridCoordinate" + "$ref": "GridCoordinate", + "description": "The top-left coordinate where the data should be pasted." } - } + }, + "id": "CutPasteRequest", + "description": "Moves data from the source to the destination.", + "type": "object" + }, + "Borders": { + "properties": { + "right": { + "description": "The right border of the cell.", + "$ref": "Border" + }, + "bottom": { + "$ref": "Border", + "description": "The bottom border of the cell." + }, + "top": { + "description": "The top border of the cell.", + "$ref": "Border" + }, + "left": { + "$ref": "Border", + "description": "The left border of the cell." + } + }, + "id": "Borders", + "description": "The borders of the cell.", + "type": "object" }, "BasicChartSeries": { "description": "A single series of data in a chart.\nFor example, if charting stock prices over time, multiple series may exist,\none for the \"Open Price\", \"High Price\", \"Low Price\" and \"Close Price\".", "type": "object", "properties": { "type": { - "description": "The type of this series. Valid only if the\nchartType is\nCOMBO.\nDifferent types will change the way the series is visualized.\nOnly LINE, AREA,\nand COLUMN are supported.", - "type": "string", "enumDescriptions": [ "Default value, do not use.", "A \u003ca href=\"/chart/interactive/docs/gallery/barchart\"\u003ebar chart\u003c/a\u003e.", @@ -2684,19 +1588,15 @@ "SCATTER", "COMBO", "STEPPED_AREA" - ] + ], + "description": "The type of this series. Valid only if the\nchartType is\nCOMBO.\nDifferent types will change the way the series is visualized.\nOnly LINE, AREA,\nand COLUMN are supported.", + "type": "string" }, "series": { - "$ref": "ChartData", - "description": "The data being visualized in this chart series." + "description": "The data being visualized in this chart series.", + "$ref": "ChartData" }, "targetAxis": { - "enumDescriptions": [ - "Default value, do not use.", - "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.", - "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.", - "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis." - ], "enum": [ "BASIC_CHART_AXIS_POSITION_UNSPECIFIED", "BOTTOM_AXIS", @@ -2704,39 +1604,22 @@ "RIGHT_AXIS" ], "description": "The minor axis that will specify the range of values for this series.\nFor example, if charting stocks over time, the \"Volume\" series\nmay want to be pinned to the right with the prices pinned to the left,\nbecause the scale of trading volume is different than the scale of\nprices.\nIt is an error to specify an axis that isn't a valid minor axis\nfor the chart's type.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.", + "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.", + "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis." + ] } }, "id": "BasicChartSeries" }, - "Borders": { - "id": "Borders", - "description": "The borders of the cell.", - "type": "object", - "properties": { - "bottom": { - "$ref": "Border", - "description": "The bottom border of the cell." - }, - "top": { - "$ref": "Border", - "description": "The top border of the cell." - }, - "left": { - "description": "The left border of the cell.", - "$ref": "Border" - }, - "right": { - "$ref": "Border", - "description": "The right border of the cell." - } - } - }, "AutoResizeDimensionsRequest": { "properties": { "dimensions": { - "$ref": "DimensionRange", - "description": "The dimensions to automatically resize." + "description": "The dimensions to automatically resize.", + "$ref": "DimensionRange" } }, "id": "AutoResizeDimensionsRequest", @@ -2752,28 +1635,28 @@ "description": "The border to put at the bottom of the range." }, "innerVertical": { - "$ref": "Border", - "description": "The vertical border to put within the range." + "description": "The vertical border to put within the range.", + "$ref": "Border" }, "right": { "description": "The border to put at the right of the range.", "$ref": "Border" }, "range": { - "$ref": "GridRange", - "description": "The range whose borders should be updated." + "description": "The range whose borders should be updated.", + "$ref": "GridRange" }, "innerHorizontal": { "$ref": "Border", "description": "The horizontal border to put within the range." }, "top": { - "$ref": "Border", - "description": "The border to put at the top of the range." + "description": "The border to put at the top of the range.", + "$ref": "Border" }, "left": { - "description": "The border to put at the left of the range.", - "$ref": "Border" + "$ref": "Border", + "description": "The border to put at the left of the range." } }, "id": "UpdateBordersRequest" @@ -2782,9 +1665,89 @@ "description": "The format of a cell.", "type": "object", "properties": { + "numberFormat": { + "description": "A format describing how number values should be represented to the user.", + "$ref": "NumberFormat" + }, + "horizontalAlignment": { + "enum": [ + "HORIZONTAL_ALIGN_UNSPECIFIED", + "LEFT", + "CENTER", + "RIGHT" + ], + "description": "The horizontal alignment of the value in the cell.", + "type": "string", + "enumDescriptions": [ + "The horizontal alignment is not specified. Do not use this.", + "The text is explicitly aligned to the left of the cell.", + "The text is explicitly aligned to the center of the cell.", + "The text is explicitly aligned to the right of the cell." + ] + }, + "hyperlinkDisplayType": { + "enum": [ + "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED", + "LINKED", + "PLAIN_TEXT" + ], + "description": "How a hyperlink, if it exists, should be displayed in the cell.", + "type": "string", + "enumDescriptions": [ + "The default value: the hyperlink is rendered. Do not use this.", + "A hyperlink should be explicitly rendered.", + "A hyperlink should not be rendered." + ] + }, + "textFormat": { + "description": "The format of the text in the cell (unless overridden by a format run).", + "$ref": "TextFormat" + }, + "backgroundColor": { + "$ref": "Color", + "description": "The background color of the cell." + }, + "verticalAlignment": { + "enumDescriptions": [ + "The vertical alignment is not specified. Do not use this.", + "The text is explicitly aligned to the top of the cell.", + "The text is explicitly aligned to the middle of the cell.", + "The text is explicitly aligned to the bottom of the cell." + ], + "enum": [ + "VERTICAL_ALIGN_UNSPECIFIED", + "TOP", + "MIDDLE", + "BOTTOM" + ], + "description": "The vertical alignment of the value in the cell.", + "type": "string" + }, + "padding": { + "description": "The padding of the cell.", + "$ref": "Padding" + }, + "borders": { + "description": "The borders of the cell.", + "$ref": "Borders" + }, + "textDirection": { + "enum": [ + "TEXT_DIRECTION_UNSPECIFIED", + "LEFT_TO_RIGHT", + "RIGHT_TO_LEFT" + ], + "description": "The direction of the text in the cell.", + "type": "string", + "enumDescriptions": [ + "The text direction is not specified. Do not use this.", + "The text direction of left-to-right was set by the user.", + "The text direction of right-to-left was set by the user." + ] + }, "textRotation": { - "$ref": "TextRotation", - "description": "The rotation applied to text in a cell" + "description": "The rotation applied to text in a cell", + "$ref": "TextRotation" }, "wrapStrategy": { "enum": [ @@ -2803,96 +1766,15 @@ "Lines that are longer than the cell width will be clipped.\nThe text will never wrap to the next line unless the user manually\ninserts a new line.\nExample:\n\n | First sentence. |\n | Manual newline t| \u003c- Text is clipped\n | Next newline. |", "Words that are longer than a line are wrapped at the character level\nrather than clipped.\nExample:\n\n | Cell has a |\n | loooooooooo| \u003c- Word is broken.\n | ong word. |" ] - }, - "numberFormat": { - "$ref": "NumberFormat", - "description": "A format describing how number values should be represented to the user." - }, - "hyperlinkDisplayType": { - "description": "How a hyperlink, if it exists, should be displayed in the cell.", - "type": "string", - "enumDescriptions": [ - "The default value: the hyperlink is rendered. Do not use this.", - "A hyperlink should be explicitly rendered.", - "A hyperlink should not be rendered." - ], - "enum": [ - "HYPERLINK_DISPLAY_TYPE_UNSPECIFIED", - "LINKED", - "PLAIN_TEXT" - ] - }, - "horizontalAlignment": { - "enum": [ - "HORIZONTAL_ALIGN_UNSPECIFIED", - "LEFT", - "CENTER", - "RIGHT" - ], - "description": "The horizontal alignment of the value in the cell.", - "type": "string", - "enumDescriptions": [ - "The horizontal alignment is not specified. Do not use this.", - "The text is explicitly aligned to the left of the cell.", - "The text is explicitly aligned to the center of the cell.", - "The text is explicitly aligned to the right of the cell." - ] - }, - "textFormat": { - "description": "The format of the text in the cell (unless overridden by a format run).", - "$ref": "TextFormat" - }, - "backgroundColor": { - "description": "The background color of the cell.", - "$ref": "Color" - }, - "verticalAlignment": { - "type": "string", - "enumDescriptions": [ - "The vertical alignment is not specified. Do not use this.", - "The text is explicitly aligned to the top of the cell.", - "The text is explicitly aligned to the middle of the cell.", - "The text is explicitly aligned to the bottom of the cell." - ], - "enum": [ - "VERTICAL_ALIGN_UNSPECIFIED", - "TOP", - "MIDDLE", - "BOTTOM" - ], - "description": "The vertical alignment of the value in the cell." - }, - "padding": { - "$ref": "Padding", - "description": "The padding of the cell." - }, - "textDirection": { - "enumDescriptions": [ - "The text direction is not specified. Do not use this.", - "The text direction of left-to-right was set by the user.", - "The text direction of right-to-left was set by the user." - ], - "enum": [ - "TEXT_DIRECTION_UNSPECIFIED", - "LEFT_TO_RIGHT", - "RIGHT_TO_LEFT" - ], - "description": "The direction of the text in the cell.", - "type": "string" - }, - "borders": { - "$ref": "Borders", - "description": "The borders of the cell." } }, "id": "CellFormat" }, "ClearValuesResponse": { - "type": "object", "properties": { "spreadsheetId": { - "type": "string", - "description": "The spreadsheet the updates were applied to." + "description": "The spreadsheet the updates were applied to.", + "type": "string" }, "clearedRange": { "description": "The range (in A1 notation) that was cleared.\n(If the request was for an unbounded range or a ranger larger\n than the bounds of the sheet, this will be the actual range\n that was cleared, bounded to the sheet's limits.)", @@ -2900,24 +1782,36 @@ } }, "id": "ClearValuesResponse", - "description": "The response when clearing a range of values in a spreadsheet." + "description": "The response when clearing a range of values in a spreadsheet.", + "type": "object" }, "DeleteConditionalFormatRuleRequest": { - "description": "Deletes a conditional format rule at the given index.\nAll subsequent rules' indexes are decremented.", - "type": "object", "properties": { + "index": { + "format": "int32", + "description": "The zero-based index of the rule to be deleted.", + "type": "integer" + }, "sheetId": { "format": "int32", "description": "The sheet the rule is being deleted from.", "type": "integer" - }, - "index": { - "type": "integer", - "format": "int32", - "description": "The zero-based index of the rule to be deleted." } }, - "id": "DeleteConditionalFormatRuleRequest" + "id": "DeleteConditionalFormatRuleRequest", + "description": "Deletes a conditional format rule at the given index.\nAll subsequent rules' indexes are decremented.", + "type": "object" + }, + "AddBandingResponse": { + "properties": { + "bandedRange": { + "description": "The banded range that was added.", + "$ref": "BandedRange" + } + }, + "id": "AddBandingResponse", + "description": "The result of adding a banded range.", + "type": "object" }, "DeleteNamedRangeRequest": { "description": "Removes the named range with the given ID from the spreadsheet.", @@ -2930,45 +1824,34 @@ }, "id": "DeleteNamedRangeRequest" }, - "AddBandingResponse": { - "id": "AddBandingResponse", - "description": "The result of adding a banded range.", - "type": "object", - "properties": { - "bandedRange": { - "description": "The banded range that was added.", - "$ref": "BandedRange" - } - } - }, "ChartData": { - "id": "ChartData", - "description": "The data included in a domain or series.", - "type": "object", "properties": { "sourceRange": { - "$ref": "ChartSourceRange", - "description": "The source ranges of the data." + "description": "The source ranges of the data.", + "$ref": "ChartSourceRange" } - } + }, + "id": "ChartData", + "description": "The data included in a domain or series.", + "type": "object" }, "BatchGetValuesResponse": { - "description": "The response when retrieving more than one range of values in a spreadsheet.", - "type": "object", "properties": { + "spreadsheetId": { + "description": "The ID of the spreadsheet the data was retrieved from.", + "type": "string" + }, "valueRanges": { "description": "The requested values. The order of the ValueRanges is the same as the\norder of the requested ranges.", "items": { "$ref": "ValueRange" }, "type": "array" - }, - "spreadsheetId": { - "description": "The ID of the spreadsheet the data was retrieved from.", - "type": "string" } }, - "id": "BatchGetValuesResponse" + "id": "BatchGetValuesResponse", + "description": "The response when retrieving more than one range of values in a spreadsheet.", + "type": "object" }, "UpdateBandingRequest": { "description": "Updates properties of the supplied banded range.", @@ -2987,7 +1870,6 @@ "id": "UpdateBandingRequest" }, "Color": { - "id": "Color", "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n import com.google.type.Color;\n\n // ...\n public static java.awt.Color fromProto(Color protocolor) {\n float alpha = protocolor.hasAlpha()\n ? protocolor.getAlpha().getValue()\n : 1.0;\n\n return new java.awt.Color(\n protocolor.getRed(),\n protocolor.getGreen(),\n protocolor.getBlue(),\n alpha);\n }\n\n public static Color toProto(java.awt.Color color) {\n float red = (float) color.getRed();\n float green = (float) color.getGreen();\n float blue = (float) color.getBlue();\n float denominator = 255.0;\n Color.Builder resultBuilder =\n Color\n .newBuilder()\n .setRed(red / denominator)\n .setGreen(green / denominator)\n .setBlue(blue / denominator);\n int alpha = color.getAlpha();\n if (alpha != 255) {\n result.setAlpha(\n FloatValue\n .newBuilder()\n .setValue(((float) alpha) / denominator)\n .build());\n }\n return resultBuilder.build();\n }\n // ...\n\nExample (iOS / Obj-C):\n\n // ...\n static UIColor* fromProto(Color* protocolor) {\n float red = [protocolor red];\n float green = [protocolor green];\n float blue = [protocolor blue];\n FloatValue* alpha_wrapper = [protocolor alpha];\n float alpha = 1.0;\n if (alpha_wrapper != nil) {\n alpha = [alpha_wrapper value];\n }\n return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n }\n\n static Color* toProto(UIColor* color) {\n CGFloat red, green, blue, alpha;\n if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n return nil;\n }\n Color* result = [Color alloc] init];\n [result setRed:red];\n [result setGreen:green];\n [result setBlue:blue];\n if (alpha \u003c= 0.9999) {\n [result setAlpha:floatWrapperWithValue(alpha)];\n }\n [result autorelease];\n return result;\n }\n // ...\n\n Example (JavaScript):\n\n // ...\n\n var protoToCssColor = function(rgb_color) {\n var redFrac = rgb_color.red || 0.0;\n var greenFrac = rgb_color.green || 0.0;\n var blueFrac = rgb_color.blue || 0.0;\n var red = Math.floor(redFrac * 255);\n var green = Math.floor(greenFrac * 255);\n var blue = Math.floor(blueFrac * 255);\n\n if (!('alpha' in rgb_color)) {\n return rgbToCssColor_(red, green, blue);\n }\n\n var alphaFrac = rgb_color.alpha.value || 0.0;\n var rgbParams = [red, green, blue].join(',');\n return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n };\n\n var rgbToCssColor_ = function(red, green, blue) {\n var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue);\n var hexString = rgbNumber.toString(16);\n var missingZeros = 6 - hexString.length;\n var resultBuilder = ['#'];\n for (var i = 0; i \u003c missingZeros; i++) {\n resultBuilder.push('0');\n }\n resultBuilder.push(hexString);\n return resultBuilder.join('');\n };\n\n // ...", "type": "object", "properties": { @@ -3011,30 +1893,11 @@ "description": "The amount of green in the color as a value in the interval [0, 1].", "type": "number" } - } + }, + "id": "Color" }, "PivotGroup": { - "description": "A single grouping (either row or column) in a pivot table.", - "type": "object", "properties": { - "sortOrder": { - "type": "string", - "enumDescriptions": [ - "Default value, do not use this.", - "Sort ascending.", - "Sort descending." - ], - "enum": [ - "SORT_ORDER_UNSPECIFIED", - "ASCENDING", - "DESCENDING" - ], - "description": "The order the values in this group should be sorted." - }, - "valueBucket": { - "description": "The bucket of the opposite pivot group to sort by.\nIf not specified, sorting is alphabetical by this group's values.", - "$ref": "PivotGroupSortValueBucket" - }, "valueMetadata": { "description": "Metadata about values in the grouping.", "items": { @@ -3050,45 +1913,45 @@ "format": "int32", "description": "The column offset of the source range that this grouping is based on.\n\nFor example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`\nmeans this group refers to column `C`, whereas the offset `1` would refer\nto column `D`.", "type": "integer" + }, + "sortOrder": { + "enum": [ + "SORT_ORDER_UNSPECIFIED", + "ASCENDING", + "DESCENDING" + ], + "description": "The order the values in this group should be sorted.", + "type": "string", + "enumDescriptions": [ + "Default value, do not use this.", + "Sort ascending.", + "Sort descending." + ] + }, + "valueBucket": { + "description": "The bucket of the opposite pivot group to sort by.\nIf not specified, sorting is alphabetical by this group's values.", + "$ref": "PivotGroupSortValueBucket" } }, - "id": "PivotGroup" + "id": "PivotGroup", + "description": "A single grouping (either row or column) in a pivot table.", + "type": "object" }, "PivotTable": { - "description": "A pivot table.", - "type": "object", "properties": { - "columns": { - "description": "Each column grouping in the pivot table.", - "items": { - "$ref": "PivotGroup" - }, - "type": "array" - }, - "values": { - "description": "A list of values to include in the pivot table.", - "items": { - "$ref": "PivotValue" - }, - "type": "array" - }, - "source": { - "$ref": "GridRange", - "description": "The range the pivot table is reading data from." - }, "criteria": { - "description": "An optional mapping of filters per source column offset.\n\nThe filters will be applied before aggregating data into the pivot table.\nThe map's key is the column offset of the source range that you want to\nfilter, and the value is the criteria for that column.\n\nFor example, if the source was `C10:E15`, a key of `0` will have the filter\nfor column `C`, whereas the key `1` is for column `D`.", - "type": "object", "additionalProperties": { "$ref": "PivotFilterCriteria" - } + }, + "description": "An optional mapping of filters per source column offset.\n\nThe filters will be applied before aggregating data into the pivot table.\nThe map's key is the column offset of the source range that you want to\nfilter, and the value is the criteria for that column.\n\nFor example, if the source was `C10:E15`, a key of `0` will have the filter\nfor column `C`, whereas the key `1` is for column `D`.", + "type": "object" }, "rows": { + "description": "Each row grouping in the pivot table.", "items": { "$ref": "PivotGroup" }, - "type": "array", - "description": "Each row grouping in the pivot table." + "type": "array" }, "valueLayout": { "enumDescriptions": [ @@ -3101,9 +1964,29 @@ ], "description": "Whether values should be listed horizontally (as columns)\nor vertically (as rows).", "type": "string" + }, + "values": { + "description": "A list of values to include in the pivot table.", + "items": { + "$ref": "PivotValue" + }, + "type": "array" + }, + "source": { + "$ref": "GridRange", + "description": "The range the pivot table is reading data from." + }, + "columns": { + "description": "Each column grouping in the pivot table.", + "items": { + "$ref": "PivotGroup" + }, + "type": "array" } }, - "id": "PivotTable" + "id": "PivotTable", + "description": "A pivot table.", + "type": "object" }, "ChartSourceRange": { "description": "Source ranges for a chart.", @@ -3119,6 +2002,41 @@ }, "id": "ChartSourceRange" }, + "ValueRange": { + "properties": { + "values": { + "description": "The data that was read or to be written. This is an array of arrays,\nthe outer array representing all the data and each inner array\nrepresenting a major dimension. Each item in the inner array\ncorresponds with one cell.\n\nFor output, empty trailing rows and columns will not be included.\n\nFor input, supported value types are: bool, string, and double.\nNull values will be skipped.\nTo set a cell to an empty value, set the string value to an empty string.", + "items": { + "items": { + "type": "any" + }, + "type": "array" + }, + "type": "array" + }, + "majorDimension": { + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ], + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The major dimension of the values.\n\nFor output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.\n\nFor input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`\nwill set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`\nthen `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.\n\nWhen writing, if this field is not set, it defaults to ROWS.", + "type": "string" + }, + "range": { + "description": "The range the values cover, in A1 notation.\nFor output, this range indicates the entire requested range,\neven though the values will exclude trailing rows and columns.\nWhen appending values, this field represents the range to search for a\ntable, after which values will be appended.", + "type": "string" + } + }, + "id": "ValueRange", + "description": "Data within a range of the spreadsheet.", + "type": "object" + }, "AppendCellsRequest": { "properties": { "fields": { @@ -3143,76 +2061,38 @@ "description": "Adds new cells after the last row with data in a sheet,\ninserting new rows into the sheet if necessary.", "type": "object" }, - "ValueRange": { - "description": "Data within a range of the spreadsheet.", - "type": "object", - "properties": { - "range": { - "description": "The range the values cover, in A1 notation.\nFor output, this range indicates the entire requested range,\neven though the values will exclude trailing rows and columns.\nWhen appending values, this field represents the range to search for a\ntable, after which values will be appended.", - "type": "string" - }, - "values": { - "description": "The data that was read or to be written. This is an array of arrays,\nthe outer array representing all the data and each inner array\nrepresenting a major dimension. Each item in the inner array\ncorresponds with one cell.\n\nFor output, empty trailing rows and columns will not be included.\n\nFor input, supported value types are: bool, string, and double.\nNull values will be skipped.\nTo set a cell to an empty value, set the string value to an empty string.", - "items": { - "items": { - "type": "any" - }, - "type": "array" - }, - "type": "array" - }, - "majorDimension": { - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ], - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ], - "description": "The major dimension of the values.\n\nFor output, if the spreadsheet data is: `A1=1,B1=2,A2=3,B2=4`,\nthen requesting `range=A1:B2,majorDimension=ROWS` will return\n`[[1,2],[3,4]]`,\nwhereas requesting `range=A1:B2,majorDimension=COLUMNS` will return\n`[[1,3],[2,4]]`.\n\nFor input, with `range=A1:B2,majorDimension=ROWS` then `[[1,2],[3,4]]`\nwill set `A1=1,B1=2,A2=3,B2=4`. With `range=A1:B2,majorDimension=COLUMNS`\nthen `[[1,2],[3,4]]` will set `A1=1,B1=3,A2=2,B2=4`.\n\nWhen writing, if this field is not set, it defaults to ROWS.", - "type": "string" - } - }, - "id": "ValueRange" - }, "AddBandingRequest": { - "id": "AddBandingRequest", - "description": "Adds a new banded range to the spreadsheet.", - "type": "object", "properties": { "bandedRange": { - "description": "The banded range to add. The bandedRangeId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a range that already exists.)", - "$ref": "BandedRange" + "$ref": "BandedRange", + "description": "The banded range to add. The bandedRangeId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a range that already exists.)" } - } + }, + "id": "AddBandingRequest", + "description": "Adds a new banded range to the spreadsheet.", + "type": "object" }, "Response": { - "id": "Response", - "description": "A single response from an update.", - "type": "object", "properties": { "addFilterView": { - "description": "A reply from adding a filter view.", - "$ref": "AddFilterViewResponse" + "$ref": "AddFilterViewResponse", + "description": "A reply from adding a filter view." }, "addBanding": { - "$ref": "AddBandingResponse", - "description": "A reply from adding a banded range." + "description": "A reply from adding a banded range.", + "$ref": "AddBandingResponse" }, "addProtectedRange": { "description": "A reply from adding a protected range.", "$ref": "AddProtectedRangeResponse" }, "duplicateSheet": { - "$ref": "DuplicateSheetResponse", - "description": "A reply from duplicating a sheet." + "description": "A reply from duplicating a sheet.", + "$ref": "DuplicateSheetResponse" }, "updateEmbeddedObjectPosition": { - "$ref": "UpdateEmbeddedObjectPositionResponse", - "description": "A reply from updating an embedded object's position." + "description": "A reply from updating an embedded object's position.", + "$ref": "UpdateEmbeddedObjectPositionResponse" }, "deleteConditionalFormatRule": { "description": "A reply from deleting a conditional format rule.", @@ -3231,47 +2111,43 @@ "description": "A reply from doing a find/replace." }, "addSheet": { - "$ref": "AddSheetResponse", - "description": "A reply from adding a sheet." + "description": "A reply from adding a sheet.", + "$ref": "AddSheetResponse" }, "updateConditionalFormatRule": { - "$ref": "UpdateConditionalFormatRuleResponse", - "description": "A reply from updating a conditional format rule." + "description": "A reply from updating a conditional format rule.", + "$ref": "UpdateConditionalFormatRuleResponse" }, "addNamedRange": { "description": "A reply from adding a named range.", "$ref": "AddNamedRangeResponse" } - } + }, + "id": "Response", + "description": "A single response from an update.", + "type": "object" }, - "InsertRangeRequest": { - "description": "Inserts cells into a range, shifting the existing cells over or down.", + "EmbeddedChart": { + "description": "A chart embedded in a sheet.", "type": "object", "properties": { - "shiftDimension": { - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ], - "enum": [ - "DIMENSION_UNSPECIFIED", - "ROWS", - "COLUMNS" - ], - "description": "The dimension which will be shifted when inserting cells.\nIf ROWS, existing cells will be shifted down.\nIf COLUMNS, existing cells will be shifted right.", - "type": "string" + "chartId": { + "format": "int32", + "description": "The ID of the chart.", + "type": "integer" }, - "range": { - "$ref": "GridRange", - "description": "The range to insert new cells into." + "position": { + "description": "The position of the chart.", + "$ref": "EmbeddedObjectPosition" + }, + "spec": { + "description": "The specification of the chart.", + "$ref": "ChartSpec" } }, - "id": "InsertRangeRequest" + "id": "EmbeddedChart" }, "TextFormatRun": { - "description": "A run of a text format. The format of this run continues until the start\nindex of the next run.\nWhen updating, all fields must be set.", - "type": "object", "properties": { "startIndex": { "format": "int32", @@ -3279,59 +2155,113 @@ "type": "integer" }, "format": { - "$ref": "TextFormat", - "description": "The format of this run. Absent values inherit the cell's format." + "description": "The format of this run. Absent values inherit the cell's format.", + "$ref": "TextFormat" } }, - "id": "TextFormatRun" + "id": "TextFormatRun", + "description": "A run of a text format. The format of this run continues until the start\nindex of the next run.\nWhen updating, all fields must be set.", + "type": "object" }, - "EmbeddedChart": { - "description": "A chart embedded in a sheet.", - "type": "object", + "InsertRangeRequest": { "properties": { - "position": { - "description": "The position of the chart.", - "$ref": "EmbeddedObjectPosition" + "shiftDimension": { + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The dimension which will be shifted when inserting cells.\nIf ROWS, existing cells will be shifted down.\nIf COLUMNS, existing cells will be shifted right.", + "type": "string", + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ] }, - "spec": { - "$ref": "ChartSpec", - "description": "The specification of the chart." - }, - "chartId": { - "format": "int32", - "description": "The ID of the chart.", - "type": "integer" + "range": { + "description": "The range to insert new cells into.", + "$ref": "GridRange" } }, - "id": "EmbeddedChart" + "id": "InsertRangeRequest", + "description": "Inserts cells into a range, shifting the existing cells over or down.", + "type": "object" }, "AddNamedRangeResponse": { "description": "The result of adding a named range.", "type": "object", "properties": { "namedRange": { - "$ref": "NamedRange", - "description": "The named range to add." + "description": "The named range to add.", + "$ref": "NamedRange" } }, "id": "AddNamedRangeResponse" }, "RowData": { - "description": "Data about each cell in a row.", - "type": "object", "properties": { "values": { + "description": "The values in the row, one per column.", "items": { "$ref": "CellData" }, - "type": "array", - "description": "The values in the row, one per column." + "type": "array" } }, - "id": "RowData" + "id": "RowData", + "description": "Data about each cell in a row.", + "type": "object" + }, + "Border": { + "properties": { + "color": { + "$ref": "Color", + "description": "The color of the border." + }, + "width": { + "format": "int32", + "description": "The width of the border, in pixels.\nDeprecated; the width is determined by the \"style\" field.", + "type": "integer" + }, + "style": { + "enumDescriptions": [ + "The style is not specified. Do not use this.", + "The border is dotted.", + "The border is dashed.", + "The border is a thin solid line.", + "The border is a medium solid line.", + "The border is a thick solid line.", + "No border.\nUsed only when updating a border in order to erase it.", + "The border is two solid lines." + ], + "enum": [ + "STYLE_UNSPECIFIED", + "DOTTED", + "DASHED", + "SOLID", + "SOLID_MEDIUM", + "SOLID_THICK", + "NONE", + "DOUBLE" + ], + "description": "The style of the border.", + "type": "string" + } + }, + "id": "Border", + "description": "A border along a cell.", + "type": "object" }, "GridData": { "properties": { + "rowData": { + "description": "The data in the grid, one entry per row,\nstarting with the row in startRow.\nThe values in RowData will correspond to columns starting\nat start_column.", + "items": { + "$ref": "RowData" + }, + "type": "array" + }, "startRow": { "format": "int32", "description": "The first row this GridData refers to, zero-based.", @@ -3355,78 +2285,39 @@ "$ref": "DimensionProperties" }, "type": "array" - }, - "rowData": { - "description": "The data in the grid, one entry per row,\nstarting with the row in startRow.\nThe values in RowData will correspond to columns starting\nat start_column.", - "items": { - "$ref": "RowData" - }, - "type": "array" } }, "id": "GridData", "description": "Data in the grid, as well as metadata about the dimensions.", "type": "object" }, - "Border": { - "description": "A border along a cell.", + "UpdateNamedRangeRequest": { + "description": "Updates properties of the named range with the specified\nnamedRangeId.", "type": "object", "properties": { - "color": { - "$ref": "Color", - "description": "The color of the border." + "namedRange": { + "$ref": "NamedRange", + "description": "The named range to update with the new properties." }, - "width": { - "format": "int32", - "description": "The width of the border, in pixels.\nDeprecated; the width is determined by the \"style\" field.", - "type": "integer" - }, - "style": { - "type": "string", - "enumDescriptions": [ - "The style is not specified. Do not use this.", - "The border is dotted.", - "The border is dashed.", - "The border is a thin solid line.", - "The border is a medium solid line.", - "The border is a thick solid line.", - "No border.\nUsed only when updating a border in order to erase it.", - "The border is two solid lines." - ], - "enum": [ - "STYLE_UNSPECIFIED", - "DOTTED", - "DASHED", - "SOLID", - "SOLID_MEDIUM", - "SOLID_THICK", - "NONE", - "DOUBLE" - ], - "description": "The style of the border." + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated. At least one field must be specified.\nThe root `namedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", + "type": "string" } }, - "id": "Border" + "id": "UpdateNamedRangeRequest" }, "FindReplaceRequest": { "description": "Finds and replaces data in cells over a range, sheet, or all sheets.", "type": "object", "properties": { - "searchByRegex": { - "description": "True if the find value is a regex.\nThe regular expression and replacement should follow Java regex rules\nat https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.\nThe replacement string is allowed to refer to capturing groups.\nFor example, if one cell has the contents `\"Google Sheets\"` and another\nhas `\"Google Docs\"`, then searching for `\"o.* (.*)\"` with a replacement of\n`\"$1 Rocks\"` would change the contents of the cells to\n`\"GSheets Rocks\"` and `\"GDocs Rocks\"` respectively.", - "type": "boolean" - }, - "find": { - "description": "The value to search.", - "type": "string" - }, "replacement": { "description": "The value to use as the replacement.", "type": "string" }, "range": { - "$ref": "GridRange", - "description": "The range to find/replace over." + "description": "The range to find/replace over.", + "$ref": "GridRange" }, "sheetId": { "format": "int32", @@ -3448,40 +2339,30 @@ "matchEntireCell": { "description": "True if the find value should match the entire cell.", "type": "boolean" + }, + "searchByRegex": { + "description": "True if the find value is a regex.\nThe regular expression and replacement should follow Java regex rules\nat https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.\nThe replacement string is allowed to refer to capturing groups.\nFor example, if one cell has the contents `\"Google Sheets\"` and another\nhas `\"Google Docs\"`, then searching for `\"o.* (.*)\"` with a replacement of\n`\"$1 Rocks\"` would change the contents of the cells to\n`\"GSheets Rocks\"` and `\"GDocs Rocks\"` respectively.", + "type": "boolean" + }, + "find": { + "description": "The value to search.", + "type": "string" } }, "id": "FindReplaceRequest" }, - "UpdateNamedRangeRequest": { - "id": "UpdateNamedRangeRequest", - "description": "Updates properties of the named range with the specified\nnamedRangeId.", - "type": "object", - "properties": { - "namedRange": { - "$ref": "NamedRange", - "description": "The named range to update with the new properties." - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated. At least one field must be specified.\nThe root `namedRange` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", - "type": "string" - } - } - }, "AddSheetRequest": { - "description": "Adds a new sheet.\nWhen a sheet is added at a given index,\nall subsequent sheets' indexes are incremented.\nTo add an object sheet, use AddChartRequest instead and specify\nEmbeddedObjectPosition.sheetId or\nEmbeddedObjectPosition.newSheet.", - "type": "object", "properties": { "properties": { - "$ref": "SheetProperties", - "description": "The properties the new sheet should have.\nAll properties are optional.\nThe sheetId field is optional; if one is not\nset, an id will be randomly generated. (It is an error to specify the ID\nof a sheet that already exists.)" + "description": "The properties the new sheet should have.\nAll properties are optional.\nThe sheetId field is optional; if one is not\nset, an id will be randomly generated. (It is an error to specify the ID\nof a sheet that already exists.)", + "$ref": "SheetProperties" } }, - "id": "AddSheetRequest" + "id": "AddSheetRequest", + "description": "Adds a new sheet.\nWhen a sheet is added at a given index,\nall subsequent sheets' indexes are incremented.\nTo add an object sheet, use AddChartRequest instead and specify\nEmbeddedObjectPosition.sheetId or\nEmbeddedObjectPosition.newSheet.", + "type": "object" }, "UpdateCellsRequest": { - "description": "Updates all cells in a range with new data.", - "type": "object", "properties": { "start": { "$ref": "GridCoordinate", @@ -3504,58 +2385,58 @@ "type": "array" } }, - "id": "UpdateCellsRequest" - }, - "DeleteConditionalFormatRuleResponse": { - "description": "The result of deleting a conditional format rule.", - "type": "object", - "properties": { - "rule": { - "description": "The rule that was deleted.", - "$ref": "ConditionalFormatRule" - } - }, - "id": "DeleteConditionalFormatRuleResponse" + "id": "UpdateCellsRequest", + "description": "Updates all cells in a range with new data.", + "type": "object" }, "RandomizeRangeRequest": { "description": "Randomizes the order of the rows in a range.", "type": "object", "properties": { "range": { - "$ref": "GridRange", - "description": "The range to randomize." + "description": "The range to randomize.", + "$ref": "GridRange" } }, "id": "RandomizeRangeRequest" }, + "DeleteConditionalFormatRuleResponse": { + "properties": { + "rule": { + "description": "The rule that was deleted.", + "$ref": "ConditionalFormatRule" + } + }, + "id": "DeleteConditionalFormatRuleResponse", + "description": "The result of deleting a conditional format rule.", + "type": "object" + }, "DeleteRangeRequest": { - "type": "object", "properties": { "shiftDimension": { - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ], "enum": [ "DIMENSION_UNSPECIFIED", "ROWS", "COLUMNS" ], "description": "The dimension from which deleted cells will be replaced with.\nIf ROWS, existing cells will be shifted upward to\nreplace the deleted cells. If COLUMNS, existing cells\nwill be shifted left to replace the deleted cells.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ] }, "range": { - "$ref": "GridRange", - "description": "The range of cells to delete." + "description": "The range of cells to delete.", + "$ref": "GridRange" } }, "id": "DeleteRangeRequest", - "description": "Deletes a range of cells, shifting other cells into the deleted area." + "description": "Deletes a range of cells, shifting other cells into the deleted area.", + "type": "object" }, "GridCoordinate": { - "description": "A coordinate in a sheet.\nAll indexes are zero-based.", - "type": "object", "properties": { "sheetId": { "format": "int32", @@ -3573,23 +2454,25 @@ "type": "integer" } }, - "id": "GridCoordinate" + "id": "GridCoordinate", + "description": "A coordinate in a sheet.\nAll indexes are zero-based.", + "type": "object" }, "UpdateSheetPropertiesRequest": { + "description": "Updates properties of the sheet with the specified\nsheetId.", "type": "object", "properties": { + "properties": { + "description": "The properties to update.", + "$ref": "SheetProperties" + }, "fields": { "format": "google-fieldmask", "description": "The fields that should be updated. At least one field must be specified.\nThe root `properties` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", "type": "string" - }, - "properties": { - "$ref": "SheetProperties", - "description": "The properties to update." } }, - "id": "UpdateSheetPropertiesRequest", - "description": "Updates properties of the sheet with the specified\nsheetId." + "id": "UpdateSheetPropertiesRequest" }, "UnmergeCellsRequest": { "description": "Unmerges cells in the given range.", @@ -3603,8 +2486,6 @@ "id": "UnmergeCellsRequest" }, "GridProperties": { - "description": "Properties of a grid.", - "type": "object", "properties": { "rowCount": { "format": "int32", @@ -3631,16 +2512,43 @@ "type": "integer" } }, - "id": "GridProperties" + "id": "GridProperties", + "description": "Properties of a grid.", + "type": "object" }, "Sheet": { "description": "A sheet in a spreadsheet.", "type": "object", "properties": { - "conditionalFormats": { - "description": "The conditional format rules in this sheet.", + "data": { + "description": "Data in the grid, if this is a grid sheet.\nThe number of GridData objects returned is dependent on the number of\nranges requested on this sheet. For example, if this is representing\n`Sheet1`, and the spreadsheet was requested with ranges\n`Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a\nstartRow/startColumn of `0`,\nwhile the second one will have `startRow 14` (zero-based row 15),\nand `startColumn 3` (zero-based column D).", "items": { - "$ref": "ConditionalFormatRule" + "$ref": "GridData" + }, + "type": "array" + }, + "bandedRanges": { + "description": "The banded (i.e. alternating colors) ranges on this sheet.", + "items": { + "$ref": "BandedRange" + }, + "type": "array" + }, + "charts": { + "description": "The specifications of every chart on this sheet.", + "items": { + "$ref": "EmbeddedChart" + }, + "type": "array" + }, + "properties": { + "$ref": "SheetProperties", + "description": "The properties of the sheet." + }, + "filterViews": { + "description": "The filter views in this sheet.", + "items": { + "$ref": "FilterView" }, "type": "array" }, @@ -3651,6 +2559,13 @@ }, "type": "array" }, + "conditionalFormats": { + "description": "The conditional format rules in this sheet.", + "items": { + "$ref": "ConditionalFormatRule" + }, + "type": "array" + }, "basicFilter": { "$ref": "BasicFilter", "description": "The filter on this sheet, if any." @@ -3661,38 +2576,6 @@ "$ref": "GridRange" }, "type": "array" - }, - "data": { - "description": "Data in the grid, if this is a grid sheet.\nThe number of GridData objects returned is dependent on the number of\nranges requested on this sheet. For example, if this is representing\n`Sheet1`, and the spreadsheet was requested with ranges\n`Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a\nstartRow/startColumn of `0`,\nwhile the second one will have `startRow 14` (zero-based row 15),\nand `startColumn 3` (zero-based column D).", - "items": { - "$ref": "GridData" - }, - "type": "array" - }, - "bandedRanges": { - "items": { - "$ref": "BandedRange" - }, - "type": "array", - "description": "The banded (i.e. alternating colors) ranges on this sheet." - }, - "properties": { - "$ref": "SheetProperties", - "description": "The properties of the sheet." - }, - "charts": { - "items": { - "$ref": "EmbeddedChart" - }, - "type": "array", - "description": "The specifications of every chart on this sheet." - }, - "filterViews": { - "description": "The filter views in this sheet.", - "items": { - "$ref": "FilterView" - }, - "type": "array" } }, "id": "Sheet" @@ -3707,47 +2590,47 @@ "type": "integer" }, "sortOrder": { + "enum": [ + "SORT_ORDER_UNSPECIFIED", + "ASCENDING", + "DESCENDING" + ], "description": "The order data should be sorted.", "type": "string", "enumDescriptions": [ "Default value, do not use this.", "Sort ascending.", "Sort descending." - ], - "enum": [ - "SORT_ORDER_UNSPECIFIED", - "ASCENDING", - "DESCENDING" ] } }, "id": "SortSpec" }, "UpdateEmbeddedObjectPositionResponse": { - "description": "The result of updating an embedded object's position.", - "type": "object", "properties": { "position": { - "description": "The new position of the embedded object.", - "$ref": "EmbeddedObjectPosition" + "$ref": "EmbeddedObjectPosition", + "description": "The new position of the embedded object." } }, - "id": "UpdateEmbeddedObjectPositionResponse" + "id": "UpdateEmbeddedObjectPositionResponse", + "description": "The result of updating an embedded object's position.", + "type": "object" }, "BooleanRule": { - "description": "A rule that may or may not match, depending on the condition.", - "type": "object", "properties": { - "format": { - "$ref": "CellFormat", - "description": "The format to apply.\nConditional formatting can only apply a subset of formatting:\nbold, italic,\nstrikethrough,\nforeground color &\nbackground color." - }, "condition": { - "$ref": "BooleanCondition", - "description": "The condition of the rule. If the condition evaluates to true,\nthe format will be applied." + "description": "The condition of the rule. If the condition evaluates to true,\nthe format will be applied.", + "$ref": "BooleanCondition" + }, + "format": { + "description": "The format to apply.\nConditional formatting can only apply a subset of formatting:\nbold, italic,\nstrikethrough,\nforeground color &\nbackground color.", + "$ref": "CellFormat" } }, - "id": "BooleanRule" + "id": "BooleanRule", + "description": "A rule that may or may not match, depending on the condition.", + "type": "object" }, "FilterCriteria": { "description": "Criteria for showing/hiding rows in a filter or filter view.", @@ -3768,11 +2651,10 @@ "id": "FilterCriteria" }, "PivotGroupValueMetadata": { - "type": "object", "properties": { "value": { - "description": "The calculated value the metadata corresponds to.\n(Note that formulaValue is not valid,\n because the values will be calculated.)", - "$ref": "ExtendedValue" + "$ref": "ExtendedValue", + "description": "The calculated value the metadata corresponds to.\n(Note that formulaValue is not valid,\n because the values will be calculated.)" }, "collapsed": { "description": "True if the data corresponding to the value is collapsed.", @@ -3780,22 +2662,21 @@ } }, "id": "PivotGroupValueMetadata", - "description": "Metadata about a value in a pivot grouping." + "description": "Metadata about a value in a pivot grouping.", + "type": "object" }, "Editors": { - "description": "The editors of a protected range.", - "type": "object", "properties": { "users": { + "description": "The email addresses of users with edit access to the protected range.", "items": { "type": "string" }, - "type": "array", - "description": "The email addresses of users with edit access to the protected range." + "type": "array" }, "domainUsersCanEdit": { - "type": "boolean", - "description": "True if anyone in the document's domain has edit access to the protected\nrange. Domain protection is only supported on documents within a domain." + "description": "True if anyone in the document's domain has edit access to the protected\nrange. Domain protection is only supported on documents within a domain.", + "type": "boolean" }, "groups": { "description": "The email addresses of groups with edit access to the protected range.", @@ -3805,16 +2686,15 @@ "type": "array" } }, - "id": "Editors" + "id": "Editors", + "description": "The editors of a protected range.", + "type": "object" }, "UpdateConditionalFormatRuleRequest": { - "id": "UpdateConditionalFormatRuleRequest", - "description": "Updates a conditional format rule at the given index,\nor moves a conditional format rule to another index.", - "type": "object", "properties": { "rule": { - "$ref": "ConditionalFormatRule", - "description": "The rule that should replace the rule at the given index." + "description": "The rule that should replace the rule at the given index.", + "$ref": "ConditionalFormatRule" }, "index": { "format": "int32", @@ -3822,22 +2702,28 @@ "type": "integer" }, "sheetId": { - "type": "integer", "format": "int32", - "description": "The sheet of the rule to move. Required if new_index is set,\nunused otherwise." + "description": "The sheet of the rule to move. Required if new_index is set,\nunused otherwise.", + "type": "integer" }, "newIndex": { "format": "int32", "description": "The zero-based new index the rule should end up at.", "type": "integer" } - } + }, + "id": "UpdateConditionalFormatRuleRequest", + "description": "Updates a conditional format rule at the given index,\nor moves a conditional format rule to another index.", + "type": "object" }, "DataValidationRule": { - "id": "DataValidationRule", "description": "A data validation rule.", "type": "object", "properties": { + "condition": { + "$ref": "BooleanCondition", + "description": "The condition that data in the cell must match." + }, "showCustomUi": { "description": "True if the UI should be customized based on the kind of condition.\nIf true, \"List\" conditions will show a dropdown.", "type": "boolean" @@ -3849,32 +2735,35 @@ "inputMessage": { "description": "A message to show the user when adding data to the cell.", "type": "string" - }, - "condition": { - "$ref": "BooleanCondition", - "description": "The condition that data in the cell must match." } - } + }, + "id": "DataValidationRule" }, "BasicChartDomain": { "description": "The domain of a chart.\nFor example, if charting stock prices over time, this would be the date.", "type": "object", "properties": { + "domain": { + "description": "The data of the domain. For example, if charting stock prices over time,\nthis is the data representing the dates.", + "$ref": "ChartData" + }, "reversed": { "description": "True to reverse the order of the domain values (horizontal axis).", "type": "boolean" - }, - "domain": { - "$ref": "ChartData", - "description": "The data of the domain. For example, if charting stock prices over time,\nthis is the data representing the dates." } }, "id": "BasicChartDomain" }, "PasteDataRequest": { - "description": "Inserts data into the spreadsheet starting at the specified coordinate.", - "type": "object", "properties": { + "delimiter": { + "description": "The delimiter in the data.", + "type": "string" + }, + "data": { + "description": "The data to insert.", + "type": "string" + }, "type": { "enum": [ "PASTE_NORMAL", @@ -3904,17 +2793,11 @@ "coordinate": { "description": "The coordinate at which the data should start being inserted.", "$ref": "GridCoordinate" - }, - "delimiter": { - "description": "The delimiter in the data.", - "type": "string" - }, - "data": { - "description": "The data to insert.", - "type": "string" } }, - "id": "PasteDataRequest" + "id": "PasteDataRequest", + "description": "Inserts data into the spreadsheet starting at the specified coordinate.", + "type": "object" }, "AppendDimensionRequest": { "description": "Appends rows or columns to the end of a sheet.", @@ -3926,18 +2809,18 @@ "type": "integer" }, "dimension": { + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ], "enum": [ "DIMENSION_UNSPECIFIED", "ROWS", "COLUMNS" ], "description": "Whether rows or columns should be appended.", - "type": "string", - "enumDescriptions": [ - "The default value, do not use.", - "Operates on the rows of a sheet.", - "Operates on the columns of a sheet." - ] + "type": "string" }, "length": { "format": "int32", @@ -3948,20 +2831,22 @@ "id": "AppendDimensionRequest" }, "AddNamedRangeRequest": { + "description": "Adds a named range to the spreadsheet.", + "type": "object", "properties": { "namedRange": { "$ref": "NamedRange", "description": "The named range to add. The namedRangeId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a range that already exists.)" } }, - "id": "AddNamedRangeRequest", - "description": "Adds a named range to the spreadsheet.", - "type": "object" + "id": "AddNamedRangeRequest" }, "UpdateEmbeddedObjectPositionRequest": { - "description": "Update an embedded object's position (such as a moving or resizing a\nchart or image).", - "type": "object", "properties": { + "newPosition": { + "description": "An explicit position to move the embedded object to.\nIf newPosition.sheetId is set,\na new sheet with that ID will be created.\nIf newPosition.newSheet is set to true,\na new sheet will be created with an ID that will be chosen for you.", + "$ref": "EmbeddedObjectPosition" + }, "fields": { "format": "google-fieldmask", "description": "The fields of OverlayPosition\nthat should be updated when setting a new position. Used only if\nnewPosition.overlayPosition\nis set, in which case at least one field must\nbe specified. The root `newPosition.overlayPosition` is implied and\nshould not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", @@ -3971,13 +2856,11 @@ "format": "int32", "description": "The ID of the object to moved.", "type": "integer" - }, - "newPosition": { - "$ref": "EmbeddedObjectPosition", - "description": "An explicit position to move the embedded object to.\nIf newPosition.sheetId is set,\na new sheet with that ID will be created.\nIf newPosition.newSheet is set to true,\na new sheet will be created with an ID that will be chosen for you." } }, - "id": "UpdateEmbeddedObjectPositionRequest" + "id": "UpdateEmbeddedObjectPositionRequest", + "description": "Update an embedded object's position (such as a moving or resizing a\nchart or image).", + "type": "object" }, "TextRotation": { "description": "The rotation applied to text in a cell.", @@ -3996,20 +2879,24 @@ "id": "TextRotation" }, "PieChartSpec": { - "id": "PieChartSpec", "description": "A \u003ca href=\"/chart/interactive/docs/gallery/piechart\"\u003epie chart\u003c/a\u003e.", "type": "object", "properties": { - "series": { - "description": "The data that covers the one and only series of the pie chart.", - "$ref": "ChartData" - }, "pieHole": { - "type": "number", "format": "double", - "description": "The size of the hole in the pie chart." + "description": "The size of the hole in the pie chart.", + "type": "number" }, "legendPosition": { + "enumDescriptions": [ + "Default value, do not use.", + "The legend is rendered on the bottom of the chart.", + "The legend is rendered on the left of the chart.", + "The legend is rendered on the right of the chart.", + "The legend is rendered on the top of the chart.", + "No legend is rendered.", + "Each pie slice has a label attached to it." + ], "enum": [ "PIE_CHART_LEGEND_POSITION_UNSPECIFIED", "BOTTOM_LEGEND", @@ -4020,30 +2907,24 @@ "LABELED_LEGEND" ], "description": "Where the legend of the pie chart should be drawn.", - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "The legend is rendered on the bottom of the chart.", - "The legend is rendered on the left of the chart.", - "The legend is rendered on the right of the chart.", - "The legend is rendered on the top of the chart.", - "No legend is rendered.", - "Each pie slice has a label attached to it." - ] + "type": "string" }, "threeDimensional": { "description": "True if the pie is three dimensional.", "type": "boolean" }, "domain": { + "description": "The data that covers the domain of the pie chart.", + "$ref": "ChartData" + }, + "series": { "$ref": "ChartData", - "description": "The data that covers the domain of the pie chart." + "description": "The data that covers the one and only series of the pie chart." } - } + }, + "id": "PieChartSpec" }, "UpdateFilterViewRequest": { - "description": "Updates properties of the filter view.", - "type": "object", "properties": { "filter": { "$ref": "FilterView", @@ -4055,15 +2936,19 @@ "type": "string" } }, - "id": "UpdateFilterViewRequest" + "id": "UpdateFilterViewRequest", + "description": "Updates properties of the filter view.", + "type": "object" }, "ConditionalFormatRule": { - "description": "A rule describing a conditional format.", - "type": "object", "properties": { + "gradientRule": { + "description": "The formatting will vary based on the gradients in the rule.", + "$ref": "GradientRule" + }, "booleanRule": { - "description": "The formatting is either \"on\" or \"off\" according to the rule.", - "$ref": "BooleanRule" + "$ref": "BooleanRule", + "description": "The formatting is either \"on\" or \"off\" according to the rule." }, "ranges": { "description": "The ranges that will be formatted if the condition is true.\nAll the ranges must be on the same grid.", @@ -4071,33 +2956,16 @@ "$ref": "GridRange" }, "type": "array" - }, - "gradientRule": { - "$ref": "GradientRule", - "description": "The formatting will vary based on the gradients in the rule." } }, - "id": "ConditionalFormatRule" + "id": "ConditionalFormatRule", + "description": "A rule describing a conditional format.", + "type": "object" }, "CopyPasteRequest": { + "description": "Copies data from the source to the destination.", "type": "object", "properties": { - "destination": { - "$ref": "GridRange", - "description": "The location to paste to. If the range covers a span that's\na multiple of the source's height or width, then the\ndata will be repeated to fill in the destination range.\nIf the range is smaller than the source range, the entire\nsource data will still be copied (beyond the end of the destination range)." - }, - "pasteOrientation": { - "enumDescriptions": [ - "Paste normally.", - "Paste transposed, where all rows become columns and vice versa." - ], - "enum": [ - "NORMAL", - "TRANSPOSE" - ], - "description": "How that data should be oriented when pasting.", - "type": "string" - }, "pasteType": { "enumDescriptions": [ "Paste values, formulas, formats, and merges.", @@ -4121,56 +2989,38 @@ "type": "string" }, "source": { - "description": "The source range to copy.", - "$ref": "GridRange" + "$ref": "GridRange", + "description": "The source range to copy." + }, + "destination": { + "$ref": "GridRange", + "description": "The location to paste to. If the range covers a span that's\na multiple of the source's height or width, then the\ndata will be repeated to fill in the destination range.\nIf the range is smaller than the source range, the entire\nsource data will still be copied (beyond the end of the destination range)." + }, + "pasteOrientation": { + "enumDescriptions": [ + "Paste normally.", + "Paste transposed, where all rows become columns and vice versa." + ], + "enum": [ + "NORMAL", + "TRANSPOSE" + ], + "description": "How that data should be oriented when pasting.", + "type": "string" } }, - "id": "CopyPasteRequest", - "description": "Copies data from the source to the destination." + "id": "CopyPasteRequest" }, "BooleanCondition": { - "description": "A condition that can evaluate to true or false.\nBooleanConditions are used by conditional formatting,\ndata validation, and the criteria in filters.", - "type": "object", "properties": { "values": { + "description": "The values of the condition. The number of supported values depends\non the condition type. Some support zero values,\nothers one or two values,\nand ConditionType.ONE_OF_LIST supports an arbitrary number of values.", "items": { "$ref": "ConditionValue" }, - "type": "array", - "description": "The values of the condition. The number of supported values depends\non the condition type. Some support zero values,\nothers one or two values,\nand ConditionType.ONE_OF_LIST supports an arbitrary number of values." + "type": "array" }, "type": { - "enumDescriptions": [ - "The default value, do not use.", - "The cell's value must be greater than the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be greater than or equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be less than the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be less than or equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be not equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be between the two condition values.\nSupported by data validation, conditional formatting and filters.\nRequires exactly two ConditionValues.", - "The cell's value must not be between the two condition values.\nSupported by data validation, conditional formatting and filters.\nRequires exactly two ConditionValues.", - "The cell's value must contain the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must not contain the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must start with the condition's value.\nSupported by conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must end with the condition's value.\nSupported by conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be exactly the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be a valid email address.\nSupported by data validation.\nRequires no ConditionValues.", - "The cell's value must be a valid URL.\nSupported by data validation.\nRequires no ConditionValues.", - "The cell's value must be the same date as the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", - "The cell's value must be before the date of the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue\nthat may be a relative date.", - "The cell's value must be after the date of the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue\nthat may be a relative date.", - "The cell's value must be on or before the date of the condition's value.\nSupported by data validation.\nRequires a single ConditionValue\nthat may be a relative date.", - "The cell's value must be on or after the date of the condition's value.\nSupported by data validation.\nRequires a single ConditionValue\nthat may be a relative date.", - "The cell's value must be between the dates of the two condition values.\nSupported by data validation.\nRequires exactly two ConditionValues.", - "The cell's value must be outside the dates of the two condition values.\nSupported by data validation.\nRequires exactly two ConditionValues.", - "The cell's value must be a date.\nSupported by data validation.\nRequires no ConditionValues.", - "The cell's value must be listed in the grid in condition value's range.\nSupported by data validation.\nRequires a single ConditionValue,\nand the value must be a valid range in A1 notation.", - "The cell's value must in the list of condition values.\nSupported by data validation.\nSupports any number of condition values,\none per item in the list.\nFormulas are not supported in the values.", - "The cell's value must be empty.\nSupported by conditional formatting and filters.\nRequires no ConditionValues.", - "The cell's value must not be empty.\nSupported by conditional formatting and filters.\nRequires no ConditionValues.", - "The condition's formula must evaluate to true.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue." - ], "enum": [ "CONDITION_TYPE_UNSPECIFIED", "NUMBER_GREATER", @@ -4203,38 +3053,154 @@ "CUSTOM_FORMULA" ], "description": "The type of condition.", - "type": "string" + "type": "string", + "enumDescriptions": [ + "The default value, do not use.", + "The cell's value must be greater than the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be greater than or equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be less than the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be less than or equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be not equal to the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be between the two condition values.\nSupported by data validation, conditional formatting and filters.\nRequires exactly two ConditionValues.", + "The cell's value must not be between the two condition values.\nSupported by data validation, conditional formatting and filters.\nRequires exactly two ConditionValues.", + "The cell's value must contain the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must not contain the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must start with the condition's value.\nSupported by conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must end with the condition's value.\nSupported by conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be exactly the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be a valid email address.\nSupported by data validation.\nRequires no ConditionValues.", + "The cell's value must be a valid URL.\nSupported by data validation.\nRequires no ConditionValues.", + "The cell's value must be the same date as the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue.", + "The cell's value must be before the date of the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue\nthat may be a relative date.", + "The cell's value must be after the date of the condition's value.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue\nthat may be a relative date.", + "The cell's value must be on or before the date of the condition's value.\nSupported by data validation.\nRequires a single ConditionValue\nthat may be a relative date.", + "The cell's value must be on or after the date of the condition's value.\nSupported by data validation.\nRequires a single ConditionValue\nthat may be a relative date.", + "The cell's value must be between the dates of the two condition values.\nSupported by data validation.\nRequires exactly two ConditionValues.", + "The cell's value must be outside the dates of the two condition values.\nSupported by data validation.\nRequires exactly two ConditionValues.", + "The cell's value must be a date.\nSupported by data validation.\nRequires no ConditionValues.", + "The cell's value must be listed in the grid in condition value's range.\nSupported by data validation.\nRequires a single ConditionValue,\nand the value must be a valid range in A1 notation.", + "The cell's value must in the list of condition values.\nSupported by data validation.\nSupports any number of condition values,\none per item in the list.\nFormulas are not supported in the values.", + "The cell's value must be empty.\nSupported by conditional formatting and filters.\nRequires no ConditionValues.", + "The cell's value must not be empty.\nSupported by conditional formatting and filters.\nRequires no ConditionValues.", + "The condition's formula must evaluate to true.\nSupported by data validation, conditional formatting and filters.\nRequires a single ConditionValue." + ] } }, - "id": "BooleanCondition" + "id": "BooleanCondition", + "description": "A condition that can evaluate to true or false.\nBooleanConditions are used by conditional formatting,\ndata validation, and the criteria in filters.", + "type": "object" }, "Request": { - "type": "object", "properties": { + "insertDimension": { + "description": "Inserts new rows or columns in a sheet.", + "$ref": "InsertDimensionRequest" + }, + "deleteRange": { + "$ref": "DeleteRangeRequest", + "description": "Deletes a range of cells from a sheet, shifting the remaining cells." + }, + "deleteBanding": { + "description": "Removes a banded range", + "$ref": "DeleteBandingRequest" + }, + "addFilterView": { + "$ref": "AddFilterViewRequest", + "description": "Adds a filter view." + }, + "updateBorders": { + "$ref": "UpdateBordersRequest", + "description": "Updates the borders in a range of cells." + }, + "setDataValidation": { + "$ref": "SetDataValidationRequest", + "description": "Sets data validation for one or more cells." + }, + "deleteConditionalFormatRule": { + "description": "Deletes an existing conditional format rule.", + "$ref": "DeleteConditionalFormatRuleRequest" + }, + "clearBasicFilter": { + "$ref": "ClearBasicFilterRequest", + "description": "Clears the basic filter on a sheet." + }, + "repeatCell": { + "description": "Repeats a single cell across a range.", + "$ref": "RepeatCellRequest" + }, + "appendDimension": { + "description": "Appends dimensions to the end of a sheet.", + "$ref": "AppendDimensionRequest" + }, + "updateConditionalFormatRule": { + "$ref": "UpdateConditionalFormatRuleRequest", + "description": "Updates an existing conditional format rule." + }, + "insertRange": { + "description": "Inserts new cells in a sheet, shifting the existing cells.", + "$ref": "InsertRangeRequest" + }, + "moveDimension": { + "$ref": "MoveDimensionRequest", + "description": "Moves rows or columns to another location in a sheet." + }, + "randomizeRange": { + "description": "Randomizes the order of the rows in a range.", + "$ref": "RandomizeRangeRequest" + }, + "updateBanding": { + "description": "Updates a banded range", + "$ref": "UpdateBandingRequest" + }, + "deleteNamedRange": { + "description": "Deletes a named range.", + "$ref": "DeleteNamedRangeRequest" + }, + "addProtectedRange": { + "$ref": "AddProtectedRangeRequest", + "description": "Adds a protected range." + }, + "duplicateSheet": { + "$ref": "DuplicateSheetRequest", + "description": "Duplicates a sheet." + }, + "unmergeCells": { + "$ref": "UnmergeCellsRequest", + "description": "Unmerges merged cells." + }, + "deleteSheet": { + "description": "Deletes a sheet.", + "$ref": "DeleteSheetRequest" + }, + "updateEmbeddedObjectPosition": { + "$ref": "UpdateEmbeddedObjectPositionRequest", + "description": "Updates an embedded object's (e.g. chart, image) position." + }, "updateDimensionProperties": { - "description": "Updates dimensions' properties.", - "$ref": "UpdateDimensionPropertiesRequest" + "$ref": "UpdateDimensionPropertiesRequest", + "description": "Updates dimensions' properties." }, "pasteData": { - "description": "Pastes data (HTML or delimited) into a sheet.", - "$ref": "PasteDataRequest" + "$ref": "PasteDataRequest", + "description": "Pastes data (HTML or delimited) into a sheet." }, "setBasicFilter": { - "$ref": "SetBasicFilterRequest", - "description": "Sets the basic filter on a sheet." + "description": "Sets the basic filter on a sheet.", + "$ref": "SetBasicFilterRequest" }, "addConditionalFormatRule": { - "description": "Adds a new conditional format rule.", - "$ref": "AddConditionalFormatRuleRequest" - }, - "addNamedRange": { - "description": "Adds a named range.", - "$ref": "AddNamedRangeRequest" + "$ref": "AddConditionalFormatRuleRequest", + "description": "Adds a new conditional format rule." }, "updateCells": { "$ref": "UpdateCellsRequest", "description": "Updates many cells at once." }, + "addNamedRange": { + "description": "Adds a named range.", + "$ref": "AddNamedRangeRequest" + }, "updateSpreadsheetProperties": { "$ref": "UpdateSpreadsheetPropertiesRequest", "description": "Updates the spreadsheet's properties." @@ -4256,8 +3222,8 @@ "$ref": "AppendCellsRequest" }, "autoResizeDimensions": { - "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension.", - "$ref": "AutoResizeDimensionsRequest" + "$ref": "AutoResizeDimensionsRequest", + "description": "Automatically resizes one or more dimensions based on the contents\nof the cells in that dimension." }, "cutPaste": { "$ref": "CutPasteRequest", @@ -4268,28 +3234,28 @@ "$ref": "MergeCellsRequest" }, "updateNamedRange": { - "$ref": "UpdateNamedRangeRequest", - "description": "Updates a named range." + "description": "Updates a named range.", + "$ref": "UpdateNamedRangeRequest" }, "updateSheetProperties": { "$ref": "UpdateSheetPropertiesRequest", "description": "Updates a sheet's properties." }, - "autoFill": { - "description": "Automatically fills in more data based on existing data.", - "$ref": "AutoFillRequest" - }, "deleteDimension": { "description": "Deletes rows or columns in a sheet.", "$ref": "DeleteDimensionRequest" }, + "autoFill": { + "$ref": "AutoFillRequest", + "description": "Automatically fills in more data based on existing data." + }, "sortRange": { "$ref": "SortRangeRequest", "description": "Sorts data in a range." }, "deleteProtectedRange": { - "description": "Deletes a protected range.", - "$ref": "DeleteProtectedRangeRequest" + "$ref": "DeleteProtectedRangeRequest", + "description": "Deletes a protected range." }, "duplicateFilterView": { "$ref": "DuplicateFilterViewRequest", @@ -4304,119 +3270,48 @@ "$ref": "FindReplaceRequest" }, "textToColumns": { - "description": "Converts a column of text into many columns of text.", - "$ref": "TextToColumnsRequest" + "$ref": "TextToColumnsRequest", + "description": "Converts a column of text into many columns of text." }, "updateChartSpec": { - "$ref": "UpdateChartSpecRequest", - "description": "Updates a chart's specifications." + "description": "Updates a chart's specifications.", + "$ref": "UpdateChartSpecRequest" + }, + "addSheet": { + "description": "Adds a sheet.", + "$ref": "AddSheetRequest" }, "updateProtectedRange": { "$ref": "UpdateProtectedRangeRequest", "description": "Updates a protected range." }, - "addSheet": { - "$ref": "AddSheetRequest", - "description": "Adds a sheet." + "deleteFilterView": { + "$ref": "DeleteFilterViewRequest", + "description": "Deletes a filter view from a sheet." }, "copyPaste": { "$ref": "CopyPasteRequest", "description": "Copies data from one area and pastes it to another." - }, - "deleteFilterView": { - "description": "Deletes a filter view from a sheet.", - "$ref": "DeleteFilterViewRequest" - }, - "insertDimension": { - "$ref": "InsertDimensionRequest", - "description": "Inserts new rows or columns in a sheet." - }, - "deleteRange": { - "$ref": "DeleteRangeRequest", - "description": "Deletes a range of cells from a sheet, shifting the remaining cells." - }, - "deleteBanding": { - "$ref": "DeleteBandingRequest", - "description": "Removes a banded range" - }, - "addFilterView": { - "description": "Adds a filter view.", - "$ref": "AddFilterViewRequest" - }, - "setDataValidation": { - "description": "Sets data validation for one or more cells.", - "$ref": "SetDataValidationRequest" - }, - "updateBorders": { - "description": "Updates the borders in a range of cells.", - "$ref": "UpdateBordersRequest" - }, - "deleteConditionalFormatRule": { - "description": "Deletes an existing conditional format rule.", - "$ref": "DeleteConditionalFormatRuleRequest" - }, - "clearBasicFilter": { - "description": "Clears the basic filter on a sheet.", - "$ref": "ClearBasicFilterRequest" - }, - "repeatCell": { - "description": "Repeats a single cell across a range.", - "$ref": "RepeatCellRequest" - }, - "appendDimension": { - "$ref": "AppendDimensionRequest", - "description": "Appends dimensions to the end of a sheet." - }, - "updateConditionalFormatRule": { - "$ref": "UpdateConditionalFormatRuleRequest", - "description": "Updates an existing conditional format rule." - }, - "insertRange": { - "$ref": "InsertRangeRequest", - "description": "Inserts new cells in a sheet, shifting the existing cells." - }, - "moveDimension": { - "description": "Moves rows or columns to another location in a sheet.", - "$ref": "MoveDimensionRequest" - }, - "randomizeRange": { - "$ref": "RandomizeRangeRequest", - "description": "Randomizes the order of the rows in a range." - }, - "updateBanding": { - "$ref": "UpdateBandingRequest", - "description": "Updates a banded range" - }, - "addProtectedRange": { - "$ref": "AddProtectedRangeRequest", - "description": "Adds a protected range." - }, - "deleteNamedRange": { - "$ref": "DeleteNamedRangeRequest", - "description": "Deletes a named range." - }, - "duplicateSheet": { - "$ref": "DuplicateSheetRequest", - "description": "Duplicates a sheet." - }, - "unmergeCells": { - "$ref": "UnmergeCellsRequest", - "description": "Unmerges merged cells." - }, - "deleteSheet": { - "$ref": "DeleteSheetRequest", - "description": "Deletes a sheet." - }, - "updateEmbeddedObjectPosition": { - "$ref": "UpdateEmbeddedObjectPositionRequest", - "description": "Updates an embedded object's (e.g. chart, image) position." } }, "id": "Request", - "description": "A single kind of update to apply to a spreadsheet." + "description": "A single kind of update to apply to a spreadsheet.", + "type": "object" }, "GridRange": { + "description": "A range on a sheet.\nAll indexes are zero-based.\nIndexes are half open, e.g the start index is inclusive\nand the end index is exclusive -- [start_index, end_index).\nMissing indexes indicate the range is unbounded on that side.\n\nFor example, if `\"Sheet1\"` is sheet ID 0, then:\n\n `Sheet1!A1:A1 == sheet_id: 0,\n start_row_index: 0, end_row_index: 1,\n start_column_index: 0, end_column_index: 1`\n\n `Sheet1!A3:B4 == sheet_id: 0,\n start_row_index: 2, end_row_index: 4,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1!A:B == sheet_id: 0,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1!A5:B == sheet_id: 0,\n start_row_index: 4,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1 == sheet_id:0`\n\nThe start index must always be less than or equal to the end index.\nIf the start index equals the end index, then the range is empty.\nEmpty ranges are typically not meaningful and are usually rendered in the\nUI as `#REF!`.", + "type": "object", "properties": { + "endColumnIndex": { + "format": "int32", + "description": "The end column (exclusive) of the range, or not set if unbounded.", + "type": "integer" + }, + "endRowIndex": { + "format": "int32", + "description": "The end row (exclusive) of the range, or not set if unbounded.", + "type": "integer" + }, "startRowIndex": { "format": "int32", "description": "The start row (inclusive) of the range, or not set if unbounded.", @@ -4431,27 +3326,19 @@ "format": "int32", "description": "The sheet this range is on.", "type": "integer" - }, - "endColumnIndex": { - "format": "int32", - "description": "The end column (exclusive) of the range, or not set if unbounded.", - "type": "integer" - }, - "endRowIndex": { - "format": "int32", - "description": "The end row (exclusive) of the range, or not set if unbounded.", - "type": "integer" } }, - "id": "GridRange", - "description": "A range on a sheet.\nAll indexes are zero-based.\nIndexes are half open, e.g the start index is inclusive\nand the end index is exclusive -- [start_index, end_index).\nMissing indexes indicate the range is unbounded on that side.\n\nFor example, if `\"Sheet1\"` is sheet ID 0, then:\n\n `Sheet1!A1:A1 == sheet_id: 0,\n start_row_index: 0, end_row_index: 1,\n start_column_index: 0, end_column_index: 1`\n\n `Sheet1!A3:B4 == sheet_id: 0,\n start_row_index: 2, end_row_index: 4,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1!A:B == sheet_id: 0,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1!A5:B == sheet_id: 0,\n start_row_index: 4,\n start_column_index: 0, end_column_index: 2`\n\n `Sheet1 == sheet_id:0`\n\nThe start index must always be less than or equal to the end index.\nIf the start index equals the end index, then the range is empty.\nEmpty ranges are typically not meaningful and are usually rendered in the\nUI as `#REF!`.", - "type": "object" + "id": "GridRange" }, "BasicChartSpec": { - "id": "BasicChartSpec", - "description": "The specification for a basic chart. See BasicChartType for the list\nof charts this supports.", - "type": "object", "properties": { + "domains": { + "description": "The domain of data this is charting.\nOnly a single domain is supported.", + "items": { + "$ref": "BasicChartDomain" + }, + "type": "array" + }, "lineSmoothing": { "description": "Gets whether all lines should be rendered smooth or straight by default.\nApplies to Line charts.", "type": "boolean" @@ -4462,20 +3349,20 @@ "type": "integer" }, "stackedType": { - "type": "string", - "enumDescriptions": [ - "Default value, do not use.", - "Series are not stacked.", - "Series values are stacked, each value is rendered vertically beginning\nfrom the top of the value below it.", - "Vertical stacks are stretched to reach the top of the chart, with\nvalues laid out as percentages of each other." - ], "enum": [ "BASIC_CHART_STACKED_TYPE_UNSPECIFIED", "NOT_STACKED", "STACKED", "PERCENT_STACKED" ], - "description": "The stacked type for charts that support vertical stacking.\nApplies to Area, Bar, Column, and Stepped Area charts." + "description": "The stacked type for charts that support vertical stacking.\nApplies to Area, Bar, Column, and Stepped Area charts.", + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "Series are not stacked.", + "Series values are stacked, each value is rendered vertically beginning\nfrom the top of the value below it.", + "Vertical stacks are stretched to reach the top of the chart, with\nvalues laid out as percentages of each other." + ] }, "axis": { "description": "The axis on the chart.", @@ -4485,20 +3372,14 @@ "type": "array" }, "threeDimensional": { - "type": "boolean", - "description": "True to make the chart 3D.\nApplies to Bar and Column charts." + "description": "True to make the chart 3D.\nApplies to Bar and Column charts.", + "type": "boolean" + }, + "interpolateNulls": { + "description": "If some values in a series are missing, gaps may appear in the chart (e.g,\nsegments of lines in a line chart will be missing). To eliminate these\ngaps set this to true.\nApplies to Line, Area, and Combo charts.", + "type": "boolean" }, "chartType": { - "enumDescriptions": [ - "Default value, do not use.", - "A \u003ca href=\"/chart/interactive/docs/gallery/barchart\"\u003ebar chart\u003c/a\u003e.", - "A \u003ca href=\"/chart/interactive/docs/gallery/linechart\"\u003eline chart\u003c/a\u003e.", - "An \u003ca href=\"/chart/interactive/docs/gallery/areachart\"\u003earea chart\u003c/a\u003e.", - "A \u003ca href=\"/chart/interactive/docs/gallery/columnchart\"\u003ecolumn chart\u003c/a\u003e.", - "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter chart\u003c/a\u003e.", - "A \u003ca href=\"/chart/interactive/docs/gallery/combochart\"\u003ecombo chart\u003c/a\u003e.", - "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area chart\u003c/a\u003e." - ], "enum": [ "BASIC_CHART_TYPE_UNSPECIFIED", "BAR", @@ -4510,11 +3391,17 @@ "STEPPED_AREA" ], "description": "The type of the chart.", - "type": "string" - }, - "interpolateNulls": { - "description": "If some values in a series are missing, gaps may appear in the chart (e.g,\nsegments of lines in a line chart will be missing). To eliminate these\ngaps set this to true.\nApplies to Line, Area, and Combo charts.", - "type": "boolean" + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "A \u003ca href=\"/chart/interactive/docs/gallery/barchart\"\u003ebar chart\u003c/a\u003e.", + "A \u003ca href=\"/chart/interactive/docs/gallery/linechart\"\u003eline chart\u003c/a\u003e.", + "An \u003ca href=\"/chart/interactive/docs/gallery/areachart\"\u003earea chart\u003c/a\u003e.", + "A \u003ca href=\"/chart/interactive/docs/gallery/columnchart\"\u003ecolumn chart\u003c/a\u003e.", + "A \u003ca href=\"/chart/interactive/docs/gallery/scatterchart\"\u003escatter chart\u003c/a\u003e.", + "A \u003ca href=\"/chart/interactive/docs/gallery/combochart\"\u003ecombo chart\u003c/a\u003e.", + "A \u003ca href=\"/chart/interactive/docs/gallery/steppedareachart\"\u003estepped area chart\u003c/a\u003e." + ] }, "series": { "description": "The data this chart is visualizing.", @@ -4524,8 +3411,6 @@ "type": "array" }, "legendPosition": { - "description": "The position of the chart legend.", - "type": "string", "enumDescriptions": [ "Default value, do not use.", "The legend is rendered on the bottom of the chart.", @@ -4541,16 +3426,1131 @@ "RIGHT_LEGEND", "TOP_LEGEND", "NO_LEGEND" + ], + "description": "The position of the chart legend.", + "type": "string" + } + }, + "id": "BasicChartSpec", + "description": "The specification for a basic chart. See BasicChartType for the list\nof charts this supports.", + "type": "object" + }, + "BubbleChartSpec": { + "properties": { + "bubbleLabels": { + "description": "The data containing the bubble labels. These do not need to be unique.", + "$ref": "ChartData" + }, + "bubbleMinRadiusSize": { + "format": "int32", + "description": "The minimum radius size of the bubbles, in pixels.\nIf specific, the field must be a positive value.", + "type": "integer" + }, + "bubbleMaxRadiusSize": { + "format": "int32", + "description": "The max radius size of the bubbles, in pixels.\nIf specified, the field must be a positive value.", + "type": "integer" + }, + "series": { + "$ref": "ChartData", + "description": "The data contianing the bubble y-values. These values locate the bubbles\nin the chart vertically." + }, + "legendPosition": { + "enum": [ + "BUBBLE_CHART_LEGEND_POSITION_UNSPECIFIED", + "BOTTOM_LEGEND", + "LEFT_LEGEND", + "RIGHT_LEGEND", + "TOP_LEGEND", + "NO_LEGEND", + "INSIDE_LEGEND" + ], + "description": "Where the legend of the chart should be drawn.", + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "The legend is rendered on the bottom of the chart.", + "The legend is rendered on the left of the chart.", + "The legend is rendered on the right of the chart.", + "The legend is rendered on the top of the chart.", + "No legend is rendered.", + "The legend is rendered inside the chart area." ] }, - "domains": { - "description": "The domain of data this is charting.\nOnly a single domain is supported.", + "domain": { + "description": "The data containing the bubble x-values. These values locate the bubbles\nin the chart horizontally.", + "$ref": "ChartData" + }, + "bubbleOpacity": { + "format": "float", + "description": "The opacity of the bubbles between 0 and 1.0.\n0 is fully transparent and 1 is fully opaque.", + "type": "number" + }, + "bubbleSizes": { + "description": "The data contianing the bubble sizes. Bubble sizes are used to draw\nthe bubbles at different sizes relative to each other.\nIf specified, group_ids must also be specified. This field is\noptional.", + "$ref": "ChartData" + }, + "bubbleBorderColor": { + "description": "The bubble border color.", + "$ref": "Color" + }, + "bubbleTextStyle": { + "description": "The format of the text inside the bubbles.\nUnderline and Strikethrough are not supported.", + "$ref": "TextFormat" + }, + "groupIds": { + "description": "The data containing the bubble group IDs. All bubbles with the same group\nID will be drawn in the same color. If bubble_sizes is specified then\nthis field must also be specified but may contain blank values.\nThis field is optional.", + "$ref": "ChartData" + } + }, + "id": "BubbleChartSpec", + "description": "A \u003ca href=\"/chart/interactive/docs/gallery/bubblechart\"\u003ebubble chart\u003c/a\u003e.", + "type": "object" + }, + "SetDataValidationRequest": { + "properties": { + "rule": { + "description": "The data validation rule to set on each cell in the range,\nor empty to clear the data validation in the range.", + "$ref": "DataValidationRule" + }, + "range": { + "$ref": "GridRange", + "description": "The range the data validation rule should apply to." + } + }, + "id": "SetDataValidationRequest", + "description": "Sets a data validation rule to every cell in the range.\nTo clear validation in a range, call this with no rule specified.", + "type": "object" + }, + "CellData": { + "properties": { + "pivotTable": { + "$ref": "PivotTable", + "description": "A pivot table anchored at this cell. The size of pivot table itself\nis computed dynamically based on its data, grouping, filters, values,\netc. Only the top-left cell of the pivot table contains the pivot table\ndefinition. The other cells will contain the calculated values of the\nresults of the pivot in their effective_value fields." + }, + "userEnteredFormat": { + "$ref": "CellFormat", + "description": "The format the user entered for the cell.\n\nWhen writing, the new format will be merged with the existing format." + }, + "effectiveFormat": { + "description": "The effective format being used by the cell.\nThis includes the results of applying any conditional formatting and,\nif the cell contains a formula, the computed number format.\nIf the effective format is the default format, effective format will\nnot be written.\nThis field is read-only.", + "$ref": "CellFormat" + }, + "note": { + "description": "Any note on the cell.", + "type": "string" + }, + "userEnteredValue": { + "$ref": "ExtendedValue", + "description": "The value the user entered in the cell. e.g, `1234`, `'Hello'`, or `=NOW()`\nNote: Dates, Times and DateTimes are represented as doubles in\nserial number format." + }, + "dataValidation": { + "description": "A data validation rule on the cell, if any.\n\nWhen writing, the new data validation rule will overwrite any prior rule.", + "$ref": "DataValidationRule" + }, + "effectiveValue": { + "description": "The effective value of the cell. For cells with formulas, this will be\nthe calculated value. For cells with literals, this will be\nthe same as the user_entered_value.\nThis field is read-only.", + "$ref": "ExtendedValue" + }, + "formattedValue": { + "description": "The formatted value of the cell.\nThis is the value as it's shown to the user.\nThis field is read-only.", + "type": "string" + }, + "textFormatRuns": { + "description": "Runs of rich text applied to subsections of the cell. Runs are only valid\non user entered strings, not formulas, bools, or numbers.\nRuns start at specific indexes in the text and continue until the next\nrun. Properties of a run will continue unless explicitly changed\nin a subsequent run (and properties of the first run will continue\nthe properties of the cell unless explicitly changed).\n\nWhen writing, the new runs will overwrite any prior runs. When writing a\nnew user_entered_value, previous runs will be erased.", "items": { - "$ref": "BasicChartDomain" + "$ref": "TextFormatRun" + }, + "type": "array" + }, + "hyperlink": { + "description": "A hyperlink this cell points to, if any.\nThis field is read-only. (To set it, use a `=HYPERLINK` formula\nin the userEnteredValue.formulaValue\nfield.)", + "type": "string" + } + }, + "id": "CellData", + "description": "Data about a specific cell.", + "type": "object" + }, + "BatchUpdateSpreadsheetRequest": { + "properties": { + "responseIncludeGridData": { + "description": "True if grid data should be returned. Meaningful only if\nif include_spreadsheet_response is 'true'.\nThis parameter is ignored if a field mask was set in the request.", + "type": "boolean" + }, + "responseRanges": { + "description": "Limits the ranges included in the response spreadsheet.\nMeaningful only if include_spreadsheet_response is 'true'.", + "items": { + "type": "string" + }, + "type": "array" + }, + "includeSpreadsheetInResponse": { + "description": "Determines if the update response should include the spreadsheet\nresource.", + "type": "boolean" + }, + "requests": { + "description": "A list of updates to apply to the spreadsheet.\nRequests will be applied in the order they are specified.\nIf any request is not valid, no requests will be applied.", + "items": { + "$ref": "Request" }, "type": "array" } - } + }, + "id": "BatchUpdateSpreadsheetRequest", + "description": "The request for updating any aspect of a spreadsheet.", + "type": "object" + }, + "BasicChartAxis": { + "properties": { + "format": { + "description": "The format of the title.\nOnly valid if the axis is not associated with the domain.", + "$ref": "TextFormat" + }, + "title": { + "description": "The title of this axis. If set, this overrides any title inferred\nfrom headers of the data.", + "type": "string" + }, + "position": { + "enumDescriptions": [ + "Default value, do not use.", + "The axis rendered at the bottom of a chart.\nFor most charts, this is the standard major axis.\nFor bar charts, this is a minor axis.", + "The axis rendered at the left of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is the standard major axis.", + "The axis rendered at the right of a chart.\nFor most charts, this is a minor axis.\nFor bar charts, this is an unusual major axis." + ], + "enum": [ + "BASIC_CHART_AXIS_POSITION_UNSPECIFIED", + "BOTTOM_AXIS", + "LEFT_AXIS", + "RIGHT_AXIS" + ], + "description": "The position of this axis.", + "type": "string" + } + }, + "id": "BasicChartAxis", + "description": "An axis of the chart.\nA chart may not have more than one axis per\naxis position.", + "type": "object" + }, + "Padding": { + "properties": { + "right": { + "format": "int32", + "description": "The right padding of the cell.", + "type": "integer" + }, + "bottom": { + "format": "int32", + "description": "The bottom padding of the cell.", + "type": "integer" + }, + "top": { + "format": "int32", + "description": "The top padding of the cell.", + "type": "integer" + }, + "left": { + "format": "int32", + "description": "The left padding of the cell.", + "type": "integer" + } + }, + "id": "Padding", + "description": "The amount of padding around the cell, in pixels.\nWhen updating padding, every field must be specified.", + "type": "object" + }, + "DeleteDimensionRequest": { + "description": "Deletes the dimensions from the sheet.", + "type": "object", + "properties": { + "range": { + "$ref": "DimensionRange", + "description": "The dimensions to delete from the sheet." + } + }, + "id": "DeleteDimensionRequest" + }, + "UpdateChartSpecRequest": { + "description": "Updates a chart's specifications.\n(This does not move or resize a chart. To move or resize a chart, use\n UpdateEmbeddedObjectPositionRequest.)", + "type": "object", + "properties": { + "chartId": { + "format": "int32", + "description": "The ID of the chart to update.", + "type": "integer" + }, + "spec": { + "description": "The specification to apply to the chart.", + "$ref": "ChartSpec" + } + }, + "id": "UpdateChartSpecRequest" + }, + "DeleteFilterViewRequest": { + "description": "Deletes a particular filter view.", + "type": "object", + "properties": { + "filterId": { + "format": "int32", + "description": "The ID of the filter to delete.", + "type": "integer" + } + }, + "id": "DeleteFilterViewRequest" + }, + "BatchUpdateValuesResponse": { + "properties": { + "totalUpdatedColumns": { + "format": "int32", + "description": "The total number of columns where at least one cell in the column was\nupdated.", + "type": "integer" + }, + "spreadsheetId": { + "description": "The spreadsheet the updates were applied to.", + "type": "string" + }, + "totalUpdatedRows": { + "format": "int32", + "description": "The total number of rows where at least one cell in the row was updated.", + "type": "integer" + }, + "responses": { + "description": "One UpdateValuesResponse per requested range, in the same order as\nthe requests appeared.", + "items": { + "$ref": "UpdateValuesResponse" + }, + "type": "array" + }, + "totalUpdatedSheets": { + "format": "int32", + "description": "The total number of sheets where at least one cell in the sheet was\nupdated.", + "type": "integer" + }, + "totalUpdatedCells": { + "format": "int32", + "description": "The total number of cells updated.", + "type": "integer" + } + }, + "id": "BatchUpdateValuesResponse", + "description": "The response when updating a range of values in a spreadsheet.", + "type": "object" + }, + "SortRangeRequest": { + "description": "Sorts data in rows based on a sort order per column.", + "type": "object", + "properties": { + "range": { + "description": "The range to sort.", + "$ref": "GridRange" + }, + "sortSpecs": { + "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", + "items": { + "$ref": "SortSpec" + }, + "type": "array" + } + }, + "id": "SortRangeRequest" + }, + "MergeCellsRequest": { + "properties": { + "mergeType": { + "enum": [ + "MERGE_ALL", + "MERGE_COLUMNS", + "MERGE_ROWS" + ], + "description": "How the cells should be merged.", + "type": "string", + "enumDescriptions": [ + "Create a single merge from the range", + "Create a merge for each column in the range", + "Create a merge for each row in the range" + ] + }, + "range": { + "$ref": "GridRange", + "description": "The range of cells to merge." + } + }, + "id": "MergeCellsRequest", + "description": "Merges all cells in the range.", + "type": "object" + }, + "AddProtectedRangeRequest": { + "description": "Adds a new protected range.", + "type": "object", + "properties": { + "protectedRange": { + "$ref": "ProtectedRange", + "description": "The protected range to be added. The\nprotectedRangeId field is optional; if\none is not set, an id will be randomly generated. (It is an error to\nspecify the ID of a range that already exists.)" + } + }, + "id": "AddProtectedRangeRequest" + }, + "BatchClearValuesRequest": { + "description": "The request for clearing more than one range of values in a spreadsheet.", + "type": "object", + "properties": { + "ranges": { + "description": "The ranges to clear, in A1 notation.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "BatchClearValuesRequest" + }, + "DuplicateFilterViewResponse": { + "description": "The result of a filter view being duplicated.", + "type": "object", + "properties": { + "filter": { + "$ref": "FilterView", + "description": "The newly created filter." + } + }, + "id": "DuplicateFilterViewResponse" + }, + "DuplicateSheetResponse": { + "description": "The result of duplicating a sheet.", + "type": "object", + "properties": { + "properties": { + "description": "The properties of the duplicate sheet.", + "$ref": "SheetProperties" + } + }, + "id": "DuplicateSheetResponse" + }, + "TextToColumnsRequest": { + "description": "Splits a column of text into multiple columns,\nbased on a delimiter in each cell.", + "type": "object", + "properties": { + "delimiter": { + "description": "The delimiter to use. Used only if delimiterType is\nCUSTOM.", + "type": "string" + }, + "delimiterType": { + "enumDescriptions": [ + "Default value. This value must not be used.", + "\",\"", + "\";\"", + "\".\"", + "\" \"", + "A custom value as defined in delimiter." + ], + "enum": [ + "DELIMITER_TYPE_UNSPECIFIED", + "COMMA", + "SEMICOLON", + "PERIOD", + "SPACE", + "CUSTOM" + ], + "description": "The delimiter type to use.", + "type": "string" + }, + "source": { + "$ref": "GridRange", + "description": "The source data range. This must span exactly one column." + } + }, + "id": "TextToColumnsRequest" + }, + "ClearBasicFilterRequest": { + "description": "Clears the basic filter, if any exists on the sheet.", + "type": "object", + "properties": { + "sheetId": { + "format": "int32", + "description": "The sheet ID on which the basic filter should be cleared.", + "type": "integer" + } + }, + "id": "ClearBasicFilterRequest" + }, + "BatchUpdateSpreadsheetResponse": { + "description": "The reply for batch updating a spreadsheet.", + "type": "object", + "properties": { + "updatedSpreadsheet": { + "description": "The spreadsheet after updates were applied. This is only set if\n[BatchUpdateSpreadsheetRequest.include_spreadsheet_in_response] is `true`.", + "$ref": "Spreadsheet" + }, + "replies": { + "description": "The reply of the updates. This maps 1:1 with the updates, although\nreplies to some requests may be empty.", + "items": { + "$ref": "Response" + }, + "type": "array" + }, + "spreadsheetId": { + "description": "The spreadsheet the updates were applied to.", + "type": "string" + } + }, + "id": "BatchUpdateSpreadsheetResponse" + }, + "DeleteBandingRequest": { + "description": "Removes the banded range with the given ID from the spreadsheet.", + "type": "object", + "properties": { + "bandedRangeId": { + "format": "int32", + "description": "The ID of the banded range to delete.", + "type": "integer" + } + }, + "id": "DeleteBandingRequest" + }, + "AppendValuesResponse": { + "description": "The response when updating a range of values in a spreadsheet.", + "type": "object", + "properties": { + "spreadsheetId": { + "description": "The spreadsheet the updates were applied to.", + "type": "string" + }, + "updates": { + "$ref": "UpdateValuesResponse", + "description": "Information about the updates that were applied." + }, + "tableRange": { + "description": "The range (in A1 notation) of the table that values are being appended to\n(before the values were appended).\nEmpty if no table was found.", + "type": "string" + } + }, + "id": "AppendValuesResponse" + }, + "MoveDimensionRequest": { + "description": "Moves one or more rows or columns.", + "type": "object", + "properties": { + "destinationIndex": { + "format": "int32", + "description": "The zero-based start index of where to move the source data to,\nbased on the coordinates *before* the source data is removed\nfrom the grid. Existing data will be shifted down or right\n(depending on the dimension) to make room for the moved dimensions.\nThe source dimensions are removed from the grid, so the\nthe data may end up in a different index than specified.\n\nFor example, given `A1..A5` of `0, 1, 2, 3, 4` and wanting to move\n`\"1\"` and `\"2\"` to between `\"3\"` and `\"4\"`, the source would be\n`ROWS [1..3)`,and the destination index would be `\"4\"`\n(the zero-based index of row 5).\nThe end result would be `A1..A5` of `0, 3, 1, 2, 4`.", + "type": "integer" + }, + "source": { + "description": "The source dimensions to move.", + "$ref": "DimensionRange" + } + }, + "id": "MoveDimensionRequest" + }, + "PivotFilterCriteria": { + "properties": { + "visibleValues": { + "description": "Values that should be included. Values not listed here are excluded.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "PivotFilterCriteria", + "description": "Criteria for showing/hiding rows in a pivot table.", + "type": "object" + }, + "AddFilterViewRequest": { + "properties": { + "filter": { + "description": "The filter to add. The filterViewId\nfield is optional; if one is not set, an id will be randomly generated. (It\nis an error to specify the ID of a filter that already exists.)", + "$ref": "FilterView" + } + }, + "id": "AddFilterViewRequest", + "description": "Adds a filter view.", + "type": "object" + }, + "AddConditionalFormatRuleRequest": { + "properties": { + "index": { + "format": "int32", + "description": "The zero-based index where the rule should be inserted.", + "type": "integer" + }, + "rule": { + "$ref": "ConditionalFormatRule", + "description": "The rule to add." + } + }, + "id": "AddConditionalFormatRuleRequest", + "description": "Adds a new conditional format rule at the given index.\nAll subsequent rules' indexes are incremented.", + "type": "object" + }, + "ChartSpec": { + "description": "The specifications of a chart.", + "type": "object", + "properties": { + "pieChart": { + "$ref": "PieChartSpec", + "description": "A pie chart specification." + }, + "titleTextFormat": { + "$ref": "TextFormat", + "description": "The title text format.\nStrikethrough and underline are not supported." + }, + "title": { + "description": "The title of the chart.", + "type": "string" + }, + "altText": { + "description": "The alternative text that describes the chart. This is often used\nfor accessibility.", + "type": "string" + }, + "histogramChart": { + "$ref": "HistogramChartSpec", + "description": "A histogram chart specification." + }, + "candlestickChart": { + "$ref": "CandlestickChartSpec", + "description": "A candlestick chart specification." + }, + "bubbleChart": { + "$ref": "BubbleChartSpec", + "description": "A bubble chart specification." + }, + "fontName": { + "description": "The name of the font to use by default for all chart text (e.g. title,\naxis labels, legend). If a font is specified for a specific part of the\nchart it will override this font name.", + "type": "string" + }, + "maximized": { + "description": "True to make a chart fill the entire space in which it's rendered with\nminimum padding. False to use the default padding.\n(Not applicable to Geo and Org charts.)", + "type": "boolean" + }, + "hiddenDimensionStrategy": { + "enumDescriptions": [ + "Default value, do not use.", + "Charts will skip hidden rows and columns.", + "Charts will skip hidden rows only.", + "Charts will skip hidden columns only.", + "Charts will not skip any hidden rows or columns." + ], + "enum": [ + "CHART_HIDDEN_DIMENSION_STRATEGY_UNSPECIFIED", + "SKIP_HIDDEN_ROWS_AND_COLUMNS", + "SKIP_HIDDEN_ROWS", + "SKIP_HIDDEN_COLUMNS", + "SHOW_ALL" + ], + "description": "Determines how the charts will use hidden rows or columns.", + "type": "string" + }, + "backgroundColor": { + "$ref": "Color", + "description": "The background color of the entire chart.\nNot applicable to Org charts." + }, + "basicChart": { + "description": "A basic chart specification, can be one of many kinds of charts.\nSee BasicChartType for the list of all\ncharts this supports.", + "$ref": "BasicChartSpec" + }, + "orgChart": { + "$ref": "OrgChartSpec", + "description": "An org chart specification." + } + }, + "id": "ChartSpec" + }, + "NumberFormat": { + "properties": { + "type": { + "enum": [ + "NUMBER_FORMAT_TYPE_UNSPECIFIED", + "TEXT", + "NUMBER", + "PERCENT", + "CURRENCY", + "DATE", + "TIME", + "DATE_TIME", + "SCIENTIFIC" + ], + "description": "The type of the number format.\nWhen writing, this field must be set.", + "type": "string", + "enumDescriptions": [ + "The number format is not specified\nand is based on the contents of the cell.\nDo not explicitly use this.", + "Text formatting, e.g `1000.12`", + "Number formatting, e.g, `1,000.12`", + "Percent formatting, e.g `10.12%`", + "Currency formatting, e.g `$1,000.12`", + "Date formatting, e.g `9/26/2008`", + "Time formatting, e.g `3:59:00 PM`", + "Date+Time formatting, e.g `9/26/08 15:59:00`", + "Scientific number formatting, e.g `1.01E+03`" + ] + }, + "pattern": { + "description": "Pattern string used for formatting. If not set, a default pattern based on\nthe user's locale will be used if necessary for the given type.\nSee the [Date and Number Formats guide](/sheets/api/guides/formats) for more\ninformation about the supported patterns.", + "type": "string" + } + }, + "id": "NumberFormat", + "description": "The number format of a cell.", + "type": "object" + }, + "CandlestickDomain": { + "description": "The domain of a CandlestickChart.", + "type": "object", + "properties": { + "data": { + "description": "The data of the CandlestickDomain.", + "$ref": "ChartData" + }, + "reversed": { + "description": "True to reverse the order of the domain values (horizontal axis).", + "type": "boolean" + } + }, + "id": "CandlestickDomain" + }, + "SheetProperties": { + "description": "Properties of a sheet.", + "type": "object", + "properties": { + "tabColor": { + "description": "The color of the tab in the UI.", + "$ref": "Color" + }, + "index": { + "format": "int32", + "description": "The index of the sheet within the spreadsheet.\nWhen adding or updating sheet properties, if this field\nis excluded then the sheet will be added or moved to the end\nof the sheet list. When updating sheet indices or inserting\nsheets, movement is considered in \"before the move\" indexes.\nFor example, if there were 3 sheets (S1, S2, S3) in order to\nmove S1 ahead of S2 the index would have to be set to 2. A sheet\nindex update request will be ignored if the requested index is\nidentical to the sheets current index or if the requested new\nindex is equal to the current sheet index + 1.", + "type": "integer" + }, + "sheetId": { + "format": "int32", + "description": "The ID of the sheet. Must be non-negative.\nThis field cannot be changed once set.", + "type": "integer" + }, + "rightToLeft": { + "description": "True if the sheet is an RTL sheet instead of an LTR sheet.", + "type": "boolean" + }, + "hidden": { + "description": "True if the sheet is hidden in the UI, false if it's visible.", + "type": "boolean" + }, + "sheetType": { + "enumDescriptions": [ + "Default value, do not use.", + "The sheet is a grid.", + "The sheet has no grid and instead has an object like a chart or image." + ], + "enum": [ + "SHEET_TYPE_UNSPECIFIED", + "GRID", + "OBJECT" + ], + "description": "The type of sheet. Defaults to GRID.\nThis field cannot be changed once set.", + "type": "string" + }, + "gridProperties": { + "$ref": "GridProperties", + "description": "Additional properties of the sheet if this sheet is a grid.\n(If the sheet is an object sheet, containing a chart or image, then\nthis field will be absent.)\nWhen writing it is an error to set any grid properties on non-grid sheets." + }, + "title": { + "description": "The name of the sheet.", + "type": "string" + } + }, + "id": "SheetProperties" + }, + "UpdateDimensionPropertiesRequest": { + "properties": { + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated. At least one field must be specified.\nThe root `properties` is implied and should not be specified.\nA single `\"*\"` can be used as short-hand for listing every field.", + "type": "string" + }, + "properties": { + "$ref": "DimensionProperties", + "description": "Properties to update." + }, + "range": { + "description": "The rows or columns to update.", + "$ref": "DimensionRange" + } + }, + "id": "UpdateDimensionPropertiesRequest", + "description": "Updates properties of dimensions within the specified range.", + "type": "object" + }, + "SourceAndDestination": { + "properties": { + "dimension": { + "enum": [ + "DIMENSION_UNSPECIFIED", + "ROWS", + "COLUMNS" + ], + "description": "The dimension that data should be filled into.", + "type": "string", + "enumDescriptions": [ + "The default value, do not use.", + "Operates on the rows of a sheet.", + "Operates on the columns of a sheet." + ] + }, + "fillLength": { + "format": "int32", + "description": "The number of rows or columns that data should be filled into.\nPositive numbers expand beyond the last row or last column\nof the source. Negative numbers expand before the first row\nor first column of the source.", + "type": "integer" + }, + "source": { + "$ref": "GridRange", + "description": "The location of the data to use as the source of the autofill." + } + }, + "id": "SourceAndDestination", + "description": "A combination of a source range and how to extend that source.", + "type": "object" + }, + "OrgChartSpec": { + "description": "An \u003ca href=\"/chart/interactive/docs/gallery/orgchart\"\u003eorg chart\u003c/a\u003e.\nOrg charts require a unique set of labels in labels and may\noptionally include parent_labels and tooltips.\nparent_labels contain, for each node, the label identifying the parent\nnode. tooltips contain, for each node, an optional tooltip.\n\nFor example, to describe an OrgChart with Alice as the CEO, Bob as the\nPresident (reporting to Alice) and Cathy as VP of Sales (also reporting to\nAlice), have labels contain \"Alice\", \"Bob\", \"Cathy\",\nparent_labels contain \"\", \"Alice\", \"Alice\" and tooltips contain\n\"CEO\", \"President\", \"VP Sales\".", + "type": "object", + "properties": { + "parentLabels": { + "description": "The data containing the label of the parent for the corresponding node.\nA blank value indicates that the node has no parent and is a top-level\nnode.\nThis field is optional.", + "$ref": "ChartData" + }, + "nodeSize": { + "enum": [ + "ORG_CHART_LABEL_SIZE_UNSPECIFIED", + "SMALL", + "MEDIUM", + "LARGE" + ], + "description": "The size of the org chart nodes.", + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "The small org chart node size.", + "The medium org chart node size.", + "The large org chart node size." + ] + }, + "labels": { + "description": "The data containing the labels for all the nodes in the chart. Labels\nmust be unique.", + "$ref": "ChartData" + }, + "nodeColor": { + "$ref": "Color", + "description": "The color of the org chart nodes." + }, + "tooltips": { + "$ref": "ChartData", + "description": "The data containing the tooltip for the corresponding node. A blank value\nresults in no tooltip being displayed for the node.\nThis field is optional." + }, + "selectedNodeColor": { + "description": "The color of the selected org chart nodes.", + "$ref": "Color" + } + }, + "id": "OrgChartSpec" + }, + "FilterView": { + "description": "A filter view.", + "type": "object", + "properties": { + "criteria": { + "additionalProperties": { + "$ref": "FilterCriteria" + }, + "description": "The criteria for showing/hiding values per column.\nThe map's key is the column index, and the value is the criteria for\nthat column.", + "type": "object" + }, + "title": { + "description": "The name of the filter view.", + "type": "string" + }, + "range": { + "description": "The range this filter view covers.\n\nWhen writing, only one of range or named_range_id\nmay be set.", + "$ref": "GridRange" + }, + "sortSpecs": { + "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", + "items": { + "$ref": "SortSpec" + }, + "type": "array" + }, + "namedRangeId": { + "description": "The named range this filter view is backed by, if any.\n\nWhen writing, only one of range or named_range_id\nmay be set.", + "type": "string" + }, + "filterViewId": { + "format": "int32", + "description": "The ID of the filter view.", + "type": "integer" + } + }, + "id": "FilterView" + }, + "BandingProperties": { + "description": "Properties referring a single dimension (either row or column). If both\nBandedRange.row_properties and BandedRange.column_properties are\nset, the fill colors are applied to cells according to the following rules:\n\n* header_color and footer_color take priority over band colors.\n* first_band_color takes priority over second_band_color.\n* row_properties takes priority over column_properties.\n\nFor example, the first row color takes priority over the first column\ncolor, but the first column color takes priority over the second row color.\nSimilarly, the row header takes priority over the column header in the\ntop left cell, but the column header takes priority over the first row\ncolor if the row header is not set.", + "type": "object", + "properties": { + "footerColor": { + "description": "The color of the last row or column. If this field is not set, the last\nrow or column will be filled with either first_band_color or\nsecond_band_color, depending on the color of the previous row or\ncolumn.", + "$ref": "Color" + }, + "headerColor": { + "$ref": "Color", + "description": "The color of the first row or column. If this field is set, the first\nrow or column will be filled with this color and the colors will\nalternate between first_band_color and second_band_color starting\nfrom the second row or column. Otherwise, the first row or column will be\nfilled with first_band_color and the colors will proceed to alternate\nas they normally would." + }, + "firstBandColor": { + "description": "The first color that is alternating. (Required)", + "$ref": "Color" + }, + "secondBandColor": { + "description": "The second color that is alternating. (Required)", + "$ref": "Color" + } + }, + "id": "BandingProperties" + }, + "CandlestickSeries": { + "properties": { + "data": { + "description": "The data of the CandlestickSeries.", + "$ref": "ChartData" + } + }, + "id": "CandlestickSeries", + "description": "The series of a CandlestickData.", + "type": "object" + }, + "BasicFilter": { + "properties": { + "criteria": { + "additionalProperties": { + "$ref": "FilterCriteria" + }, + "description": "The criteria for showing/hiding values per column.\nThe map's key is the column index, and the value is the criteria for\nthat column.", + "type": "object" + }, + "range": { + "$ref": "GridRange", + "description": "The range the filter covers." + }, + "sortSpecs": { + "description": "The sort order per column. Later specifications are used when values\nare equal in the earlier specifications.", + "items": { + "$ref": "SortSpec" + }, + "type": "array" + } + }, + "id": "BasicFilter", + "description": "The default filter associated with a sheet.", + "type": "object" + }, + "AddProtectedRangeResponse": { + "properties": { + "protectedRange": { + "$ref": "ProtectedRange", + "description": "The newly added protected range." + } + }, + "id": "AddProtectedRangeResponse", + "description": "The result of adding a new protected range.", + "type": "object" + }, + "HistogramChartSpec": { + "properties": { + "outlierPercentile": { + "format": "double", + "description": "The outlier percentile is used to ensure that outliers do not adversely\naffect the calculation of bucket sizes. For example, setting an outlier\npercentile of 0.05 indicates that the top and bottom 5% of values when\ncalculating buckets. The values are still included in the chart, they will\nbe added to the first or last buckets instead of their own buckets.\nMust be between 0.0 and 0.5.", + "type": "number" + }, + "showItemDividers": { + "description": "Whether horizontal divider lines should be displayed between items in each\ncolumn.", + "type": "boolean" + }, + "series": { + "description": "The series for a histogram may be either a single series of values to be\nbucketed or multiple series, each of the same length, containing the name\nof the series followed by the values to be bucketed for that series.", + "items": { + "$ref": "HistogramSeries" + }, + "type": "array" + }, + "legendPosition": { + "enum": [ + "HISTOGRAM_CHART_LEGEND_POSITION_UNSPECIFIED", + "BOTTOM_LEGEND", + "LEFT_LEGEND", + "RIGHT_LEGEND", + "TOP_LEGEND", + "NO_LEGEND", + "INSIDE_LEGEND" + ], + "description": "The position of the chart legend.", + "type": "string", + "enumDescriptions": [ + "Default value, do not use.", + "The legend is rendered on the bottom of the chart.", + "The legend is rendered on the left of the chart.", + "The legend is rendered on the right of the chart.", + "The legend is rendered on the top of the chart.", + "No legend is rendered.", + "The legend is rendered inside the chart area." + ] + }, + "bucketSize": { + "format": "double", + "description": "By default the bucket size (the range of values stacked in a single\ncolumn) is chosen automatically, but it may be overridden here.\nE.g., A bucket size of 1.5 results in buckets from 0 - 1.5, 1.5 - 3.0, etc.\nCannot be negative.\nThis field is optional.", + "type": "number" + } + }, + "id": "HistogramChartSpec", + "description": "A \u003ca href=\"/chart/interactive/docs/gallery/histogram\"\u003ehistogram chart\u003c/a\u003e.\nA histogram chart groups data items into bins, displaying each bin as a\ncolumn of stacked items. Histograms are used to display the distribution\nof a dataset. Each column of items represents a range into which those\nitems fall. The number of bins can be chosen automatically or specified\nexplicitly.", + "type": "object" + }, + "UpdateValuesResponse": { + "properties": { + "updatedRows": { + "format": "int32", + "description": "The number of rows where at least one cell in the row was updated.", + "type": "integer" + }, + "updatedData": { + "description": "The values of the cells after updates were applied.\nThis is only included if the request's `includeValuesInResponse` field\nwas `true`.", + "$ref": "ValueRange" + }, + "updatedColumns": { + "format": "int32", + "description": "The number of columns where at least one cell in the column was updated.", + "type": "integer" + }, + "spreadsheetId": { + "description": "The spreadsheet the updates were applied to.", + "type": "string" + }, + "updatedRange": { + "description": "The range (in A1 notation) that updates were applied to.", + "type": "string" + }, + "updatedCells": { + "format": "int32", + "description": "The number of cells updated.", + "type": "integer" + } + }, + "id": "UpdateValuesResponse", + "description": "The response when updating a range of values in a spreadsheet.", + "type": "object" + }, + "ErrorValue": { + "properties": { + "type": { + "enum": [ + "ERROR_TYPE_UNSPECIFIED", + "ERROR", + "NULL_VALUE", + "DIVIDE_BY_ZERO", + "VALUE", + "REF", + "NAME", + "NUM", + "N_A", + "LOADING" + ], + "description": "The type of error.", + "type": "string", + "enumDescriptions": [ + "The default error type, do not use this.", + "Corresponds to the `#ERROR!` error.", + "Corresponds to the `#NULL!` error.", + "Corresponds to the `#DIV/0` error.", + "Corresponds to the `#VALUE!` error.", + "Corresponds to the `#REF!` error.", + "Corresponds to the `#NAME?` error.", + "Corresponds to the `#NUM`! error.", + "Corresponds to the `#N/A` error.", + "Corresponds to the `Loading...` state." + ] + }, + "message": { + "description": "A message with more information about the error\n(in the spreadsheet's locale).", + "type": "string" + } + }, + "id": "ErrorValue", + "description": "An error in a cell.", + "type": "object" + }, + "PivotValue": { + "properties": { + "formula": { + "description": "A custom formula to calculate the value. The formula must start\nwith an `=` character.", + "type": "string" + }, + "summarizeFunction": { + "enum": [ + "PIVOT_STANDARD_VALUE_FUNCTION_UNSPECIFIED", + "SUM", + "COUNTA", + "COUNT", + "COUNTUNIQUE", + "AVERAGE", + "MAX", + "MIN", + "MEDIAN", + "PRODUCT", + "STDEV", + "STDEVP", + "VAR", + "VARP", + "CUSTOM" + ], + "description": "A function to summarize the value.\nIf formula is set, the only supported values are\nSUM and\nCUSTOM.\nIf sourceColumnOffset is set, then `CUSTOM`\nis not supported.", + "type": "string", + "enumDescriptions": [ + "The default, do not use.", + "Corresponds to the `SUM` function.", + "Corresponds to the `COUNTA` function.", + "Corresponds to the `COUNT` function.", + "Corresponds to the `COUNTUNIQUE` function.", + "Corresponds to the `AVERAGE` function.", + "Corresponds to the `MAX` function.", + "Corresponds to the `MIN` function.", + "Corresponds to the `MEDIAN` function.", + "Corresponds to the `PRODUCT` function.", + "Corresponds to the `STDEV` function.", + "Corresponds to the `STDEVP` function.", + "Corresponds to the `VAR` function.", + "Corresponds to the `VARP` function.", + "Indicates the formula should be used as-is.\nOnly valid if PivotValue.formula was set." + ] + }, + "sourceColumnOffset": { + "format": "int32", + "description": "The column offset of the source range that this value reads from.\n\nFor example, if the source was `C10:E15`, a `sourceColumnOffset` of `0`\nmeans this value refers to column `C`, whereas the offset `1` would\nrefer to column `D`.", + "type": "integer" + }, + "name": { + "description": "A name to use for the value. This is only used if formula was set.\nOtherwise, the column name is used.", + "type": "string" + } + }, + "id": "PivotValue", + "description": "The definition of how a value in a pivot table should be calculated.", + "type": "object" + }, + "CopySheetToAnotherSpreadsheetRequest": { + "properties": { + "destinationSpreadsheetId": { + "description": "The ID of the spreadsheet to copy the sheet to.", + "type": "string" + } + }, + "id": "CopySheetToAnotherSpreadsheetRequest", + "description": "The request to copy a sheet across spreadsheets.", + "type": "object" } }, "protocol": "rest", diff --git a/vendor/google.golang.org/api/slides/v1/slides-api.json b/vendor/google.golang.org/api/slides/v1/slides-api.json index 16e6daf..795ac77 100644 --- a/vendor/google.golang.org/api/slides/v1/slides-api.json +++ b/vendor/google.golang.org/api/slides/v1/slides-api.json @@ -1,16 +1,2224 @@ { + "servicePath": "", + "kind": "discovery#restDescription", + "description": "An API for creating and editing Google Slides presentations.", + "basePath": "", + "revision": "20170824", + "documentationLink": "https://developers.google.com/slides/", + "id": "slides:v1", + "discoveryVersion": "v1", + "version_module": true, "schemas": { - "DeleteTableRowRequest": { - "description": "Deletes a row from a table.", + "SolidFill": { + "description": "A solid color fill. The page or page element is filled entirely with the\nspecified color value.\n\nIf any field is unset, its value may be inherited from a parent placeholder\nif it exists.", "type": "object", "properties": { + "color": { + "$ref": "OpaqueColor", + "description": "The color value of the solid fill." + }, + "alpha": { + "format": "float", + "description": "The fraction of this `color` that should be applied to the pixel.\nThat is, the final pixel color is defined by the equation:\n\n pixel color = alpha * (color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color.", + "type": "number" + } + }, + "id": "SolidFill" + }, + "ThemeColorPair": { + "id": "ThemeColorPair", + "description": "A pair mapping a theme color type to the concrete color it represents.", + "type": "object", + "properties": { + "color": { + "description": "The concrete color corresponding to the theme color type above.", + "$ref": "RgbColor" + }, + "type": { + "description": "The type of the theme color.", + "type": "string", + "enumDescriptions": [ + "Unspecified theme color. This value should not be used.", + "Represents the first dark color.", + "Represents the first light color.", + "Represents the second dark color.", + "Represents the second light color.", + "Represents the first accent color.", + "Represents the second accent color.", + "Represents the third accent color.", + "Represents the fourth accent color.", + "Represents the fifth accent color.", + "Represents the sixth accent color.", + "Represents the color to use for hyperlinks.", + "Represents the color to use for visited hyperlinks.", + "Represents the first text color.", + "Represents the first background color.", + "Represents the second text color.", + "Represents the second background color." + ], + "enum": [ + "THEME_COLOR_TYPE_UNSPECIFIED", + "DARK1", + "LIGHT1", + "DARK2", + "LIGHT2", + "ACCENT1", + "ACCENT2", + "ACCENT3", + "ACCENT4", + "ACCENT5", + "ACCENT6", + "HYPERLINK", + "FOLLOWED_HYPERLINK", + "TEXT1", + "BACKGROUND1", + "TEXT2", + "BACKGROUND2" + ] + } + } + }, + "OptionalColor": { + "description": "A color that can either be fully opaque or fully transparent.", + "type": "object", + "properties": { + "opaqueColor": { + "$ref": "OpaqueColor", + "description": "If set, this will be used as an opaque color. If unset, this represents\na transparent color." + } + }, + "id": "OptionalColor" + }, + "PageElementProperties": { + "id": "PageElementProperties", + "description": "Common properties for a page element.\n\nNote: When you initially create a\nPageElement, the API may modify\nthe values of both `size` and `transform`, but the\nvisual size will be unchanged.", + "type": "object", + "properties": { + "size": { + "$ref": "Size", + "description": "The size of the element." + }, + "transform": { + "$ref": "AffineTransform", + "description": "The transform for the element." + }, + "pageObjectId": { + "description": "The object ID of the page where the element is located.", + "type": "string" + } + } + }, + "SheetsChartProperties": { + "description": "The properties of the SheetsChart.", + "type": "object", + "properties": { + "chartImageProperties": { + "description": "The properties of the embedded chart image.", + "$ref": "ImageProperties" + } + }, + "id": "SheetsChartProperties" + }, + "StretchedPictureFill": { + "id": "StretchedPictureFill", + "description": "The stretched picture fill. The page or page element is filled entirely with\nthe specified picture. The picture is stretched to fit its container.", + "type": "object", + "properties": { + "contentUrl": { + "description": "Reading the content_url:\n\nAn URL to a picture with a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the picture as the original requester. Access to the\npicture may be lost if the presentation's sharing settings change.\n\nWriting the content_url:\n\nThe picture is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Pictures must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", + "type": "string" + }, + "size": { + "$ref": "Size", + "description": "The original size of the picture fill. This field is read-only." + } + } + }, + "UpdateTextStyleRequest": { + "description": "Update the styling of text in a Shape or\nTable.", + "type": "object", + "properties": { + "textRange": { + "$ref": "Range", + "description": "The range of text to style.\n\nThe range may be extended to include adjacent newlines.\n\nIf the range fully contains a paragraph belonging to a list, the\nparagraph's bullet is also updated with the matching text style." + }, + "objectId": { + "description": "The object ID of the shape or table with the text to be styled.", + "type": "string" + }, + "style": { + "description": "The style(s) to set on the text.\n\nIf the value for a particular style matches that of the parent, that style\nwill be set to inherit.\n\nCertain text style changes may cause other changes meant to mirror the\nbehavior of the Slides editor. See the documentation of\nTextStyle for more information.", + "$ref": "TextStyle" + }, + "cellLocation": { + "$ref": "TableCellLocation", + "description": "The location of the cell in the table containing the text to style. If\n`object_id` refers to a table, `cell_location` must have a value.\nOtherwise, it must not." + }, + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the text style to bold, set `fields` to `\"bold\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + } + }, + "id": "UpdateTextStyleRequest" + }, + "DeleteTableColumnRequest": { + "id": "DeleteTableColumnRequest", + "description": "Deletes a column from a table.", + "type": "object", + "properties": { + "cellLocation": { + "description": "The reference table cell location from which a column will be deleted.\n\nThe column this cell spans will be deleted. If this is a merged cell,\nmultiple columns will be deleted. If no columns remain in the table after\nthis deletion, the whole table is deleted.", + "$ref": "TableCellLocation" + }, "tableObjectId": { - "description": "The table to delete rows from.", + "description": "The table to delete columns from.", + "type": "string" + } + } + }, + "List": { + "description": "A List describes the look and feel of bullets belonging to paragraphs\nassociated with a list. A paragraph that is part of a list has an implicit\nreference to that list's ID.", + "type": "object", + "properties": { + "listId": { + "description": "The ID of the list.", + "type": "string" + }, + "nestingLevel": { + "additionalProperties": { + "$ref": "NestingLevel" + }, + "description": "A map of nesting levels to the properties of bullets at the associated\nlevel. A list has at most nine levels of nesting, so the possible values\nfor the keys of this map are 0 through 8, inclusive.", + "type": "object" + } + }, + "id": "List" + }, + "WeightedFontFamily": { + "id": "WeightedFontFamily", + "description": "Represents a font family and weight used to style a TextRun.", + "type": "object", + "properties": { + "weight": { + "format": "int32", + "description": "The rendered weight of the text. This field can have any value that is a\nmultiple of `100` between `100` and `900`, inclusive. This range\ncorresponds to the numerical values described in the CSS 2.1\nSpecification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness),\nwith non-numerical values disallowed. Weights greater than or equal to\n`700` are considered bold, and weights less than `700`are not bold. The\ndefault value is `400` (\"normal\").", + "type": "integer" + }, + "fontFamily": { + "description": "The font family of the text.\n\nThe font family can be any font from the Font menu in Slides or from\n[Google Fonts] (https://fonts.google.com/). If the font name is\nunrecognized, the text is rendered in `Arial`.", + "type": "string" + } + } + }, + "PageElement": { + "id": "PageElement", + "description": "A visual element rendered on a page.", + "type": "object", + "properties": { + "table": { + "description": "A table page element.", + "$ref": "Table" + }, + "transform": { + "$ref": "AffineTransform", + "description": "The transform of the page element.\n\nThe visual appearance of the page element is determined by its absolute\ntransform. To compute the absolute transform, preconcatenate a page\nelement's transform with the transforms of all of its parent groups. If the\npage element is not in a group, its absolute transform is the same as the\nvalue in this field.\n\nThe initial transform for the newly created Group is always the identity transform." + }, + "objectId": { + "description": "The object ID for this page element. Object IDs used by\ngoogle.apps.slides.v1.Page and\ngoogle.apps.slides.v1.PageElement share the same namespace.", + "type": "string" + }, + "shape": { + "$ref": "Shape", + "description": "A generic shape." + }, + "line": { + "description": "A line page element.", + "$ref": "Line" + }, + "description": { + "description": "The description of the page element. Combined with title to display alt\ntext.", + "type": "string" + }, + "elementGroup": { + "description": "A collection of page elements joined as a single unit.", + "$ref": "Group" + }, + "image": { + "description": "An image page element.", + "$ref": "Image" + }, + "size": { + "description": "The size of the page element.", + "$ref": "Size" + }, + "sheetsChart": { + "description": "A linked chart embedded from Google Sheets. Unlinked charts are\nrepresented as images.", + "$ref": "SheetsChart" + }, + "title": { + "description": "The title of the page element. Combined with description to display alt\ntext.", + "type": "string" + }, + "video": { + "description": "A video page element.", + "$ref": "Video" + }, + "wordArt": { + "$ref": "WordArt", + "description": "A word art page element." + } + } + }, + "CreateImageRequest": { + "id": "CreateImageRequest", + "description": "Creates an image.", + "type": "object", + "properties": { + "objectId": { + "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", + "type": "string" + }, + "elementProperties": { + "description": "The element properties for the image.\n\nWhen the aspect ratio of the provided size does not match the image aspect\nratio, the image is scaled and centered with respect to the size in order\nto maintain aspect ratio. The provided transform is applied after this\noperation.", + "$ref": "PageElementProperties" + }, + "url": { + "description": "The image URL.\n\nThe image is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Images must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", + "type": "string" + } + } + }, + "CreateParagraphBulletsRequest": { + "id": "CreateParagraphBulletsRequest", + "description": "Creates bullets for all of the paragraphs that overlap with the given\ntext index range.\n\nThe nesting level of each paragraph will be determined by counting leading\ntabs in front of each paragraph. To avoid excess space between the bullet and\nthe corresponding paragraph, these leading tabs are removed by this request.\nThis may change the indices of parts of the text.\n\nIf the paragraph immediately before paragraphs being updated is in a list\nwith a matching preset, the paragraphs being updated are added to that\npreceding list.", + "type": "object", + "properties": { + "textRange": { + "description": "The range of text to apply the bullet presets to, based on TextElement indexes.", + "$ref": "Range" + }, + "objectId": { + "description": "The object ID of the shape or table containing the text to add bullets to.", + "type": "string" + }, + "bulletPreset": { + "description": "The kinds of bullet glyphs to be used. Defaults to the\n`BULLET_DISC_CIRCLE_SQUARE` preset.", + "type": "string", + "enumDescriptions": [ + "A bulleted list with a `DISC`, `CIRCLE` and `SQUARE` bullet glyph for the\nfirst 3 list nesting levels.", + "A bulleted list with a `DIAMONDX`, `ARROW3D` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", + "A bulleted list with `CHECKBOX` bullet glyphs for all list nesting levels.", + "A bulleted list with a `ARROW`, `DIAMOND` and `DISC` bullet glyph for\nthe first 3 list nesting levels.", + "A bulleted list with a `STAR`, `CIRCLE` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", + "A bulleted list with a `ARROW3D`, `CIRCLE` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", + "A bulleted list with a `LEFTTRIANGLE`, `DIAMOND` and `DISC` bullet glyph\nfor the first 3 list nesting levels.", + "A bulleted list with a `DIAMONDX`, `HOLLOWDIAMOND` and `SQUARE` bullet\nglyph for the first 3 list nesting levels.", + "A bulleted list with a `DIAMOND`, `CIRCLE` and `SQUARE` bullet glyph\nfor the first 3 list nesting levels.", + "A numbered list with `DIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods.", + "A numbered list with `DIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by parenthesis.", + "A numbered list with `DIGIT` numeric glyphs separated by periods, where\neach nesting level uses the previous nesting level's glyph as a prefix.\nFor example: '1.', '1.1.', '2.', '2.2.'.", + "A numbered list with `UPPERALPHA`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods.", + "A numbered list with `UPPERROMAN`, `UPPERALPHA` and `DIGIT` numeric glyphs\nfor the first 3 list nesting levels, followed by periods.", + "A numbered list with `ZERODIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods." + ], + "enum": [ + "BULLET_DISC_CIRCLE_SQUARE", + "BULLET_DIAMONDX_ARROW3D_SQUARE", + "BULLET_CHECKBOX", + "BULLET_ARROW_DIAMOND_DISC", + "BULLET_STAR_CIRCLE_SQUARE", + "BULLET_ARROW3D_CIRCLE_SQUARE", + "BULLET_LEFTTRIANGLE_DIAMOND_DISC", + "BULLET_DIAMONDX_HOLLOWDIAMOND_SQUARE", + "BULLET_DIAMOND_CIRCLE_SQUARE", + "NUMBERED_DIGIT_ALPHA_ROMAN", + "NUMBERED_DIGIT_ALPHA_ROMAN_PARENS", + "NUMBERED_DIGIT_NESTED", + "NUMBERED_UPPERALPHA_ALPHA_ROMAN", + "NUMBERED_UPPERROMAN_UPPERALPHA_DIGIT", + "NUMBERED_ZERODIGIT_ALPHA_ROMAN" + ] + }, + "cellLocation": { + "$ref": "TableCellLocation", + "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table." + } + } + }, + "Size": { + "id": "Size", + "description": "A width and height.", + "type": "object", + "properties": { + "height": { + "$ref": "Dimension", + "description": "The height of the object." + }, + "width": { + "description": "The width of the object.", + "$ref": "Dimension" + } + } + }, + "TextStyle": { + "id": "TextStyle", + "description": "Represents the styling that can be applied to a TextRun.\n\nIf this text is contained in a shape with a parent placeholder, then these text styles may be\ninherited from the parent. Which text styles are inherited depend on the\nnesting level of lists:\n\n* A text run in a paragraph that is not in a list will inherit its text style\n from the the newline character in the paragraph at the 0 nesting level of\n the list inside the parent placeholder.\n* A text run in a paragraph that is in a list will inherit its text style\n from the newline character in the paragraph at its corresponding nesting\n level of the list inside the parent placeholder.\n\nInherited text styles are represented as unset fields in this message. If\ntext is contained in a shape without a parent placeholder, unsetting these\nfields will revert the style to a value matching the defaults in the Slides\neditor.", + "type": "object", + "properties": { + "smallCaps": { + "description": "Whether or not the text is in small capital letters.", + "type": "boolean" + }, + "backgroundColor": { + "$ref": "OptionalColor", + "description": "The background color of the text. If set, the color is either opaque or\ntransparent, depending on if the `opaque_color` field in it is set." + }, + "underline": { + "description": "Whether or not the text is underlined.", + "type": "boolean" + }, + "link": { + "$ref": "Link", + "description": "The hyperlink destination of the text. If unset, there is no link. Links\nare not inherited from parent text.\n\nChanging the link in an update request causes some other changes to the\ntext style of the range:\n\n* When setting a link, the text foreground color will be set to\n ThemeColorType.HYPERLINK and the text will\n be underlined. If these fields are modified in the same\n request, those values will be used instead of the link defaults.\n* Setting a link on a text range that overlaps with an existing link will\n also update the existing link to point to the new URL.\n* Links are not settable on newline characters. As a result, setting a link\n on a text range that crosses a paragraph boundary, such as `\"ABC\\n123\"`,\n will separate the newline character(s) into their own text runs. The\n link will be applied separately to the runs before and after the newline.\n* Removing a link will update the text style of the range to match the\n style of the preceding text (or the default text styles if the preceding\n text is another link) unless different styles are being set in the same\n request." + }, + "foregroundColor": { + "description": "The color of the text itself. If set, the color is either opaque or\ntransparent, depending on if the `opaque_color` field in it is set.", + "$ref": "OptionalColor" + }, + "bold": { + "description": "Whether or not the text is rendered as bold.", + "type": "boolean" + }, + "fontFamily": { + "description": "The font family of the text.\n\nThe font family can be any font from the Font menu in Slides or from\n[Google Fonts] (https://fonts.google.com/). If the font name is\nunrecognized, the text is rendered in `Arial`.\n\nSome fonts can affect the weight of the text. If an update request\nspecifies values for both `font_family` and `bold`, the explicitly-set\n`bold` value is used.", + "type": "string" + }, + "strikethrough": { + "description": "Whether or not the text is struck through.", + "type": "boolean" + }, + "italic": { + "description": "Whether or not the text is italicized.", + "type": "boolean" + }, + "fontSize": { + "$ref": "Dimension", + "description": "The size of the text's font. When read, the `font_size` will specified in\npoints." + }, + "baselineOffset": { + "description": "The text's vertical offset from its normal position.\n\nText with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically\nrendered in a smaller font size, computed based on the `font_size` field.\nThe `font_size` itself is not affected by changes in this field.", + "type": "string", + "enumDescriptions": [ + "The text's baseline offset is inherited from the parent.", + "The text is not vertically offset.", + "The text is vertically offset upwards (superscript).", + "The text is vertically offset downwards (subscript)." + ], + "enum": [ + "BASELINE_OFFSET_UNSPECIFIED", + "NONE", + "SUPERSCRIPT", + "SUBSCRIPT" + ] + }, + "weightedFontFamily": { + "description": "The font family and rendered weight of the text.\n\nThis field is an extension of `font_family` meant to support explicit font\nweights without breaking backwards compatibility. As such, when reading the\nstyle of a range of text, the value of `weighted_font_family#font_family`\nwill always be equal to that of `font_family`. However, when writing, if\nboth fields are included in the field mask (either explicitly or through\nthe wildcard `\"*\"`), their values are reconciled as follows:\n\n* If `font_family` is set and `weighted_font_family` is not, the value of\n `font_family` is applied with weight `400` (\"normal\").\n* If both fields are set, the value of `font_family` must match that of\n `weighted_font_family#font_family`. If so, the font family and weight of\n `weighted_font_family` is applied. Otherwise, a 400 bad request error is\n returned.\n* If `weighted_font_family` is set and `font_family` is not, the font\n family and weight of `weighted_font_family` is applied.\n* If neither field is set, the font family and weight of the text inherit\n from the parent. Note that these properties cannot inherit separately\n from each other.\n\nIf an update request specifies values for both `weighted_font_family` and\n`bold`, the `weighted_font_family` is applied first, then `bold`.\n\nIf `weighted_font_family#weight` is not set, it defaults to `400`.\n\nIf `weighted_font_family` is set, then `weighted_font_family#font_family`\nmust also be set with a non-empty value. Otherwise, a 400 bad request error\nis returned.", + "$ref": "WeightedFontFamily" + } + } + }, + "UpdateVideoPropertiesRequest": { + "description": "Update the properties of a Video.", + "type": "object", + "properties": { + "videoProperties": { + "description": "The video properties to update.", + "$ref": "VideoProperties" + }, + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `videoProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the video outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + }, + "objectId": { + "description": "The object ID of the video the updates are applied to.", + "type": "string" + } + }, + "id": "UpdateVideoPropertiesRequest" + }, + "Request": { + "description": "A single kind of update to apply to a presentation.", + "type": "object", + "properties": { + "updateTableCellProperties": { + "description": "Updates the properties of a TableCell.", + "$ref": "UpdateTableCellPropertiesRequest" + }, + "createTable": { + "description": "Creates a new table.", + "$ref": "CreateTableRequest" + }, + "deleteObject": { + "$ref": "DeleteObjectRequest", + "description": "Deletes a page or page element from the presentation." + }, + "updateParagraphStyle": { + "$ref": "UpdateParagraphStyleRequest", + "description": "Updates the styling of paragraphs within a Shape or Table." + }, + "duplicateObject": { + "$ref": "DuplicateObjectRequest", + "description": "Duplicates a slide or page element." + }, + "deleteTableColumn": { + "description": "Deletes a column from a table.", + "$ref": "DeleteTableColumnRequest" + }, + "updateVideoProperties": { + "$ref": "UpdateVideoPropertiesRequest", + "description": "Updates the properties of a Video." + }, + "createLine": { + "description": "Creates a line.", + "$ref": "CreateLineRequest" + }, + "createImage": { + "description": "Creates an image.", + "$ref": "CreateImageRequest" + }, + "createParagraphBullets": { + "description": "Creates bullets for paragraphs.", + "$ref": "CreateParagraphBulletsRequest" + }, + "createVideo": { + "$ref": "CreateVideoRequest", + "description": "Creates a video." + }, + "createSheetsChart": { + "description": "Creates an embedded Google Sheets chart.", + "$ref": "CreateSheetsChartRequest" + }, + "replaceAllShapesWithSheetsChart": { + "$ref": "ReplaceAllShapesWithSheetsChartRequest", + "description": "Replaces all shapes matching some criteria with a Google Sheets chart." + }, + "updatePageElementTransform": { + "$ref": "UpdatePageElementTransformRequest", + "description": "Updates the transform of a page element." + }, + "updateTextStyle": { + "description": "Updates the styling of text within a Shape or Table.", + "$ref": "UpdateTextStyleRequest" + }, + "replaceAllShapesWithImage": { + "$ref": "ReplaceAllShapesWithImageRequest", + "description": "Replaces all shapes matching some criteria with an image." + }, + "replaceAllText": { + "$ref": "ReplaceAllTextRequest", + "description": "Replaces all instances of specified text." + }, + "updateImageProperties": { + "$ref": "UpdateImagePropertiesRequest", + "description": "Updates the properties of an Image." + }, + "insertTableRows": { + "description": "Inserts rows into a table.", + "$ref": "InsertTableRowsRequest" + }, + "createSlide": { + "$ref": "CreateSlideRequest", + "description": "Creates a new slide." + }, + "updateLineProperties": { + "description": "Updates the properties of a Line.", + "$ref": "UpdateLinePropertiesRequest" + }, + "updateSlidesPosition": { + "description": "Updates the position of a set of slides in the presentation.", + "$ref": "UpdateSlidesPositionRequest" + }, + "deleteTableRow": { + "description": "Deletes a row from a table.", + "$ref": "DeleteTableRowRequest" + }, + "updateShapeProperties": { + "description": "Updates the properties of a Shape.", + "$ref": "UpdateShapePropertiesRequest" + }, + "insertText": { + "description": "Inserts text into a shape or table cell.", + "$ref": "InsertTextRequest" + }, + "deleteText": { + "$ref": "DeleteTextRequest", + "description": "Deletes text from a shape or a table cell." + }, + "updatePageProperties": { + "$ref": "UpdatePagePropertiesRequest", + "description": "Updates the properties of a Page." + }, + "createShape": { + "description": "Creates a new shape.", + "$ref": "CreateShapeRequest" + }, + "deleteParagraphBullets": { + "$ref": "DeleteParagraphBulletsRequest", + "description": "Deletes bullets from paragraphs." + }, + "insertTableColumns": { + "$ref": "InsertTableColumnsRequest", + "description": "Inserts columns into a table." + }, + "refreshSheetsChart": { + "$ref": "RefreshSheetsChartRequest", + "description": "Refreshes a Google Sheets chart." + } + }, + "id": "Request" + }, + "UpdateImagePropertiesRequest": { + "description": "Update the properties of an Image.", + "type": "object", + "properties": { + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `imageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the image outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + }, + "imageProperties": { + "description": "The image properties to update.", + "$ref": "ImageProperties" + }, + "objectId": { + "description": "The object ID of the image the updates are applied to.", + "type": "string" + } + }, + "id": "UpdateImagePropertiesRequest" + }, + "ParagraphStyle": { + "description": "Styles that apply to a whole paragraph.\n\nIf this text is contained in a shape with a parent placeholder, then these paragraph styles may be\ninherited from the parent. Which paragraph styles are inherited depend on the\nnesting level of lists:\n\n* A paragraph not in a list will inherit its paragraph style from the\n paragraph at the 0 nesting level of the list inside the parent placeholder.\n* A paragraph in a list will inherit its paragraph style from the paragraph\n at its corresponding nesting level of the list inside the parent\n placeholder.\n\nInherited paragraph styles are represented as unset fields in this message.", + "type": "object", + "properties": { + "spaceBelow": { + "$ref": "Dimension", + "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent." + }, + "direction": { + "enumDescriptions": [ + "The text direction is inherited from the parent.", + "The text goes from left to right.", + "The text goes from right to left." + ], + "enum": [ + "TEXT_DIRECTION_UNSPECIFIED", + "LEFT_TO_RIGHT", + "RIGHT_TO_LEFT" + ], + "description": "The text direction of this paragraph. If unset, the value defaults to\nLEFT_TO_RIGHT since\ntext direction is not inherited.", + "type": "string" + }, + "indentEnd": { + "$ref": "Dimension", + "description": "The amount indentation for the paragraph on the side that corresponds to\nthe end of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent." + }, + "spacingMode": { + "enumDescriptions": [ + "The spacing mode is inherited from the parent.", + "Paragraph spacing is always rendered.", + "Paragraph spacing is skipped between list elements." + ], + "enum": [ + "SPACING_MODE_UNSPECIFIED", + "NEVER_COLLAPSE", + "COLLAPSE_LISTS" + ], + "description": "The spacing mode for the paragraph.", + "type": "string" + }, + "indentStart": { + "$ref": "Dimension", + "description": "The amount indentation for the paragraph on the side that corresponds to\nthe start of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent." + }, + "spaceAbove": { + "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent.", + "$ref": "Dimension" + }, + "alignment": { + "description": "The text alignment for this paragraph.", + "type": "string", + "enumDescriptions": [ + "The paragraph alignment is inherited from the parent.", + "The paragraph is aligned to the start of the line. Left-aligned for\nLTR text, right-aligned otherwise.", + "The paragraph is centered.", + "The paragraph is aligned to the end of the line. Right-aligned for\nLTR text, left-aligned otherwise.", + "The paragraph is justified." + ], + "enum": [ + "ALIGNMENT_UNSPECIFIED", + "START", + "CENTER", + "END", + "JUSTIFIED" + ] + }, + "lineSpacing": { + "format": "float", + "description": "The amount of space between lines, as a percentage of normal, where normal\nis represented as 100.0. If unset, the value is inherited from the parent.", + "type": "number" + }, + "indentFirstLine": { + "$ref": "Dimension", + "description": "The amount of indentation for the start of the first line of the paragraph.\nIf unset, the value is inherited from the parent." + } + }, + "id": "ParagraphStyle" + }, + "ReplaceAllShapesWithSheetsChartResponse": { + "id": "ReplaceAllShapesWithSheetsChartResponse", + "description": "The result of replacing shapes with a Google Sheets chart.", + "type": "object", + "properties": { + "occurrencesChanged": { + "format": "int32", + "description": "The number of shapes replaced with charts.", + "type": "integer" + } + } + }, + "TableCellProperties": { + "description": "The properties of the TableCell.", + "type": "object", + "properties": { + "tableCellBackgroundFill": { + "$ref": "TableCellBackgroundFill", + "description": "The background fill of the table cell. The default fill matches the fill\nfor newly created table cells in the Slides editor." + } + }, + "id": "TableCellProperties" + }, + "RefreshSheetsChartRequest": { + "description": "Refreshes an embedded Google Sheets chart by replacing it with the latest\nversion of the chart from Google Sheets.\n\nNOTE: Refreshing charts requires at least one of the spreadsheets.readonly,\nspreadsheets, drive.readonly, or drive OAuth scopes.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the chart to refresh.", + "type": "string" + } + }, + "id": "RefreshSheetsChartRequest" + }, + "Outline": { + "description": "The outline of a PageElement.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.", + "type": "object", + "properties": { + "outlineFill": { + "$ref": "OutlineFill", + "description": "The fill of the outline." + }, + "weight": { + "$ref": "Dimension", + "description": "The thickness of the outline." + }, + "dashStyle": { + "enumDescriptions": [ + "Unspecified dash style.", + "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.", + "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.", + "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.", + "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.", + "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.", + "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'." + ], + "enum": [ + "DASH_STYLE_UNSPECIFIED", + "SOLID", + "DOT", + "DASH", + "DASH_DOT", + "LONG_DASH", + "LONG_DASH_DOT" + ], + "description": "The dash style of the outline.", + "type": "string" + }, + "propertyState": { + "description": "The outline property state.\n\nUpdating the the outline on a page element will implicitly update this\nfield to`RENDERED`, unless another value is specified in the same request.\nTo have no outline on a page element, set this field to `NOT_RENDERED`. In\nthis case, any other outline fields set in the same request will be\nignored.", + "type": "string", + "enumDescriptions": [ + "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", + "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", + "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." + ], + "enum": [ + "RENDERED", + "NOT_RENDERED", + "INHERIT" + ] + } + }, + "id": "Outline" + }, + "NotesProperties": { + "id": "NotesProperties", + "description": "The properties of Page that are only\nrelevant for pages with page_type NOTES.", + "type": "object", + "properties": { + "speakerNotesObjectId": { + "description": "The object ID of the shape on this notes page that contains the speaker\nnotes for the corresponding slide.\nThe actual shape may not always exist on the notes page. Inserting text\nusing this object ID will automatically create the shape. In this case, the\nactual shape may have different object ID. The `GetPresentation` or\n`GetPage` action will always return the latest object ID.", + "type": "string" + } + } + }, + "ShapeProperties": { + "description": "The properties of a Shape.\n\nIf the shape is a placeholder shape as determined by the\nplaceholder field, then these\nproperties may be inherited from a parent placeholder shape.\nDetermining the rendered value of the property depends on the corresponding\nproperty_state field value.", + "type": "object", + "properties": { + "outline": { + "$ref": "Outline", + "description": "The outline of the shape. If unset, the outline is inherited from a\nparent placeholder if it exists. If the shape has no parent, then the\ndefault outline depends on the shape type, matching the defaults for\nnew shapes created in the Slides editor." + }, + "shadow": { + "$ref": "Shadow", + "description": "The shadow properties of the shape. If unset, the shadow is inherited from\na parent placeholder if it exists. If the shape has no parent, then the\ndefault shadow matches the defaults for new shapes created in the Slides\neditor. This property is read-only." + }, + "shapeBackgroundFill": { + "$ref": "ShapeBackgroundFill", + "description": "The background fill of the shape. If unset, the background fill is\ninherited from a parent placeholder if it exists. If the shape has no\nparent, then the default background fill depends on the shape type,\nmatching the defaults for new shapes created in the Slides editor." + }, + "link": { + "$ref": "Link", + "description": "The hyperlink destination of the shape. If unset, there is no link. Links\nare not inherited from parent placeholders." + } + }, + "id": "ShapeProperties" + }, + "TableColumnProperties": { + "id": "TableColumnProperties", + "description": "Properties of each column in a table.", + "type": "object", + "properties": { + "columnWidth": { + "$ref": "Dimension", + "description": "Width of a column." + } + } + }, + "TableRow": { + "description": "Properties and contents of each row in a table.", + "type": "object", + "properties": { + "tableCells": { + "description": "Properties and contents of each cell.\n\nCells that span multiple columns are represented only once with a\ncolumn_span greater\nthan 1. As a result, the length of this collection does not always match\nthe number of columns of the entire table.", + "items": { + "$ref": "TableCell" + }, + "type": "array" + }, + "rowHeight": { + "$ref": "Dimension", + "description": "Height of a row." + } + }, + "id": "TableRow" + }, + "UpdateTableCellPropertiesRequest": { + "id": "UpdateTableCellPropertiesRequest", + "description": "Update the properties of a TableCell.", + "type": "object", + "properties": { + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableCellProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the table cell background solid fill color, set\n`fields` to `\"tableCellBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + }, + "tableRange": { + "description": "The table range representing the subset of the table to which the updates\nare applied. If a table range is not specified, the updates will apply to\nthe entire table.", + "$ref": "TableRange" + }, + "objectId": { + "description": "The object ID of the table.", + "type": "string" + }, + "tableCellProperties": { + "$ref": "TableCellProperties", + "description": "The table cell properties to update." + } + } + }, + "CreateSlideRequest": { + "id": "CreateSlideRequest", + "description": "Creates a new slide.", + "type": "object", + "properties": { + "placeholderIdMappings": { + "description": "An optional list of object ID mappings from the placeholder(s) on the layout to the placeholder(s)\nthat will be created on the new slide from that specified layout. Can only\nbe used when `slide_layout_reference` is specified.", + "items": { + "$ref": "LayoutPlaceholderIdMapping" + }, + "type": "array" + }, + "slideLayoutReference": { + "description": "Layout reference of the slide to be inserted, based on the *current\nmaster*, which is one of the following:\n\n- The master of the previous slide index.\n- The master of the first slide, if the insertion_index is zero.\n- The first master in the presentation, if there are no slides.\n\nIf the LayoutReference is not found in the current master, a 400 bad\nrequest error is returned.\n\nIf you don't specify a layout reference, then the new slide will use the\npredefined layout `BLANK`.", + "$ref": "LayoutReference" + }, + "objectId": { + "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", + "type": "string" + }, + "insertionIndex": { + "format": "int32", + "description": "The optional zero-based index indicating where to insert the slides.\n\nIf you don't specify an index, the new slide is created at the end.", + "type": "integer" + } + } + }, + "BatchUpdatePresentationRequest": { + "description": "Request message for PresentationsService.BatchUpdatePresentation.", + "type": "object", + "properties": { + "requests": { + "description": "A list of updates to apply to the presentation.", + "items": { + "$ref": "Request" + }, + "type": "array" + }, + "writeControl": { + "$ref": "WriteControl", + "description": "Provides control over how write requests are executed." + } + }, + "id": "BatchUpdatePresentationRequest" + }, + "TextContent": { + "id": "TextContent", + "description": "The general text content. The text must reside in a compatible shape (e.g.\ntext box or rectangle) or a table cell in a page.", + "type": "object", + "properties": { + "lists": { + "description": "The bulleted lists contained in this text, keyed by list ID.", + "type": "object", + "additionalProperties": { + "$ref": "List" + } + }, + "textElements": { + "description": "The text contents broken down into its component parts, including styling\ninformation. This property is read-only.", + "items": { + "$ref": "TextElement" + }, + "type": "array" + } + } + }, + "CreateSheetsChartResponse": { + "id": "CreateSheetsChartResponse", + "description": "The result of creating an embedded Google Sheets chart.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the created chart.", + "type": "string" + } + } + }, + "WriteControl": { + "id": "WriteControl", + "description": "Provides control over how write requests are executed.", + "type": "object", + "properties": { + "requiredRevisionId": { + "description": "The revision ID of the presentation required for the write request. If\nspecified and the `required_revision_id` doesn't exactly match the\npresentation's current `revision_id`, the request will not be processed and\nwill return a 400 bad request error.", + "type": "string" + } + } + }, + "DeleteParagraphBulletsRequest": { + "id": "DeleteParagraphBulletsRequest", + "description": "Deletes bullets from all of the paragraphs that overlap with the given text\nindex range.\n\nThe nesting level of each paragraph will be visually preserved by adding\nindent to the start of the corresponding paragraph.", + "type": "object", + "properties": { + "textRange": { + "description": "The range of text to delete bullets from, based on TextElement indexes.", + "$ref": "Range" + }, + "objectId": { + "description": "The object ID of the shape or table containing the text to delete bullets\nfrom.", "type": "string" }, + "cellLocation": { + "$ref": "TableCellLocation", + "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table." + } + } + }, + "ParagraphMarker": { + "description": "A TextElement kind that represents the beginning of a new paragraph.", + "type": "object", + "properties": { + "style": { + "description": "The paragraph's style", + "$ref": "ParagraphStyle" + }, + "bullet": { + "description": "The bullet for this paragraph. If not present, the paragraph does not\nbelong to a list.", + "$ref": "Bullet" + } + }, + "id": "ParagraphMarker" + }, + "InsertTableColumnsRequest": { + "id": "InsertTableColumnsRequest", + "description": "Inserts columns into a table.\n\nOther columns in the table will be resized to fit the new column.", + "type": "object", + "properties": { + "number": { + "format": "int32", + "description": "The number of columns to be inserted. Maximum 20 per request.", + "type": "integer" + }, + "cellLocation": { + "description": "The reference table cell location from which columns will be inserted.\n\nA new column will be inserted to the left (or right) of the column where\nthe reference cell is. If the reference cell is a merged cell, a new\ncolumn will be inserted to the left (or right) of the merged cell.", + "$ref": "TableCellLocation" + }, + "insertRight": { + "description": "Whether to insert new columns to the right of the reference cell location.\n\n- `True`: insert to the right.\n- `False`: insert to the left.", + "type": "boolean" + }, + "tableObjectId": { + "description": "The table to insert columns into.", + "type": "string" + } + } + }, + "Thumbnail": { + "description": "The thumbnail of a page.", + "type": "object", + "properties": { + "height": { + "format": "int32", + "description": "The positive height in pixels of the thumbnail image.", + "type": "integer" + }, + "contentUrl": { + "description": "The content URL of the thumbnail image.\n\nThe URL to the image has a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the image as the original requester. Access to the\nimage may be lost if the presentation's sharing settings change.\nThe mime type of the thumbnail image is the same as specified in the\n`GetPageThumbnailRequest`.", + "type": "string" + }, + "width": { + "format": "int32", + "description": "The positive width in pixels of the thumbnail image.", + "type": "integer" + } + }, + "id": "Thumbnail" + }, + "LayoutPlaceholderIdMapping": { + "description": "The user-specified ID mapping for a placeholder that will be created on a\nslide from a specified layout.", + "type": "object", + "properties": { + "layoutPlaceholder": { + "description": "The placeholder on a layout that will be applied to a slide. Only type and index are needed. For example, a\npredefined `TITLE_AND_BODY` layout may usually have a TITLE placeholder\nwith index 0 and a BODY placeholder with index 0.", + "$ref": "Placeholder" + }, + "layoutPlaceholderObjectId": { + "description": "The object ID of the placeholder on a layout that will be applied\nto a slide.", + "type": "string" + }, + "objectId": { + "description": "A user-supplied object ID for the placeholder identified above that to be\ncreated onto a slide.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", + "type": "string" + } + }, + "id": "LayoutPlaceholderIdMapping" + }, + "UpdateShapePropertiesRequest": { + "description": "Update the properties of a Shape.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the shape the updates are applied to.", + "type": "string" + }, + "shapeProperties": { + "$ref": "ShapeProperties", + "description": "The shape properties to update." + }, + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `shapeProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the shape background solid fill color, set `fields`\nto `\"shapeBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + } + }, + "id": "UpdateShapePropertiesRequest" + }, + "WordArt": { + "description": "A PageElement kind representing\nword art.", + "type": "object", + "properties": { + "renderedText": { + "description": "The text rendered as word art.", + "type": "string" + } + }, + "id": "WordArt" + }, + "Recolor": { + "description": "A recolor effect applied on an image.", + "type": "object", + "properties": { + "recolorStops": { + "description": "The recolor effect is represented by a gradient, which is a list of color\nstops.\n\nThe colors in the gradient will replace the corresponding colors at\nthe same position in the color palette and apply to the image. This\nproperty is read-only.", + "items": { + "$ref": "ColorStop" + }, + "type": "array" + }, + "name": { + "enumDescriptions": [ + "No recolor effect. The default value.", + "A recolor effect that lightens the image using the page's first available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's second\navailable color from its color scheme.", + "A recolor effect that lightens the image using the page's third available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's forth available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's fifth available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's sixth available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's seventh\navailable color from its color scheme.e.", + "A recolor effect that lightens the image using the page's eighth\navailable color from its color scheme.", + "A recolor effect that lightens the image using the page's ninth available\ncolor from its color scheme.", + "A recolor effect that lightens the image using the page's tenth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's first available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's second available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's third available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's fourth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's fifth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's sixth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's seventh\navailable color from its color scheme.", + "A recolor effect that darkens the image using the page's eighth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's ninth available\ncolor from its color scheme.", + "A recolor effect that darkens the image using the page's tenth available\ncolor from its color scheme.", + "A recolor effect that recolors the image to grayscale.", + "A recolor effect that recolors the image to negative grayscale.", + "A recolor effect that recolors the image using the sepia color.", + "Custom recolor effect. Refer to `recolor_stops` for the concrete\ngradient." + ], + "enum": [ + "NONE", + "LIGHT1", + "LIGHT2", + "LIGHT3", + "LIGHT4", + "LIGHT5", + "LIGHT6", + "LIGHT7", + "LIGHT8", + "LIGHT9", + "LIGHT10", + "DARK1", + "DARK2", + "DARK3", + "DARK4", + "DARK5", + "DARK6", + "DARK7", + "DARK8", + "DARK9", + "DARK10", + "GRAYSCALE", + "NEGATIVE", + "SEPIA", + "CUSTOM" + ], + "description": "The name of the recolor effect.\n\nThe name is determined from the `recolor_stops` by matching the gradient\nagainst the colors in the page's current color scheme. This property is\nread-only.", + "type": "string" + } + }, + "id": "Recolor" + }, + "Link": { + "description": "A hypertext link.", + "type": "object", + "properties": { + "pageObjectId": { + "description": "If set, indicates this is a link to the specific page in this\npresentation with this ID. A page with this ID may not exist.", + "type": "string" + }, + "slideIndex": { + "format": "int32", + "description": "If set, indicates this is a link to the slide at this zero-based index\nin the presentation. There may not be a slide at this index.", + "type": "integer" + }, + "relativeLink": { + "enumDescriptions": [ + "An unspecified relative slide link.", + "A link to the next slide.", + "A link to the previous slide.", + "A link to the first slide in the presentation.", + "A link to the last slide in the presentation." + ], + "enum": [ + "RELATIVE_SLIDE_LINK_UNSPECIFIED", + "NEXT_SLIDE", + "PREVIOUS_SLIDE", + "FIRST_SLIDE", + "LAST_SLIDE" + ], + "description": "If set, indicates this is a link to a slide in this presentation,\naddressed by its position.", + "type": "string" + }, + "url": { + "description": "If set, indicates this is a link to the external web page at this URL.", + "type": "string" + } + }, + "id": "Link" + }, + "CreateShapeResponse": { + "id": "CreateShapeResponse", + "description": "The result of creating a shape.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the created shape.", + "type": "string" + } + } + }, + "RgbColor": { + "id": "RgbColor", + "description": "An RGB color.", + "type": "object", + "properties": { + "red": { + "format": "float", + "description": "The red component of the color, from 0.0 to 1.0.", + "type": "number" + }, + "blue": { + "format": "float", + "description": "The blue component of the color, from 0.0 to 1.0.", + "type": "number" + }, + "green": { + "format": "float", + "description": "The green component of the color, from 0.0 to 1.0.", + "type": "number" + } + } + }, + "CreateLineRequest": { + "description": "Creates a line.", + "type": "object", + "properties": { + "objectId": { + "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", + "type": "string" + }, + "elementProperties": { + "$ref": "PageElementProperties", + "description": "The element properties for the line." + }, + "lineCategory": { + "description": "The category of line to be created.", + "type": "string", + "enumDescriptions": [ + "Straight connectors, including straight connector 1. The is the default\ncategory when one is not specified.", + "Bent connectors, including bent connector 2 to 5.", + "Curved connectors, including curved connector 2 to 5." + ], + "enum": [ + "STRAIGHT", + "BENT", + "CURVED" + ] + } + }, + "id": "CreateLineRequest" + }, + "CreateSlideResponse": { + "description": "The result of creating a slide.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the created slide.", + "type": "string" + } + }, + "id": "CreateSlideResponse" + }, + "CreateShapeRequest": { + "id": "CreateShapeRequest", + "description": "Creates a new shape.", + "type": "object", + "properties": { + "shapeType": { + "description": "The shape type.", + "type": "string", + "enumDescriptions": [ + "The shape type that is not predefined.", + "Text box shape.", + "Rectangle shape. Corresponds to ECMA-376 ST_ShapeType 'rect'.", + "Round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'roundRect'", + "Ellipse shape. Corresponds to ECMA-376 ST_ShapeType 'ellipse'", + "Curved arc shape. Corresponds to ECMA-376 ST_ShapeType 'arc'", + "Bent arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentArrow'", + "Bent up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentUpArrow'", + "Bevel shape. Corresponds to ECMA-376 ST_ShapeType 'bevel'", + "Block arc shape. Corresponds to ECMA-376 ST_ShapeType 'blockArc'", + "Brace pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracePair'", + "Bracket pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracketPair'", + "Can shape. Corresponds to ECMA-376 ST_ShapeType 'can'", + "Chevron shape. Corresponds to ECMA-376 ST_ShapeType 'chevron'", + "Chord shape. Corresponds to ECMA-376 ST_ShapeType 'chord'", + "Cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloud'", + "Corner shape. Corresponds to ECMA-376 ST_ShapeType 'corner'", + "Cube shape. Corresponds to ECMA-376 ST_ShapeType 'cube'", + "Curved down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedDownArrow'", + "Curved left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedLeftArrow'", + "Curved right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedRightArrow'", + "Curved up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedUpArrow'", + "Decagon shape. Corresponds to ECMA-376 ST_ShapeType 'decagon'", + "Diagonal stripe shape. Corresponds to ECMA-376 ST_ShapeType 'diagStripe'", + "Diamond shape. Corresponds to ECMA-376 ST_ShapeType 'diamond'", + "Dodecagon shape. Corresponds to ECMA-376 ST_ShapeType 'dodecagon'", + "Donut shape. Corresponds to ECMA-376 ST_ShapeType 'donut'", + "Double wave shape. Corresponds to ECMA-376 ST_ShapeType 'doubleWave'", + "Down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'downArrow'", + "Callout down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'downArrowCallout'", + "Folded corner shape. Corresponds to ECMA-376 ST_ShapeType 'foldedCorner'", + "Frame shape. Corresponds to ECMA-376 ST_ShapeType 'frame'", + "Half frame shape. Corresponds to ECMA-376 ST_ShapeType 'halfFrame'", + "Heart shape. Corresponds to ECMA-376 ST_ShapeType 'heart'", + "Heptagon shape. Corresponds to ECMA-376 ST_ShapeType 'heptagon'", + "Hexagon shape. Corresponds to ECMA-376 ST_ShapeType 'hexagon'", + "Home plate shape. Corresponds to ECMA-376 ST_ShapeType 'homePlate'", + "Horizontal scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'horizontalScroll'", + "Irregular seal 1 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal1'", + "Irregular seal 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal2'", + "Left arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftArrow'", + "Callout left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftArrowCallout'", + "Left brace shape. Corresponds to ECMA-376 ST_ShapeType 'leftBrace'", + "Left bracket shape. Corresponds to ECMA-376 ST_ShapeType 'leftBracket'", + "Left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrow'", + "Callout left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrowCallout'", + "Left right up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightUpArrow'", + "Left up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftUpArrow'", + "Lightning bolt shape. Corresponds to ECMA-376 ST_ShapeType\n'lightningBolt'", + "Divide math shape. Corresponds to ECMA-376 ST_ShapeType 'mathDivide'", + "Equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathEqual'", + "Minus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMinus'", + "Multiply math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMultiply'", + "Not equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathNotEqual'", + "Plus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathPlus'", + "Moon shape. Corresponds to ECMA-376 ST_ShapeType 'moon'", + "No smoking shape. Corresponds to ECMA-376 ST_ShapeType 'noSmoking'", + "Notched right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'notchedRightArrow'", + "Octagon shape. Corresponds to ECMA-376 ST_ShapeType 'octagon'", + "Parallelogram shape. Corresponds to ECMA-376 ST_ShapeType 'parallelogram'", + "Pentagon shape. Corresponds to ECMA-376 ST_ShapeType 'pentagon'", + "Pie shape. Corresponds to ECMA-376 ST_ShapeType 'pie'", + "Plaque shape. Corresponds to ECMA-376 ST_ShapeType 'plaque'", + "Plus shape. Corresponds to ECMA-376 ST_ShapeType 'plus'", + "Quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType 'quadArrow'", + "Callout quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'quadArrowCallout'", + "Ribbon shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon'", + "Ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon2'", + "Right arrow shape. Corresponds to ECMA-376 ST_ShapeType 'rightArrow'", + "Callout right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'rightArrowCallout'", + "Right brace shape. Corresponds to ECMA-376 ST_ShapeType 'rightBrace'", + "Right bracket shape. Corresponds to ECMA-376 ST_ShapeType 'rightBracket'", + "One round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'round1Rect'", + "Two diagonal round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2DiagRect'", + "Two same-side round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2SameRect'", + "Right triangle shape. Corresponds to ECMA-376 ST_ShapeType 'rtTriangle'", + "Smiley face shape. Corresponds to ECMA-376 ST_ShapeType 'smileyFace'", + "One snip corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'snip1Rect'", + "Two diagonal snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2DiagRect'", + "Two same-side snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2SameRect'", + "One snip one round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snipRoundRect'", + "Ten pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star10'", + "Twelve pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star12'", + "Sixteen pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star16'", + "Twenty four pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star24'", + "Thirty two pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star32'", + "Four pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star4'", + "Five pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star5'", + "Six pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star6'", + "Seven pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star7'", + "Eight pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star8'", + "Striped right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'stripedRightArrow'", + "Sun shape. Corresponds to ECMA-376 ST_ShapeType 'sun'", + "Trapezoid shape. Corresponds to ECMA-376 ST_ShapeType 'trapezoid'", + "Triangle shape. Corresponds to ECMA-376 ST_ShapeType 'triangle'", + "Up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upArrow'", + "Callout up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'upArrowCallout'", + "Up down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upDownArrow'", + "U-turn arrow shape. Corresponds to ECMA-376 ST_ShapeType 'uturnArrow'", + "Vertical scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'verticalScroll'", + "Wave shape. Corresponds to ECMA-376 ST_ShapeType 'wave'", + "Callout wedge ellipse shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeEllipseCallout'", + "Callout wedge rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRectCallout'", + "Callout wedge round rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRoundRectCallout'", + "Alternate process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartAlternateProcess'", + "Collate flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartCollate'", + "Connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartConnector'", + "Decision flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDecision'", + "Delay flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartDelay'", + "Display flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDisplay'", + "Document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDocument'", + "Extract flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartExtract'", + "Input output flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInputOutput'", + "Internal storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInternalStorage'", + "Magnetic disk flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDisk'", + "Magnetic drum flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDrum'", + "Magnetic tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticTape'", + "Manual input flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualInput'", + "Manual operation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualOperation'", + "Merge flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartMerge'", + "Multi-document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMultidocument'", + "Offline storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOfflineStorage'", + "Off-page connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOffpageConnector'", + "Online storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOnlineStorage'", + "Or flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartOr'", + "Predefined process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPredefinedProcess'", + "Preparation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPreparation'", + "Process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartProcess'", + "Punched card flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedCard'", + "Punched tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedTape'", + "Sort flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartSort'", + "Summing junction flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartSummingJunction'", + "Terminator flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartTerminator'", + "East arrow shape.", + "Northeast arrow shape.", + "North arrow shape.", + "Speech shape.", + "Star burst shape.", + "Teardrop shape. Corresponds to ECMA-376 ST_ShapeType 'teardrop'", + "Ellipse ribbon shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon'", + "Ellipse ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon2'", + "Callout cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloudCallout'", + "Custom shape." + ], + "enum": [ + "TYPE_UNSPECIFIED", + "TEXT_BOX", + "RECTANGLE", + "ROUND_RECTANGLE", + "ELLIPSE", + "ARC", + "BENT_ARROW", + "BENT_UP_ARROW", + "BEVEL", + "BLOCK_ARC", + "BRACE_PAIR", + "BRACKET_PAIR", + "CAN", + "CHEVRON", + "CHORD", + "CLOUD", + "CORNER", + "CUBE", + "CURVED_DOWN_ARROW", + "CURVED_LEFT_ARROW", + "CURVED_RIGHT_ARROW", + "CURVED_UP_ARROW", + "DECAGON", + "DIAGONAL_STRIPE", + "DIAMOND", + "DODECAGON", + "DONUT", + "DOUBLE_WAVE", + "DOWN_ARROW", + "DOWN_ARROW_CALLOUT", + "FOLDED_CORNER", + "FRAME", + "HALF_FRAME", + "HEART", + "HEPTAGON", + "HEXAGON", + "HOME_PLATE", + "HORIZONTAL_SCROLL", + "IRREGULAR_SEAL_1", + "IRREGULAR_SEAL_2", + "LEFT_ARROW", + "LEFT_ARROW_CALLOUT", + "LEFT_BRACE", + "LEFT_BRACKET", + "LEFT_RIGHT_ARROW", + "LEFT_RIGHT_ARROW_CALLOUT", + "LEFT_RIGHT_UP_ARROW", + "LEFT_UP_ARROW", + "LIGHTNING_BOLT", + "MATH_DIVIDE", + "MATH_EQUAL", + "MATH_MINUS", + "MATH_MULTIPLY", + "MATH_NOT_EQUAL", + "MATH_PLUS", + "MOON", + "NO_SMOKING", + "NOTCHED_RIGHT_ARROW", + "OCTAGON", + "PARALLELOGRAM", + "PENTAGON", + "PIE", + "PLAQUE", + "PLUS", + "QUAD_ARROW", + "QUAD_ARROW_CALLOUT", + "RIBBON", + "RIBBON_2", + "RIGHT_ARROW", + "RIGHT_ARROW_CALLOUT", + "RIGHT_BRACE", + "RIGHT_BRACKET", + "ROUND_1_RECTANGLE", + "ROUND_2_DIAGONAL_RECTANGLE", + "ROUND_2_SAME_RECTANGLE", + "RIGHT_TRIANGLE", + "SMILEY_FACE", + "SNIP_1_RECTANGLE", + "SNIP_2_DIAGONAL_RECTANGLE", + "SNIP_2_SAME_RECTANGLE", + "SNIP_ROUND_RECTANGLE", + "STAR_10", + "STAR_12", + "STAR_16", + "STAR_24", + "STAR_32", + "STAR_4", + "STAR_5", + "STAR_6", + "STAR_7", + "STAR_8", + "STRIPED_RIGHT_ARROW", + "SUN", + "TRAPEZOID", + "TRIANGLE", + "UP_ARROW", + "UP_ARROW_CALLOUT", + "UP_DOWN_ARROW", + "UTURN_ARROW", + "VERTICAL_SCROLL", + "WAVE", + "WEDGE_ELLIPSE_CALLOUT", + "WEDGE_RECTANGLE_CALLOUT", + "WEDGE_ROUND_RECTANGLE_CALLOUT", + "FLOW_CHART_ALTERNATE_PROCESS", + "FLOW_CHART_COLLATE", + "FLOW_CHART_CONNECTOR", + "FLOW_CHART_DECISION", + "FLOW_CHART_DELAY", + "FLOW_CHART_DISPLAY", + "FLOW_CHART_DOCUMENT", + "FLOW_CHART_EXTRACT", + "FLOW_CHART_INPUT_OUTPUT", + "FLOW_CHART_INTERNAL_STORAGE", + "FLOW_CHART_MAGNETIC_DISK", + "FLOW_CHART_MAGNETIC_DRUM", + "FLOW_CHART_MAGNETIC_TAPE", + "FLOW_CHART_MANUAL_INPUT", + "FLOW_CHART_MANUAL_OPERATION", + "FLOW_CHART_MERGE", + "FLOW_CHART_MULTIDOCUMENT", + "FLOW_CHART_OFFLINE_STORAGE", + "FLOW_CHART_OFFPAGE_CONNECTOR", + "FLOW_CHART_ONLINE_STORAGE", + "FLOW_CHART_OR", + "FLOW_CHART_PREDEFINED_PROCESS", + "FLOW_CHART_PREPARATION", + "FLOW_CHART_PROCESS", + "FLOW_CHART_PUNCHED_CARD", + "FLOW_CHART_PUNCHED_TAPE", + "FLOW_CHART_SORT", + "FLOW_CHART_SUMMING_JUNCTION", + "FLOW_CHART_TERMINATOR", + "ARROW_EAST", + "ARROW_NORTH_EAST", + "ARROW_NORTH", + "SPEECH", + "STARBURST", + "TEARDROP", + "ELLIPSE_RIBBON", + "ELLIPSE_RIBBON_2", + "CLOUD_CALLOUT", + "CUSTOM" + ] + }, + "objectId": { + "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\nIf empty, a unique identifier will be generated.", + "type": "string" + }, + "elementProperties": { + "description": "The element properties for the shape.", + "$ref": "PageElementProperties" + } + } + }, + "Video": { + "description": "A PageElement kind representing a\nvideo.", + "type": "object", + "properties": { + "id": { + "description": "The video source's unique identifier for this video.", + "type": "string" + }, + "url": { + "description": "An URL to a video. The URL is valid as long as the source video\nexists and sharing settings do not change.", + "type": "string" + }, + "videoProperties": { + "$ref": "VideoProperties", + "description": "The properties of the video." + }, + "source": { + "enumDescriptions": [ + "The video source is unspecified.", + "The video source is YouTube." + ], + "enum": [ + "SOURCE_UNSPECIFIED", + "YOUTUBE" + ], + "description": "The video source.", + "type": "string" + } + }, + "id": "Video" + }, + "PageProperties": { + "id": "PageProperties", + "description": "The properties of the Page.\n\nThe page will inherit properties from the parent page. Depending on the page\ntype the hierarchy is defined in either\nSlideProperties or\nLayoutProperties.", + "type": "object", + "properties": { + "pageBackgroundFill": { + "$ref": "PageBackgroundFill", + "description": "The background fill of the page. If unset, the background fill is inherited\nfrom a parent page if it exists. If the page has no parent, then the\nbackground fill defaults to the corresponding fill in the Slides editor." + }, + "colorScheme": { + "description": "The color scheme of the page. If unset, the color scheme is inherited from\na parent page. If the page has no parent, the color scheme uses a default\nSlides color scheme. This field is read-only.", + "$ref": "ColorScheme" + } + } + }, + "TableCell": { + "description": "Properties and contents of each table cell.", + "type": "object", + "properties": { + "text": { + "description": "The text content of the cell.", + "$ref": "TextContent" + }, + "tableCellProperties": { + "$ref": "TableCellProperties", + "description": "The properties of the table cell." + }, + "rowSpan": { + "format": "int32", + "description": "Row span of the cell.", + "type": "integer" + }, + "location": { + "$ref": "TableCellLocation", + "description": "The location of the cell within the table." + }, + "columnSpan": { + "format": "int32", + "description": "Column span of the cell.", + "type": "integer" + } + }, + "id": "TableCell" + }, + "NestingLevel": { + "id": "NestingLevel", + "description": "Contains properties describing the look and feel of a list bullet at a given\nlevel of nesting.", + "type": "object", + "properties": { + "bulletStyle": { + "$ref": "TextStyle", + "description": "The style of a bullet at this level of nesting." + } + } + }, + "UpdateLinePropertiesRequest": { + "id": "UpdateLinePropertiesRequest", + "description": "Updates the properties of a Line.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the line the update is applied to.", + "type": "string" + }, + "lineProperties": { + "description": "The line properties to update.", + "$ref": "LineProperties" + }, + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `lineProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the line solid fill color, set `fields` to\n`\"lineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + } + } + }, + "UpdateSlidesPositionRequest": { + "description": "Updates the position of slides in the presentation.", + "type": "object", + "properties": { + "slideObjectIds": { + "description": "The IDs of the slides in the presentation that should be moved.\nThe slides in this list must be in existing presentation order, without\nduplicates.", + "items": { + "type": "string" + }, + "type": "array" + }, + "insertionIndex": { + "format": "int32", + "description": "The index where the slides should be inserted, based on the slide\narrangement before the move takes place. Must be between zero and the\nnumber of slides in the presentation, inclusive.", + "type": "integer" + } + }, + "id": "UpdateSlidesPositionRequest" + }, + "TableCellBackgroundFill": { + "description": "The table cell background fill.", + "type": "object", + "properties": { + "propertyState": { + "description": "The background fill property state.\n\nUpdating the the fill on a table cell will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no fill on a table cell, set this field to `NOT_RENDERED`. In this\ncase, any other fill fields set in the same request will be ignored.", + "type": "string", + "enumDescriptions": [ + "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", + "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", + "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." + ], + "enum": [ + "RENDERED", + "NOT_RENDERED", + "INHERIT" + ] + }, + "solidFill": { + "description": "Solid color fill.", + "$ref": "SolidFill" + } + }, + "id": "TableCellBackgroundFill" + }, + "UpdatePagePropertiesRequest": { + "description": "Updates the properties of a Page.", + "type": "object", + "properties": { + "pageProperties": { + "$ref": "PageProperties", + "description": "The page properties to update." + }, + "objectId": { + "description": "The object ID of the page the update is applied to.", + "type": "string" + }, + "fields": { + "format": "google-fieldmask", + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `pageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the page background solid fill color, set `fields`\nto `\"pageBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" + } + }, + "id": "UpdatePagePropertiesRequest" + }, + "Group": { + "description": "A PageElement kind representing a\njoined collection of PageElements.", + "type": "object", + "properties": { + "children": { + "description": "The collection of elements in the group. The minimum size of a group is 2.", + "items": { + "$ref": "PageElement" + }, + "type": "array" + } + }, + "id": "Group" + }, + "Placeholder": { + "description": "The placeholder information that uniquely identifies a placeholder shape.", + "type": "object", + "properties": { + "type": { + "description": "The type of the placeholder.", + "type": "string", + "enumDescriptions": [ + "Default value, signifies it is not a placeholder.", + "Body text.", + "Chart or graph.", + "Clip art image.", + "Title centered.", + "Diagram.", + "Date and time.", + "Footer text.", + "Header text.", + "Multimedia.", + "Any content type.", + "Picture.", + "Number of a slide.", + "Subtitle.", + "Table.", + "Slide title.", + "Slide image." + ], + "enum": [ + "NONE", + "BODY", + "CHART", + "CLIP_ART", + "CENTERED_TITLE", + "DIAGRAM", + "DATE_AND_TIME", + "FOOTER", + "HEADER", + "MEDIA", + "OBJECT", + "PICTURE", + "SLIDE_NUMBER", + "SUBTITLE", + "TABLE", + "TITLE", + "SLIDE_IMAGE" + ] + }, + "parentObjectId": { + "description": "The object ID of this shape's parent placeholder.\nIf unset, the parent placeholder shape does not exist, so the shape does\nnot inherit properties from any other shape.", + "type": "string" + }, + "index": { + "format": "int32", + "description": "The index of the placeholder. If the same placeholder types are present in\nthe same page, they would have different index values.", + "type": "integer" + } + }, + "id": "Placeholder" + }, + "DuplicateObjectRequest": { + "description": "Duplicates a slide or page element.\n\nWhen duplicating a slide, the duplicate slide will be created immediately\nfollowing the specified slide. When duplicating a page element, the duplicate\nwill be placed on the same page at the same position as the original.", + "type": "object", + "properties": { + "objectId": { + "description": "The ID of the object to duplicate.", + "type": "string" + }, + "objectIds": { + "description": "The object being duplicated may contain other objects, for example when\nduplicating a slide or a group page element. This map defines how the IDs\nof duplicated objects are generated: the keys are the IDs of the original\nobjects and its values are the IDs that will be assigned to the\ncorresponding duplicate object. The ID of the source object's duplicate\nmay be specified in this map as well, using the same value of the\n`object_id` field as a key and the newly desired ID as the value.\n\nAll keys must correspond to existing IDs in the presentation. All values\nmust be unique in the presentation and must start with an alphanumeric\ncharacter or an underscore (matches regex `[a-zA-Z0-9_]`); remaining\ncharacters may include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`). The length of the new ID must not be less than 5 or\ngreater than 50.\n\nIf any IDs of source objects are omitted from the map, a new random ID will\nbe assigned. If the map is empty or unset, all duplicate objects will\nreceive a new random ID.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "id": "DuplicateObjectRequest" + }, + "ReplaceAllTextRequest": { + "description": "Replaces all instances of text matching a criteria with replace text.", + "type": "object", + "properties": { + "containsText": { + "$ref": "SubstringMatchCriteria", + "description": "Finds text in a shape matching this substring." + }, + "pageObjectIds": { + "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes master,\nor if a page with that object ID doesn't exist in the presentation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "replaceText": { + "description": "The text that will replace the matched text.", + "type": "string" + } + }, + "id": "ReplaceAllTextRequest" + }, + "Page": { + "description": "A page in a presentation.", + "type": "object", + "properties": { + "layoutProperties": { + "$ref": "LayoutProperties", + "description": "Layout specific properties. Only set if page_type = LAYOUT." + }, + "notesProperties": { + "$ref": "NotesProperties", + "description": "Notes specific properties. Only set if page_type = NOTES." + }, + "pageType": { + "description": "The type of the page.", + "type": "string", + "enumDescriptions": [ + "A slide page.", + "A master slide page.", + "A layout page.", + "A notes page.", + "A notes master page." + ], + "enum": [ + "SLIDE", + "MASTER", + "LAYOUT", + "NOTES", + "NOTES_MASTER" + ] + }, + "pageElements": { + "description": "The page elements rendered on the page.", + "items": { + "$ref": "PageElement" + }, + "type": "array" + }, + "pageProperties": { + "$ref": "PageProperties", + "description": "The properties of the page." + }, + "slideProperties": { + "$ref": "SlideProperties", + "description": "Slide specific properties. Only set if page_type = SLIDE." + }, + "masterProperties": { + "$ref": "MasterProperties", + "description": "Master specific properties. Only set if page_type = MASTER." + }, + "objectId": { + "description": "The object ID for this page. Object IDs used by\nPage and\nPageElement share the same namespace.", + "type": "string" + }, + "revisionId": { + "description": "The revision ID of the presentation containing this page. Can be used in\nupdate requests to assert that the presentation revision hasn't changed\nsince the last read operation. Only populated if the user has edit access\nto the presentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.", + "type": "string" + } + }, + "id": "Page" + }, + "ShapeBackgroundFill": { + "description": "The shape background fill.", + "type": "object", + "properties": { + "propertyState": { + "description": "The background fill property state.\n\nUpdating the the fill on a shape will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a shape, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.", + "type": "string", + "enumDescriptions": [ + "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", + "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", + "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." + ], + "enum": [ + "RENDERED", + "NOT_RENDERED", + "INHERIT" + ] + }, + "solidFill": { + "$ref": "SolidFill", + "description": "Solid color fill." + } + }, + "id": "ShapeBackgroundFill" + }, + "CropProperties": { + "id": "CropProperties", + "description": "The crop properties of an object enclosed in a container. For example, an\nImage.\n\nThe crop properties is represented by the offsets of four edges which define\na crop rectangle. The offsets are measured in percentage from the\ncorresponding edges of the object's original bounding rectangle towards\ninside, relative to the object's original dimensions.\n\n- If the offset is in the interval (0, 1), the corresponding edge of crop\nrectangle is positioned inside of the object's original bounding rectangle.\n- If the offset is negative or greater than 1, the corresponding edge of crop\nrectangle is positioned outside of the object's original bounding rectangle.\n- If the left edge of the crop rectangle is on the right side of its right\nedge, the object will be flipped horizontally.\n- If the top edge of the crop rectangle is below its bottom edge, the object\nwill be flipped vertically.\n- If all offsets and rotation angle is 0, the object is not cropped.\n\nAfter cropping, the content in the crop rectangle will be stretched to fit\nits container.", + "type": "object", + "properties": { + "bottomOffset": { + "format": "float", + "description": "The offset specifies the bottom edge of the crop rectangle that is located\nabove the original bounding rectangle bottom edge, relative to the object's\noriginal height.", + "type": "number" + }, + "angle": { + "format": "float", + "description": "The rotation angle of the crop window around its center, in radians.\nRotation angle is applied after the offset.", + "type": "number" + }, + "topOffset": { + "format": "float", + "description": "The offset specifies the top edge of the crop rectangle that is located\nbelow the original bounding rectangle top edge, relative to the object's\noriginal height.", + "type": "number" + }, + "leftOffset": { + "format": "float", + "description": "The offset specifies the left edge of the crop rectangle that is located to\nthe right of the original bounding rectangle left edge, relative to the\nobject's original width.", + "type": "number" + }, + "rightOffset": { + "format": "float", + "description": "The offset specifies the right edge of the crop rectangle that is located\nto the left of the original bounding rectangle right edge, relative to the\nobject's original width.", + "type": "number" + } + } + }, + "ReplaceAllShapesWithSheetsChartRequest": { + "id": "ReplaceAllShapesWithSheetsChartRequest", + "description": "Replaces all shapes that match the given criteria with the provided Google\nSheets chart. The chart will be scaled and centered to fit within the bounds\nof the original shape.\n\nNOTE: Replacing shapes with a chart requires at least one of the\nspreadsheets.readonly, spreadsheets, drive.readonly, or drive OAuth scopes.", + "type": "object", + "properties": { + "linkingMode": { + "enumDescriptions": [ + "The chart is not associated with the source spreadsheet and cannot be\nupdated. A chart that is not linked will be inserted as an image.", + "Linking the chart allows it to be updated, and other collaborators will\nsee a link to the spreadsheet." + ], + "enum": [ + "NOT_LINKED_IMAGE", + "LINKED" + ], + "description": "The mode with which the chart is linked to the source spreadsheet. When\nnot specified, the chart will be an image that is not linked.", + "type": "string" + }, + "spreadsheetId": { + "description": "The ID of the Google Sheets spreadsheet that contains the chart.", + "type": "string" + }, + "pageObjectIds": { + "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "chartId": { + "format": "int32", + "description": "The ID of the specific chart in the Google Sheets spreadsheet.", + "type": "integer" + }, + "containsText": { + "description": "The criteria that the shapes must match in order to be replaced. The\nrequest will replace all of the shapes that contain the given text.", + "$ref": "SubstringMatchCriteria" + } + } + }, + "Range": { + "description": "Specifies a contiguous range of an indexed collection, such as characters in\ntext.", + "type": "object", + "properties": { + "type": { + "description": "The type of range.", + "type": "string", + "enumDescriptions": [ + "Unspecified range type. This value must not be used.", + "A fixed range. Both the `start_index` and\n`end_index` must be specified.", + "Starts the range at `start_index` and continues until the\nend of the collection. The `end_index` must not be specified.", + "Sets the range to be the whole length of the collection. Both the\n`start_index` and the `end_index` must not be\nspecified." + ], + "enum": [ + "RANGE_TYPE_UNSPECIFIED", + "FIXED_RANGE", + "FROM_START_INDEX", + "ALL" + ] + }, + "endIndex": { + "format": "int32", + "description": "The optional zero-based index of the end of the collection.\nRequired for `FIXED_RANGE` ranges.", + "type": "integer" + }, + "startIndex": { + "format": "int32", + "description": "The optional zero-based index of the beginning of the collection.\nRequired for `FIXED_RANGE` and `FROM_START_INDEX` ranges.", + "type": "integer" + } + }, + "id": "Range" + }, + "ColorStop": { + "description": "A color and position in a gradient band.", + "type": "object", + "properties": { + "color": { + "description": "The color of the gradient stop.", + "$ref": "OpaqueColor" + }, + "position": { + "format": "float", + "description": "The relative position of the color stop in the gradient band measured\nin percentage. The value should be in the interval [0.0, 1.0].", + "type": "number" + }, + "alpha": { + "format": "float", + "description": "The alpha value of this color in the gradient band. Defaults to 1.0,\nfully opaque.", + "type": "number" + } + }, + "id": "ColorStop" + }, + "CreateVideoRequest": { + "id": "CreateVideoRequest", + "description": "Creates a video.", + "type": "object", + "properties": { + "source": { + "description": "The video source.", + "type": "string", + "enumDescriptions": [ + "The video source is unspecified.", + "The video source is YouTube." + ], + "enum": [ + "SOURCE_UNSPECIFIED", + "YOUTUBE" + ] + }, + "objectId": { + "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", + "type": "string" + }, + "elementProperties": { + "$ref": "PageElementProperties", + "description": "The element properties for the video." + }, + "id": { + "description": "The video source's unique identifier for this video.\n\ne.g. For YouTube video https://www.youtube.com/watch?v=7U3axjORYZ0,\nthe ID is 7U3axjORYZ0.", + "type": "string" + } + } + }, + "DuplicateObjectResponse": { + "description": "The response of duplicating an object.", + "type": "object", + "properties": { + "objectId": { + "description": "The ID of the new duplicate object.", + "type": "string" + } + }, + "id": "DuplicateObjectResponse" + }, + "ReplaceAllShapesWithImageRequest": { + "description": "Replaces all shapes that match the given criteria with the provided image.", + "type": "object", + "properties": { + "imageUrl": { + "description": "The image URL.\n\nThe image is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Images must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", + "type": "string" + }, + "replaceMethod": { + "enumDescriptions": [ + "Scales and centers the image to fit within the bounds of the original\nshape and maintains the image's aspect ratio. The rendered size of the\nimage may be smaller than the size of the shape. This is the default\nmethod when one is not specified.", + "Scales and centers the image to fill the bounds of the original shape.\nThe image may be cropped in order to fill the shape. The rendered size of\nthe image will be the same as that of the original shape." + ], + "enum": [ + "CENTER_INSIDE", + "CENTER_CROP" + ], + "description": "The replace method.", + "type": "string" + }, + "pageObjectIds": { + "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.", + "items": { + "type": "string" + }, + "type": "array" + }, + "containsText": { + "description": "If set, this request will replace all of the shapes that contain the\ngiven text.", + "$ref": "SubstringMatchCriteria" + } + }, + "id": "ReplaceAllShapesWithImageRequest" + }, + "Shadow": { + "id": "Shadow", + "description": "The shadow properties of a page element.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.", + "type": "object", + "properties": { + "alpha": { + "format": "float", + "description": "The alpha of the shadow's color, from 0.0 to 1.0.", + "type": "number" + }, + "color": { + "$ref": "OpaqueColor", + "description": "The shadow color value." + }, + "rotateWithShape": { + "description": "Whether the shadow should rotate with the shape.", + "type": "boolean" + }, + "propertyState": { + "description": "The shadow property state.\n\nUpdating the the shadow on a page element will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no shadow on a page element, set this field to `NOT_RENDERED`. In this\ncase, any other shadow fields set in the same request will be ignored.", + "type": "string", + "enumDescriptions": [ + "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", + "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", + "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." + ], + "enum": [ + "RENDERED", + "NOT_RENDERED", + "INHERIT" + ] + }, + "blurRadius": { + "description": "The radius of the shadow blur. The larger the radius, the more diffuse the\nshadow becomes.", + "$ref": "Dimension" + }, + "transform": { + "$ref": "AffineTransform", + "description": "Transform that encodes the translate, scale, and skew of the shadow,\nrelative to the alignment position." + }, + "type": { + "enumDescriptions": [ + "Unspecified shadow type.", + "Outer shadow." + ], + "enum": [ + "SHADOW_TYPE_UNSPECIFIED", + "OUTER" + ], + "description": "The type of the shadow.", + "type": "string" + }, + "alignment": { + "enumDescriptions": [ + "Unspecified.", + "Top left.", + "Top center.", + "Top right.", + "Left center.", + "Center.", + "Right center.", + "Bottom left.", + "Bottom center.", + "Bottom right." + ], + "enum": [ + "RECTANGLE_POSITION_UNSPECIFIED", + "TOP_LEFT", + "TOP_CENTER", + "TOP_RIGHT", + "LEFT_CENTER", + "CENTER", + "RIGHT_CENTER", + "BOTTOM_LEFT", + "BOTTOM_CENTER", + "BOTTOM_RIGHT" + ], + "description": "The alignment point of the shadow, that sets the origin for translate,\nscale and skew of the shadow.", + "type": "string" + } + } + }, + "DeleteTableRowRequest": { + "description": "Deletes a row from a table.", + "type": "object", + "properties": { "cellLocation": { "$ref": "TableCellLocation", "description": "The reference table cell location from which a row will be deleted.\n\nThe row this cell spans will be deleted. If this is a merged cell, multiple\nrows will be deleted. If no rows remain in the table after this deletion,\nthe whole table is deleted." + }, + "tableObjectId": { + "description": "The table to delete rows from.", + "type": "string" } }, "id": "DeleteTableRowRequest" @@ -19,6 +2227,14 @@ "description": "Describes the bullet of a paragraph.", "type": "object", "properties": { + "bulletStyle": { + "description": "The paragraph specific text style applied to this bullet.", + "$ref": "TextStyle" + }, + "listId": { + "description": "The ID of the list this paragraph belongs to.", + "type": "string" + }, "glyph": { "description": "The rendered bullet glyph for this paragraph.", "type": "string" @@ -27,30 +2243,34 @@ "format": "int32", "description": "The nesting level of this paragraph in the list.", "type": "integer" - }, - "bulletStyle": { - "$ref": "TextStyle", - "description": "The paragraph specific text style applied to this bullet." - }, - "listId": { - "description": "The ID of the list this paragraph belongs to.", - "type": "string" } }, "id": "Bullet" }, "OutlineFill": { + "id": "OutlineFill", "description": "The fill of the outline.", "type": "object", "properties": { "solidFill": { - "$ref": "SolidFill", - "description": "Solid color fill." + "description": "Solid color fill.", + "$ref": "SolidFill" + } + } + }, + "CreateLineResponse": { + "description": "The result of creating a line.", + "type": "object", + "properties": { + "objectId": { + "description": "The object ID of the created line.", + "type": "string" } }, - "id": "OutlineFill" + "id": "CreateLineResponse" }, "TableCellLocation": { + "id": "TableCellLocation", "description": "A location of a single table cell within a table.", "type": "object", "properties": { @@ -64,19 +2284,7 @@ "description": "The 0-based row index.", "type": "integer" } - }, - "id": "TableCellLocation" - }, - "CreateLineResponse": { - "type": "object", - "properties": { - "objectId": { - "description": "The object ID of the created line.", - "type": "string" - } - }, - "id": "CreateLineResponse", - "description": "The result of creating a line." + } }, "ReplaceAllTextResponse": { "description": "The result of replacing text.", @@ -91,6 +2299,7 @@ "id": "ReplaceAllTextResponse" }, "UpdateParagraphStyleRequest": { + "id": "UpdateParagraphStyleRequest", "description": "Updates the styling for all of the paragraphs within a Shape or Table that\noverlap with the given text index range.", "type": "object", "properties": { @@ -111,14 +2320,14 @@ "description": "The location of the cell in the table containing the paragraph(s) to\nstyle. If `object_id` refers to a table, `cell_location` must have a value.\nOtherwise, it must not." }, "fields": { - "type": "string", "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the paragraph alignment, set `fields` to\n`\"alignment\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset." + "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the paragraph alignment, set `fields` to\n`\"alignment\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", + "type": "string" } - }, - "id": "UpdateParagraphStyleRequest" + } }, "ColorScheme": { + "id": "ColorScheme", "description": "The palette of predefined colors for a page.", "type": "object", "properties": { @@ -129,10 +2338,10 @@ }, "type": "array" } - }, - "id": "ColorScheme" + } }, "Shape": { + "id": "Shape", "description": "A PageElement kind representing a\ngeneric shape that does not have a more specific classification.", "type": "object", "properties": { @@ -145,6 +2354,151 @@ "$ref": "TextContent" }, "shapeType": { + "enumDescriptions": [ + "The shape type that is not predefined.", + "Text box shape.", + "Rectangle shape. Corresponds to ECMA-376 ST_ShapeType 'rect'.", + "Round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'roundRect'", + "Ellipse shape. Corresponds to ECMA-376 ST_ShapeType 'ellipse'", + "Curved arc shape. Corresponds to ECMA-376 ST_ShapeType 'arc'", + "Bent arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentArrow'", + "Bent up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentUpArrow'", + "Bevel shape. Corresponds to ECMA-376 ST_ShapeType 'bevel'", + "Block arc shape. Corresponds to ECMA-376 ST_ShapeType 'blockArc'", + "Brace pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracePair'", + "Bracket pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracketPair'", + "Can shape. Corresponds to ECMA-376 ST_ShapeType 'can'", + "Chevron shape. Corresponds to ECMA-376 ST_ShapeType 'chevron'", + "Chord shape. Corresponds to ECMA-376 ST_ShapeType 'chord'", + "Cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloud'", + "Corner shape. Corresponds to ECMA-376 ST_ShapeType 'corner'", + "Cube shape. Corresponds to ECMA-376 ST_ShapeType 'cube'", + "Curved down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedDownArrow'", + "Curved left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedLeftArrow'", + "Curved right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedRightArrow'", + "Curved up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedUpArrow'", + "Decagon shape. Corresponds to ECMA-376 ST_ShapeType 'decagon'", + "Diagonal stripe shape. Corresponds to ECMA-376 ST_ShapeType 'diagStripe'", + "Diamond shape. Corresponds to ECMA-376 ST_ShapeType 'diamond'", + "Dodecagon shape. Corresponds to ECMA-376 ST_ShapeType 'dodecagon'", + "Donut shape. Corresponds to ECMA-376 ST_ShapeType 'donut'", + "Double wave shape. Corresponds to ECMA-376 ST_ShapeType 'doubleWave'", + "Down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'downArrow'", + "Callout down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'downArrowCallout'", + "Folded corner shape. Corresponds to ECMA-376 ST_ShapeType 'foldedCorner'", + "Frame shape. Corresponds to ECMA-376 ST_ShapeType 'frame'", + "Half frame shape. Corresponds to ECMA-376 ST_ShapeType 'halfFrame'", + "Heart shape. Corresponds to ECMA-376 ST_ShapeType 'heart'", + "Heptagon shape. Corresponds to ECMA-376 ST_ShapeType 'heptagon'", + "Hexagon shape. Corresponds to ECMA-376 ST_ShapeType 'hexagon'", + "Home plate shape. Corresponds to ECMA-376 ST_ShapeType 'homePlate'", + "Horizontal scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'horizontalScroll'", + "Irregular seal 1 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal1'", + "Irregular seal 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal2'", + "Left arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftArrow'", + "Callout left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftArrowCallout'", + "Left brace shape. Corresponds to ECMA-376 ST_ShapeType 'leftBrace'", + "Left bracket shape. Corresponds to ECMA-376 ST_ShapeType 'leftBracket'", + "Left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrow'", + "Callout left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrowCallout'", + "Left right up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightUpArrow'", + "Left up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftUpArrow'", + "Lightning bolt shape. Corresponds to ECMA-376 ST_ShapeType\n'lightningBolt'", + "Divide math shape. Corresponds to ECMA-376 ST_ShapeType 'mathDivide'", + "Equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathEqual'", + "Minus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMinus'", + "Multiply math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMultiply'", + "Not equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathNotEqual'", + "Plus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathPlus'", + "Moon shape. Corresponds to ECMA-376 ST_ShapeType 'moon'", + "No smoking shape. Corresponds to ECMA-376 ST_ShapeType 'noSmoking'", + "Notched right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'notchedRightArrow'", + "Octagon shape. Corresponds to ECMA-376 ST_ShapeType 'octagon'", + "Parallelogram shape. Corresponds to ECMA-376 ST_ShapeType 'parallelogram'", + "Pentagon shape. Corresponds to ECMA-376 ST_ShapeType 'pentagon'", + "Pie shape. Corresponds to ECMA-376 ST_ShapeType 'pie'", + "Plaque shape. Corresponds to ECMA-376 ST_ShapeType 'plaque'", + "Plus shape. Corresponds to ECMA-376 ST_ShapeType 'plus'", + "Quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType 'quadArrow'", + "Callout quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'quadArrowCallout'", + "Ribbon shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon'", + "Ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon2'", + "Right arrow shape. Corresponds to ECMA-376 ST_ShapeType 'rightArrow'", + "Callout right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'rightArrowCallout'", + "Right brace shape. Corresponds to ECMA-376 ST_ShapeType 'rightBrace'", + "Right bracket shape. Corresponds to ECMA-376 ST_ShapeType 'rightBracket'", + "One round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'round1Rect'", + "Two diagonal round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2DiagRect'", + "Two same-side round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2SameRect'", + "Right triangle shape. Corresponds to ECMA-376 ST_ShapeType 'rtTriangle'", + "Smiley face shape. Corresponds to ECMA-376 ST_ShapeType 'smileyFace'", + "One snip corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'snip1Rect'", + "Two diagonal snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2DiagRect'", + "Two same-side snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2SameRect'", + "One snip one round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snipRoundRect'", + "Ten pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star10'", + "Twelve pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star12'", + "Sixteen pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star16'", + "Twenty four pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star24'", + "Thirty two pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star32'", + "Four pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star4'", + "Five pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star5'", + "Six pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star6'", + "Seven pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star7'", + "Eight pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star8'", + "Striped right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'stripedRightArrow'", + "Sun shape. Corresponds to ECMA-376 ST_ShapeType 'sun'", + "Trapezoid shape. Corresponds to ECMA-376 ST_ShapeType 'trapezoid'", + "Triangle shape. Corresponds to ECMA-376 ST_ShapeType 'triangle'", + "Up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upArrow'", + "Callout up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'upArrowCallout'", + "Up down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upDownArrow'", + "U-turn arrow shape. Corresponds to ECMA-376 ST_ShapeType 'uturnArrow'", + "Vertical scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'verticalScroll'", + "Wave shape. Corresponds to ECMA-376 ST_ShapeType 'wave'", + "Callout wedge ellipse shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeEllipseCallout'", + "Callout wedge rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRectCallout'", + "Callout wedge round rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRoundRectCallout'", + "Alternate process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartAlternateProcess'", + "Collate flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartCollate'", + "Connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartConnector'", + "Decision flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDecision'", + "Delay flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartDelay'", + "Display flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDisplay'", + "Document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDocument'", + "Extract flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartExtract'", + "Input output flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInputOutput'", + "Internal storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInternalStorage'", + "Magnetic disk flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDisk'", + "Magnetic drum flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDrum'", + "Magnetic tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticTape'", + "Manual input flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualInput'", + "Manual operation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualOperation'", + "Merge flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartMerge'", + "Multi-document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMultidocument'", + "Offline storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOfflineStorage'", + "Off-page connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOffpageConnector'", + "Online storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOnlineStorage'", + "Or flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartOr'", + "Predefined process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPredefinedProcess'", + "Preparation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPreparation'", + "Process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartProcess'", + "Punched card flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedCard'", + "Punched tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedTape'", + "Sort flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartSort'", + "Summing junction flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartSummingJunction'", + "Terminator flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartTerminator'", + "East arrow shape.", + "Northeast arrow shape.", + "North arrow shape.", + "Speech shape.", + "Star burst shape.", + "Teardrop shape. Corresponds to ECMA-376 ST_ShapeType 'teardrop'", + "Ellipse ribbon shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon'", + "Ellipse ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon2'", + "Callout cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloudCallout'", + "Custom shape." + ], "enum": [ "TYPE_UNSPECIFIED", "TEXT_BOX", @@ -291,176 +2645,32 @@ "CUSTOM" ], "description": "The type of the shape.", - "type": "string", - "enumDescriptions": [ - "The shape type that is not predefined.", - "Text box shape.", - "Rectangle shape. Corresponds to ECMA-376 ST_ShapeType 'rect'.", - "Round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'roundRect'", - "Ellipse shape. Corresponds to ECMA-376 ST_ShapeType 'ellipse'", - "Curved arc shape. Corresponds to ECMA-376 ST_ShapeType 'arc'", - "Bent arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentArrow'", - "Bent up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentUpArrow'", - "Bevel shape. Corresponds to ECMA-376 ST_ShapeType 'bevel'", - "Block arc shape. Corresponds to ECMA-376 ST_ShapeType 'blockArc'", - "Brace pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracePair'", - "Bracket pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracketPair'", - "Can shape. Corresponds to ECMA-376 ST_ShapeType 'can'", - "Chevron shape. Corresponds to ECMA-376 ST_ShapeType 'chevron'", - "Chord shape. Corresponds to ECMA-376 ST_ShapeType 'chord'", - "Cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloud'", - "Corner shape. Corresponds to ECMA-376 ST_ShapeType 'corner'", - "Cube shape. Corresponds to ECMA-376 ST_ShapeType 'cube'", - "Curved down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedDownArrow'", - "Curved left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedLeftArrow'", - "Curved right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedRightArrow'", - "Curved up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedUpArrow'", - "Decagon shape. Corresponds to ECMA-376 ST_ShapeType 'decagon'", - "Diagonal stripe shape. Corresponds to ECMA-376 ST_ShapeType 'diagStripe'", - "Diamond shape. Corresponds to ECMA-376 ST_ShapeType 'diamond'", - "Dodecagon shape. Corresponds to ECMA-376 ST_ShapeType 'dodecagon'", - "Donut shape. Corresponds to ECMA-376 ST_ShapeType 'donut'", - "Double wave shape. Corresponds to ECMA-376 ST_ShapeType 'doubleWave'", - "Down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'downArrow'", - "Callout down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'downArrowCallout'", - "Folded corner shape. Corresponds to ECMA-376 ST_ShapeType 'foldedCorner'", - "Frame shape. Corresponds to ECMA-376 ST_ShapeType 'frame'", - "Half frame shape. Corresponds to ECMA-376 ST_ShapeType 'halfFrame'", - "Heart shape. Corresponds to ECMA-376 ST_ShapeType 'heart'", - "Heptagon shape. Corresponds to ECMA-376 ST_ShapeType 'heptagon'", - "Hexagon shape. Corresponds to ECMA-376 ST_ShapeType 'hexagon'", - "Home plate shape. Corresponds to ECMA-376 ST_ShapeType 'homePlate'", - "Horizontal scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'horizontalScroll'", - "Irregular seal 1 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal1'", - "Irregular seal 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal2'", - "Left arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftArrow'", - "Callout left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftArrowCallout'", - "Left brace shape. Corresponds to ECMA-376 ST_ShapeType 'leftBrace'", - "Left bracket shape. Corresponds to ECMA-376 ST_ShapeType 'leftBracket'", - "Left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrow'", - "Callout left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrowCallout'", - "Left right up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightUpArrow'", - "Left up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftUpArrow'", - "Lightning bolt shape. Corresponds to ECMA-376 ST_ShapeType\n'lightningBolt'", - "Divide math shape. Corresponds to ECMA-376 ST_ShapeType 'mathDivide'", - "Equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathEqual'", - "Minus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMinus'", - "Multiply math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMultiply'", - "Not equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathNotEqual'", - "Plus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathPlus'", - "Moon shape. Corresponds to ECMA-376 ST_ShapeType 'moon'", - "No smoking shape. Corresponds to ECMA-376 ST_ShapeType 'noSmoking'", - "Notched right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'notchedRightArrow'", - "Octagon shape. Corresponds to ECMA-376 ST_ShapeType 'octagon'", - "Parallelogram shape. Corresponds to ECMA-376 ST_ShapeType 'parallelogram'", - "Pentagon shape. Corresponds to ECMA-376 ST_ShapeType 'pentagon'", - "Pie shape. Corresponds to ECMA-376 ST_ShapeType 'pie'", - "Plaque shape. Corresponds to ECMA-376 ST_ShapeType 'plaque'", - "Plus shape. Corresponds to ECMA-376 ST_ShapeType 'plus'", - "Quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType 'quadArrow'", - "Callout quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'quadArrowCallout'", - "Ribbon shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon'", - "Ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon2'", - "Right arrow shape. Corresponds to ECMA-376 ST_ShapeType 'rightArrow'", - "Callout right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'rightArrowCallout'", - "Right brace shape. Corresponds to ECMA-376 ST_ShapeType 'rightBrace'", - "Right bracket shape. Corresponds to ECMA-376 ST_ShapeType 'rightBracket'", - "One round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'round1Rect'", - "Two diagonal round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2DiagRect'", - "Two same-side round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2SameRect'", - "Right triangle shape. Corresponds to ECMA-376 ST_ShapeType 'rtTriangle'", - "Smiley face shape. Corresponds to ECMA-376 ST_ShapeType 'smileyFace'", - "One snip corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'snip1Rect'", - "Two diagonal snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2DiagRect'", - "Two same-side snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2SameRect'", - "One snip one round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snipRoundRect'", - "Ten pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star10'", - "Twelve pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star12'", - "Sixteen pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star16'", - "Twenty four pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star24'", - "Thirty two pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star32'", - "Four pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star4'", - "Five pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star5'", - "Six pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star6'", - "Seven pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star7'", - "Eight pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star8'", - "Striped right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'stripedRightArrow'", - "Sun shape. Corresponds to ECMA-376 ST_ShapeType 'sun'", - "Trapezoid shape. Corresponds to ECMA-376 ST_ShapeType 'trapezoid'", - "Triangle shape. Corresponds to ECMA-376 ST_ShapeType 'triangle'", - "Up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upArrow'", - "Callout up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'upArrowCallout'", - "Up down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upDownArrow'", - "U-turn arrow shape. Corresponds to ECMA-376 ST_ShapeType 'uturnArrow'", - "Vertical scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'verticalScroll'", - "Wave shape. Corresponds to ECMA-376 ST_ShapeType 'wave'", - "Callout wedge ellipse shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeEllipseCallout'", - "Callout wedge rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRectCallout'", - "Callout wedge round rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRoundRectCallout'", - "Alternate process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartAlternateProcess'", - "Collate flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartCollate'", - "Connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartConnector'", - "Decision flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDecision'", - "Delay flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartDelay'", - "Display flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDisplay'", - "Document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDocument'", - "Extract flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartExtract'", - "Input output flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInputOutput'", - "Internal storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInternalStorage'", - "Magnetic disk flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDisk'", - "Magnetic drum flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDrum'", - "Magnetic tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticTape'", - "Manual input flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualInput'", - "Manual operation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualOperation'", - "Merge flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartMerge'", - "Multi-document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMultidocument'", - "Offline storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOfflineStorage'", - "Off-page connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOffpageConnector'", - "Online storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOnlineStorage'", - "Or flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartOr'", - "Predefined process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPredefinedProcess'", - "Preparation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPreparation'", - "Process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartProcess'", - "Punched card flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedCard'", - "Punched tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedTape'", - "Sort flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartSort'", - "Summing junction flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartSummingJunction'", - "Terminator flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartTerminator'", - "East arrow shape.", - "Northeast arrow shape.", - "North arrow shape.", - "Speech shape.", - "Star burst shape.", - "Teardrop shape. Corresponds to ECMA-376 ST_ShapeType 'teardrop'", - "Ellipse ribbon shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon'", - "Ellipse ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon2'", - "Callout cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloudCallout'", - "Custom shape." - ] + "type": "string" }, "shapeProperties": { "description": "The properties of the shape.", "$ref": "ShapeProperties" } - }, - "id": "Shape" + } }, "Image": { + "id": "Image", "description": "A PageElement kind representing an\nimage.", "type": "object", "properties": { "imageProperties": { - "$ref": "ImageProperties", - "description": "The properties of the image." + "description": "The properties of the image.", + "$ref": "ImageProperties" }, "contentUrl": { "description": "An URL to an image with a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the image as the original requester. Access to the\nimage may be lost if the presentation's sharing settings change.", "type": "string" } - }, - "id": "Image" + } }, "InsertTextRequest": { + "id": "InsertTextRequest", + "description": "Inserts text into a shape or a table cell.", "type": "object", "properties": { "text": { @@ -480,22 +2690,41 @@ "$ref": "TableCellLocation", "description": "The optional table cell location if the text is to be inserted into a table\ncell. If present, the object_id must refer to a table." } - }, - "id": "InsertTextRequest", - "description": "Inserts text into a shape or a table cell." + } }, "AffineTransform": { + "id": "AffineTransform", + "description": "AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ]\nto transform source coordinates (x,y) into destination coordinates (x', y')\naccording to:\n\n x' x = shear_y scale_y translate_y \n 1 [ 1 ]\n\nAfter transformation,\n\n x' = scale_x * x + shear_x * y + translate_x;\n y' = scale_y * y + shear_y * x + translate_y;\n\nThis message is therefore composed of these six matrix elements.", "type": "object", "properties": { + "unit": { + "enumDescriptions": [ + "The units are unknown.", + "An English Metric Unit (EMU) is defined as 1/360,000 of a centimeter\nand thus there are 914,400 EMUs per inch, and 12,700 EMUs per point.", + "A point, 1/72 of an inch." + ], + "enum": [ + "UNIT_UNSPECIFIED", + "EMU", + "PT" + ], + "description": "The units for translate elements.", + "type": "string" + }, + "scaleX": { + "format": "double", + "description": "The X coordinate scaling element.", + "type": "number" + }, "shearX": { "format": "double", "description": "The X coordinate shearing element.", "type": "number" }, "scaleY": { - "type": "number", "format": "double", - "description": "The Y coordinate scaling element." + "description": "The Y coordinate scaling element.", + "type": "number" }, "translateY": { "format": "double", @@ -503,39 +2732,19 @@ "type": "number" }, "translateX": { - "type": "number", "format": "double", - "description": "The X coordinate translation element." + "description": "The X coordinate translation element.", + "type": "number" }, "shearY": { "format": "double", "description": "The Y coordinate shearing element.", "type": "number" - }, - "unit": { - "enum": [ - "UNIT_UNSPECIFIED", - "EMU", - "PT" - ], - "description": "The units for translate elements.", - "type": "string", - "enumDescriptions": [ - "The units are unknown.", - "An English Metric Unit (EMU) is defined as 1/360,000 of a centimeter\nand thus there are 914,400 EMUs per inch, and 12,700 EMUs per point.", - "A point, 1/72 of an inch." - ] - }, - "scaleX": { - "format": "double", - "description": "The X coordinate scaling element.", - "type": "number" } - }, - "id": "AffineTransform", - "description": "AffineTransform uses a 3x3 matrix with an implied last row of [ 0 0 1 ]\nto transform source coordinates (x,y) into destination coordinates (x', y')\naccording to:\n\n x' x = shear_y scale_y translate_y \n 1 [ 1 ]\n\nAfter transformation,\n\n x' = scale_x * x + shear_x * y + translate_x;\n y' = scale_y * y + shear_y * x + translate_y;\n\nThis message is therefore composed of these six matrix elements." + } }, "AutoText": { + "id": "AutoText", "description": "A TextElement kind that represents auto text.", "type": "object", "properties": { @@ -559,8 +2768,7 @@ "SLIDE_NUMBER" ] } - }, - "id": "AutoText" + } }, "CreateVideoResponse": { "id": "CreateVideoResponse", @@ -573,38 +2781,21 @@ } } }, - "DeleteTextRequest": { - "id": "DeleteTextRequest", - "description": "Deletes text from a shape or a table cell.", - "type": "object", - "properties": { - "cellLocation": { - "description": "The optional table cell location if the text is to be deleted from a table\ncell. If present, the object_id must refer to a table.", - "$ref": "TableCellLocation" - }, - "textRange": { - "$ref": "Range", - "description": "The range of text to delete, based on TextElement indexes.\n\nThere is always an implicit newline character at the end of a shape's or\ntable cell's text that cannot be deleted. `Range.Type.ALL` will use the\ncorrect bounds, but care must be taken when specifying explicit bounds for\nrange types `FROM_START_INDEX` and `FIXED_RANGE`. For example, if the text\nis \"ABC\", followed by an implicit newline, then the maximum value is 2 for\n`text_range.start_index` and 3 for `text_range.end_index`.\n\nDeleting text that crosses a paragraph boundary may result in changes\nto paragraph styles and lists as the two paragraphs are merged.\n\nRanges that include only one code unit of a surrogate pair are expanded to\ninclude both code units." - }, - "objectId": { - "description": "The object ID of the shape or table from which the text will be deleted.", - "type": "string" - } - } - }, "UpdatePageElementTransformRequest": { + "id": "UpdatePageElementTransformRequest", "description": "Updates the transform of a page element.\n\nUpdating the transform of a group will change the absolute transform of the\npage elements in that group, which can change their visual appearance. See\nthe documentation for PageElement.transform for more details.", "type": "object", "properties": { "transform": { - "$ref": "AffineTransform", - "description": "The input transform matrix used to update the page element." + "description": "The input transform matrix used to update the page element.", + "$ref": "AffineTransform" }, "objectId": { - "type": "string", - "description": "The object ID of the page element to update." + "description": "The object ID of the page element to update.", + "type": "string" }, "applyMode": { + "description": "The apply mode of the transform update.", "type": "string", "enumDescriptions": [ "Unspecified mode.", @@ -615,11 +2806,28 @@ "APPLY_MODE_UNSPECIFIED", "RELATIVE", "ABSOLUTE" - ], - "description": "The apply mode of the transform update." + ] } - }, - "id": "UpdatePageElementTransformRequest" + } + }, + "DeleteTextRequest": { + "id": "DeleteTextRequest", + "description": "Deletes text from a shape or a table cell.", + "type": "object", + "properties": { + "cellLocation": { + "$ref": "TableCellLocation", + "description": "The optional table cell location if the text is to be deleted from a table\ncell. If present, the object_id must refer to a table." + }, + "textRange": { + "$ref": "Range", + "description": "The range of text to delete, based on TextElement indexes.\n\nThere is always an implicit newline character at the end of a shape's or\ntable cell's text that cannot be deleted. `Range.Type.ALL` will use the\ncorrect bounds, but care must be taken when specifying explicit bounds for\nrange types `FROM_START_INDEX` and `FIXED_RANGE`. For example, if the text\nis \"ABC\", followed by an implicit newline, then the maximum value is 2 for\n`text_range.start_index` and 3 for `text_range.end_index`.\n\nDeleting text that crosses a paragraph boundary may result in changes\nto paragraph styles and lists as the two paragraphs are merged.\n\nRanges that include only one code unit of a surrogate pair are expanded to\ninclude both code units." + }, + "objectId": { + "description": "The object ID of the shape or table from which the text will be deleted.", + "type": "string" + } + } }, "DeleteObjectRequest": { "description": "Deletes an object, either pages or\npage elements, from the\npresentation.", @@ -632,15 +2840,39 @@ }, "id": "DeleteObjectRequest" }, + "TextElement": { + "description": "A TextElement describes the content of a range of indices in the text content\nof a Shape or TableCell.", + "type": "object", + "properties": { + "paragraphMarker": { + "$ref": "ParagraphMarker", + "description": "A marker representing the beginning of a new paragraph.\n\nThe `start_index` and `end_index` of this TextElement represent the\nrange of the paragraph. Other TextElements with an index range contained\ninside this paragraph's range are considered to be part of this\nparagraph. The range of indices of two separate paragraphs will never\noverlap." + }, + "endIndex": { + "format": "int32", + "description": "The zero-based end index of this text element, exclusive, in Unicode code\nunits.", + "type": "integer" + }, + "startIndex": { + "format": "int32", + "description": "The zero-based start index of this text element, in Unicode code units.", + "type": "integer" + }, + "textRun": { + "$ref": "TextRun", + "description": "A TextElement representing a run of text where all of the characters\nin the run have the same TextStyle.\n\nThe `start_index` and `end_index` of TextRuns will always be fully\ncontained in the index range of a single `paragraph_marker` TextElement.\nIn other words, a TextRun will never span multiple paragraphs." + }, + "autoText": { + "$ref": "AutoText", + "description": "A TextElement representing a spot in the text that is dynamically\nreplaced with content that can change over time." + } + }, + "id": "TextElement" + }, "Dimension": { "description": "A magnitude in a single direction in the specified units.", "type": "object", "properties": { - "magnitude": { - "format": "double", - "description": "The magnitude.", - "type": "number" - }, "unit": { "description": "The units for magnitude.", "type": "string", @@ -654,62 +2886,41 @@ "EMU", "PT" ] + }, + "magnitude": { + "format": "double", + "description": "The magnitude.", + "type": "number" } }, "id": "Dimension" }, - "TextElement": { - "description": "A TextElement describes the content of a range of indices in the text content\nof a Shape or TableCell.", + "LineFill": { + "description": "The fill of the line.", "type": "object", - "properties": { - "textRun": { - "$ref": "TextRun", - "description": "A TextElement representing a run of text where all of the characters\nin the run have the same TextStyle.\n\nThe `start_index` and `end_index` of TextRuns will always be fully\ncontained in the index range of a single `paragraph_marker` TextElement.\nIn other words, a TextRun will never span multiple paragraphs." - }, - "autoText": { - "description": "A TextElement representing a spot in the text that is dynamically\nreplaced with content that can change over time.", - "$ref": "AutoText" - }, - "paragraphMarker": { - "description": "A marker representing the beginning of a new paragraph.\n\nThe `start_index` and `end_index` of this TextElement represent the\nrange of the paragraph. Other TextElements with an index range contained\ninside this paragraph's range are considered to be part of this\nparagraph. The range of indices of two separate paragraphs will never\noverlap.", - "$ref": "ParagraphMarker" - }, - "endIndex": { - "format": "int32", - "description": "The zero-based end index of this text element, exclusive, in Unicode code\nunits.", - "type": "integer" - }, - "startIndex": { - "format": "int32", - "description": "The zero-based start index of this text element, in Unicode code units.", - "type": "integer" - } - }, - "id": "TextElement" - }, - "LineFill": { "properties": { "solidFill": { - "description": "Solid color fill.", - "$ref": "SolidFill" + "$ref": "SolidFill", + "description": "Solid color fill." } }, - "id": "LineFill", - "description": "The fill of the line.", - "type": "object" + "id": "LineFill" }, "VideoProperties": { - "id": "VideoProperties", "description": "The properties of the Video.", "type": "object", "properties": { "outline": { - "description": "The outline of the video. The default outline matches the defaults for new\nvideos created in the Slides editor.", - "$ref": "Outline" + "$ref": "Outline", + "description": "The outline of the video. The default outline matches the defaults for new\nvideos created in the Slides editor." } - } + }, + "id": "VideoProperties" }, "InsertTableRowsRequest": { + "id": "InsertTableRowsRequest", + "description": "Inserts rows into a table.", + "type": "object", "properties": { "number": { "format": "int32", @@ -717,8 +2928,8 @@ "type": "integer" }, "cellLocation": { - "$ref": "TableCellLocation", - "description": "The reference table cell location from which rows will be inserted.\n\nA new row will be inserted above (or below) the row where the reference\ncell is. If the reference cell is a merged cell, a new row will be\ninserted above (or below) the merged cell." + "description": "The reference table cell location from which rows will be inserted.\n\nA new row will be inserted above (or below) the row where the reference\ncell is. If the reference cell is a merged cell, a new row will be\ninserted above (or below) the merged cell.", + "$ref": "TableCellLocation" }, "tableObjectId": { "description": "The table to insert rows into.", @@ -728,12 +2939,11 @@ "description": "Whether to insert new rows below the reference cell location.\n\n- `True`: insert below the cell.\n- `False`: insert above the cell.", "type": "boolean" } - }, - "id": "InsertTableRowsRequest", - "description": "Inserts rows into a table.", - "type": "object" + } }, "LayoutProperties": { + "description": "The properties of Page are only\nrelevant for pages with page_type LAYOUT.", + "type": "object", "properties": { "masterObjectId": { "description": "The object ID of the master that this layout is based on.", @@ -748,18 +2958,71 @@ "type": "string" } }, - "id": "LayoutProperties", - "description": "The properties of Page are only\nrelevant for pages with page_type LAYOUT.", - "type": "object" + "id": "LayoutProperties" + }, + "Presentation": { + "description": "A Google Slides presentation.", + "type": "object", + "properties": { + "slides": { + "description": "The slides in the presentation.\nA slide inherits properties from a slide layout.", + "items": { + "$ref": "Page" + }, + "type": "array" + }, + "revisionId": { + "description": "The revision ID of the presentation. Can be used in update requests\nto assert that the presentation revision hasn't changed since the last\nread operation. Only populated if the user has edit access to the\npresentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.", + "type": "string" + }, + "notesMaster": { + "description": "The notes master in the presentation. It serves three purposes:\n\n- Placeholder shapes on a notes master contain the default text styles and\n shape properties of all placeholder shapes on notes pages. Specifically,\n a `SLIDE_IMAGE` placeholder shape contains the slide thumbnail, and a\n `BODY` placeholder shape contains the speaker notes.\n- The notes master page properties define the common page properties\n inherited by all notes pages.\n- Any other shapes on the notes master will appear on all notes pages.\n\nThe notes master is read-only.", + "$ref": "Page" + }, + "layouts": { + "description": "The layouts in the presentation. A layout is a template that determines\nhow content is arranged and styled on the slides that inherit from that\nlayout.", + "items": { + "$ref": "Page" + }, + "type": "array" + }, + "title": { + "description": "The title of the presentation.", + "type": "string" + }, + "locale": { + "description": "The locale of the presentation, as an IETF BCP 47 language tag.", + "type": "string" + }, + "masters": { + "description": "The slide masters in the presentation. A slide master contains all common\npage elements and the common properties for a set of layouts. They serve\nthree purposes:\n\n- Placeholder shapes on a master contain the default text styles and shape\n properties of all placeholder shapes on pages that use that master.\n- The master page properties define the common page properties inherited by\n its layouts.\n- Any other shapes on the master slide will appear on all slides using that\n master, regardless of their layout.", + "items": { + "$ref": "Page" + }, + "type": "array" + }, + "pageSize": { + "$ref": "Size", + "description": "The size of pages in the presentation." + }, + "presentationId": { + "description": "The ID of the presentation.", + "type": "string" + } + }, + "id": "Presentation" }, "LineProperties": { + "description": "The properties of the Line.\n\nWhen unset, these fields default to values that match the appearance of\nnew lines created in the Slides editor.", "type": "object", "properties": { "link": { - "$ref": "Link", - "description": "The hyperlink destination of the line. If unset, there is no link." + "description": "The hyperlink destination of the line. If unset, there is no link.", + "$ref": "Link" }, "dashStyle": { + "description": "The dash style of the line.", + "type": "string", "enumDescriptions": [ "Unspecified dash style.", "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.", @@ -777,138 +3040,87 @@ "DASH_DOT", "LONG_DASH", "LONG_DASH_DOT" - ], - "description": "The dash style of the line.", - "type": "string" - }, - "startArrow": { - "type": "string", - "enumDescriptions": [ - "An unspecified arrow style.", - "No arrow.", - "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.", - "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.", - "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.", - "Filled square.", - "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.", - "Hollow arrow.", - "Hollow circle.", - "Hollow square.", - "Hollow diamond." - ], - "enum": [ - "ARROW_STYLE_UNSPECIFIED", - "NONE", - "STEALTH_ARROW", - "FILL_ARROW", - "FILL_CIRCLE", - "FILL_SQUARE", - "FILL_DIAMOND", - "OPEN_ARROW", - "OPEN_CIRCLE", - "OPEN_SQUARE", - "OPEN_DIAMOND" - ], - "description": "The style of the arrow at the beginning of the line." - }, - "endArrow": { - "description": "The style of the arrow at the end of the line.", - "type": "string", - "enumDescriptions": [ - "An unspecified arrow style.", - "No arrow.", - "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.", - "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.", - "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.", - "Filled square.", - "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.", - "Hollow arrow.", - "Hollow circle.", - "Hollow square.", - "Hollow diamond." - ], - "enum": [ - "ARROW_STYLE_UNSPECIFIED", - "NONE", - "STEALTH_ARROW", - "FILL_ARROW", - "FILL_CIRCLE", - "FILL_SQUARE", - "FILL_DIAMOND", - "OPEN_ARROW", - "OPEN_CIRCLE", - "OPEN_SQUARE", - "OPEN_DIAMOND" ] }, + "startArrow": { + "enumDescriptions": [ + "An unspecified arrow style.", + "No arrow.", + "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.", + "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.", + "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.", + "Filled square.", + "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.", + "Hollow arrow.", + "Hollow circle.", + "Hollow square.", + "Hollow diamond." + ], + "enum": [ + "ARROW_STYLE_UNSPECIFIED", + "NONE", + "STEALTH_ARROW", + "FILL_ARROW", + "FILL_CIRCLE", + "FILL_SQUARE", + "FILL_DIAMOND", + "OPEN_ARROW", + "OPEN_CIRCLE", + "OPEN_SQUARE", + "OPEN_DIAMOND" + ], + "description": "The style of the arrow at the beginning of the line.", + "type": "string" + }, + "endArrow": { + "enumDescriptions": [ + "An unspecified arrow style.", + "No arrow.", + "Arrow with notched back. Corresponds to ECMA-376 ST_LineEndType value\n'stealth'.", + "Filled arrow. Corresponds to ECMA-376 ST_LineEndType value 'triangle'.", + "Filled circle. Corresponds to ECMA-376 ST_LineEndType value 'oval'.", + "Filled square.", + "Filled diamond. Corresponds to ECMA-376 ST_LineEndType value 'diamond'.", + "Hollow arrow.", + "Hollow circle.", + "Hollow square.", + "Hollow diamond." + ], + "enum": [ + "ARROW_STYLE_UNSPECIFIED", + "NONE", + "STEALTH_ARROW", + "FILL_ARROW", + "FILL_CIRCLE", + "FILL_SQUARE", + "FILL_DIAMOND", + "OPEN_ARROW", + "OPEN_CIRCLE", + "OPEN_SQUARE", + "OPEN_DIAMOND" + ], + "description": "The style of the arrow at the end of the line.", + "type": "string" + }, "weight": { - "$ref": "Dimension", - "description": "The thickness of the line." + "description": "The thickness of the line.", + "$ref": "Dimension" }, "lineFill": { - "$ref": "LineFill", - "description": "The fill of the line. The default line fill matches the defaults for new\nlines created in the Slides editor." + "description": "The fill of the line. The default line fill matches the defaults for new\nlines created in the Slides editor.", + "$ref": "LineFill" } }, - "id": "LineProperties", - "description": "The properties of the Line.\n\nWhen unset, these fields default to values that match the appearance of\nnew lines created in the Slides editor." - }, - "Presentation": { - "type": "object", - "properties": { - "slides": { - "description": "The slides in the presentation.\nA slide inherits properties from a slide layout.", - "items": { - "$ref": "Page" - }, - "type": "array" - }, - "revisionId": { - "description": "The revision ID of the presentation. Can be used in update requests\nto assert that the presentation revision hasn't changed since the last\nread operation. Only populated if the user has edit access to the\npresentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.", - "type": "string" - }, - "notesMaster": { - "$ref": "Page", - "description": "The notes master in the presentation. It serves three purposes:\n\n- Placeholder shapes on a notes master contain the default text styles and\n shape properties of all placeholder shapes on notes pages. Specifically,\n a `SLIDE_IMAGE` placeholder shape contains the slide thumbnail, and a\n `BODY` placeholder shape contains the speaker notes.\n- The notes master page properties define the common page properties\n inherited by all notes pages.\n- Any other shapes on the notes master will appear on all notes pages.\n\nThe notes master is read-only." - }, - "title": { - "description": "The title of the presentation.", - "type": "string" - }, - "layouts": { - "description": "The layouts in the presentation. A layout is a template that determines\nhow content is arranged and styled on the slides that inherit from that\nlayout.", - "items": { - "$ref": "Page" - }, - "type": "array" - }, - "masters": { - "description": "The slide masters in the presentation. A slide master contains all common\npage elements and the common properties for a set of layouts. They serve\nthree purposes:\n\n- Placeholder shapes on a master contain the default text styles and shape\n properties of all placeholder shapes on pages that use that master.\n- The master page properties define the common page properties inherited by\n its layouts.\n- Any other shapes on the master slide will appear on all slides using that\n master, regardless of their layout.", - "items": { - "$ref": "Page" - }, - "type": "array" - }, - "locale": { - "description": "The locale of the presentation, as an IETF BCP 47 language tag.", - "type": "string" - }, - "pageSize": { - "$ref": "Size", - "description": "The size of pages in the presentation." - }, - "presentationId": { - "description": "The ID of the presentation.", - "type": "string" - } - }, - "id": "Presentation", - "description": "A Google Slides presentation." + "id": "LineProperties" }, "OpaqueColor": { "description": "A themeable solid color value.", "type": "object", "properties": { + "rgbColor": { + "description": "An opaque RGB color.", + "$ref": "RgbColor" + }, "themeColor": { "description": "An opaque theme color.", "type": "string", @@ -950,25 +3162,31 @@ "TEXT2", "BACKGROUND2" ] - }, - "rgbColor": { - "$ref": "RgbColor", - "description": "An opaque RGB color." } }, "id": "OpaqueColor" }, "ImageProperties": { + "description": "The properties of the Image.", "type": "object", "properties": { - "recolor": { - "description": "The recolor effect of the image. If not set, the image is not recolored.\nThis property is read-only.", - "$ref": "Recolor" + "link": { + "description": "The hyperlink destination of the image. If unset, there is no link.", + "$ref": "Link" + }, + "contrast": { + "format": "float", + "description": "The contrast effect of the image. The value should be in the interval\n[-1.0, 1.0], where 0 means no effect. This property is read-only.", + "type": "number" }, "cropProperties": { "$ref": "CropProperties", "description": "The crop properties of the image. If not set, the image is not cropped.\nThis property is read-only." }, + "recolor": { + "description": "The recolor effect of the image. If not set, the image is not recolored.\nThis property is read-only.", + "$ref": "Recolor" + }, "outline": { "$ref": "Outline", "description": "The outline of the image. If not set, the the image has no outline." @@ -986,21 +3204,12 @@ "shadow": { "$ref": "Shadow", "description": "The shadow of the image. If not set, the image has no shadow. This property\nis read-only." - }, - "contrast": { - "format": "float", - "description": "The contrast effect of the image. The value should be in the interval\n[-1.0, 1.0], where 0 means no effect. This property is read-only.", - "type": "number" - }, - "link": { - "description": "The hyperlink destination of the image. If unset, there is no link.", - "$ref": "Link" } }, - "id": "ImageProperties", - "description": "The properties of the Image." + "id": "ImageProperties" }, "ReplaceAllShapesWithImageResponse": { + "id": "ReplaceAllShapesWithImageResponse", "description": "The result of replacing shapes with an image.", "type": "object", "properties": { @@ -1009,15 +3218,15 @@ "description": "The number of shapes replaced with images.", "type": "integer" } - }, - "id": "ReplaceAllShapesWithImageResponse" + } }, "Line": { - "id": "Line", "description": "A PageElement kind representing a\nline, curved connector, or bent connector.", "type": "object", "properties": { "lineType": { + "description": "The type of the line.", + "type": "string", "enumDescriptions": [ "An unspecified line type.", "Straight connector 1 form. Corresponds to ECMA-376 ST_ShapeType\n'straightConnector1'.", @@ -1041,56 +3250,48 @@ "CURVED_CONNECTOR_3", "CURVED_CONNECTOR_4", "CURVED_CONNECTOR_5" - ], - "description": "The type of the line.", - "type": "string" + ] }, "lineProperties": { - "description": "The properties of the line.", - "$ref": "LineProperties" + "$ref": "LineProperties", + "description": "The properties of the line." } - } + }, + "id": "Line" }, "BatchUpdatePresentationResponse": { "description": "Response message from a batch update.", "type": "object", "properties": { + "presentationId": { + "description": "The presentation the updates were applied to.", + "type": "string" + }, "replies": { "description": "The reply of the updates. This maps 1:1 with the updates, although\nreplies to some requests may be empty.", "items": { "$ref": "Response" }, "type": "array" - }, - "presentationId": { - "description": "The presentation the updates were applied to.", - "type": "string" } }, "id": "BatchUpdatePresentationResponse" }, "CreateSheetsChartRequest": { + "id": "CreateSheetsChartRequest", "description": "Creates an embedded Google Sheets chart.\n\nNOTE: Chart creation requires at least one of the spreadsheets.readonly,\nspreadsheets, drive.readonly, or drive OAuth scopes.", "type": "object", "properties": { - "objectId": { - "description": "A user-supplied object ID.\n\nIf specified, the ID must be unique among all pages and page elements in\nthe presentation. The ID should start with a word character [a-zA-Z0-9_]\nand then followed by any number of the following characters [a-zA-Z0-9_-:].\nThe length of the ID should not be less than 5 or greater than 50.\nIf empty, a unique identifier will be generated.", - "type": "string" - }, - "elementProperties": { - "$ref": "PageElementProperties", - "description": "The element properties for the chart.\n\nWhen the aspect ratio of the provided size does not match the chart aspect\nratio, the chart is scaled and centered with respect to the size in order\nto maintain aspect ratio. The provided transform is applied after this\noperation." - }, "linkingMode": { - "enum": [ - "NOT_LINKED_IMAGE", - "LINKED" - ], "description": "The mode with which the chart is linked to the source spreadsheet. When\nnot specified, the chart will be an image that is not linked.", "type": "string", "enumDescriptions": [ "The chart is not associated with the source spreadsheet and cannot be\nupdated. A chart that is not linked will be inserted as an image.", "Linking the chart allows it to be updated, and other collaborators will\nsee a link to the spreadsheet." + ], + "enum": [ + "NOT_LINKED_IMAGE", + "LINKED" ] }, "spreadsheetId": { @@ -1101,9 +3302,16 @@ "format": "int32", "description": "The ID of the specific chart in the Google Sheets spreadsheet.", "type": "integer" + }, + "objectId": { + "description": "A user-supplied object ID.\n\nIf specified, the ID must be unique among all pages and page elements in\nthe presentation. The ID should start with a word character [a-zA-Z0-9_]\nand then followed by any number of the following characters [a-zA-Z0-9_-:].\nThe length of the ID should not be less than 5 or greater than 50.\nIf empty, a unique identifier will be generated.", + "type": "string" + }, + "elementProperties": { + "description": "The element properties for the chart.\n\nWhen the aspect ratio of the provided size does not match the chart aspect\nratio, the chart is scaled and centered with respect to the size in order\nto maintain aspect ratio. The provided transform is applied after this\noperation.", + "$ref": "PageElementProperties" } - }, - "id": "CreateSheetsChartRequest" + } }, "CreateImageResponse": { "description": "The result of creating an image.", @@ -1120,10 +3328,6 @@ "description": "The properties of Page that are only\nrelevant for pages with page_type SLIDE.", "type": "object", "properties": { - "notesPage": { - "$ref": "Page", - "description": "The notes page that this slide is associated with. It defines the visual\nappearance of a notes page when printing or exporting slides with speaker\nnotes. A notes page inherits properties from the\nnotes master.\nThe placeholder shape with type BODY on the notes page contains the speaker\nnotes for this slide. The ID of this shape is identified by the\nspeakerNotesObjectId field.\nThe notes page is read-only except for the text content and styles of the\nspeaker notes shape." - }, "masterObjectId": { "description": "The object ID of the master that this slide is based on.", "type": "string" @@ -1131,44 +3335,30 @@ "layoutObjectId": { "description": "The object ID of the layout that this slide is based on.", "type": "string" + }, + "notesPage": { + "$ref": "Page", + "description": "The notes page that this slide is associated with. It defines the visual\nappearance of a notes page when printing or exporting slides with speaker\nnotes. A notes page inherits properties from the\nnotes master.\nThe placeholder shape with type BODY on the notes page contains the speaker\nnotes for this slide. The ID of this shape is identified by the\nspeakerNotesObjectId field.\nThe notes page is read-only except for the text content and styles of the\nspeaker notes shape." } }, "id": "SlideProperties" }, - "MasterProperties": { - "description": "The properties of Page that are only\nrelevant for pages with page_type MASTER.", - "type": "object", - "properties": { - "displayName": { - "description": "The human-readable name of the master.", - "type": "string" - } - }, - "id": "MasterProperties" - }, "Response": { + "id": "Response", "description": "A single response from an update.", "type": "object", "properties": { - "createShape": { - "$ref": "CreateShapeResponse", - "description": "The result of creating a shape." - }, - "duplicateObject": { - "$ref": "DuplicateObjectResponse", - "description": "The result of duplicating an object." - }, "createLine": { - "$ref": "CreateLineResponse", - "description": "The result of creating a line." + "description": "The result of creating a line.", + "$ref": "CreateLineResponse" }, "createImage": { - "$ref": "CreateImageResponse", - "description": "The result of creating an image." + "description": "The result of creating an image.", + "$ref": "CreateImageResponse" }, "createVideo": { - "$ref": "CreateVideoResponse", - "description": "The result of creating a video." + "description": "The result of creating a video.", + "$ref": "CreateVideoResponse" }, "createSheetsChart": { "$ref": "CreateSheetsChartResponse", @@ -1179,23 +3369,41 @@ "description": "The result of replacing all shapes matching some criteria with a Google\nSheets chart." }, "replaceAllShapesWithImage": { - "$ref": "ReplaceAllShapesWithImageResponse", - "description": "The result of replacing all shapes matching some criteria with an\nimage." + "description": "The result of replacing all shapes matching some criteria with an\nimage.", + "$ref": "ReplaceAllShapesWithImageResponse" }, "createTable": { - "$ref": "CreateTableResponse", - "description": "The result of creating a table." + "description": "The result of creating a table.", + "$ref": "CreateTableResponse" }, "replaceAllText": { "description": "The result of replacing text.", "$ref": "ReplaceAllTextResponse" }, "createSlide": { - "$ref": "CreateSlideResponse", - "description": "The result of creating a slide." + "description": "The result of creating a slide.", + "$ref": "CreateSlideResponse" + }, + "duplicateObject": { + "description": "The result of duplicating an object.", + "$ref": "DuplicateObjectResponse" + }, + "createShape": { + "$ref": "CreateShapeResponse", + "description": "The result of creating a shape." } - }, - "id": "Response" + } + }, + "MasterProperties": { + "id": "MasterProperties", + "description": "The properties of Page that are only\nrelevant for pages with page_type MASTER.", + "type": "object", + "properties": { + "displayName": { + "description": "The human-readable name of the master.", + "type": "string" + } + } }, "SubstringMatchCriteria": { "description": "A criteria that matches a specific string of text in a shape or table.", @@ -1212,11 +3420,28 @@ }, "id": "SubstringMatchCriteria" }, + "TextRun": { + "id": "TextRun", + "description": "A TextElement kind that represents a run of text that all has the same\nstyling.", + "type": "object", + "properties": { + "style": { + "description": "The styling applied to this run.", + "$ref": "TextStyle" + }, + "content": { + "description": "The text of this run.", + "type": "string" + } + } + }, "LayoutReference": { "description": "Slide layout reference. This may reference either:\n\n- A predefined layout\n- One of the layouts in the presentation.", "type": "object", "properties": { "predefinedLayout": { + "description": "Predefined layout.", + "type": "string", "enumDescriptions": [ "Unspecified layout.", "Blank layout, with no placeholders.", @@ -1244,9 +3469,7 @@ "ONE_COLUMN_TEXT", "MAIN_POINT", "BIG_NUMBER" - ], - "description": "Predefined layout.", - "type": "string" + ] }, "layoutId": { "description": "Layout ID: the object ID of one of the layouts in the presentation.", @@ -1255,22 +3478,8 @@ }, "id": "LayoutReference" }, - "TextRun": { - "type": "object", - "properties": { - "content": { - "description": "The text of this run.", - "type": "string" - }, - "style": { - "$ref": "TextStyle", - "description": "The styling applied to this run." - } - }, - "id": "TextRun", - "description": "A TextElement kind that represents a run of text that all has the same\nstyling." - }, "TableRange": { + "id": "TableRange", "description": "A table range represents a reference to a subset of a table.\n\nIt's important to note that the cells specified by a table range do not\nnecessarily form a rectangle. For example, let's say we have a 3 x 3 table\nwhere all the cells of the last row are merged together. The table looks\nlike this:\n\n \n [ ]\n\nA table range with location = (0, 0), row span = 3 and column span = 2\nspecifies the following cells:\n\n x x \n [ x ]", "type": "object", "properties": { @@ -1288,8 +3497,7 @@ "description": "The column span of the table range.", "type": "integer" } - }, - "id": "TableRange" + } }, "CreateTableRequest": { "description": "Creates a new table.", @@ -1317,26 +3525,21 @@ "id": "CreateTableRequest" }, "CreateTableResponse": { + "id": "CreateTableResponse", + "description": "The result of creating a table.", "type": "object", "properties": { "objectId": { "description": "The object ID of the created table.", "type": "string" } - }, - "id": "CreateTableResponse", - "description": "The result of creating a table." + } }, "Table": { "id": "Table", "description": "A PageElement kind representing a\ntable.", "type": "object", "properties": { - "rows": { - "type": "integer", - "format": "int32", - "description": "Number of rows in the table." - }, "tableColumns": { "description": "Properties of each column.", "items": { @@ -1355,6 +3558,11 @@ "$ref": "TableRow" }, "type": "array" + }, + "rows": { + "format": "int32", + "description": "Number of rows in the table.", + "type": "integer" } } }, @@ -1363,6 +3571,8 @@ "type": "object", "properties": { "propertyState": { + "description": "The background fill property state.\n\nUpdating the fill on a page will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a page, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.", + "type": "string", "enumDescriptions": [ "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", @@ -1372,9 +3582,7 @@ "RENDERED", "NOT_RENDERED", "INHERIT" - ], - "description": "The background fill property state.\n\nUpdating the fill on a page will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a page, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.", - "type": "string" + ] }, "stretchedPictureFill": { "description": "Stretched picture fill.", @@ -1388,6 +3596,7 @@ "id": "PageBackgroundFill" }, "SheetsChart": { + "id": "SheetsChart", "description": "A PageElement kind representing\na linked chart embedded from Google Sheets.", "type": "object", "properties": { @@ -1408,2221 +3617,18 @@ "description": "The ID of the specific chart in the Google Sheets spreadsheet that is\nembedded.", "type": "integer" } - }, - "id": "SheetsChart" - }, - "SolidFill": { - "description": "A solid color fill. The page or page element is filled entirely with the\nspecified color value.\n\nIf any field is unset, its value may be inherited from a parent placeholder\nif it exists.", - "type": "object", - "properties": { - "alpha": { - "format": "float", - "description": "The fraction of this `color` that should be applied to the pixel.\nThat is, the final pixel color is defined by the equation:\n\n pixel color = alpha * (color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color.", - "type": "number" - }, - "color": { - "description": "The color value of the solid fill.", - "$ref": "OpaqueColor" - } - }, - "id": "SolidFill" - }, - "ThemeColorPair": { - "description": "A pair mapping a theme color type to the concrete color it represents.", - "type": "object", - "properties": { - "color": { - "description": "The concrete color corresponding to the theme color type above.", - "$ref": "RgbColor" - }, - "type": { - "enum": [ - "THEME_COLOR_TYPE_UNSPECIFIED", - "DARK1", - "LIGHT1", - "DARK2", - "LIGHT2", - "ACCENT1", - "ACCENT2", - "ACCENT3", - "ACCENT4", - "ACCENT5", - "ACCENT6", - "HYPERLINK", - "FOLLOWED_HYPERLINK", - "TEXT1", - "BACKGROUND1", - "TEXT2", - "BACKGROUND2" - ], - "description": "The type of the theme color.", - "type": "string", - "enumDescriptions": [ - "Unspecified theme color. This value should not be used.", - "Represents the first dark color.", - "Represents the first light color.", - "Represents the second dark color.", - "Represents the second light color.", - "Represents the first accent color.", - "Represents the second accent color.", - "Represents the third accent color.", - "Represents the fourth accent color.", - "Represents the fifth accent color.", - "Represents the sixth accent color.", - "Represents the color to use for hyperlinks.", - "Represents the color to use for visited hyperlinks.", - "Represents the first text color.", - "Represents the first background color.", - "Represents the second text color.", - "Represents the second background color." - ] - } - }, - "id": "ThemeColorPair" - }, - "OptionalColor": { - "description": "A color that can either be fully opaque or fully transparent.", - "type": "object", - "properties": { - "opaqueColor": { - "$ref": "OpaqueColor", - "description": "If set, this will be used as an opaque color. If unset, this represents\na transparent color." - } - }, - "id": "OptionalColor" - }, - "PageElementProperties": { - "description": "Common properties for a page element.\n\nNote: When you initially create a\nPageElement, the API may modify\nthe values of both `size` and `transform`, but the\nvisual size will be unchanged.", - "type": "object", - "properties": { - "transform": { - "description": "The transform for the element.", - "$ref": "AffineTransform" - }, - "pageObjectId": { - "type": "string", - "description": "The object ID of the page where the element is located." - }, - "size": { - "$ref": "Size", - "description": "The size of the element." - } - }, - "id": "PageElementProperties" - }, - "SheetsChartProperties": { - "description": "The properties of the SheetsChart.", - "type": "object", - "properties": { - "chartImageProperties": { - "$ref": "ImageProperties", - "description": "The properties of the embedded chart image." - } - }, - "id": "SheetsChartProperties" - }, - "StretchedPictureFill": { - "id": "StretchedPictureFill", - "description": "The stretched picture fill. The page or page element is filled entirely with\nthe specified picture. The picture is stretched to fit its container.", - "type": "object", - "properties": { - "size": { - "description": "The original size of the picture fill. This field is read-only.", - "$ref": "Size" - }, - "contentUrl": { - "description": "Reading the content_url:\n\nAn URL to a picture with a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the picture as the original requester. Access to the\npicture may be lost if the presentation's sharing settings change.\n\nWriting the content_url:\n\nThe picture is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Pictures must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", - "type": "string" - } } - }, - "DeleteTableColumnRequest": { - "description": "Deletes a column from a table.", - "type": "object", - "properties": { - "cellLocation": { - "$ref": "TableCellLocation", - "description": "The reference table cell location from which a column will be deleted.\n\nThe column this cell spans will be deleted. If this is a merged cell,\nmultiple columns will be deleted. If no columns remain in the table after\nthis deletion, the whole table is deleted." - }, - "tableObjectId": { - "type": "string", - "description": "The table to delete columns from." - } - }, - "id": "DeleteTableColumnRequest" - }, - "UpdateTextStyleRequest": { - "description": "Update the styling of text in a Shape or\nTable.", - "type": "object", - "properties": { - "textRange": { - "$ref": "Range", - "description": "The range of text to style.\n\nThe range may be extended to include adjacent newlines.\n\nIf the range fully contains a paragraph belonging to a list, the\nparagraph's bullet is also updated with the matching text style." - }, - "objectId": { - "type": "string", - "description": "The object ID of the shape or table with the text to be styled." - }, - "style": { - "$ref": "TextStyle", - "description": "The style(s) to set on the text.\n\nIf the value for a particular style matches that of the parent, that style\nwill be set to inherit.\n\nCertain text style changes may cause other changes meant to mirror the\nbehavior of the Slides editor. See the documentation of\nTextStyle for more information." - }, - "cellLocation": { - "description": "The location of the cell in the table containing the text to style. If\n`object_id` refers to a table, `cell_location` must have a value.\nOtherwise, it must not.", - "$ref": "TableCellLocation" - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `style` is implied and\nshould not be specified. A single `\"*\"` can be used as short-hand for\nlisting every field.\n\nFor example, to update the text style to bold, set `fields` to `\"bold\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - } - }, - "id": "UpdateTextStyleRequest" - }, - "List": { - "id": "List", - "description": "A List describes the look and feel of bullets belonging to paragraphs\nassociated with a list. A paragraph that is part of a list has an implicit\nreference to that list's ID.", - "type": "object", - "properties": { - "listId": { - "description": "The ID of the list.", - "type": "string" - }, - "nestingLevel": { - "additionalProperties": { - "$ref": "NestingLevel" - }, - "description": "A map of nesting levels to the properties of bullets at the associated\nlevel. A list has at most nine levels of nesting, so the possible values\nfor the keys of this map are 0 through 8, inclusive.", - "type": "object" - } - } - }, - "WeightedFontFamily": { - "description": "Represents a font family and weight used to style a TextRun.", - "type": "object", - "properties": { - "weight": { - "format": "int32", - "description": "The rendered weight of the text. This field can have any value that is a\nmultiple of `100` between `100` and `900`, inclusive. This range\ncorresponds to the numerical values described in the CSS 2.1\nSpecification, [section 15.6](https://www.w3.org/TR/CSS21/fonts.html#font-boldness),\nwith non-numerical values disallowed. Weights greater than or equal to\n`700` are considered bold, and weights less than `700`are not bold. The\ndefault value is `400` (\"normal\").", - "type": "integer" - }, - "fontFamily": { - "description": "The font family of the text.\n\nThe font family can be any font from the Font menu in Slides or from\n[Google Fonts] (https://fonts.google.com/). If the font name is\nunrecognized, the text is rendered in `Arial`.", - "type": "string" - } - }, - "id": "WeightedFontFamily" - }, - "PageElement": { - "type": "object", - "properties": { - "line": { - "description": "A line page element.", - "$ref": "Line" - }, - "description": { - "description": "The description of the page element. Combined with title to display alt\ntext.", - "type": "string" - }, - "elementGroup": { - "description": "A collection of page elements joined as a single unit.", - "$ref": "Group" - }, - "image": { - "$ref": "Image", - "description": "An image page element." - }, - "size": { - "$ref": "Size", - "description": "The size of the page element." - }, - "title": { - "description": "The title of the page element. Combined with description to display alt\ntext.", - "type": "string" - }, - "sheetsChart": { - "$ref": "SheetsChart", - "description": "A linked chart embedded from Google Sheets. Unlinked charts are\nrepresented as images." - }, - "video": { - "$ref": "Video", - "description": "A video page element." - }, - "wordArt": { - "description": "A word art page element.", - "$ref": "WordArt" - }, - "table": { - "description": "A table page element.", - "$ref": "Table" - }, - "objectId": { - "description": "The object ID for this page element. Object IDs used by\ngoogle.apps.slides.v1.Page and\ngoogle.apps.slides.v1.PageElement share the same namespace.", - "type": "string" - }, - "transform": { - "$ref": "AffineTransform", - "description": "The transform of the page element.\n\nThe visual appearance of the page element is determined by its absolute\ntransform. To compute the absolute transform, preconcatenate a page\nelement's transform with the transforms of all of its parent groups. If the\npage element is not in a group, its absolute transform is the same as the\nvalue in this field.\n\nThe initial transform for the newly created Group is always the identity transform." - }, - "shape": { - "description": "A generic shape.", - "$ref": "Shape" - } - }, - "id": "PageElement", - "description": "A visual element rendered on a page." - }, - "CreateImageRequest": { - "description": "Creates an image.", - "type": "object", - "properties": { - "elementProperties": { - "description": "The element properties for the image.\n\nWhen the aspect ratio of the provided size does not match the image aspect\nratio, the image is scaled and centered with respect to the size in order\nto maintain aspect ratio. The provided transform is applied after this\noperation.", - "$ref": "PageElementProperties" - }, - "url": { - "description": "The image URL.\n\nThe image is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Images must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", - "type": "string" - }, - "objectId": { - "type": "string", - "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated." - } - }, - "id": "CreateImageRequest" - }, - "CreateParagraphBulletsRequest": { - "id": "CreateParagraphBulletsRequest", - "description": "Creates bullets for all of the paragraphs that overlap with the given\ntext index range.\n\nThe nesting level of each paragraph will be determined by counting leading\ntabs in front of each paragraph. To avoid excess space between the bullet and\nthe corresponding paragraph, these leading tabs are removed by this request.\nThis may change the indices of parts of the text.\n\nIf the paragraph immediately before paragraphs being updated is in a list\nwith a matching preset, the paragraphs being updated are added to that\npreceding list.", - "type": "object", - "properties": { - "textRange": { - "$ref": "Range", - "description": "The range of text to apply the bullet presets to, based on TextElement indexes." - }, - "objectId": { - "type": "string", - "description": "The object ID of the shape or table containing the text to add bullets to." - }, - "bulletPreset": { - "description": "The kinds of bullet glyphs to be used. Defaults to the\n`BULLET_DISC_CIRCLE_SQUARE` preset.", - "type": "string", - "enumDescriptions": [ - "A bulleted list with a `DISC`, `CIRCLE` and `SQUARE` bullet glyph for the\nfirst 3 list nesting levels.", - "A bulleted list with a `DIAMONDX`, `ARROW3D` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", - "A bulleted list with `CHECKBOX` bullet glyphs for all list nesting levels.", - "A bulleted list with a `ARROW`, `DIAMOND` and `DISC` bullet glyph for\nthe first 3 list nesting levels.", - "A bulleted list with a `STAR`, `CIRCLE` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", - "A bulleted list with a `ARROW3D`, `CIRCLE` and `SQUARE` bullet glyph for\nthe first 3 list nesting levels.", - "A bulleted list with a `LEFTTRIANGLE`, `DIAMOND` and `DISC` bullet glyph\nfor the first 3 list nesting levels.", - "A bulleted list with a `DIAMONDX`, `HOLLOWDIAMOND` and `SQUARE` bullet\nglyph for the first 3 list nesting levels.", - "A bulleted list with a `DIAMOND`, `CIRCLE` and `SQUARE` bullet glyph\nfor the first 3 list nesting levels.", - "A numbered list with `DIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods.", - "A numbered list with `DIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by parenthesis.", - "A numbered list with `DIGIT` numeric glyphs separated by periods, where\neach nesting level uses the previous nesting level's glyph as a prefix.\nFor example: '1.', '1.1.', '2.', '2.2.'.", - "A numbered list with `UPPERALPHA`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods.", - "A numbered list with `UPPERROMAN`, `UPPERALPHA` and `DIGIT` numeric glyphs\nfor the first 3 list nesting levels, followed by periods.", - "A numbered list with `ZERODIGIT`, `ALPHA` and `ROMAN` numeric glyphs for\nthe first 3 list nesting levels, followed by periods." - ], - "enum": [ - "BULLET_DISC_CIRCLE_SQUARE", - "BULLET_DIAMONDX_ARROW3D_SQUARE", - "BULLET_CHECKBOX", - "BULLET_ARROW_DIAMOND_DISC", - "BULLET_STAR_CIRCLE_SQUARE", - "BULLET_ARROW3D_CIRCLE_SQUARE", - "BULLET_LEFTTRIANGLE_DIAMOND_DISC", - "BULLET_DIAMONDX_HOLLOWDIAMOND_SQUARE", - "BULLET_DIAMOND_CIRCLE_SQUARE", - "NUMBERED_DIGIT_ALPHA_ROMAN", - "NUMBERED_DIGIT_ALPHA_ROMAN_PARENS", - "NUMBERED_DIGIT_NESTED", - "NUMBERED_UPPERALPHA_ALPHA_ROMAN", - "NUMBERED_UPPERROMAN_UPPERALPHA_DIGIT", - "NUMBERED_ZERODIGIT_ALPHA_ROMAN" - ] - }, - "cellLocation": { - "$ref": "TableCellLocation", - "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table." - } - } - }, - "TextStyle": { - "description": "Represents the styling that can be applied to a TextRun.\n\nIf this text is contained in a shape with a parent placeholder, then these text styles may be\ninherited from the parent. Which text styles are inherited depend on the\nnesting level of lists:\n\n* A text run in a paragraph that is not in a list will inherit its text style\n from the the newline character in the paragraph at the 0 nesting level of\n the list inside the parent placeholder.\n* A text run in a paragraph that is in a list will inherit its text style\n from the newline character in the paragraph at its corresponding nesting\n level of the list inside the parent placeholder.\n\nInherited text styles are represented as unset fields in this message. If\ntext is contained in a shape without a parent placeholder, unsetting these\nfields will revert the style to a value matching the defaults in the Slides\neditor.", - "type": "object", - "properties": { - "weightedFontFamily": { - "$ref": "WeightedFontFamily", - "description": "The font family and rendered weight of the text.\n\nThis field is an extension of `font_family` meant to support explicit font\nweights without breaking backwards compatibility. As such, when reading the\nstyle of a range of text, the value of `weighted_font_family#font_family`\nwill always be equal to that of `font_family`. However, when writing, if\nboth fields are included in the field mask (either explicitly or through\nthe wildcard `\"*\"`), their values are reconciled as follows:\n\n* If `font_family` is set and `weighted_font_family` is not, the value of\n `font_family` is applied with weight `400` (\"normal\").\n* If both fields are set, the value of `font_family` must match that of\n `weighted_font_family#font_family`. If so, the font family and weight of\n `weighted_font_family` is applied. Otherwise, a 400 bad request error is\n returned.\n* If `weighted_font_family` is set and `font_family` is not, the font\n family and weight of `weighted_font_family` is applied.\n* If neither field is set, the font family and weight of the text inherit\n from the parent. Note that these properties cannot inherit separately\n from each other.\n\nIf an update request specifies values for both `weighted_font_family` and\n`bold`, the `weighted_font_family` is applied first, then `bold`.\n\nIf `weighted_font_family#weight` is not set, it defaults to `400`.\n\nIf `weighted_font_family` is set, then `weighted_font_family#font_family`\nmust also be set with a non-empty value. Otherwise, a 400 bad request error\nis returned." - }, - "smallCaps": { - "description": "Whether or not the text is in small capital letters.", - "type": "boolean" - }, - "backgroundColor": { - "description": "The background color of the text. If set, the color is either opaque or\ntransparent, depending on if the `opaque_color` field in it is set.", - "$ref": "OptionalColor" - }, - "link": { - "description": "The hyperlink destination of the text. If unset, there is no link. Links\nare not inherited from parent text.\n\nChanging the link in an update request causes some other changes to the\ntext style of the range:\n\n* When setting a link, the text foreground color will be set to\n ThemeColorType.HYPERLINK and the text will\n be underlined. If these fields are modified in the same\n request, those values will be used instead of the link defaults.\n* Setting a link on a text range that overlaps with an existing link will\n also update the existing link to point to the new URL.\n* Links are not settable on newline characters. As a result, setting a link\n on a text range that crosses a paragraph boundary, such as `\"ABC\\n123\"`,\n will separate the newline character(s) into their own text runs. The\n link will be applied separately to the runs before and after the newline.\n* Removing a link will update the text style of the range to match the\n style of the preceding text (or the default text styles if the preceding\n text is another link) unless different styles are being set in the same\n request.", - "$ref": "Link" - }, - "underline": { - "description": "Whether or not the text is underlined.", - "type": "boolean" - }, - "foregroundColor": { - "$ref": "OptionalColor", - "description": "The color of the text itself. If set, the color is either opaque or\ntransparent, depending on if the `opaque_color` field in it is set." - }, - "bold": { - "description": "Whether or not the text is rendered as bold.", - "type": "boolean" - }, - "fontFamily": { - "description": "The font family of the text.\n\nThe font family can be any font from the Font menu in Slides or from\n[Google Fonts] (https://fonts.google.com/). If the font name is\nunrecognized, the text is rendered in `Arial`.\n\nSome fonts can affect the weight of the text. If an update request\nspecifies values for both `font_family` and `bold`, the explicitly-set\n`bold` value is used.", - "type": "string" - }, - "strikethrough": { - "type": "boolean", - "description": "Whether or not the text is struck through." - }, - "italic": { - "description": "Whether or not the text is italicized.", - "type": "boolean" - }, - "fontSize": { - "description": "The size of the text's font. When read, the `font_size` will specified in\npoints.", - "$ref": "Dimension" - }, - "baselineOffset": { - "enumDescriptions": [ - "The text's baseline offset is inherited from the parent.", - "The text is not vertically offset.", - "The text is vertically offset upwards (superscript).", - "The text is vertically offset downwards (subscript)." - ], - "enum": [ - "BASELINE_OFFSET_UNSPECIFIED", - "NONE", - "SUPERSCRIPT", - "SUBSCRIPT" - ], - "description": "The text's vertical offset from its normal position.\n\nText with `SUPERSCRIPT` or `SUBSCRIPT` baseline offsets is automatically\nrendered in a smaller font size, computed based on the `font_size` field.\nThe `font_size` itself is not affected by changes in this field.", - "type": "string" - } - }, - "id": "TextStyle" - }, - "Size": { - "description": "A width and height.", - "type": "object", - "properties": { - "width": { - "$ref": "Dimension", - "description": "The width of the object." - }, - "height": { - "$ref": "Dimension", - "description": "The height of the object." - } - }, - "id": "Size" - }, - "UpdateVideoPropertiesRequest": { - "description": "Update the properties of a Video.", - "type": "object", - "properties": { - "objectId": { - "description": "The object ID of the video the updates are applied to.", - "type": "string" - }, - "videoProperties": { - "description": "The video properties to update.", - "$ref": "VideoProperties" - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `videoProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the video outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - } - }, - "id": "UpdateVideoPropertiesRequest" - }, - "Request": { - "description": "A single kind of update to apply to a presentation.", - "type": "object", - "properties": { - "updateLineProperties": { - "description": "Updates the properties of a Line.", - "$ref": "UpdateLinePropertiesRequest" - }, - "updateSlidesPosition": { - "description": "Updates the position of a set of slides in the presentation.", - "$ref": "UpdateSlidesPositionRequest" - }, - "deleteTableRow": { - "$ref": "DeleteTableRowRequest", - "description": "Deletes a row from a table." - }, - "updateShapeProperties": { - "description": "Updates the properties of a Shape.", - "$ref": "UpdateShapePropertiesRequest" - }, - "insertText": { - "$ref": "InsertTextRequest", - "description": "Inserts text into a shape or table cell." - }, - "deleteText": { - "description": "Deletes text from a shape or a table cell.", - "$ref": "DeleteTextRequest" - }, - "updatePageProperties": { - "$ref": "UpdatePagePropertiesRequest", - "description": "Updates the properties of a Page." - }, - "deleteParagraphBullets": { - "$ref": "DeleteParagraphBulletsRequest", - "description": "Deletes bullets from paragraphs." - }, - "createShape": { - "description": "Creates a new shape.", - "$ref": "CreateShapeRequest" - }, - "insertTableColumns": { - "description": "Inserts columns into a table.", - "$ref": "InsertTableColumnsRequest" - }, - "refreshSheetsChart": { - "description": "Refreshes a Google Sheets chart.", - "$ref": "RefreshSheetsChartRequest" - }, - "updateTableCellProperties": { - "$ref": "UpdateTableCellPropertiesRequest", - "description": "Updates the properties of a TableCell." - }, - "createTable": { - "$ref": "CreateTableRequest", - "description": "Creates a new table." - }, - "deleteObject": { - "description": "Deletes a page or page element from the presentation.", - "$ref": "DeleteObjectRequest" - }, - "updateParagraphStyle": { - "$ref": "UpdateParagraphStyleRequest", - "description": "Updates the styling of paragraphs within a Shape or Table." - }, - "duplicateObject": { - "description": "Duplicates a slide or page element.", - "$ref": "DuplicateObjectRequest" - }, - "deleteTableColumn": { - "$ref": "DeleteTableColumnRequest", - "description": "Deletes a column from a table." - }, - "updateVideoProperties": { - "$ref": "UpdateVideoPropertiesRequest", - "description": "Updates the properties of a Video." - }, - "createLine": { - "$ref": "CreateLineRequest", - "description": "Creates a line." - }, - "createImage": { - "description": "Creates an image.", - "$ref": "CreateImageRequest" - }, - "createParagraphBullets": { - "description": "Creates bullets for paragraphs.", - "$ref": "CreateParagraphBulletsRequest" - }, - "createVideo": { - "$ref": "CreateVideoRequest", - "description": "Creates a video." - }, - "createSheetsChart": { - "$ref": "CreateSheetsChartRequest", - "description": "Creates an embedded Google Sheets chart." - }, - "replaceAllShapesWithSheetsChart": { - "description": "Replaces all shapes matching some criteria with a Google Sheets chart.", - "$ref": "ReplaceAllShapesWithSheetsChartRequest" - }, - "updatePageElementTransform": { - "$ref": "UpdatePageElementTransformRequest", - "description": "Updates the transform of a page element." - }, - "updateTextStyle": { - "description": "Updates the styling of text within a Shape or Table.", - "$ref": "UpdateTextStyleRequest" - }, - "replaceAllShapesWithImage": { - "$ref": "ReplaceAllShapesWithImageRequest", - "description": "Replaces all shapes matching some criteria with an image." - }, - "replaceAllText": { - "$ref": "ReplaceAllTextRequest", - "description": "Replaces all instances of specified text." - }, - "updateImageProperties": { - "$ref": "UpdateImagePropertiesRequest", - "description": "Updates the properties of an Image." - }, - "insertTableRows": { - "description": "Inserts rows into a table.", - "$ref": "InsertTableRowsRequest" - }, - "createSlide": { - "$ref": "CreateSlideRequest", - "description": "Creates a new slide." - } - }, - "id": "Request" - }, - "UpdateImagePropertiesRequest": { - "properties": { - "fields": { - "type": "string", - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `imageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the image outline color, set `fields` to\n`\"outline.outlineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset." - }, - "imageProperties": { - "description": "The image properties to update.", - "$ref": "ImageProperties" - }, - "objectId": { - "description": "The object ID of the image the updates are applied to.", - "type": "string" - } - }, - "id": "UpdateImagePropertiesRequest", - "description": "Update the properties of an Image.", - "type": "object" - }, - "ParagraphStyle": { - "properties": { - "spaceBelow": { - "$ref": "Dimension", - "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent." - }, - "direction": { - "type": "string", - "enumDescriptions": [ - "The text direction is inherited from the parent.", - "The text goes from left to right.", - "The text goes from right to left." - ], - "enum": [ - "TEXT_DIRECTION_UNSPECIFIED", - "LEFT_TO_RIGHT", - "RIGHT_TO_LEFT" - ], - "description": "The text direction of this paragraph. If unset, the value defaults to\nLEFT_TO_RIGHT since\ntext direction is not inherited." - }, - "spacingMode": { - "description": "The spacing mode for the paragraph.", - "type": "string", - "enumDescriptions": [ - "The spacing mode is inherited from the parent.", - "Paragraph spacing is always rendered.", - "Paragraph spacing is skipped between list elements." - ], - "enum": [ - "SPACING_MODE_UNSPECIFIED", - "NEVER_COLLAPSE", - "COLLAPSE_LISTS" - ] - }, - "indentEnd": { - "$ref": "Dimension", - "description": "The amount indentation for the paragraph on the side that corresponds to\nthe end of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent." - }, - "indentStart": { - "$ref": "Dimension", - "description": "The amount indentation for the paragraph on the side that corresponds to\nthe start of the text, based on the current text direction. If unset, the\nvalue is inherited from the parent." - }, - "spaceAbove": { - "$ref": "Dimension", - "description": "The amount of extra space above the paragraph. If unset, the value is\ninherited from the parent." - }, - "indentFirstLine": { - "$ref": "Dimension", - "description": "The amount of indentation for the start of the first line of the paragraph.\nIf unset, the value is inherited from the parent." - }, - "lineSpacing": { - "format": "float", - "description": "The amount of space between lines, as a percentage of normal, where normal\nis represented as 100.0. If unset, the value is inherited from the parent.", - "type": "number" - }, - "alignment": { - "enum": [ - "ALIGNMENT_UNSPECIFIED", - "START", - "CENTER", - "END", - "JUSTIFIED" - ], - "description": "The text alignment for this paragraph.", - "type": "string", - "enumDescriptions": [ - "The paragraph alignment is inherited from the parent.", - "The paragraph is aligned to the start of the line. Left-aligned for\nLTR text, right-aligned otherwise.", - "The paragraph is centered.", - "The paragraph is aligned to the end of the line. Right-aligned for\nLTR text, left-aligned otherwise.", - "The paragraph is justified." - ] - } - }, - "id": "ParagraphStyle", - "description": "Styles that apply to a whole paragraph.\n\nIf this text is contained in a shape with a parent placeholder, then these paragraph styles may be\ninherited from the parent. Which paragraph styles are inherited depend on the\nnesting level of lists:\n\n* A paragraph not in a list will inherit its paragraph style from the\n paragraph at the 0 nesting level of the list inside the parent placeholder.\n* A paragraph in a list will inherit its paragraph style from the paragraph\n at its corresponding nesting level of the list inside the parent\n placeholder.\n\nInherited paragraph styles are represented as unset fields in this message.", - "type": "object" - }, - "ReplaceAllShapesWithSheetsChartResponse": { - "id": "ReplaceAllShapesWithSheetsChartResponse", - "description": "The result of replacing shapes with a Google Sheets chart.", - "type": "object", - "properties": { - "occurrencesChanged": { - "format": "int32", - "description": "The number of shapes replaced with charts.", - "type": "integer" - } - } - }, - "TableCellProperties": { - "description": "The properties of the TableCell.", - "type": "object", - "properties": { - "tableCellBackgroundFill": { - "$ref": "TableCellBackgroundFill", - "description": "The background fill of the table cell. The default fill matches the fill\nfor newly created table cells in the Slides editor." - } - }, - "id": "TableCellProperties" - }, - "Outline": { - "description": "The outline of a PageElement.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.", - "type": "object", - "properties": { - "outlineFill": { - "$ref": "OutlineFill", - "description": "The fill of the outline." - }, - "weight": { - "$ref": "Dimension", - "description": "The thickness of the outline." - }, - "dashStyle": { - "enumDescriptions": [ - "Unspecified dash style.", - "Solid line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'solid'.\nThis is the default dash style.", - "Dotted line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dot'.", - "Dashed line. Corresponds to ECMA-376 ST_PresetLineDashVal value 'dash'.", - "Alternating dashes and dots. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'dashDot'.", - "Line with large dashes. Corresponds to ECMA-376 ST_PresetLineDashVal\nvalue 'lgDash'.", - "Alternating large dashes and dots. Corresponds to ECMA-376\nST_PresetLineDashVal value 'lgDashDot'." - ], - "enum": [ - "DASH_STYLE_UNSPECIFIED", - "SOLID", - "DOT", - "DASH", - "DASH_DOT", - "LONG_DASH", - "LONG_DASH_DOT" - ], - "description": "The dash style of the outline.", - "type": "string" - }, - "propertyState": { - "enum": [ - "RENDERED", - "NOT_RENDERED", - "INHERIT" - ], - "description": "The outline property state.\n\nUpdating the the outline on a page element will implicitly update this\nfield to`RENDERED`, unless another value is specified in the same request.\nTo have no outline on a page element, set this field to `NOT_RENDERED`. In\nthis case, any other outline fields set in the same request will be\nignored.", - "type": "string", - "enumDescriptions": [ - "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", - "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", - "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." - ] - } - }, - "id": "Outline" - }, - "RefreshSheetsChartRequest": { - "description": "Refreshes an embedded Google Sheets chart by replacing it with the latest\nversion of the chart from Google Sheets.\n\nNOTE: Refreshing charts requires at least one of the spreadsheets.readonly,\nspreadsheets, drive.readonly, or drive OAuth scopes.", - "type": "object", - "properties": { - "objectId": { - "description": "The object ID of the chart to refresh.", - "type": "string" - } - }, - "id": "RefreshSheetsChartRequest" - }, - "NotesProperties": { - "id": "NotesProperties", - "description": "The properties of Page that are only\nrelevant for pages with page_type NOTES.", - "type": "object", - "properties": { - "speakerNotesObjectId": { - "description": "The object ID of the shape on this notes page that contains the speaker\nnotes for the corresponding slide.\nThe actual shape may not always exist on the notes page. Inserting text\nusing this object ID will automatically create the shape. In this case, the\nactual shape may have different object ID. The `GetPresentation` or\n`GetPage` action will always return the latest object ID.", - "type": "string" - } - } - }, - "ShapeProperties": { - "description": "The properties of a Shape.\n\nIf the shape is a placeholder shape as determined by the\nplaceholder field, then these\nproperties may be inherited from a parent placeholder shape.\nDetermining the rendered value of the property depends on the corresponding\nproperty_state field value.", - "type": "object", - "properties": { - "outline": { - "$ref": "Outline", - "description": "The outline of the shape. If unset, the outline is inherited from a\nparent placeholder if it exists. If the shape has no parent, then the\ndefault outline depends on the shape type, matching the defaults for\nnew shapes created in the Slides editor." - }, - "shadow": { - "description": "The shadow properties of the shape. If unset, the shadow is inherited from\na parent placeholder if it exists. If the shape has no parent, then the\ndefault shadow matches the defaults for new shapes created in the Slides\neditor. This property is read-only.", - "$ref": "Shadow" - }, - "shapeBackgroundFill": { - "$ref": "ShapeBackgroundFill", - "description": "The background fill of the shape. If unset, the background fill is\ninherited from a parent placeholder if it exists. If the shape has no\nparent, then the default background fill depends on the shape type,\nmatching the defaults for new shapes created in the Slides editor." - }, - "link": { - "$ref": "Link", - "description": "The hyperlink destination of the shape. If unset, there is no link. Links\nare not inherited from parent placeholders." - } - }, - "id": "ShapeProperties" - }, - "TableColumnProperties": { - "description": "Properties of each column in a table.", - "type": "object", - "properties": { - "columnWidth": { - "$ref": "Dimension", - "description": "Width of a column." - } - }, - "id": "TableColumnProperties" - }, - "TableRow": { - "description": "Properties and contents of each row in a table.", - "type": "object", - "properties": { - "tableCells": { - "description": "Properties and contents of each cell.\n\nCells that span multiple columns are represented only once with a\ncolumn_span greater\nthan 1. As a result, the length of this collection does not always match\nthe number of columns of the entire table.", - "items": { - "$ref": "TableCell" - }, - "type": "array" - }, - "rowHeight": { - "$ref": "Dimension", - "description": "Height of a row." - } - }, - "id": "TableRow" - }, - "UpdateTableCellPropertiesRequest": { - "description": "Update the properties of a TableCell.", - "type": "object", - "properties": { - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `tableCellProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the table cell background solid fill color, set\n`fields` to `\"tableCellBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - }, - "tableRange": { - "description": "The table range representing the subset of the table to which the updates\nare applied. If a table range is not specified, the updates will apply to\nthe entire table.", - "$ref": "TableRange" - }, - "objectId": { - "description": "The object ID of the table.", - "type": "string" - }, - "tableCellProperties": { - "description": "The table cell properties to update.", - "$ref": "TableCellProperties" - } - }, - "id": "UpdateTableCellPropertiesRequest" - }, - "CreateSlideRequest": { - "type": "object", - "properties": { - "slideLayoutReference": { - "$ref": "LayoutReference", - "description": "Layout reference of the slide to be inserted, based on the *current\nmaster*, which is one of the following:\n\n- The master of the previous slide index.\n- The master of the first slide, if the insertion_index is zero.\n- The first master in the presentation, if there are no slides.\n\nIf the LayoutReference is not found in the current master, a 400 bad\nrequest error is returned.\n\nIf you don't specify a layout reference, then the new slide will use the\npredefined layout `BLANK`." - }, - "objectId": { - "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", - "type": "string" - }, - "insertionIndex": { - "format": "int32", - "description": "The optional zero-based index indicating where to insert the slides.\n\nIf you don't specify an index, the new slide is created at the end.", - "type": "integer" - }, - "placeholderIdMappings": { - "description": "An optional list of object ID mappings from the placeholder(s) on the layout to the placeholder(s)\nthat will be created on the new slide from that specified layout. Can only\nbe used when `slide_layout_reference` is specified.", - "items": { - "$ref": "LayoutPlaceholderIdMapping" - }, - "type": "array" - } - }, - "id": "CreateSlideRequest", - "description": "Creates a new slide." - }, - "BatchUpdatePresentationRequest": { - "id": "BatchUpdatePresentationRequest", - "description": "Request message for PresentationsService.BatchUpdatePresentation.", - "type": "object", - "properties": { - "requests": { - "description": "A list of updates to apply to the presentation.", - "items": { - "$ref": "Request" - }, - "type": "array" - }, - "writeControl": { - "$ref": "WriteControl", - "description": "Provides control over how write requests are executed." - } - } - }, - "TextContent": { - "id": "TextContent", - "description": "The general text content. The text must reside in a compatible shape (e.g.\ntext box or rectangle) or a table cell in a page.", - "type": "object", - "properties": { - "lists": { - "type": "object", - "additionalProperties": { - "$ref": "List" - }, - "description": "The bulleted lists contained in this text, keyed by list ID." - }, - "textElements": { - "description": "The text contents broken down into its component parts, including styling\ninformation. This property is read-only.", - "items": { - "$ref": "TextElement" - }, - "type": "array" - } - } - }, - "CreateSheetsChartResponse": { - "id": "CreateSheetsChartResponse", - "description": "The result of creating an embedded Google Sheets chart.", - "type": "object", - "properties": { - "objectId": { - "description": "The object ID of the created chart.", - "type": "string" - } - } - }, - "WriteControl": { - "properties": { - "requiredRevisionId": { - "description": "The revision ID of the presentation required for the write request. If\nspecified and the `required_revision_id` doesn't exactly match the\npresentation's current `revision_id`, the request will not be processed and\nwill return a 400 bad request error.", - "type": "string" - } - }, - "id": "WriteControl", - "description": "Provides control over how write requests are executed.", - "type": "object" - }, - "DeleteParagraphBulletsRequest": { - "type": "object", - "properties": { - "textRange": { - "$ref": "Range", - "description": "The range of text to delete bullets from, based on TextElement indexes." - }, - "objectId": { - "description": "The object ID of the shape or table containing the text to delete bullets\nfrom.", - "type": "string" - }, - "cellLocation": { - "$ref": "TableCellLocation", - "description": "The optional table cell location if the text to be modified is in a table\ncell. If present, the object_id must refer to a table." - } - }, - "id": "DeleteParagraphBulletsRequest", - "description": "Deletes bullets from all of the paragraphs that overlap with the given text\nindex range.\n\nThe nesting level of each paragraph will be visually preserved by adding\nindent to the start of the corresponding paragraph." - }, - "ParagraphMarker": { - "description": "A TextElement kind that represents the beginning of a new paragraph.", - "type": "object", - "properties": { - "style": { - "$ref": "ParagraphStyle", - "description": "The paragraph's style" - }, - "bullet": { - "$ref": "Bullet", - "description": "The bullet for this paragraph. If not present, the paragraph does not\nbelong to a list." - } - }, - "id": "ParagraphMarker" - }, - "InsertTableColumnsRequest": { - "type": "object", - "properties": { - "insertRight": { - "description": "Whether to insert new columns to the right of the reference cell location.\n\n- `True`: insert to the right.\n- `False`: insert to the left.", - "type": "boolean" - }, - "tableObjectId": { - "description": "The table to insert columns into.", - "type": "string" - }, - "number": { - "type": "integer", - "format": "int32", - "description": "The number of columns to be inserted. Maximum 20 per request." - }, - "cellLocation": { - "description": "The reference table cell location from which columns will be inserted.\n\nA new column will be inserted to the left (or right) of the column where\nthe reference cell is. If the reference cell is a merged cell, a new\ncolumn will be inserted to the left (or right) of the merged cell.", - "$ref": "TableCellLocation" - } - }, - "id": "InsertTableColumnsRequest", - "description": "Inserts columns into a table.\n\nOther columns in the table will be resized to fit the new column." - }, - "Thumbnail": { - "description": "The thumbnail of a page.", - "type": "object", - "properties": { - "height": { - "format": "int32", - "description": "The positive height in pixels of the thumbnail image.", - "type": "integer" - }, - "contentUrl": { - "description": "The content URL of the thumbnail image.\n\nThe URL to the image has a default lifetime of 30 minutes.\nThis URL is tagged with the account of the requester. Anyone with the URL\neffectively accesses the image as the original requester. Access to the\nimage may be lost if the presentation's sharing settings change.\nThe mime type of the thumbnail image is the same as specified in the\n`GetPageThumbnailRequest`.", - "type": "string" - }, - "width": { - "type": "integer", - "format": "int32", - "description": "The positive width in pixels of the thumbnail image." - } - }, - "id": "Thumbnail" - }, - "LayoutPlaceholderIdMapping": { - "description": "The user-specified ID mapping for a placeholder that will be created on a\nslide from a specified layout.", - "type": "object", - "properties": { - "layoutPlaceholder": { - "$ref": "Placeholder", - "description": "The placeholder on a layout that will be applied to a slide. Only type and index are needed. For example, a\npredefined `TITLE_AND_BODY` layout may usually have a TITLE placeholder\nwith index 0 and a BODY placeholder with index 0." - }, - "layoutPlaceholderObjectId": { - "description": "The object ID of the placeholder on a layout that will be applied\nto a slide.", - "type": "string" - }, - "objectId": { - "description": "A user-supplied object ID for the placeholder identified above that to be\ncreated onto a slide.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", - "type": "string" - } - }, - "id": "LayoutPlaceholderIdMapping" - }, - "UpdateShapePropertiesRequest": { - "id": "UpdateShapePropertiesRequest", - "description": "Update the properties of a Shape.", - "type": "object", - "properties": { - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `shapeProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the shape background solid fill color, set `fields`\nto `\"shapeBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - }, - "objectId": { - "description": "The object ID of the shape the updates are applied to.", - "type": "string" - }, - "shapeProperties": { - "description": "The shape properties to update.", - "$ref": "ShapeProperties" - } - } - }, - "WordArt": { - "description": "A PageElement kind representing\nword art.", - "type": "object", - "properties": { - "renderedText": { - "description": "The text rendered as word art.", - "type": "string" - } - }, - "id": "WordArt" - }, - "Recolor": { - "description": "A recolor effect applied on an image.", - "type": "object", - "properties": { - "recolorStops": { - "description": "The recolor effect is represented by a gradient, which is a list of color\nstops.\n\nThe colors in the gradient will replace the corresponding colors at\nthe same position in the color palette and apply to the image. This\nproperty is read-only.", - "items": { - "$ref": "ColorStop" - }, - "type": "array" - }, - "name": { - "enum": [ - "NONE", - "LIGHT1", - "LIGHT2", - "LIGHT3", - "LIGHT4", - "LIGHT5", - "LIGHT6", - "LIGHT7", - "LIGHT8", - "LIGHT9", - "LIGHT10", - "DARK1", - "DARK2", - "DARK3", - "DARK4", - "DARK5", - "DARK6", - "DARK7", - "DARK8", - "DARK9", - "DARK10", - "GRAYSCALE", - "NEGATIVE", - "SEPIA", - "CUSTOM" - ], - "description": "The name of the recolor effect.\n\nThe name is determined from the `recolor_stops` by matching the gradient\nagainst the colors in the page's current color scheme. This property is\nread-only.", - "type": "string", - "enumDescriptions": [ - "No recolor effect. The default value.", - "A recolor effect that lightens the image using the page's first available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's second\navailable color from its color scheme.", - "A recolor effect that lightens the image using the page's third available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's forth available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's fifth available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's sixth available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's seventh\navailable color from its color scheme.e.", - "A recolor effect that lightens the image using the page's eighth\navailable color from its color scheme.", - "A recolor effect that lightens the image using the page's ninth available\ncolor from its color scheme.", - "A recolor effect that lightens the image using the page's tenth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's first available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's second available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's third available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's fourth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's fifth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's sixth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's seventh\navailable color from its color scheme.", - "A recolor effect that darkens the image using the page's eighth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's ninth available\ncolor from its color scheme.", - "A recolor effect that darkens the image using the page's tenth available\ncolor from its color scheme.", - "A recolor effect that recolors the image to grayscale.", - "A recolor effect that recolors the image to negative grayscale.", - "A recolor effect that recolors the image using the sepia color.", - "Custom recolor effect. Refer to `recolor_stops` for the concrete\ngradient." - ] - } - }, - "id": "Recolor" - }, - "Link": { - "properties": { - "pageObjectId": { - "description": "If set, indicates this is a link to the specific page in this\npresentation with this ID. A page with this ID may not exist.", - "type": "string" - }, - "slideIndex": { - "format": "int32", - "description": "If set, indicates this is a link to the slide at this zero-based index\nin the presentation. There may not be a slide at this index.", - "type": "integer" - }, - "relativeLink": { - "type": "string", - "enumDescriptions": [ - "An unspecified relative slide link.", - "A link to the next slide.", - "A link to the previous slide.", - "A link to the first slide in the presentation.", - "A link to the last slide in the presentation." - ], - "enum": [ - "RELATIVE_SLIDE_LINK_UNSPECIFIED", - "NEXT_SLIDE", - "PREVIOUS_SLIDE", - "FIRST_SLIDE", - "LAST_SLIDE" - ], - "description": "If set, indicates this is a link to a slide in this presentation,\naddressed by its position." - }, - "url": { - "type": "string", - "description": "If set, indicates this is a link to the external web page at this URL." - } - }, - "id": "Link", - "description": "A hypertext link.", - "type": "object" - }, - "RgbColor": { - "description": "An RGB color.", - "type": "object", - "properties": { - "blue": { - "format": "float", - "description": "The blue component of the color, from 0.0 to 1.0.", - "type": "number" - }, - "green": { - "format": "float", - "description": "The green component of the color, from 0.0 to 1.0.", - "type": "number" - }, - "red": { - "format": "float", - "description": "The red component of the color, from 0.0 to 1.0.", - "type": "number" - } - }, - "id": "RgbColor" - }, - "CreateShapeResponse": { - "type": "object", - "properties": { - "objectId": { - "description": "The object ID of the created shape.", - "type": "string" - } - }, - "id": "CreateShapeResponse", - "description": "The result of creating a shape." - }, - "CreateLineRequest": { - "id": "CreateLineRequest", - "description": "Creates a line.", - "type": "object", - "properties": { - "objectId": { - "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", - "type": "string" - }, - "elementProperties": { - "$ref": "PageElementProperties", - "description": "The element properties for the line." - }, - "lineCategory": { - "enumDescriptions": [ - "Straight connectors, including straight connector 1. The is the default\ncategory when one is not specified.", - "Bent connectors, including bent connector 2 to 5.", - "Curved connectors, including curved connector 2 to 5." - ], - "enum": [ - "STRAIGHT", - "BENT", - "CURVED" - ], - "description": "The category of line to be created.", - "type": "string" - } - } - }, - "CreateSlideResponse": { - "description": "The result of creating a slide.", - "type": "object", - "properties": { - "objectId": { - "type": "string", - "description": "The object ID of the created slide." - } - }, - "id": "CreateSlideResponse" - }, - "CreateShapeRequest": { - "type": "object", - "properties": { - "shapeType": { - "enumDescriptions": [ - "The shape type that is not predefined.", - "Text box shape.", - "Rectangle shape. Corresponds to ECMA-376 ST_ShapeType 'rect'.", - "Round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'roundRect'", - "Ellipse shape. Corresponds to ECMA-376 ST_ShapeType 'ellipse'", - "Curved arc shape. Corresponds to ECMA-376 ST_ShapeType 'arc'", - "Bent arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentArrow'", - "Bent up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'bentUpArrow'", - "Bevel shape. Corresponds to ECMA-376 ST_ShapeType 'bevel'", - "Block arc shape. Corresponds to ECMA-376 ST_ShapeType 'blockArc'", - "Brace pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracePair'", - "Bracket pair shape. Corresponds to ECMA-376 ST_ShapeType 'bracketPair'", - "Can shape. Corresponds to ECMA-376 ST_ShapeType 'can'", - "Chevron shape. Corresponds to ECMA-376 ST_ShapeType 'chevron'", - "Chord shape. Corresponds to ECMA-376 ST_ShapeType 'chord'", - "Cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloud'", - "Corner shape. Corresponds to ECMA-376 ST_ShapeType 'corner'", - "Cube shape. Corresponds to ECMA-376 ST_ShapeType 'cube'", - "Curved down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedDownArrow'", - "Curved left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedLeftArrow'", - "Curved right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedRightArrow'", - "Curved up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'curvedUpArrow'", - "Decagon shape. Corresponds to ECMA-376 ST_ShapeType 'decagon'", - "Diagonal stripe shape. Corresponds to ECMA-376 ST_ShapeType 'diagStripe'", - "Diamond shape. Corresponds to ECMA-376 ST_ShapeType 'diamond'", - "Dodecagon shape. Corresponds to ECMA-376 ST_ShapeType 'dodecagon'", - "Donut shape. Corresponds to ECMA-376 ST_ShapeType 'donut'", - "Double wave shape. Corresponds to ECMA-376 ST_ShapeType 'doubleWave'", - "Down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'downArrow'", - "Callout down arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'downArrowCallout'", - "Folded corner shape. Corresponds to ECMA-376 ST_ShapeType 'foldedCorner'", - "Frame shape. Corresponds to ECMA-376 ST_ShapeType 'frame'", - "Half frame shape. Corresponds to ECMA-376 ST_ShapeType 'halfFrame'", - "Heart shape. Corresponds to ECMA-376 ST_ShapeType 'heart'", - "Heptagon shape. Corresponds to ECMA-376 ST_ShapeType 'heptagon'", - "Hexagon shape. Corresponds to ECMA-376 ST_ShapeType 'hexagon'", - "Home plate shape. Corresponds to ECMA-376 ST_ShapeType 'homePlate'", - "Horizontal scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'horizontalScroll'", - "Irregular seal 1 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal1'", - "Irregular seal 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'irregularSeal2'", - "Left arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftArrow'", - "Callout left arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftArrowCallout'", - "Left brace shape. Corresponds to ECMA-376 ST_ShapeType 'leftBrace'", - "Left bracket shape. Corresponds to ECMA-376 ST_ShapeType 'leftBracket'", - "Left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrow'", - "Callout left right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightArrowCallout'", - "Left right up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'leftRightUpArrow'", - "Left up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'leftUpArrow'", - "Lightning bolt shape. Corresponds to ECMA-376 ST_ShapeType\n'lightningBolt'", - "Divide math shape. Corresponds to ECMA-376 ST_ShapeType 'mathDivide'", - "Equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathEqual'", - "Minus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMinus'", - "Multiply math shape. Corresponds to ECMA-376 ST_ShapeType 'mathMultiply'", - "Not equal math shape. Corresponds to ECMA-376 ST_ShapeType 'mathNotEqual'", - "Plus math shape. Corresponds to ECMA-376 ST_ShapeType 'mathPlus'", - "Moon shape. Corresponds to ECMA-376 ST_ShapeType 'moon'", - "No smoking shape. Corresponds to ECMA-376 ST_ShapeType 'noSmoking'", - "Notched right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'notchedRightArrow'", - "Octagon shape. Corresponds to ECMA-376 ST_ShapeType 'octagon'", - "Parallelogram shape. Corresponds to ECMA-376 ST_ShapeType 'parallelogram'", - "Pentagon shape. Corresponds to ECMA-376 ST_ShapeType 'pentagon'", - "Pie shape. Corresponds to ECMA-376 ST_ShapeType 'pie'", - "Plaque shape. Corresponds to ECMA-376 ST_ShapeType 'plaque'", - "Plus shape. Corresponds to ECMA-376 ST_ShapeType 'plus'", - "Quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType 'quadArrow'", - "Callout quad-arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'quadArrowCallout'", - "Ribbon shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon'", - "Ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType 'ribbon2'", - "Right arrow shape. Corresponds to ECMA-376 ST_ShapeType 'rightArrow'", - "Callout right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'rightArrowCallout'", - "Right brace shape. Corresponds to ECMA-376 ST_ShapeType 'rightBrace'", - "Right bracket shape. Corresponds to ECMA-376 ST_ShapeType 'rightBracket'", - "One round corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'round1Rect'", - "Two diagonal round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2DiagRect'", - "Two same-side round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'round2SameRect'", - "Right triangle shape. Corresponds to ECMA-376 ST_ShapeType 'rtTriangle'", - "Smiley face shape. Corresponds to ECMA-376 ST_ShapeType 'smileyFace'", - "One snip corner rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'snip1Rect'", - "Two diagonal snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2DiagRect'", - "Two same-side snip corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snip2SameRect'", - "One snip one round corner rectangle shape. Corresponds to ECMA-376\nST_ShapeType 'snipRoundRect'", - "Ten pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star10'", - "Twelve pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star12'", - "Sixteen pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star16'", - "Twenty four pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star24'", - "Thirty two pointed star shape. Corresponds to ECMA-376 ST_ShapeType\n'star32'", - "Four pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star4'", - "Five pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star5'", - "Six pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star6'", - "Seven pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star7'", - "Eight pointed star shape. Corresponds to ECMA-376 ST_ShapeType 'star8'", - "Striped right arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'stripedRightArrow'", - "Sun shape. Corresponds to ECMA-376 ST_ShapeType 'sun'", - "Trapezoid shape. Corresponds to ECMA-376 ST_ShapeType 'trapezoid'", - "Triangle shape. Corresponds to ECMA-376 ST_ShapeType 'triangle'", - "Up arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upArrow'", - "Callout up arrow shape. Corresponds to ECMA-376 ST_ShapeType\n'upArrowCallout'", - "Up down arrow shape. Corresponds to ECMA-376 ST_ShapeType 'upDownArrow'", - "U-turn arrow shape. Corresponds to ECMA-376 ST_ShapeType 'uturnArrow'", - "Vertical scroll shape. Corresponds to ECMA-376 ST_ShapeType\n'verticalScroll'", - "Wave shape. Corresponds to ECMA-376 ST_ShapeType 'wave'", - "Callout wedge ellipse shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeEllipseCallout'", - "Callout wedge rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRectCallout'", - "Callout wedge round rectangle shape. Corresponds to ECMA-376 ST_ShapeType\n'wedgeRoundRectCallout'", - "Alternate process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartAlternateProcess'", - "Collate flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartCollate'", - "Connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartConnector'", - "Decision flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDecision'", - "Delay flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartDelay'", - "Display flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDisplay'", - "Document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartDocument'", - "Extract flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartExtract'", - "Input output flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInputOutput'", - "Internal storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartInternalStorage'", - "Magnetic disk flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDisk'", - "Magnetic drum flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticDrum'", - "Magnetic tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMagneticTape'", - "Manual input flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualInput'", - "Manual operation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartManualOperation'", - "Merge flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartMerge'", - "Multi-document flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartMultidocument'", - "Offline storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOfflineStorage'", - "Off-page connector flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOffpageConnector'", - "Online storage flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartOnlineStorage'", - "Or flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartOr'", - "Predefined process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPredefinedProcess'", - "Preparation flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPreparation'", - "Process flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartProcess'", - "Punched card flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedCard'", - "Punched tape flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartPunchedTape'", - "Sort flow shape. Corresponds to ECMA-376 ST_ShapeType 'flowChartSort'", - "Summing junction flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartSummingJunction'", - "Terminator flow shape. Corresponds to ECMA-376 ST_ShapeType\n'flowChartTerminator'", - "East arrow shape.", - "Northeast arrow shape.", - "North arrow shape.", - "Speech shape.", - "Star burst shape.", - "Teardrop shape. Corresponds to ECMA-376 ST_ShapeType 'teardrop'", - "Ellipse ribbon shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon'", - "Ellipse ribbon 2 shape. Corresponds to ECMA-376 ST_ShapeType\n'ellipseRibbon2'", - "Callout cloud shape. Corresponds to ECMA-376 ST_ShapeType 'cloudCallout'", - "Custom shape." - ], - "enum": [ - "TYPE_UNSPECIFIED", - "TEXT_BOX", - "RECTANGLE", - "ROUND_RECTANGLE", - "ELLIPSE", - "ARC", - "BENT_ARROW", - "BENT_UP_ARROW", - "BEVEL", - "BLOCK_ARC", - "BRACE_PAIR", - "BRACKET_PAIR", - "CAN", - "CHEVRON", - "CHORD", - "CLOUD", - "CORNER", - "CUBE", - "CURVED_DOWN_ARROW", - "CURVED_LEFT_ARROW", - "CURVED_RIGHT_ARROW", - "CURVED_UP_ARROW", - "DECAGON", - "DIAGONAL_STRIPE", - "DIAMOND", - "DODECAGON", - "DONUT", - "DOUBLE_WAVE", - "DOWN_ARROW", - "DOWN_ARROW_CALLOUT", - "FOLDED_CORNER", - "FRAME", - "HALF_FRAME", - "HEART", - "HEPTAGON", - "HEXAGON", - "HOME_PLATE", - "HORIZONTAL_SCROLL", - "IRREGULAR_SEAL_1", - "IRREGULAR_SEAL_2", - "LEFT_ARROW", - "LEFT_ARROW_CALLOUT", - "LEFT_BRACE", - "LEFT_BRACKET", - "LEFT_RIGHT_ARROW", - "LEFT_RIGHT_ARROW_CALLOUT", - "LEFT_RIGHT_UP_ARROW", - "LEFT_UP_ARROW", - "LIGHTNING_BOLT", - "MATH_DIVIDE", - "MATH_EQUAL", - "MATH_MINUS", - "MATH_MULTIPLY", - "MATH_NOT_EQUAL", - "MATH_PLUS", - "MOON", - "NO_SMOKING", - "NOTCHED_RIGHT_ARROW", - "OCTAGON", - "PARALLELOGRAM", - "PENTAGON", - "PIE", - "PLAQUE", - "PLUS", - "QUAD_ARROW", - "QUAD_ARROW_CALLOUT", - "RIBBON", - "RIBBON_2", - "RIGHT_ARROW", - "RIGHT_ARROW_CALLOUT", - "RIGHT_BRACE", - "RIGHT_BRACKET", - "ROUND_1_RECTANGLE", - "ROUND_2_DIAGONAL_RECTANGLE", - "ROUND_2_SAME_RECTANGLE", - "RIGHT_TRIANGLE", - "SMILEY_FACE", - "SNIP_1_RECTANGLE", - "SNIP_2_DIAGONAL_RECTANGLE", - "SNIP_2_SAME_RECTANGLE", - "SNIP_ROUND_RECTANGLE", - "STAR_10", - "STAR_12", - "STAR_16", - "STAR_24", - "STAR_32", - "STAR_4", - "STAR_5", - "STAR_6", - "STAR_7", - "STAR_8", - "STRIPED_RIGHT_ARROW", - "SUN", - "TRAPEZOID", - "TRIANGLE", - "UP_ARROW", - "UP_ARROW_CALLOUT", - "UP_DOWN_ARROW", - "UTURN_ARROW", - "VERTICAL_SCROLL", - "WAVE", - "WEDGE_ELLIPSE_CALLOUT", - "WEDGE_RECTANGLE_CALLOUT", - "WEDGE_ROUND_RECTANGLE_CALLOUT", - "FLOW_CHART_ALTERNATE_PROCESS", - "FLOW_CHART_COLLATE", - "FLOW_CHART_CONNECTOR", - "FLOW_CHART_DECISION", - "FLOW_CHART_DELAY", - "FLOW_CHART_DISPLAY", - "FLOW_CHART_DOCUMENT", - "FLOW_CHART_EXTRACT", - "FLOW_CHART_INPUT_OUTPUT", - "FLOW_CHART_INTERNAL_STORAGE", - "FLOW_CHART_MAGNETIC_DISK", - "FLOW_CHART_MAGNETIC_DRUM", - "FLOW_CHART_MAGNETIC_TAPE", - "FLOW_CHART_MANUAL_INPUT", - "FLOW_CHART_MANUAL_OPERATION", - "FLOW_CHART_MERGE", - "FLOW_CHART_MULTIDOCUMENT", - "FLOW_CHART_OFFLINE_STORAGE", - "FLOW_CHART_OFFPAGE_CONNECTOR", - "FLOW_CHART_ONLINE_STORAGE", - "FLOW_CHART_OR", - "FLOW_CHART_PREDEFINED_PROCESS", - "FLOW_CHART_PREPARATION", - "FLOW_CHART_PROCESS", - "FLOW_CHART_PUNCHED_CARD", - "FLOW_CHART_PUNCHED_TAPE", - "FLOW_CHART_SORT", - "FLOW_CHART_SUMMING_JUNCTION", - "FLOW_CHART_TERMINATOR", - "ARROW_EAST", - "ARROW_NORTH_EAST", - "ARROW_NORTH", - "SPEECH", - "STARBURST", - "TEARDROP", - "ELLIPSE_RIBBON", - "ELLIPSE_RIBBON_2", - "CLOUD_CALLOUT", - "CUSTOM" - ], - "description": "The shape type.", - "type": "string" - }, - "objectId": { - "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\nIf empty, a unique identifier will be generated.", - "type": "string" - }, - "elementProperties": { - "$ref": "PageElementProperties", - "description": "The element properties for the shape." - } - }, - "id": "CreateShapeRequest", - "description": "Creates a new shape." - }, - "Video": { - "id": "Video", - "description": "A PageElement kind representing a\nvideo.", - "type": "object", - "properties": { - "id": { - "description": "The video source's unique identifier for this video.", - "type": "string" - }, - "url": { - "description": "An URL to a video. The URL is valid as long as the source video\nexists and sharing settings do not change.", - "type": "string" - }, - "videoProperties": { - "$ref": "VideoProperties", - "description": "The properties of the video." - }, - "source": { - "enumDescriptions": [ - "The video source is unspecified.", - "The video source is YouTube." - ], - "enum": [ - "SOURCE_UNSPECIFIED", - "YOUTUBE" - ], - "description": "The video source.", - "type": "string" - } - } - }, - "PageProperties": { - "id": "PageProperties", - "description": "The properties of the Page.\n\nThe page will inherit properties from the parent page. Depending on the page\ntype the hierarchy is defined in either\nSlideProperties or\nLayoutProperties.", - "type": "object", - "properties": { - "colorScheme": { - "description": "The color scheme of the page. If unset, the color scheme is inherited from\na parent page. If the page has no parent, the color scheme uses a default\nSlides color scheme. This field is read-only.", - "$ref": "ColorScheme" - }, - "pageBackgroundFill": { - "$ref": "PageBackgroundFill", - "description": "The background fill of the page. If unset, the background fill is inherited\nfrom a parent page if it exists. If the page has no parent, then the\nbackground fill defaults to the corresponding fill in the Slides editor." - } - } - }, - "TableCell": { - "id": "TableCell", - "description": "Properties and contents of each table cell.", - "type": "object", - "properties": { - "tableCellProperties": { - "description": "The properties of the table cell.", - "$ref": "TableCellProperties" - }, - "rowSpan": { - "format": "int32", - "description": "Row span of the cell.", - "type": "integer" - }, - "location": { - "$ref": "TableCellLocation", - "description": "The location of the cell within the table." - }, - "columnSpan": { - "format": "int32", - "description": "Column span of the cell.", - "type": "integer" - }, - "text": { - "$ref": "TextContent", - "description": "The text content of the cell." - } - } - }, - "NestingLevel": { - "description": "Contains properties describing the look and feel of a list bullet at a given\nlevel of nesting.", - "type": "object", - "properties": { - "bulletStyle": { - "description": "The style of a bullet at this level of nesting.", - "$ref": "TextStyle" - } - }, - "id": "NestingLevel" - }, - "UpdateLinePropertiesRequest": { - "description": "Updates the properties of a Line.", - "type": "object", - "properties": { - "lineProperties": { - "description": "The line properties to update.", - "$ref": "LineProperties" - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `lineProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the line solid fill color, set `fields` to\n`\"lineFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - }, - "objectId": { - "description": "The object ID of the line the update is applied to.", - "type": "string" - } - }, - "id": "UpdateLinePropertiesRequest" - }, - "TableCellBackgroundFill": { - "description": "The table cell background fill.", - "type": "object", - "properties": { - "propertyState": { - "enumDescriptions": [ - "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", - "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", - "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." - ], - "enum": [ - "RENDERED", - "NOT_RENDERED", - "INHERIT" - ], - "description": "The background fill property state.\n\nUpdating the the fill on a table cell will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no fill on a table cell, set this field to `NOT_RENDERED`. In this\ncase, any other fill fields set in the same request will be ignored.", - "type": "string" - }, - "solidFill": { - "$ref": "SolidFill", - "description": "Solid color fill." - } - }, - "id": "TableCellBackgroundFill" - }, - "UpdateSlidesPositionRequest": { - "properties": { - "slideObjectIds": { - "description": "The IDs of the slides in the presentation that should be moved.\nThe slides in this list must be in existing presentation order, without\nduplicates.", - "items": { - "type": "string" - }, - "type": "array" - }, - "insertionIndex": { - "format": "int32", - "description": "The index where the slides should be inserted, based on the slide\narrangement before the move takes place. Must be between zero and the\nnumber of slides in the presentation, inclusive.", - "type": "integer" - } - }, - "id": "UpdateSlidesPositionRequest", - "description": "Updates the position of slides in the presentation.", - "type": "object" - }, - "UpdatePagePropertiesRequest": { - "properties": { - "pageProperties": { - "$ref": "PageProperties", - "description": "The page properties to update." - }, - "objectId": { - "description": "The object ID of the page the update is applied to.", - "type": "string" - }, - "fields": { - "format": "google-fieldmask", - "description": "The fields that should be updated.\n\nAt least one field must be specified. The root `pageProperties` is\nimplied and should not be specified. A single `\"*\"` can be used as\nshort-hand for listing every field.\n\nFor example to update the page background solid fill color, set `fields`\nto `\"pageBackgroundFill.solidFill.color\"`.\n\nTo reset a property to its default value, include its field name in the\nfield mask but leave the field itself unset.", - "type": "string" - } - }, - "id": "UpdatePagePropertiesRequest", - "description": "Updates the properties of a Page.", - "type": "object" - }, - "Group": { - "description": "A PageElement kind representing a\njoined collection of PageElements.", - "type": "object", - "properties": { - "children": { - "description": "The collection of elements in the group. The minimum size of a group is 2.", - "items": { - "$ref": "PageElement" - }, - "type": "array" - } - }, - "id": "Group" - }, - "Placeholder": { - "description": "The placeholder information that uniquely identifies a placeholder shape.", - "type": "object", - "properties": { - "parentObjectId": { - "type": "string", - "description": "The object ID of this shape's parent placeholder.\nIf unset, the parent placeholder shape does not exist, so the shape does\nnot inherit properties from any other shape." - }, - "index": { - "format": "int32", - "description": "The index of the placeholder. If the same placeholder types are present in\nthe same page, they would have different index values.", - "type": "integer" - }, - "type": { - "type": "string", - "enumDescriptions": [ - "Default value, signifies it is not a placeholder.", - "Body text.", - "Chart or graph.", - "Clip art image.", - "Title centered.", - "Diagram.", - "Date and time.", - "Footer text.", - "Header text.", - "Multimedia.", - "Any content type.", - "Picture.", - "Number of a slide.", - "Subtitle.", - "Table.", - "Slide title.", - "Slide image." - ], - "enum": [ - "NONE", - "BODY", - "CHART", - "CLIP_ART", - "CENTERED_TITLE", - "DIAGRAM", - "DATE_AND_TIME", - "FOOTER", - "HEADER", - "MEDIA", - "OBJECT", - "PICTURE", - "SLIDE_NUMBER", - "SUBTITLE", - "TABLE", - "TITLE", - "SLIDE_IMAGE" - ], - "description": "The type of the placeholder." - } - }, - "id": "Placeholder" - }, - "DuplicateObjectRequest": { - "description": "Duplicates a slide or page element.\n\nWhen duplicating a slide, the duplicate slide will be created immediately\nfollowing the specified slide. When duplicating a page element, the duplicate\nwill be placed on the same page at the same position as the original.", - "type": "object", - "properties": { - "objectIds": { - "additionalProperties": { - "type": "string" - }, - "description": "The object being duplicated may contain other objects, for example when\nduplicating a slide or a group page element. This map defines how the IDs\nof duplicated objects are generated: the keys are the IDs of the original\nobjects and its values are the IDs that will be assigned to the\ncorresponding duplicate object. The ID of the source object's duplicate\nmay be specified in this map as well, using the same value of the\n`object_id` field as a key and the newly desired ID as the value.\n\nAll keys must correspond to existing IDs in the presentation. All values\nmust be unique in the presentation and must start with an alphanumeric\ncharacter or an underscore (matches regex `[a-zA-Z0-9_]`); remaining\ncharacters may include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`). The length of the new ID must not be less than 5 or\ngreater than 50.\n\nIf any IDs of source objects are omitted from the map, a new random ID will\nbe assigned. If the map is empty or unset, all duplicate objects will\nreceive a new random ID.", - "type": "object" - }, - "objectId": { - "description": "The ID of the object to duplicate.", - "type": "string" - } - }, - "id": "DuplicateObjectRequest" - }, - "ReplaceAllTextRequest": { - "properties": { - "containsText": { - "$ref": "SubstringMatchCriteria", - "description": "Finds text in a shape matching this substring." - }, - "pageObjectIds": { - "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes master,\nor if a page with that object ID doesn't exist in the presentation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "replaceText": { - "description": "The text that will replace the matched text.", - "type": "string" - } - }, - "id": "ReplaceAllTextRequest", - "description": "Replaces all instances of text matching a criteria with replace text.", - "type": "object" - }, - "Page": { - "type": "object", - "properties": { - "slideProperties": { - "$ref": "SlideProperties", - "description": "Slide specific properties. Only set if page_type = SLIDE." - }, - "pageProperties": { - "description": "The properties of the page.", - "$ref": "PageProperties" - }, - "masterProperties": { - "$ref": "MasterProperties", - "description": "Master specific properties. Only set if page_type = MASTER." - }, - "objectId": { - "description": "The object ID for this page. Object IDs used by\nPage and\nPageElement share the same namespace.", - "type": "string" - }, - "revisionId": { - "description": "The revision ID of the presentation containing this page. Can be used in\nupdate requests to assert that the presentation revision hasn't changed\nsince the last read operation. Only populated if the user has edit access\nto the presentation.\n\nThe format of the revision ID may change over time, so it should be treated\nopaquely. A returned revision ID is only guaranteed to be valid for 24\nhours after it has been returned and cannot be shared across users. If the\nrevision ID is unchanged between calls, then the presentation has not\nchanged. Conversely, a changed ID (for the same presentation and user)\nusually means the presentation has been updated; however, a changed ID can\nalso be due to internal factors such as ID format changes.", - "type": "string" - }, - "layoutProperties": { - "$ref": "LayoutProperties", - "description": "Layout specific properties. Only set if page_type = LAYOUT." - }, - "notesProperties": { - "$ref": "NotesProperties", - "description": "Notes specific properties. Only set if page_type = NOTES." - }, - "pageType": { - "enumDescriptions": [ - "A slide page.", - "A master slide page.", - "A layout page.", - "A notes page.", - "A notes master page." - ], - "enum": [ - "SLIDE", - "MASTER", - "LAYOUT", - "NOTES", - "NOTES_MASTER" - ], - "description": "The type of the page.", - "type": "string" - }, - "pageElements": { - "items": { - "$ref": "PageElement" - }, - "type": "array", - "description": "The page elements rendered on the page." - } - }, - "id": "Page", - "description": "A page in a presentation." - }, - "ShapeBackgroundFill": { - "description": "The shape background fill.", - "type": "object", - "properties": { - "propertyState": { - "enumDescriptions": [ - "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", - "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", - "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." - ], - "enum": [ - "RENDERED", - "NOT_RENDERED", - "INHERIT" - ], - "description": "The background fill property state.\n\nUpdating the the fill on a shape will implicitly update this field to\n`RENDERED`, unless another value is specified in the same request. To\nhave no fill on a shape, set this field to `NOT_RENDERED`. In this case,\nany other fill fields set in the same request will be ignored.", - "type": "string" - }, - "solidFill": { - "$ref": "SolidFill", - "description": "Solid color fill." - } - }, - "id": "ShapeBackgroundFill" - }, - "CropProperties": { - "properties": { - "bottomOffset": { - "type": "number", - "format": "float", - "description": "The offset specifies the bottom edge of the crop rectangle that is located\nabove the original bounding rectangle bottom edge, relative to the object's\noriginal height." - }, - "angle": { - "format": "float", - "description": "The rotation angle of the crop window around its center, in radians.\nRotation angle is applied after the offset.", - "type": "number" - }, - "topOffset": { - "format": "float", - "description": "The offset specifies the top edge of the crop rectangle that is located\nbelow the original bounding rectangle top edge, relative to the object's\noriginal height.", - "type": "number" - }, - "leftOffset": { - "format": "float", - "description": "The offset specifies the left edge of the crop rectangle that is located to\nthe right of the original bounding rectangle left edge, relative to the\nobject's original width.", - "type": "number" - }, - "rightOffset": { - "format": "float", - "description": "The offset specifies the right edge of the crop rectangle that is located\nto the left of the original bounding rectangle right edge, relative to the\nobject's original width.", - "type": "number" - } - }, - "id": "CropProperties", - "description": "The crop properties of an object enclosed in a container. For example, an\nImage.\n\nThe crop properties is represented by the offsets of four edges which define\na crop rectangle. The offsets are measured in percentage from the\ncorresponding edges of the object's original bounding rectangle towards\ninside, relative to the object's original dimensions.\n\n- If the offset is in the interval (0, 1), the corresponding edge of crop\nrectangle is positioned inside of the object's original bounding rectangle.\n- If the offset is negative or greater than 1, the corresponding edge of crop\nrectangle is positioned outside of the object's original bounding rectangle.\n- If the left edge of the crop rectangle is on the right side of its right\nedge, the object will be flipped horizontally.\n- If the top edge of the crop rectangle is below its bottom edge, the object\nwill be flipped vertically.\n- If all offsets and rotation angle is 0, the object is not cropped.\n\nAfter cropping, the content in the crop rectangle will be stretched to fit\nits container.", - "type": "object" - }, - "ReplaceAllShapesWithSheetsChartRequest": { - "type": "object", - "properties": { - "linkingMode": { - "description": "The mode with which the chart is linked to the source spreadsheet. When\nnot specified, the chart will be an image that is not linked.", - "type": "string", - "enumDescriptions": [ - "The chart is not associated with the source spreadsheet and cannot be\nupdated. A chart that is not linked will be inserted as an image.", - "Linking the chart allows it to be updated, and other collaborators will\nsee a link to the spreadsheet." - ], - "enum": [ - "NOT_LINKED_IMAGE", - "LINKED" - ] - }, - "spreadsheetId": { - "description": "The ID of the Google Sheets spreadsheet that contains the chart.", - "type": "string" - }, - "pageObjectIds": { - "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "chartId": { - "format": "int32", - "description": "The ID of the specific chart in the Google Sheets spreadsheet.", - "type": "integer" - }, - "containsText": { - "$ref": "SubstringMatchCriteria", - "description": "The criteria that the shapes must match in order to be replaced. The\nrequest will replace all of the shapes that contain the given text." - } - }, - "id": "ReplaceAllShapesWithSheetsChartRequest", - "description": "Replaces all shapes that match the given criteria with the provided Google\nSheets chart. The chart will be scaled and centered to fit within the bounds\nof the original shape.\n\nNOTE: Replacing shapes with a chart requires at least one of the\nspreadsheets.readonly, spreadsheets, drive.readonly, or drive OAuth scopes." - }, - "ColorStop": { - "properties": { - "color": { - "$ref": "OpaqueColor", - "description": "The color of the gradient stop." - }, - "position": { - "format": "float", - "description": "The relative position of the color stop in the gradient band measured\nin percentage. The value should be in the interval [0.0, 1.0].", - "type": "number" - }, - "alpha": { - "type": "number", - "format": "float", - "description": "The alpha value of this color in the gradient band. Defaults to 1.0,\nfully opaque." - } - }, - "id": "ColorStop", - "description": "A color and position in a gradient band.", - "type": "object" - }, - "Range": { - "description": "Specifies a contiguous range of an indexed collection, such as characters in\ntext.", - "type": "object", - "properties": { - "type": { - "description": "The type of range.", - "type": "string", - "enumDescriptions": [ - "Unspecified range type. This value must not be used.", - "A fixed range. Both the `start_index` and\n`end_index` must be specified.", - "Starts the range at `start_index` and continues until the\nend of the collection. The `end_index` must not be specified.", - "Sets the range to be the whole length of the collection. Both the\n`start_index` and the `end_index` must not be\nspecified." - ], - "enum": [ - "RANGE_TYPE_UNSPECIFIED", - "FIXED_RANGE", - "FROM_START_INDEX", - "ALL" - ] - }, - "endIndex": { - "format": "int32", - "description": "The optional zero-based index of the end of the collection.\nRequired for `FIXED_RANGE` ranges.", - "type": "integer" - }, - "startIndex": { - "format": "int32", - "description": "The optional zero-based index of the beginning of the collection.\nRequired for `FIXED_RANGE` and `FROM_START_INDEX` ranges.", - "type": "integer" - } - }, - "id": "Range" - }, - "CreateVideoRequest": { - "description": "Creates a video.", - "type": "object", - "properties": { - "source": { - "enumDescriptions": [ - "The video source is unspecified.", - "The video source is YouTube." - ], - "enum": [ - "SOURCE_UNSPECIFIED", - "YOUTUBE" - ], - "description": "The video source.", - "type": "string" - }, - "objectId": { - "description": "A user-supplied object ID.\n\nIf you specify an ID, it must be unique among all pages and page elements\nin the presentation. The ID must start with an alphanumeric character or an\nunderscore (matches regex `[a-zA-Z0-9_]`); remaining characters\nmay include those as well as a hyphen or colon (matches regex\n`[a-zA-Z0-9_-:]`).\nThe length of the ID must not be less than 5 or greater than 50.\n\nIf you don't specify an ID, a unique one is generated.", - "type": "string" - }, - "elementProperties": { - "description": "The element properties for the video.", - "$ref": "PageElementProperties" - }, - "id": { - "description": "The video source's unique identifier for this video.\n\ne.g. For YouTube video https://www.youtube.com/watch?v=7U3axjORYZ0,\nthe ID is 7U3axjORYZ0.", - "type": "string" - } - }, - "id": "CreateVideoRequest" - }, - "DuplicateObjectResponse": { - "type": "object", - "properties": { - "objectId": { - "description": "The ID of the new duplicate object.", - "type": "string" - } - }, - "id": "DuplicateObjectResponse", - "description": "The response of duplicating an object." - }, - "ReplaceAllShapesWithImageRequest": { - "id": "ReplaceAllShapesWithImageRequest", - "description": "Replaces all shapes that match the given criteria with the provided image.", - "type": "object", - "properties": { - "imageUrl": { - "description": "The image URL.\n\nThe image is fetched once at insertion time and a copy is stored for\ndisplay inside the presentation. Images must be less than 50MB in size,\ncannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF\nformat.\n\nThe provided URL can be at maximum 2K bytes large.", - "type": "string" - }, - "replaceMethod": { - "enum": [ - "CENTER_INSIDE", - "CENTER_CROP" - ], - "description": "The replace method.", - "type": "string", - "enumDescriptions": [ - "Scales and centers the image to fit within the bounds of the original\nshape and maintains the image's aspect ratio. The rendered size of the\nimage may be smaller than the size of the shape. This is the default\nmethod when one is not specified.", - "Scales and centers the image to fill the bounds of the original shape.\nThe image may be cropped in order to fill the shape. The rendered size of\nthe image will be the same as that of the original shape." - ] - }, - "pageObjectIds": { - "description": "If non-empty, limits the matches to page elements only on the given pages.\n\nReturns a 400 bad request error if given the page object ID of a\nnotes page or a\nnotes master, or if a\npage with that object ID doesn't exist in the presentation.", - "items": { - "type": "string" - }, - "type": "array" - }, - "containsText": { - "description": "If set, this request will replace all of the shapes that contain the\ngiven text.", - "$ref": "SubstringMatchCriteria" - } - } - }, - "Shadow": { - "description": "The shadow properties of a page element.\n\nIf these fields are unset, they may be inherited from a parent placeholder\nif it exists. If there is no parent, the fields will default to the value\nused for new page elements created in the Slides editor, which may depend on\nthe page element kind.", - "type": "object", - "properties": { - "transform": { - "$ref": "AffineTransform", - "description": "Transform that encodes the translate, scale, and skew of the shadow,\nrelative to the alignment position." - }, - "type": { - "enum": [ - "SHADOW_TYPE_UNSPECIFIED", - "OUTER" - ], - "description": "The type of the shadow.", - "type": "string", - "enumDescriptions": [ - "Unspecified shadow type.", - "Outer shadow." - ] - }, - "alignment": { - "enum": [ - "RECTANGLE_POSITION_UNSPECIFIED", - "TOP_LEFT", - "TOP_CENTER", - "TOP_RIGHT", - "LEFT_CENTER", - "CENTER", - "RIGHT_CENTER", - "BOTTOM_LEFT", - "BOTTOM_CENTER", - "BOTTOM_RIGHT" - ], - "description": "The alignment point of the shadow, that sets the origin for translate,\nscale and skew of the shadow.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Top left.", - "Top center.", - "Top right.", - "Left center.", - "Center.", - "Right center.", - "Bottom left.", - "Bottom center.", - "Bottom right." - ] - }, - "alpha": { - "format": "float", - "description": "The alpha of the shadow's color, from 0.0 to 1.0.", - "type": "number" - }, - "color": { - "$ref": "OpaqueColor", - "description": "The shadow color value." - }, - "rotateWithShape": { - "description": "Whether the shadow should rotate with the shape.", - "type": "boolean" - }, - "propertyState": { - "type": "string", - "enumDescriptions": [ - "If a property's state is RENDERED, then the element has the corresponding\nproperty when rendered on a page. If the element is a placeholder shape as\ndetermined by the placeholder\nfield, and it inherits from a placeholder shape, the corresponding field\nmay be unset, meaning that the property value is inherited from a parent\nplaceholder. If the element does not inherit, then the field will contain\nthe rendered value. This is the default value.", - "If a property's state is NOT_RENDERED, then the element does not have the\ncorresponding property when rendered on a page. However, the field may\nstill be set so it can be inherited by child shapes. To remove a property\nfrom a rendered element, set its property_state to NOT_RENDERED.", - "If a property's state is INHERIT, then the property state uses the value of\ncorresponding `property_state` field on the parent shape. Elements that do\nnot inherit will never have an INHERIT property state." - ], - "enum": [ - "RENDERED", - "NOT_RENDERED", - "INHERIT" - ], - "description": "The shadow property state.\n\nUpdating the the shadow on a page element will implicitly update this field\nto `RENDERED`, unless another value is specified in the same request. To\nhave no shadow on a page element, set this field to `NOT_RENDERED`. In this\ncase, any other shadow fields set in the same request will be ignored." - }, - "blurRadius": { - "$ref": "Dimension", - "description": "The radius of the shadow blur. The larger the radius, the more diffuse the\nshadow becomes." - } - }, - "id": "Shadow" } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "canonicalName": "Slides", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/presentations": { - "description": "View and manage your Google Slides presentations" - }, "https://www.googleapis.com/auth/presentations.readonly": { "description": "View your Google Slides presentations" }, @@ -3637,6 +3643,9 @@ }, "https://www.googleapis.com/auth/spreadsheets": { "description": "View and manage your spreadsheets in Google Drive" + }, + "https://www.googleapis.com/auth/presentations": { + "description": "View and manage your Google Slides presentations" } } } @@ -3651,48 +3660,41 @@ "presentations": { "methods": { "get": { - "id": "slides.presentations.get", "path": "v1/presentations/{+presentationId}", + "id": "slides.presentations.get", "description": "Gets the latest version of the specified presentation.", - "response": { - "$ref": "Presentation" - }, + "httpMethod": "GET", "parameterOrder": [ "presentationId" ], - "httpMethod": "GET", + "response": { + "$ref": "Presentation" + }, + "parameters": { + "presentationId": { + "description": "The ID of the presentation to retrieve.", + "type": "string", + "required": true, + "pattern": "^[^/]+$", + "location": "path" + } + }, "scopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/presentations", "https://www.googleapis.com/auth/presentations.readonly" ], - "parameters": { - "presentationId": { - "location": "path", - "description": "The ID of the presentation to retrieve.", - "type": "string", - "required": true, - "pattern": "^[^/]+$" - } - }, "flatPath": "v1/presentations/{presentationsId}" }, "batchUpdate": { - "flatPath": "v1/presentations/{presentationId}:batchUpdate", - "id": "slides.presentations.batchUpdate", - "path": "v1/presentations/{presentationId}:batchUpdate", - "description": "Applies one or more updates to the presentation.\n\nEach request is validated before\nbeing applied. If any request is not valid, then the entire request will\nfail and nothing will be applied.\n\nSome requests have replies to\ngive you some information about how they are applied. Other requests do\nnot need to return information; these each return an empty reply.\nThe order of replies matches that of the requests.\n\nFor example, suppose you call batchUpdate with four updates, and only the\nthird one returns information. The response would have two empty replies:\nthe reply to the third request, and another empty reply, in that order.\n\nBecause other users may be editing the presentation, the presentation\nmight not exactly reflect your changes: your changes may\nbe altered with respect to collaborator changes. If there are no\ncollaborators, the presentation should reflect your changes. In any case,\nthe updates in your request are guaranteed to be applied together\natomically.", - "request": { - "$ref": "BatchUpdatePresentationRequest" - }, - "response": { - "$ref": "BatchUpdatePresentationResponse" - }, - "parameterOrder": [ - "presentationId" + "scopes": [ + "https://www.googleapis.com/auth/drive", + "https://www.googleapis.com/auth/drive.readonly", + "https://www.googleapis.com/auth/presentations", + "https://www.googleapis.com/auth/spreadsheets", + "https://www.googleapis.com/auth/spreadsheets.readonly" ], - "httpMethod": "POST", "parameters": { "presentationId": { "location": "path", @@ -3701,38 +3703,53 @@ "required": true } }, - "scopes": [ - "https://www.googleapis.com/auth/drive", - "https://www.googleapis.com/auth/drive.readonly", - "https://www.googleapis.com/auth/presentations", - "https://www.googleapis.com/auth/spreadsheets", - "https://www.googleapis.com/auth/spreadsheets.readonly" - ] + "flatPath": "v1/presentations/{presentationId}:batchUpdate", + "path": "v1/presentations/{presentationId}:batchUpdate", + "id": "slides.presentations.batchUpdate", + "request": { + "$ref": "BatchUpdatePresentationRequest" + }, + "description": "Applies one or more updates to the presentation.\n\nEach request is validated before\nbeing applied. If any request is not valid, then the entire request will\nfail and nothing will be applied.\n\nSome requests have replies to\ngive you some information about how they are applied. Other requests do\nnot need to return information; these each return an empty reply.\nThe order of replies matches that of the requests.\n\nFor example, suppose you call batchUpdate with four updates, and only the\nthird one returns information. The response would have two empty replies:\nthe reply to the third request, and another empty reply, in that order.\n\nBecause other users may be editing the presentation, the presentation\nmight not exactly reflect your changes: your changes may\nbe altered with respect to collaborator changes. If there are no\ncollaborators, the presentation should reflect your changes. In any case,\nthe updates in your request are guaranteed to be applied together\natomically.", + "httpMethod": "POST", + "parameterOrder": [ + "presentationId" + ], + "response": { + "$ref": "BatchUpdatePresentationResponse" + } }, "create": { - "path": "v1/presentations", - "id": "slides.presentations.create", - "description": "Creates a new presentation using the title given in the request. Other\nfields in the request are ignored.\nReturns the created presentation.", - "request": { - "$ref": "Presentation" - }, - "httpMethod": "POST", - "parameterOrder": [], "response": { "$ref": "Presentation" }, + "parameterOrder": [], + "httpMethod": "POST", "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/presentations" ], - "flatPath": "v1/presentations" + "flatPath": "v1/presentations", + "id": "slides.presentations.create", + "path": "v1/presentations", + "description": "Creates a new presentation using the title given in the request. Other\nfields in the request are ignored.\nReturns the created presentation.", + "request": { + "$ref": "Presentation" + } } }, "resources": { "pages": { "methods": { - "getThumbnail": { + "get": { + "response": { + "$ref": "Page" + }, + "parameterOrder": [ + "presentationId", + "pageObjectId" + ], + "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly", @@ -3740,20 +3757,43 @@ "https://www.googleapis.com/auth/presentations.readonly" ], "parameters": { - "pageObjectId": { - "description": "The object ID of the page whose thumbnail to retrieve.", + "presentationId": { + "location": "path", + "description": "The ID of the presentation to retrieve.", "type": "string", - "required": true, - "location": "path" + "required": true }, + "pageObjectId": { + "location": "path", + "description": "The object ID of the page to retrieve.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/presentations/{presentationId}/pages/{pageObjectId}", + "id": "slides.presentations.pages.get", + "path": "v1/presentations/{presentationId}/pages/{pageObjectId}", + "description": "Gets the latest version of the specified page in the presentation." + }, + "getThumbnail": { + "description": "Generates a thumbnail of the latest version of the specified page in the\npresentation and returns a URL to the thumbnail image.", + "response": { + "$ref": "Thumbnail" + }, + "parameterOrder": [ + "presentationId", + "pageObjectId" + ], + "httpMethod": "GET", + "parameters": { "thumbnailProperties.thumbnailSize": { + "description": "The optional thumbnail image size.\n\nIf you don't specify the size, the server chooses a default size of the\nimage.", + "type": "string", "location": "query", "enum": [ "THUMBNAIL_SIZE_UNSPECIFIED", "LARGE" - ], - "description": "The optional thumbnail image size.\n\nIf you don't specify the size, the server chooses a default size of the\nimage.", - "type": "string" + ] }, "thumbnailProperties.mimeType": { "description": "The optional mime type of the thumbnail image.\n\nIf you don't specify the mime type, the default mime type will be PNG.", @@ -3764,58 +3804,27 @@ ] }, "presentationId": { + "location": "path", "description": "The ID of the presentation to retrieve.", "type": "string", - "required": true, - "location": "path" + "required": true + }, + "pageObjectId": { + "location": "path", + "description": "The object ID of the page whose thumbnail to retrieve.", + "type": "string", + "required": true } }, - "flatPath": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail", - "id": "slides.presentations.pages.getThumbnail", - "path": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail", - "description": "Generates a thumbnail of the latest version of the specified page in the\npresentation and returns a URL to the thumbnail image.", - "response": { - "$ref": "Thumbnail" - }, - "parameterOrder": [ - "presentationId", - "pageObjectId" - ], - "httpMethod": "GET" - }, - "get": { - "httpMethod": "GET", - "parameterOrder": [ - "presentationId", - "pageObjectId" - ], - "response": { - "$ref": "Page" - }, "scopes": [ "https://www.googleapis.com/auth/drive", "https://www.googleapis.com/auth/drive.readonly", "https://www.googleapis.com/auth/presentations", "https://www.googleapis.com/auth/presentations.readonly" ], - "parameters": { - "pageObjectId": { - "location": "path", - "description": "The object ID of the page to retrieve.", - "type": "string", - "required": true - }, - "presentationId": { - "description": "The ID of the presentation to retrieve.", - "type": "string", - "required": true, - "location": "path" - } - }, - "flatPath": "v1/presentations/{presentationId}/pages/{pageObjectId}", - "path": "v1/presentations/{presentationId}/pages/{pageObjectId}", - "id": "slides.presentations.pages.get", - "description": "Gets the latest version of the specified page in the presentation." + "flatPath": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail", + "id": "slides.presentations.pages.getThumbnail", + "path": "v1/presentations/{presentationId}/pages/{pageObjectId}/thumbnail" } } } @@ -3823,7 +3832,14 @@ } }, "parameters": { + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -3832,14 +3848,7 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" + ] }, "alt": { "enum": [ @@ -3868,30 +3877,30 @@ "location": "query" }, "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters." - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", "location": "query" }, - "bearer_token": { - "type": "string", + "pp": { "location": "query", - "description": "OAuth bearer token." + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" }, "oauth_token": { - "type": "string", "location": "query", - "description": "OAuth 2.0 token for the current user." + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" }, "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", - "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." + "location": "query" }, "prettyPrint": { "location": "query", @@ -3899,26 +3908,17 @@ "default": "true", "type": "boolean" }, - "fields": { - "type": "string", - "location": "query", - "description": "Selector specifying which fields to include in a partial response." - }, "uploadType": { - "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", "type": "string" } }, "version": "v1", - "baseUrl": "https://slides.googleapis.com/", - "kind": "discovery#restDescription", - "description": "An API for creating and editing Google Slides presentations.", - "servicePath": "", - "basePath": "", - "id": "slides:v1", - "documentationLink": "https://developers.google.com/slides/", - "revision": "20170824", - "discoveryVersion": "v1", - "version_module": true + "baseUrl": "https://slides.googleapis.com/" } diff --git a/vendor/google.golang.org/api/sourcerepo/v1/sourcerepo-api.json b/vendor/google.golang.org/api/sourcerepo/v1/sourcerepo-api.json index 7909528..9324b86 100644 --- a/vendor/google.golang.org/api/sourcerepo/v1/sourcerepo-api.json +++ b/vendor/google.golang.org/api/sourcerepo/v1/sourcerepo-api.json @@ -1,66 +1,17 @@ { - "canonicalName": "Cloud Source Repositories", - "auth": { - "oauth2": { - "scopes": { - "https://www.googleapis.com/auth/source.read_only": { - "description": "View the contents of your source code repositories" - }, - "https://www.googleapis.com/auth/source.read_write": { - "description": "Manage the contents of your source code repositories" - }, - "https://www.googleapis.com/auth/cloud-platform": { - "description": "View and manage your data across Google Cloud Platform services" - } - } - } - }, - "rootUrl": "https://sourcerepo.googleapis.com/", - "ownerDomain": "google.com", - "name": "sourcerepo", - "batchPath": "batch", - "title": "Cloud Source Repositories API", - "ownerName": "Google", "resources": { "projects": { "resources": { "repos": { "methods": { - "get": { - "description": "Returns information about a repo.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Repo" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/source.read_only", - "https://www.googleapis.com/auth/source.read_write" - ], - "parameters": { - "name": { - "description": "The name of the requested repository. Values are of the form\n`projects/\u003cproject\u003e/repos/\u003crepo\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/repos/.+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/repos/{reposId}", - "path": "v1/{+name}", - "id": "sourcerepo.projects.repos.get" - }, "testIamPermissions": { - "response": { - "$ref": "TestIamPermissionsResponse" - }, + "httpMethod": "POST", "parameterOrder": [ "resource" ], - "httpMethod": "POST", + "response": { + "$ref": "TestIamPermissionsResponse" + }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/source.read_only", @@ -68,26 +19,22 @@ ], "parameters": { "resource": { + "type": "string", + "required": true, "pattern": "^projects/[^/]+/repos/.+$", "location": "path", - "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field.", - "type": "string", - "required": true + "description": "REQUIRED: The resource for which the policy detail is being requested.\nSee the operation documentation for the appropriate value for this field." } }, "flatPath": "v1/projects/{projectsId}/repos/{reposId}:testIamPermissions", - "id": "sourcerepo.projects.repos.testIamPermissions", "path": "v1/{+resource}:testIamPermissions", + "id": "sourcerepo.projects.repos.testIamPermissions", "request": { "$ref": "TestIamPermissionsRequest" }, "description": "Returns permissions that a caller has on the specified resource.\nIf the resource does not exist, this will return an empty set of\npermissions, not a NOT_FOUND error." }, "delete": { - "flatPath": "v1/projects/{projectsId}/repos/{reposId}", - "id": "sourcerepo.projects.repos.delete", - "path": "v1/{+name}", - "description": "Deletes a repo.", "response": { "$ref": "Empty" }, @@ -108,7 +55,11 @@ "required": true, "pattern": "^projects/[^/]+/repos/.+$" } - } + }, + "flatPath": "v1/projects/{projectsId}/repos/{reposId}", + "id": "sourcerepo.projects.repos.delete", + "path": "v1/{+name}", + "description": "Deletes a repo." }, "list": { "description": "Returns all repos belonging to a project. The sizes of the repos are\nnot set by ListRepos. To get the size of a repo, use GetRepo.", @@ -131,24 +82,58 @@ "type": "string" }, "name": { - "location": "path", - "description": "The project ID whose repos should be listed. Values are of the form\n`projects/\u003cproject\u003e`.", "type": "string", "required": true, - "pattern": "^projects/[^/]+$" + "pattern": "^projects/[^/]+$", + "location": "path", + "description": "The project ID whose repos should be listed. Values are of the form\n`projects/\u003cproject\u003e`." }, "pageSize": { - "location": "query", "format": "int32", "description": "Maximum number of repositories to return; between 1 and 500.\nIf not set or zero, defaults to 100 at the server.", - "type": "integer" + "type": "integer", + "location": "query" } }, "flatPath": "v1/projects/{projectsId}/repos", "id": "sourcerepo.projects.repos.list", "path": "v1/{+name}/repos" }, + "create": { + "response": { + "$ref": "Repo" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/source.read_only", + "https://www.googleapis.com/auth/source.read_write" + ], + "parameters": { + "parent": { + "location": "path", + "description": "The project in which to create the repo. Values are of the form\n`projects/\u003cproject\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/repos", + "id": "sourcerepo.projects.repos.create", + "path": "v1/{+parent}/repos", + "request": { + "$ref": "Repo" + }, + "description": "Creates a repo in the given project with the given name.\n\nIf the named repository already exists, `CreateRepo` returns\n`ALREADY_EXISTS`." + }, "setIamPolicy": { + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy.", "httpMethod": "POST", "parameterOrder": [ "resource" @@ -172,46 +157,9 @@ }, "flatPath": "v1/projects/{projectsId}/repos/{reposId}:setIamPolicy", "path": "v1/{+resource}:setIamPolicy", - "id": "sourcerepo.projects.repos.setIamPolicy", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on the specified resource. Replaces any\nexisting policy." - }, - "create": { - "response": { - "$ref": "Repo" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/source.read_only", - "https://www.googleapis.com/auth/source.read_write" - ], - "parameters": { - "parent": { - "pattern": "^projects/[^/]+$", - "location": "path", - "description": "The project in which to create the repo. Values are of the form\n`projects/\u003cproject\u003e`.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/projects/{projectsId}/repos", - "id": "sourcerepo.projects.repos.create", - "path": "v1/{+parent}/repos", - "request": { - "$ref": "Repo" - }, - "description": "Creates a repo in the given project with the given name.\n\nIf the named repository already exists, `CreateRepo` returns\n`ALREADY_EXISTS`." + "id": "sourcerepo.projects.repos.setIamPolicy" }, "getIamPolicy": { - "flatPath": "v1/projects/{projectsId}/repos/{reposId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "sourcerepo.projects.repos.getIamPolicy", "description": "Gets the access control policy for a resource.\nReturns an empty policy if the resource exists and does not have a policy\nset.", "httpMethod": "GET", "parameterOrder": [ @@ -222,18 +170,48 @@ }, "parameters": { "resource": { + "pattern": "^projects/[^/]+/repos/.+$", "location": "path", "description": "REQUIRED: The resource for which the policy is being requested.\nSee the operation documentation for the appropriate value for this field.", "type": "string", - "required": true, - "pattern": "^projects/[^/]+/repos/.+$" + "required": true } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform", "https://www.googleapis.com/auth/source.read_only", "https://www.googleapis.com/auth/source.read_write" - ] + ], + "flatPath": "v1/projects/{projectsId}/repos/{reposId}:getIamPolicy", + "path": "v1/{+resource}:getIamPolicy", + "id": "sourcerepo.projects.repos.getIamPolicy" + }, + "get": { + "description": "Returns information about a repo.", + "response": { + "$ref": "Repo" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/source.read_only", + "https://www.googleapis.com/auth/source.read_write" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the requested repository. Values are of the form\n`projects/\u003cproject\u003e/repos/\u003crepo\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/repos/.+$" + } + }, + "flatPath": "v1/projects/{projectsId}/repos/{reposId}", + "id": "sourcerepo.projects.repos.get", + "path": "v1/{+name}" } } } @@ -241,26 +219,36 @@ } }, "parameters": { + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, "quotaUser": { "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", "type": "string", "location": "query" }, "pp": { + "description": "Pretty-print response.", "default": "true", "type": "boolean", - "location": "query", - "description": "Pretty-print response." + "location": "query" }, "oauth_token": { - "location": "query", "description": "OAuth 2.0 token for the current user.", - "type": "string" + "type": "string", + "location": "query" }, "bearer_token": { + "type": "string", "location": "query", - "description": "OAuth bearer token.", - "type": "string" + "description": "OAuth bearer token." }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", @@ -273,24 +261,22 @@ "default": "true", "type": "boolean" }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, "uploadType": { "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string", "location": "query" }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, "callback": { - "location": "query", "description": "JSONP", - "type": "string" + "type": "string", + "location": "query" }, "$.xgafv": { - "description": "V1 error format.", - "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -299,40 +285,32 @@ "enum": [ "1", "2" - ] + ], + "description": "V1 error format.", + "type": "string" }, "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" - }, - "key": { "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "type": "string", - "location": "query", - "description": "OAuth access token." + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] } }, "version": "v1", "baseUrl": "https://sourcerepo.googleapis.com/", - "servicePath": "", "kind": "discovery#restDescription", "description": "Access source code repositories hosted by Google.", + "servicePath": "", "basePath": "", "revision": "20170528", "documentationLink": "https://cloud.google.com/source-repositories/docs/apis", @@ -340,178 +318,7 @@ "discoveryVersion": "v1", "version_module": "True", "schemas": { - "Rule": { - "description": "A rule to be applied in a Policy.", - "type": "object", - "properties": { - "action": { - "enum": [ - "NO_ACTION", - "ALLOW", - "ALLOW_WITH_LOG", - "DENY", - "DENY_WITH_LOG", - "LOG" - ], - "description": "Required", - "type": "string", - "enumDescriptions": [ - "Default no action.", - "Matching 'Entries' grant access.", - "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' deny access.", - "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", - "Matching 'Entries' tell IAM.Check callers to generate logs." - ] - }, - "notIn": { - "description": "If one or more 'not_in' clauses are specified, the rule matches\nif the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.\nThe format for in and not_in entries is the same as for members in a\nBinding (see google/iam/v1/policy.proto).", - "items": { - "type": "string" - }, - "type": "array" - }, - "description": { - "description": "Human-readable description of the rule.", - "type": "string" - }, - "conditions": { - "items": { - "$ref": "Condition" - }, - "type": "array", - "description": "Additional restrictions that must be met" - }, - "logConfig": { - "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries\nthat match the LOG action.", - "items": { - "$ref": "LogConfig" - }, - "type": "array" - }, - "in": { - "description": "If one or more 'in' clauses are specified, the rule matches if\nthe PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.", - "items": { - "type": "string" - }, - "type": "array" - }, - "permissions": { - "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "Rule" - }, - "LogConfig": { - "properties": { - "dataAccess": { - "description": "Data access options.", - "$ref": "DataAccessOptions" - }, - "cloudAudit": { - "description": "Cloud audit options.", - "$ref": "CloudAuditOptions" - }, - "counter": { - "description": "Counter options.", - "$ref": "CounterOptions" - } - }, - "id": "LogConfig", - "description": "Specifies what kind of log the caller must write", - "type": "object" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, - "Policy": { - "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", - "type": "object", - "properties": { - "version": { - "format": "int32", - "description": "Version of the `Policy`. The default version is 0.", - "type": "integer" - }, - "auditConfigs": { - "description": "Specifies cloud audit logging configuration for this policy.", - "items": { - "$ref": "AuditConfig" - }, - "type": "array" - }, - "bindings": { - "description": "Associates a list of `members` to a `role`.\nMultiple `bindings` must not be specified for the same `role`.\n`bindings` with no members will result in an error.", - "items": { - "$ref": "Binding" - }, - "type": "array" - }, - "etag": { - "type": "string", - "format": "byte", - "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly." - }, - "iamOwned": { - "type": "boolean" - }, - "rules": { - "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", - "items": { - "$ref": "Rule" - }, - "type": "array" - } - }, - "id": "Policy" - }, - "DataAccessOptions": { - "id": "DataAccessOptions", - "description": "Write a Data Access (Gin) log", - "type": "object", - "properties": {} - }, - "AuditConfig": { - "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", - "type": "object", - "properties": { - "service": { - "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", - "type": "string" - }, - "auditLogConfigs": { - "description": "The configuration for logging of each type of permission.\nNext ID: 4", - "items": { - "$ref": "AuditLogConfig" - }, - "type": "array" - }, - "exemptedMembers": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "AuditConfig" - }, "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", "type": "object", "properties": { "policy": { @@ -524,10 +331,10 @@ "type": "string" } }, - "id": "SetIamPolicyRequest" + "id": "SetIamPolicyRequest", + "description": "Request message for `SetIamPolicy` method." }, "CloudAuditOptions": { - "description": "Write a Cloud Audit log", "type": "object", "properties": { "logName": { @@ -545,7 +352,8 @@ "type": "string" } }, - "id": "CloudAuditOptions" + "id": "CloudAuditOptions", + "description": "Write a Cloud Audit log" }, "Binding": { "properties": { @@ -575,6 +383,10 @@ "description": "Configuration to automatically mirror a repository from another\nhosting service, for example GitHub or BitBucket.", "type": "object", "properties": { + "deployKeyId": { + "description": "ID of the SSH deploy key at the other hosting service.\nRemoving this key from the other service would deauthorize\nGoogle Cloud Source Repositories from mirroring.", + "type": "string" + }, "url": { "description": "URL of the main repository at the other hosting service.", "type": "string" @@ -582,17 +394,22 @@ "webhookId": { "description": "ID of the webhook listening to updates to trigger mirroring.\nRemoving this webook from the other hosting service will stop\nGoogle Cloud Source Repositories from receiving notifications,\nand thereby disabling mirroring.", "type": "string" - }, - "deployKeyId": { - "description": "ID of the SSH deploy key at the other hosting service.\nRemoving this key from the other service would deauthorize\nGoogle Cloud Source Repositories from mirroring.", - "type": "string" } }, "id": "MirrorConfig" }, "Repo": { + "description": "A repository (or repo) is a Git repository storing versioned source content.", "type": "object", "properties": { + "mirrorConfig": { + "$ref": "MirrorConfig", + "description": "How this repository mirrors a repository managed by another service." + }, + "url": { + "description": "URL to clone the repository from Google Cloud Source Repositories.", + "type": "string" + }, "size": { "format": "int64", "description": "The disk usage of the repo, in bytes.\nOnly returned by GetRepo.", @@ -601,36 +418,9 @@ "name": { "description": "Resource name of the repository, of the form\n`projects/\u003cproject\u003e/repos/\u003crepo\u003e`. The repo name may contain slashes.\neg, `projects/myproject/repos/name/with/slash`", "type": "string" - }, - "mirrorConfig": { - "$ref": "MirrorConfig", - "description": "How this repository mirrors a repository managed by another service." - }, - "url": { - "description": "URL to clone the repository from Google Cloud Source Repositories.", - "type": "string" } }, - "id": "Repo", - "description": "A repository (or repo) is a Git repository storing versioned source content." - }, - "ListReposResponse": { - "description": "Response for ListRepos. The size is not set in the returned repositories.", - "type": "object", - "properties": { - "repos": { - "description": "The listed repos.", - "items": { - "$ref": "Repo" - }, - "type": "array" - }, - "nextPageToken": { - "description": "If non-empty, additional repositories exist within the project. These\ncan be retrieved by including this value in the next ListReposRequest's\npage_token field.", - "type": "string" - } - }, - "id": "ListReposResponse" + "id": "Repo" }, "TestIamPermissionsResponse": { "description": "Response message for `TestIamPermissions` method.", @@ -646,11 +436,55 @@ }, "id": "TestIamPermissionsResponse" }, + "ListReposResponse": { + "description": "Response for ListRepos. The size is not set in the returned repositories.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "If non-empty, additional repositories exist within the project. These\ncan be retrieved by including this value in the next ListReposRequest's\npage_token field.", + "type": "string" + }, + "repos": { + "description": "The listed repos.", + "items": { + "$ref": "Repo" + }, + "type": "array" + } + }, + "id": "ListReposResponse" + }, "Condition": { "description": "A condition to be met.", "type": "object", "properties": { + "iam": { + "enum": [ + "NO_ATTR", + "AUTHORITY", + "ATTRIBUTION", + "APPROVER", + "JUSTIFICATION_TYPE" + ], + "description": "Trusted attributes supplied by the IAM system.", + "type": "string", + "enumDescriptions": [ + "Default non-attribute.", + "Either principal or (if present) authority selector.", + "The principal (even if an authority selector is present), which\nmust only be used for attribution, not authorization.", + "An approver (distinct from the requester) that has authorized this\nrequest.\nWhen used with IN, the condition indicates that one of the approvers\nassociated with the request matches the specified principal, or is a\nmember of the specified group. Approvers can only grant additional\naccess, and are thus only used in a strictly positive context\n(e.g. ALLOW/IN or DENY/NOT_IN).\nSee: go/rpc-security-policy-dynamicauth.", + "What types of justifications have been supplied with this request.\nString values should match enum names from tech.iam.JustificationType,\ne.g. \"MANUAL_STRING\". It is not permitted to grant access based on\nthe *absence* of a justification, so justification conditions can only\nbe used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).\n\nMultiple justifications, e.g., a Buganizer ID and a manually-entered\nreason, are normal and supported." + ] + }, + "values": { + "description": "The objects of the condition. This is mutually exclusive with 'value'.", + "items": { + "type": "string" + }, + "type": "array" + }, "op": { + "type": "string", "enumDescriptions": [ "Default no-op.", "DEPRECATED. Use IN instead.", @@ -667,18 +501,15 @@ "NOT_IN", "DISCHARGED" ], - "description": "An operator to apply the subject with.", - "type": "string" + "description": "An operator to apply the subject with." }, "svc": { "description": "Trusted attributes discharged by the service.", "type": "string" }, - "value": { - "description": "DEPRECATED. Use 'values' instead.", - "type": "string" - }, "sys": { + "description": "Trusted attributes supplied by any service that owns resources and uses\nthe IAM system for access control.", + "type": "string", "enumDescriptions": [ "Default non-attribute type", "Region of the resource", @@ -692,34 +523,11 @@ "SERVICE", "NAME", "IP" - ], - "description": "Trusted attributes supplied by any service that owns resources and uses\nthe IAM system for access control.", + ] + }, + "value": { + "description": "DEPRECATED. Use 'values' instead.", "type": "string" - }, - "values": { - "items": { - "type": "string" - }, - "type": "array", - "description": "The objects of the condition. This is mutually exclusive with 'value'." - }, - "iam": { - "type": "string", - "enumDescriptions": [ - "Default non-attribute.", - "Either principal or (if present) authority selector.", - "The principal (even if an authority selector is present), which\nmust only be used for attribution, not authorization.", - "An approver (distinct from the requester) that has authorized this\nrequest.\nWhen used with IN, the condition indicates that one of the approvers\nassociated with the request matches the specified principal, or is a\nmember of the specified group. Approvers can only grant additional\naccess, and are thus only used in a strictly positive context\n(e.g. ALLOW/IN or DENY/NOT_IN).\nSee: go/rpc-security-policy-dynamicauth.", - "What types of justifications have been supplied with this request.\nString values should match enum names from tech.iam.JustificationType,\ne.g. \"MANUAL_STRING\". It is not permitted to grant access based on\nthe *absence* of a justification, so justification conditions can only\nbe used in a \"positive\" context (e.g., ALLOW/IN or DENY/NOT_IN).\n\nMultiple justifications, e.g., a Buganizer ID and a manually-entered\nreason, are normal and supported." - ], - "enum": [ - "NO_ATTR", - "AUTHORITY", - "ATTRIBUTION", - "APPROVER", - "JUSTIFICATION_TYPE" - ], - "description": "Trusted attributes supplied by the IAM system." } }, "id": "Condition" @@ -740,11 +548,16 @@ "id": "CounterOptions" }, "AuditLogConfig": { - "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging.", "type": "object", "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, "logType": { - "description": "The log type that this config enables.", "type": "string", "enumDescriptions": [ "Default case. Should never be this.", @@ -757,22 +570,209 @@ "ADMIN_READ", "DATA_WRITE", "DATA_READ" - ] + ], + "description": "The log type that this config enables." + } + }, + "id": "AuditLogConfig", + "description": "Provides the configuration for logging a type of permissions.\nExample:\n\n {\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n }\n ]\n }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting\nfoo@gmail.com from DATA_READ logging." + }, + "Rule": { + "id": "Rule", + "description": "A rule to be applied in a Policy.", + "type": "object", + "properties": { + "permissions": { + "description": "A permission is a string of form '\u003cservice\u003e.\u003cresource type\u003e.\u003cverb\u003e'\n(e.g., 'storage.buckets.list'). A value of '*' matches all permissions,\nand a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.", + "items": { + "type": "string" + }, + "type": "array" }, - "exemptedMembers": { - "description": "Specifies the identities that do not cause logging for this type of\npermission.\nFollows the same format of Binding.members.", + "action": { + "enumDescriptions": [ + "Default no action.", + "Matching 'Entries' grant access.", + "Matching 'Entries' grant access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' deny access.", + "Matching 'Entries' deny access and the caller promises to log\nthe request per the returned log_configs.", + "Matching 'Entries' tell IAM.Check callers to generate logs." + ], + "enum": [ + "NO_ACTION", + "ALLOW", + "ALLOW_WITH_LOG", + "DENY", + "DENY_WITH_LOG", + "LOG" + ], + "description": "Required", + "type": "string" + }, + "notIn": { + "description": "If one or more 'not_in' clauses are specified, the rule matches\nif the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.\nThe format for in and not_in entries is the same as for members in a\nBinding (see google/iam/v1/policy.proto).", + "items": { + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Human-readable description of the rule.", + "type": "string" + }, + "conditions": { + "description": "Additional restrictions that must be met", + "items": { + "$ref": "Condition" + }, + "type": "array" + }, + "logConfig": { + "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries\nthat match the LOG action.", + "items": { + "$ref": "LogConfig" + }, + "type": "array" + }, + "in": { + "description": "If one or more 'in' clauses are specified, the rule matches if\nthe PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.", + "items": { + "type": "string" + }, + "type": "array" + } + } + }, + "LogConfig": { + "description": "Specifies what kind of log the caller must write", + "type": "object", + "properties": { + "dataAccess": { + "description": "Data access options.", + "$ref": "DataAccessOptions" + }, + "cloudAudit": { + "description": "Cloud audit options.", + "$ref": "CloudAuditOptions" + }, + "counter": { + "$ref": "CounterOptions", + "description": "Counter options." + } + }, + "id": "LogConfig" + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "The set of permissions to check for the `resource`. Permissions with\nwildcards (such as '*' or 'storage.*') are not allowed. For more\ninformation see\n[IAM Overview](https://cloud.google.com/iam/docs/overview#permissions).", "items": { "type": "string" }, "type": "array" } }, - "id": "AuditLogConfig" + "id": "TestIamPermissionsRequest" + }, + "Policy": { + "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", + "type": "object", + "properties": { + "auditConfigs": { + "description": "Specifies cloud audit logging configuration for this policy.", + "items": { + "$ref": "AuditConfig" + }, + "type": "array" + }, + "bindings": { + "description": "Associates a list of `members` to a `role`.\nMultiple `bindings` must not be specified for the same `role`.\n`bindings` with no members will result in an error.", + "items": { + "$ref": "Binding" + }, + "type": "array" + }, + "etag": { + "format": "byte", + "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", + "type": "string" + }, + "iamOwned": { + "type": "boolean" + }, + "rules": { + "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", + "items": { + "$ref": "Rule" + }, + "type": "array" + }, + "version": { + "format": "int32", + "description": "Version of the `Policy`. The default version is 0.", + "type": "integer" + } + }, + "id": "Policy" + }, + "DataAccessOptions": { + "description": "Write a Data Access (Gin) log", + "type": "object", + "properties": {}, + "id": "DataAccessOptions" + }, + "AuditConfig": { + "id": "AuditConfig", + "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", + "type": "object", + "properties": { + "service": { + "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", + "type": "string" + }, + "auditLogConfigs": { + "description": "The configuration for logging of each type of permission.\nNext ID: 4", + "items": { + "$ref": "AuditLogConfig" + }, + "type": "array" + }, + "exemptedMembers": { + "items": { + "type": "string" + }, + "type": "array" + } + } } }, - "protocol": "rest", "icons": { - "x16": "http://www.google.com/images/icons/product/search-16.gif", - "x32": "http://www.google.com/images/icons/product/search-32.gif" - } + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "protocol": "rest", + "canonicalName": "Cloud Source Repositories", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/source.read_write": { + "description": "Manage the contents of your source code repositories" + }, + "https://www.googleapis.com/auth/cloud-platform": { + "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/source.read_only": { + "description": "View the contents of your source code repositories" + } + } + } + }, + "rootUrl": "https://sourcerepo.googleapis.com/", + "ownerDomain": "google.com", + "name": "sourcerepo", + "batchPath": "batch", + "title": "Cloud Source Repositories API", + "ownerName": "Google" } diff --git a/vendor/google.golang.org/api/spanner/v1/spanner-api.json b/vendor/google.golang.org/api/spanner/v1/spanner-api.json index 5d5dfaf..17c176d 100644 --- a/vendor/google.golang.org/api/spanner/v1/spanner-api.json +++ b/vendor/google.golang.org/api/spanner/v1/spanner-api.json @@ -1,1221 +1,284 @@ { - "resources": { - "projects": { - "resources": { - "instanceConfigs": { - "methods": { - "get": { - "flatPath": "v1/projects/{projectsId}/instanceConfigs/{instanceConfigsId}", - "id": "spanner.projects.instanceConfigs.get", - "path": "v1/{+name}", - "description": "Gets information about a particular instance configuration.", - "response": { - "$ref": "InstanceConfig" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "description": "Required. The name of the requested instance configuration. Values are of\nthe form `projects/\u003cproject\u003e/instanceConfigs/\u003cconfig\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instanceConfigs/[^/]+$", - "location": "path" - } - } - }, - "list": { - "description": "Lists the supported instance configurations for a given project.", - "response": { - "$ref": "ListInstanceConfigsResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Number of instance configurations to be returned in the response. If 0 or\nless, defaults to the server's maximum allowed page size.", - "type": "integer" - }, - "parent": { - "description": "Required. The name of the project for which a list of supported instance\nconfigurations is requested. Values are of the form\n`projects/\u003cproject\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - }, - "pageToken": { - "description": "If non-empty, `page_token` should contain a\nnext_page_token\nfrom a previous ListInstanceConfigsResponse.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instanceConfigs", - "id": "spanner.projects.instanceConfigs.list", - "path": "v1/{+parent}/instanceConfigs" - } - } - }, - "instances": { - "methods": { - "getIamPolicy": { - "description": "Gets the access control policy for an instance resource. Returns an empty\npolicy if an instance exists but does not have a policy set.\n\nAuthorization requires `spanner.instances.getIamPolicy` on\nresource.", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:getIamPolicy", - "id": "spanner.projects.instances.getIamPolicy", - "path": "v1/{+resource}:getIamPolicy" - }, - "get": { - "description": "Gets information about a particular instance.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Instance" - }, - "parameters": { - "name": { - "location": "path", - "description": "Required. The name of the requested instance. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", - "path": "v1/{+name}", - "id": "spanner.projects.instances.get" - }, - "patch": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", - "path": "v1/{+name}", - "id": "spanner.projects.instances.patch", - "request": { - "$ref": "UpdateInstanceRequest" - }, - "description": "Updates an instance, and begins allocating or releasing resources\nas requested. The returned long-running\noperation can be used to track the\nprogress of updating the instance. If the named instance does not\nexist, returns `NOT_FOUND`.\n\nImmediately upon completion of this request:\n\n * For resource types for which a decrease in the instance's allocation\n has been requested, billing is based on the newly-requested level.\n\nUntil completion of the returned operation:\n\n * Cancelling the operation sets its metadata's\n cancel_time, and begins\n restoring resources to their pre-request values. The operation\n is guaranteed to succeed at undoing all resource changes,\n after which point it terminates with a `CANCELLED` status.\n * All other attempts to modify the instance are rejected.\n * Reading the instance via the API continues to give the pre-request\n resource levels.\n\nUpon completion of the returned operation:\n\n * Billing begins for all successfully-allocated resources (some types\n may have lower than the requested levels).\n * All newly-reserved resources are available for serving the instance's\n tables.\n * The instance's new resource levels are readable via the API.\n\nThe returned long-running operation will\nhave a name of the format `\u003cinstance_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track the instance modification. The\nmetadata field type is\nUpdateInstanceMetadata.\nThe response field type is\nInstance, if successful.\n\nAuthorization requires `spanner.instances.update` permission on\nresource name.", - "httpMethod": "PATCH", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "location": "path", - "description": "Required. A unique identifier for the instance, which cannot be changed\nafter the instance is created. Values are of the form\n`projects/\u003cproject\u003e/instances/a-z*[a-z0-9]`. The final\nsegment of the name must be between 6 and 30 characters in length.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$" - } - } - }, - "testIamPermissions": { - "request": { - "$ref": "TestIamPermissionsRequest" - }, - "description": "Returns permissions that the caller has on the specified instance resource.\n\nAttempting this RPC on a non-existent Cloud Spanner instance resource will\nresult in a NOT_FOUND error if the user has `spanner.instances.list`\npermission on the containing Google Cloud Project. Otherwise returns an\nempty set of permissions.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "spanner.projects.instances.testIamPermissions" - }, - "delete": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", - "id": "spanner.projects.instances.delete", - "path": "v1/{+name}", - "description": "Deletes an instance.\n\nImmediately upon completion of the request:\n\n * Billing ceases for all of the instance's reserved resources.\n\nSoon afterward:\n\n * The instance and *all of its databases* immediately and\n irrevocably disappear from the API. All data in the databases\n is permanently deleted.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "location": "path", - "description": "Required. The name of the instance to be deleted. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e`", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$" - } - } - }, - "list": { - "flatPath": "v1/projects/{projectsId}/instances", - "id": "spanner.projects.instances.list", - "path": "v1/{+parent}/instances", - "description": "Lists all instances in the given project.", - "response": { - "$ref": "ListInstancesResponse" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "GET", - "parameters": { - "filter": { - "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n * name\n * display_name\n * labels.key where key is the name of a label\n\nSome examples of using filters are:\n\n * name:* --\u003e The instance has a name.\n * name:Howl --\u003e The instance's name contains the string \"howl\".\n * name:HOWL --\u003e Equivalent to above.\n * NAME:howl --\u003e Equivalent to above.\n * labels.env:* --\u003e The instance has the label \"env\".\n * labels.env:dev --\u003e The instance has the label \"env\" and the value of\n the label contains the string \"dev\".\n * name:howl labels.env:dev --\u003e The instance's name contains \"howl\" and\n it has the label \"env\" with its value\n containing \"dev\".", - "type": "string", - "location": "query" - }, - "pageToken": { - "description": "If non-empty, `page_token` should contain a\nnext_page_token from a\nprevious ListInstancesResponse.", - "type": "string", - "location": "query" - }, - "pageSize": { - "format": "int32", - "description": "Number of instances to be returned in the response. If 0 or less, defaults\nto the server's maximum allowed page size.", - "type": "integer", - "location": "query" - }, - "parent": { - "description": "Required. The name of the project for which a list of instances is\nrequested. Values are of the form `projects/\u003cproject\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ] - }, - "setIamPolicy": { - "request": { - "$ref": "SetIamPolicyRequest" - }, - "description": "Sets the access control policy on an instance resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.instances.setIamPolicy` on\nresource.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for databases resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "id": "spanner.projects.instances.setIamPolicy" - }, - "create": { - "description": "Creates an instance and begins preparing it to begin serving. The\nreturned long-running operation\ncan be used to track the progress of preparing the new\ninstance. The instance name is assigned by the caller. If the\nnamed instance already exists, `CreateInstance` returns\n`ALREADY_EXISTS`.\n\nImmediately upon completion of this request:\n\n * The instance is readable via the API, with all requested attributes\n but no allocated resources. Its state is `CREATING`.\n\nUntil completion of the returned operation:\n\n * Cancelling the operation renders the instance immediately unreadable\n via the API.\n * The instance can be deleted.\n * All other attempts to modify the instance are rejected.\n\nUpon completion of the returned operation:\n\n * Billing for all successfully-allocated resources begins (some types\n may have lower than the requested levels).\n * Databases can be created in the instance.\n * The instance's allocated resource levels are readable via the API.\n * The instance's state becomes `READY`.\n\nThe returned long-running operation will\nhave a name of the format `\u003cinstance_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track creation of the instance. The\nmetadata field type is\nCreateInstanceMetadata.\nThe response field type is\nInstance, if successful.", - "request": { - "$ref": "CreateInstanceRequest" - }, - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "parameters": { - "parent": { - "description": "Required. The name of the project in which to create the instance. Values\nare of the form `projects/\u003cproject\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances", - "id": "spanner.projects.instances.create", - "path": "v1/{+parent}/instances" - } - }, - "resources": { - "operations": { - "methods": { - "get": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}", - "id": "spanner.projects.instances.operations.get", - "path": "v1/{+name}", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." - }, - "list": { - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListOperationsResponse" - }, - "parameters": { - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { - "location": "query", - "description": "The standard list page token.", - "type": "string" - }, - "name": { - "location": "path", - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/operations$" - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The standard list page size.", - "type": "integer" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations", - "path": "v1/{+name}", - "id": "spanner.projects.instances.operations.list" - }, - "cancel": { - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}:cancel", - "id": "spanner.projects.instances.operations.cancel", - "path": "v1/{+name}:cancel" - }, - "delete": { - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}", - "id": "spanner.projects.instances.operations.delete", - "path": "v1/{+name}" - } - } - }, - "databases": { - "methods": { - "list": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases", - "path": "v1/{+parent}/databases", - "id": "spanner.projects.instances.databases.list", - "description": "Lists Cloud Spanner databases.", - "httpMethod": "GET", - "parameterOrder": [ - "parent" - ], - "response": { - "$ref": "ListDatabasesResponse" - }, - "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Number of databases to be returned in the response. If 0 or less,\ndefaults to the server's maximum allowed page size.", - "type": "integer" - }, - "parent": { - "location": "path", - "description": "Required. The instance whose databases should be listed.\nValues are of the form `projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$" - }, - "pageToken": { - "location": "query", - "description": "If non-empty, `page_token` should contain a\nnext_page_token from a\nprevious ListDatabasesResponse.", - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ] - }, - "create": { - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "parent" - ], - "httpMethod": "POST", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "parent": { - "location": "path", - "description": "Required. The name of the instance that will serve the new database.\nValues are of the form `projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases", - "id": "spanner.projects.instances.databases.create", - "path": "v1/{+parent}/databases", - "request": { - "$ref": "CreateDatabaseRequest" - }, - "description": "Creates a new Cloud Spanner database and starts to prepare it for serving.\nThe returned long-running operation will\nhave a name of the format `\u003cdatabase_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track preparation of the database. The\nmetadata field type is\nCreateDatabaseMetadata. The\nresponse field type is\nDatabase, if successful." - }, - "setIamPolicy": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:setIamPolicy", - "id": "spanner.projects.instances.databases.setIamPolicy", - "path": "v1/{+resource}:setIamPolicy", - "description": "Sets the access control policy on a database resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.databases.setIamPolicy` permission on\nresource.", - "request": { - "$ref": "SetIamPolicyRequest" - }, - "response": { - "$ref": "Policy" - }, - "parameterOrder": [ - "resource" - ], - "httpMethod": "POST", - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for databases resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ] - }, - "getIamPolicy": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:getIamPolicy", - "path": "v1/{+resource}:getIamPolicy", - "id": "spanner.projects.instances.databases.getIamPolicy", - "request": { - "$ref": "GetIamPolicyRequest" - }, - "description": "Gets the access control policy for a database resource. Returns an empty\npolicy if a database exists but does not have a policy set.\n\nAuthorization requires `spanner.databases.getIamPolicy` permission on\nresource.", - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "Policy" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "resource": { - "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", - "location": "path" - } - } - }, - "get": { - "description": "Gets the state of a Cloud Spanner database.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Database" - }, - "parameters": { - "name": { - "description": "Required. The name of the requested database. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/databases/\u003cdatabase\u003e`.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}", - "path": "v1/{+name}", - "id": "spanner.projects.instances.databases.get" - }, - "dropDatabase": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "database" - ], - "httpMethod": "DELETE", - "parameters": { - "database": { - "location": "path", - "description": "Required. The database to be dropped.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}", - "id": "spanner.projects.instances.databases.dropDatabase", - "path": "v1/{+database}", - "description": "Drops (aka deletes) a Cloud Spanner database." - }, - "updateDdl": { - "request": { - "$ref": "UpdateDatabaseDdlRequest" - }, - "description": "Updates the schema of a Cloud Spanner database by\ncreating/altering/dropping tables, columns, indexes, etc. The returned\nlong-running operation will have a name of\nthe format `\u003cdatabase_name\u003e/operations/\u003coperation_id\u003e` and can be used to\ntrack execution of the schema change(s). The\nmetadata field type is\nUpdateDatabaseDdlMetadata. The operation has no response.", - "httpMethod": "PATCH", - "parameterOrder": [ - "database" - ], - "response": { - "$ref": "Operation" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "database": { - "location": "path", - "description": "Required. The database to update.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/ddl", - "path": "v1/{+database}/ddl", - "id": "spanner.projects.instances.databases.updateDdl" - }, - "testIamPermissions": { - "httpMethod": "POST", - "parameterOrder": [ - "resource" - ], - "response": { - "$ref": "TestIamPermissionsResponse" - }, - "parameters": { - "resource": { - "location": "path", - "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:testIamPermissions", - "path": "v1/{+resource}:testIamPermissions", - "id": "spanner.projects.instances.databases.testIamPermissions", - "description": "Returns permissions that the caller has on the specified database resource.\n\nAttempting this RPC on a non-existent Cloud Spanner database will result in\na NOT_FOUND error if the user has `spanner.databases.list` permission on\nthe containing Cloud Spanner instance. Otherwise returns an empty set of\npermissions.", - "request": { - "$ref": "TestIamPermissionsRequest" - } - }, - "getDdl": { - "httpMethod": "GET", - "parameterOrder": [ - "database" - ], - "response": { - "$ref": "GetDatabaseDdlResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "database": { - "description": "Required. The database whose schema we wish to get.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/ddl", - "path": "v1/{+database}/ddl", - "id": "spanner.projects.instances.databases.getDdl", - "description": "Returns the schema of a Cloud Spanner database as a list of formatted\nDDL statements. This method does not show pending schema updates, those may\nbe queried using the Operations API." - } - }, - "resources": { - "sessions": { - "methods": { - "get": { - "description": "Gets a session. Returns `NOT_FOUND` if the session does not exist.\nThis is mainly useful for determining whether a session is still\nalive.", - "response": { - "$ref": "Session" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "name": { - "description": "Required. The name of the session to retrieve.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}", - "id": "spanner.projects.instances.databases.sessions.get", - "path": "v1/{+name}" - }, - "executeStreamingSql": { - "response": { - "$ref": "PartialResultSet" - }, - "parameterOrder": [ - "session" - ], - "httpMethod": "POST", - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the SQL query should be performed.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:executeStreamingSql", - "id": "spanner.projects.instances.databases.sessions.executeStreamingSql", - "path": "v1/{+session}:executeStreamingSql", - "description": "Like ExecuteSql, except returns the result\nset as a stream. Unlike ExecuteSql, there\nis no limit on the size of the returned result set. However, no\nindividual row in the result set can exceed 100 MiB, and no\ncolumn value can exceed 10 MiB.", - "request": { - "$ref": "ExecuteSqlRequest" - } - }, - "delete": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}", - "id": "spanner.projects.instances.databases.sessions.delete", - "path": "v1/{+name}", - "description": "Ends a session, releasing server resources associated with it.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "name": { - "description": "Required. The name of the session to delete.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", - "location": "path" - } - } - }, - "beginTransaction": { - "request": { - "$ref": "BeginTransactionRequest" - }, - "description": "Begins a new transaction. This step can often be skipped:\nRead, ExecuteSql and\nCommit can begin a new transaction as a\nside-effect.", - "httpMethod": "POST", - "parameterOrder": [ - "session" - ], - "response": { - "$ref": "Transaction" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the transaction runs.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:beginTransaction", - "path": "v1/{+session}:beginTransaction", - "id": "spanner.projects.instances.databases.sessions.beginTransaction" - }, - "commit": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:commit", - "path": "v1/{+session}:commit", - "id": "spanner.projects.instances.databases.sessions.commit", - "request": { - "$ref": "CommitRequest" - }, - "description": "Commits a transaction. The request includes the mutations to be\napplied to rows in the database.\n\n`Commit` might return an `ABORTED` error. This can occur at any time;\ncommonly, the cause is conflicts with concurrent\ntransactions. However, it can also happen for a variety of other\nreasons. If `Commit` returns `ABORTED`, the caller should re-attempt\nthe transaction from the beginning, re-using the same session.", - "httpMethod": "POST", - "parameterOrder": [ - "session" - ], - "response": { - "$ref": "CommitResponse" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "session": { - "description": "Required. The session in which the transaction to be committed is running.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", - "location": "path" - } - } - }, - "executeSql": { - "description": "Executes an SQL query, returning all rows in a single reply. This\nmethod cannot be used to return a result set larger than 10 MiB;\nif the query yields more data than that, the query fails with\na `FAILED_PRECONDITION` error.\n\nQueries inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be fetched in streaming fashion by calling\nExecuteStreamingSql instead.", - "request": { - "$ref": "ExecuteSqlRequest" - }, - "httpMethod": "POST", - "parameterOrder": [ - "session" - ], - "response": { - "$ref": "ResultSet" - }, - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the SQL query should be performed.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:executeSql", - "path": "v1/{+session}:executeSql", - "id": "spanner.projects.instances.databases.sessions.executeSql" - }, - "streamingRead": { - "response": { - "$ref": "PartialResultSet" - }, - "parameterOrder": [ - "session" - ], - "httpMethod": "POST", - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the read should be performed.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:streamingRead", - "id": "spanner.projects.instances.databases.sessions.streamingRead", - "path": "v1/{+session}:streamingRead", - "description": "Like Read, except returns the result set as a\nstream. Unlike Read, there is no limit on the\nsize of the returned result set. However, no individual row in\nthe result set can exceed 100 MiB, and no column value can exceed\n10 MiB.", - "request": { - "$ref": "ReadRequest" - } - }, - "rollback": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:rollback", - "id": "spanner.projects.instances.databases.sessions.rollback", - "path": "v1/{+session}:rollback", - "description": "Rolls back a transaction, releasing any locks it holds. It is a good\nidea to call this for any transaction that includes one or more\nRead or ExecuteSql requests and\nultimately decides not to commit.\n\n`Rollback` returns `OK` if it successfully aborts the transaction, the\ntransaction was already aborted, or the transaction is not\nfound. `Rollback` never returns `ABORTED`.", - "request": { - "$ref": "RollbackRequest" - }, - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "session" - ], - "httpMethod": "POST", - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the transaction to roll back is running.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ] - }, - "create": { - "description": "Creates a new session. A session can be used to perform\ntransactions that read and/or modify data in a Cloud Spanner database.\nSessions are meant to be reused for many consecutive\ntransactions.\n\nSessions can only execute one transaction at a time. To execute\nmultiple concurrent read-write/write-only transactions, create\nmultiple sessions. Note that standalone reads and queries use a\ntransaction internally, and count toward the one transaction\nlimit.\n\nCloud Spanner limits the number of sessions that can exist at any given\ntime; thus, it is a good idea to delete idle and/or unneeded sessions.\nAside from explicit deletes, Cloud Spanner can delete sessions for which no\noperations are sent for more than an hour. If a session is deleted,\nrequests to it return `NOT_FOUND`.\n\nIdle sessions can be kept alive by sending a trivial SQL query\nperiodically, e.g., `\"SELECT 1\"`.", - "httpMethod": "POST", - "response": { - "$ref": "Session" - }, - "parameterOrder": [ - "database" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "database": { - "description": "Required. The database in which the new session is created.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", - "location": "path" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions", - "path": "v1/{+database}/sessions", - "id": "spanner.projects.instances.databases.sessions.create" - }, - "read": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:read", - "path": "v1/{+session}:read", - "id": "spanner.projects.instances.databases.sessions.read", - "request": { - "$ref": "ReadRequest" - }, - "description": "Reads rows from the database using key lookups and scans, as a\nsimple key/value style alternative to\nExecuteSql. This method cannot be used to\nreturn a result set larger than 10 MiB; if the read matches more\ndata than that, the read fails with a `FAILED_PRECONDITION`\nerror.\n\nReads inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be yielded in streaming fashion by calling\nStreamingRead instead.", - "httpMethod": "POST", - "parameterOrder": [ - "session" - ], - "response": { - "$ref": "ResultSet" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.data" - ], - "parameters": { - "session": { - "location": "path", - "description": "Required. The session in which the read should be performed.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" - } - } - } - } - }, - "operations": { - "methods": { - "cancel": { - "httpMethod": "POST", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$" - } - }, - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}:cancel", - "path": "v1/{+name}:cancel", - "id": "spanner.projects.instances.databases.operations.cancel", - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." - }, - "delete": { - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", - "httpMethod": "DELETE", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}", - "path": "v1/{+name}", - "id": "spanner.projects.instances.databases.operations.delete" - }, - "get": { - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}", - "path": "v1/{+name}", - "id": "spanner.projects.instances.databases.operations.get", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "httpMethod": "GET", - "response": { - "$ref": "Operation" - }, - "parameterOrder": [ - "name" - ], - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$", - "location": "path" - } - } - }, - "list": { - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListOperationsResponse" - }, - "parameters": { - "pageSize": { - "format": "int32", - "description": "The standard list page size.", - "type": "integer", - "location": "query" - }, - "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { - "description": "The standard list page token.", - "type": "string", - "location": "query" - }, - "name": { - "description": "The name of the operation's parent resource.", - "type": "string", - "required": true, - "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/spanner.admin" - ], - "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations", - "path": "v1/{+name}", - "id": "spanner.projects.instances.databases.operations.list" - } - } - } - } - } - } - } - } - } - }, - "parameters": { - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "fields": { - "description": "Selector specifying which fields to include in a partial response.", - "type": "string", - "location": "query" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "alt": { - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ] - }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - } - }, - "version": "v1", - "baseUrl": "https://spanner.googleapis.com/", - "kind": "discovery#restDescription", - "description": "Cloud Spanner is a managed, mission-critical, globally consistent and scalable relational database service.", - "servicePath": "", - "basePath": "", - "revision": "20170726", - "documentationLink": "https://cloud.google.com/spanner/", - "id": "spanner:v1", - "discoveryVersion": "v1", "version_module": "True", "schemas": { + "CounterOptions": { + "description": "Options for counters", + "type": "object", + "properties": { + "field": { + "description": "The field value to attribute.", + "type": "string" + }, + "metric": { + "description": "The metric to update.", + "type": "string" + } + }, + "id": "CounterOptions" + }, + "QueryPlan": { + "description": "Contains an ordered list of nodes appearing in the query plan.", + "type": "object", + "properties": { + "planNodes": { + "description": "The nodes in the query plan. Plan nodes are returned in pre-order starting\nwith the plan root. Each PlanNode's `id` corresponds to its index in\n`plan_nodes`.", + "items": { + "$ref": "PlanNode" + }, + "type": "array" + } + }, + "id": "QueryPlan" + }, + "StructType": { + "description": "`StructType` defines the fields of a STRUCT type.", + "type": "object", + "properties": { + "fields": { + "description": "The list of fields that make up this struct. Order is\nsignificant, because values of this struct type are represented as\nlists, where the order of field values matches the order of\nfields in the StructType. In turn, the order of fields\nmatches the order of columns in a read request, or the order of\nfields in the `SELECT` clause of a query.", + "items": { + "$ref": "Field" + }, + "type": "array" + } + }, + "id": "StructType" + }, + "Field": { + "description": "Message representing a single field of a struct.", + "type": "object", + "properties": { + "name": { + "description": "The name of the field. For reads, this is the column name. For\nSQL queries, it is the column alias (e.g., `\"Word\"` in the\nquery `\"SELECT 'hello' AS Word\"`), or the column name (e.g.,\n`\"ColName\"` in the query `\"SELECT ColName FROM Table\"`). Some\ncolumns might have an empty name (e.g., !\"SELECT\nUPPER(ColName)\"`). Note that a query result can contain\nmultiple fields with the same name.", + "type": "string" + }, + "type": { + "$ref": "Type", + "description": "The type of the field." + } + }, + "id": "Field" + }, + "ResultSetStats": { + "description": "Additional statistics about a ResultSet or PartialResultSet.", + "type": "object", + "properties": { + "queryStats": { + "description": "Aggregated statistics from the execution of the query. Only present when\nthe query is profiled. For example, a query could return the statistics as\nfollows:\n\n {\n \"rows_returned\": \"3\",\n \"elapsed_time\": \"1.22 secs\",\n \"cpu_time\": \"1.19 secs\"\n }", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "queryPlan": { + "$ref": "QueryPlan", + "description": "QueryPlan for the query associated with this result." + } + }, + "id": "ResultSetStats" + }, + "TestIamPermissionsRequest": { + "description": "Request message for `TestIamPermissions` method.", + "type": "object", + "properties": { + "permissions": { + "description": "REQUIRED: The set of permissions to check for 'resource'.\nPermissions with wildcards (such as '*', 'spanner.*', 'spanner.instances.*') are not allowed.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "TestIamPermissionsRequest" + }, + "AuthorizationLoggingOptions": { + "description": "Authorization-related information used by Cloud Audit Logging.", + "type": "object", + "properties": { + "permissionType": { + "enumDescriptions": [ + "Default. Should not be used.", + "A read of admin (meta) data.", + "A write of admin (meta) data.", + "A read of standard data.", + "A write of standard data." + ], + "enum": [ + "PERMISSION_TYPE_UNSPECIFIED", + "ADMIN_READ", + "ADMIN_WRITE", + "DATA_READ", + "DATA_WRITE" + ], + "description": "The type of the permission that was checked.", + "type": "string" + } + }, + "id": "AuthorizationLoggingOptions" + }, + "CommitResponse": { + "description": "The response for Commit.", + "type": "object", + "properties": { + "commitTimestamp": { + "format": "google-datetime", + "description": "The Cloud Spanner timestamp at which the transaction committed.", + "type": "string" + } + }, + "id": "CommitResponse" + }, + "Type": { + "description": "`Type` indicates the type of a Cloud Spanner value, as might be stored in a\ntable cell or returned from an SQL query.", + "type": "object", + "properties": { + "structType": { + "$ref": "StructType", + "description": "If code == STRUCT, then `struct_type`\nprovides type information for the struct's fields." + }, + "arrayElementType": { + "description": "If code == ARRAY, then `array_element_type`\nis the type of the array elements.", + "$ref": "Type" + }, + "code": { + "description": "Required. The TypeCode for this type.", + "type": "string", + "enumDescriptions": [ + "Not specified.", + "Encoded as JSON `true` or `false`.", + "Encoded as `string`, in decimal format.", + "Encoded as `number`, or the strings `\"NaN\"`, `\"Infinity\"`, or\n`\"-Infinity\"`.", + "Encoded as `string` in RFC 3339 timestamp format. The time zone\nmust be present, and must be `\"Z\"`.", + "Encoded as `string` in RFC 3339 date format.", + "Encoded as `string`.", + "Encoded as a base64-encoded `string`, as described in RFC 4648,\nsection 4.", + "Encoded as `list`, where the list elements are represented\naccording to array_element_type.", + "Encoded as `list`, where list element `i` is represented according\nto [struct_type.fields[i]][google.spanner.v1.StructType.fields]." + ], + "enum": [ + "TYPE_CODE_UNSPECIFIED", + "BOOL", + "INT64", + "FLOAT64", + "TIMESTAMP", + "DATE", + "STRING", + "BYTES", + "ARRAY", + "STRUCT" + ] + } + }, + "id": "Type" + }, + "PlanNode": { + "description": "Node information for nodes appearing in a QueryPlan.plan_nodes.", + "type": "object", + "properties": { + "metadata": { + "description": "Attributes relevant to the node contained in a group of key-value pairs.\nFor example, a Parameter Reference node could have the following\ninformation in its metadata:\n\n {\n \"parameter_reference\": \"param1\",\n \"parameter_type\": \"array\"\n }", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "executionStats": { + "description": "The execution statistics associated with the node, contained in a group of\nkey-value pairs. Only present if the plan was returned as a result of a\nprofile query. For example, number of executions, number of rows/time per\nexecution etc.", + "type": "object", + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + } + }, + "shortRepresentation": { + "$ref": "ShortRepresentation", + "description": "Condensed representation for SCALAR nodes." + }, + "index": { + "format": "int32", + "description": "The `PlanNode`'s index in node list.", + "type": "integer" + }, + "displayName": { + "description": "The display name for the node.", + "type": "string" + }, + "kind": { + "enumDescriptions": [ + "Not specified.", + "Denotes a Relational operator node in the expression tree. Relational\noperators represent iterative processing of rows during query execution.\nFor example, a `TableScan` operation that reads rows from a table.", + "Denotes a Scalar node in the expression tree. Scalar nodes represent\nnon-iterable entities in the query plan. For example, constants or\narithmetic operators appearing inside predicate expressions or references\nto column names." + ], + "enum": [ + "KIND_UNSPECIFIED", + "RELATIONAL", + "SCALAR" + ], + "description": "Used to determine the type of node. May be needed for visualizing\ndifferent kinds of nodes differently. For example, If the node is a\nSCALAR node, it will have a condensed representation\nwhich can be used to directly embed a description of the node in its\nparent.", + "type": "string" + }, + "childLinks": { + "description": "List of child node `index`es and their relationship to this parent.", + "items": { + "$ref": "ChildLink" + }, + "type": "array" + } + }, + "id": "PlanNode" + }, + "CreateInstanceMetadata": { + "description": "Metadata type for the operation returned by\nCreateInstance.", + "type": "object", + "properties": { + "endTime": { + "format": "google-datetime", + "description": "The time at which this operation failed or was completed successfully.", + "type": "string" + }, + "cancelTime": { + "format": "google-datetime", + "description": "The time at which this operation was cancelled. If set, this operation is\nin the process of undoing itself (which is guaranteed to succeed) and\ncannot be cancelled again.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The time at which the\nCreateInstance request was\nreceived.", + "type": "string" + }, + "instance": { + "$ref": "Instance", + "description": "The instance being created." + } + }, + "id": "CreateInstanceMetadata" + }, + "AuditConfig": { + "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", + "type": "object", + "properties": { + "auditLogConfigs": { + "description": "The configuration for logging of each type of permission.\nNext ID: 4", + "items": { + "$ref": "AuditLogConfig" + }, + "type": "array" + }, + "exemptedMembers": { + "items": { + "type": "string" + }, + "type": "array" + }, + "service": { + "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", + "type": "string" + } + }, + "id": "AuditConfig" + }, "ChildLink": { "description": "Metadata associated with a parent-child relationship appearing in a\nPlanNode.", "type": "object", @@ -1299,40 +362,6 @@ }, "id": "Delete" }, - "CommitRequest": { - "description": "The request for Commit.", - "type": "object", - "properties": { - "mutations": { - "description": "The mutations to be executed when this transaction commits. All\nmutations are applied atomically, in the order they appear in\nthis list.", - "items": { - "$ref": "Mutation" - }, - "type": "array" - }, - "singleUseTransaction": { - "$ref": "TransactionOptions", - "description": "Execute mutations in a temporary transaction. Note that unlike\ncommit of a previously-started transaction, commit with a\ntemporary transaction is non-idempotent. That is, if the\n`CommitRequest` is sent to Cloud Spanner more than once (for\ninstance, due to retries in the application, or in the\ntransport library), it is possible that the mutations are\nexecuted more than once. If this is undesirable, use\nBeginTransaction and\nCommit instead." - }, - "transactionId": { - "format": "byte", - "description": "Commit a previously-started transaction.", - "type": "string" - } - }, - "id": "CommitRequest" - }, - "BeginTransactionRequest": { - "description": "The request for BeginTransaction.", - "type": "object", - "properties": { - "options": { - "$ref": "TransactionOptions", - "description": "Required. Options for the new transaction." - } - }, - "id": "BeginTransactionRequest" - }, "ListInstanceConfigsResponse": { "description": "The response for ListInstanceConfigs.", "type": "object", @@ -1351,11 +380,39 @@ }, "id": "ListInstanceConfigsResponse" }, - "GetIamPolicyRequest": { - "description": "Request message for `GetIamPolicy` method.", + "BeginTransactionRequest": { + "description": "The request for BeginTransaction.", "type": "object", - "properties": {}, - "id": "GetIamPolicyRequest" + "properties": { + "options": { + "$ref": "TransactionOptions", + "description": "Required. Options for the new transaction." + } + }, + "id": "BeginTransactionRequest" + }, + "CommitRequest": { + "description": "The request for Commit.", + "type": "object", + "properties": { + "mutations": { + "description": "The mutations to be executed when this transaction commits. All\nmutations are applied atomically, in the order they appear in\nthis list.", + "items": { + "$ref": "Mutation" + }, + "type": "array" + }, + "singleUseTransaction": { + "description": "Execute mutations in a temporary transaction. Note that unlike\ncommit of a previously-started transaction, commit with a\ntemporary transaction is non-idempotent. That is, if the\n`CommitRequest` is sent to Cloud Spanner more than once (for\ninstance, due to retries in the application, or in the\ntransport library), it is possible that the mutations are\nexecuted more than once. If this is undesirable, use\nBeginTransaction and\nCommit instead.", + "$ref": "TransactionOptions" + }, + "transactionId": { + "format": "byte", + "description": "Commit a previously-started transaction.", + "type": "string" + } + }, + "id": "CommitRequest" }, "TestIamPermissionsResponse": { "description": "Response message for `TestIamPermissions` method.", @@ -1371,16 +428,11 @@ }, "id": "TestIamPermissionsResponse" }, - "CreateDatabaseMetadata": { - "description": "Metadata type for the operation returned by\nCreateDatabase.", + "GetIamPolicyRequest": { + "description": "Request message for `GetIamPolicy` method.", "type": "object", - "properties": { - "database": { - "description": "The database being created.", - "type": "string" - } - }, - "id": "CreateDatabaseMetadata" + "properties": {}, + "id": "GetIamPolicyRequest" }, "Rule": { "description": "A rule to be applied in a Policy.", @@ -1426,8 +478,6 @@ "type": "array" }, "action": { - "description": "Required", - "type": "string", "enumDescriptions": [ "Default no action.", "Matching 'Entries' grant access.", @@ -1443,19 +493,28 @@ "DENY", "DENY_WITH_LOG", "LOG" - ] + ], + "description": "Required", + "type": "string" } }, "id": "Rule" }, + "CreateDatabaseMetadata": { + "description": "Metadata type for the operation returned by\nCreateDatabase.", + "type": "object", + "properties": { + "database": { + "description": "The database being created.", + "type": "string" + } + }, + "id": "CreateDatabaseMetadata" + }, "LogConfig": { "description": "Specifies what kind of log the caller must write\nIncrement a streamz counter with the specified metric and field names.\n\nMetric names should start with a '/', generally be lowercase-only,\nand end in \"_count\". Field names should not contain an initial slash.\nThe actual exported metric names will have \"/iam/policy\" prepended.\n\nField names correspond to IAM request parameters and field values are\ntheir respective values.\n\nAt present the only supported field names are\n - \"iam_principal\", corresponding to IAMContext.principal;\n - \"\" (empty string), resulting in one aggretated counter with no field.\n\nExamples:\n counter { metric: \"/debug_access_count\" field: \"iam_principal\" }\n ==\u003e increment counter /iam/policy/backend_debug_access_count\n {iam_principal=[value of IAMContext.principal]}\n\nAt this time we do not support:\n* multiple field names (though this may be supported in the future)\n* decrementing the counter\n* incrementing it by anything other than 1", "type": "object", "properties": { - "counter": { - "description": "Counter options.", - "$ref": "CounterOptions" - }, "dataAccess": { "description": "Data access options.", "$ref": "DataAccessOptions" @@ -1463,6 +522,10 @@ "cloudAudit": { "description": "Cloud audit options.", "$ref": "CloudAuditOptions" + }, + "counter": { + "description": "Counter options.", + "$ref": "CounterOptions" } }, "id": "LogConfig" @@ -1478,24 +541,28 @@ }, "id": "Session" }, + "ListInstancesResponse": { + "description": "The response for ListInstances.", + "type": "object", + "properties": { + "instances": { + "description": "The list of requested instances.", + "items": { + "$ref": "Instance" + }, + "type": "array" + }, + "nextPageToken": { + "description": "`next_page_token` can be sent in a subsequent\nListInstances call to fetch more\nof the matching instances.", + "type": "string" + } + }, + "id": "ListInstancesResponse" + }, "KeyRange": { "description": "KeyRange represents a range of rows in a table or index.\n\nA range has a start key and an end key. These keys can be open or\nclosed, indicating if the range includes rows with that key.\n\nKeys are represented by lists, where the ith value in the list\ncorresponds to the ith component of the table or index primary key.\nIndividual values are encoded as described here.\n\nFor example, consider the following table definition:\n\n CREATE TABLE UserEvents (\n UserName STRING(MAX),\n EventDate STRING(10)\n ) PRIMARY KEY(UserName, EventDate);\n\nThe following keys name rows in this table:\n\n \"Bob\", \"2014-09-23\"\n\nSince the `UserEvents` table's `PRIMARY KEY` clause names two\ncolumns, each `UserEvents` key has two elements; the first is the\n`UserName`, and the second is the `EventDate`.\n\nKey ranges with multiple components are interpreted\nlexicographically by component using the table or index key's declared\nsort order. For example, the following range returns all events for\nuser `\"Bob\"` that occurred in the year 2015:\n\n \"start_closed\": [\"Bob\", \"2015-01-01\"]\n \"end_closed\": [\"Bob\", \"2015-12-31\"]\n\nStart and end keys can omit trailing key components. This affects the\ninclusion and exclusion of rows that exactly match the provided key\ncomponents: if the key is closed, then rows that exactly match the\nprovided components are included; if the key is open, then rows\nthat exactly match are not included.\n\nFor example, the following range includes all events for `\"Bob\"` that\noccurred during and after the year 2000:\n\n \"start_closed\": [\"Bob\", \"2000-01-01\"]\n \"end_closed\": [\"Bob\"]\n\nThe next example retrieves all events for `\"Bob\"`:\n\n \"start_closed\": [\"Bob\"]\n \"end_closed\": [\"Bob\"]\n\nTo retrieve events before the year 2000:\n\n \"start_closed\": [\"Bob\"]\n \"end_open\": [\"Bob\", \"2000-01-01\"]\n\nThe following range includes all rows in the table:\n\n \"start_closed\": []\n \"end_closed\": []\n\nThis range returns all users whose `UserName` begins with any\ncharacter from A to C:\n\n \"start_closed\": [\"A\"]\n \"end_open\": [\"D\"]\n\nThis range returns all users whose `UserName` begins with B:\n\n \"start_closed\": [\"B\"]\n \"end_open\": [\"C\"]\n\nKey ranges honor column sort order. For example, suppose a table is\ndefined as follows:\n\n CREATE TABLE DescendingSortedTable {\n Key INT64,\n ...\n ) PRIMARY KEY(Key DESC);\n\nThe following range retrieves all rows with key values between 1\nand 100 inclusive:\n\n \"start_closed\": [\"100\"]\n \"end_closed\": [\"1\"]\n\nNote that 100 is passed as the start, and 1 is passed as the end,\nbecause `Key` is a descending column in the schema.", "type": "object", "properties": { - "startOpen": { - "description": "If the start is open, then the range excludes rows whose first\n`len(start_open)` key columns exactly match `start_open`.", - "items": { - "type": "any" - }, - "type": "array" - }, - "startClosed": { - "description": "If the start is closed, then the range includes all rows whose\nfirst `len(start_closed)` key columns exactly match `start_closed`.", - "items": { - "type": "any" - }, - "type": "array" - }, "endOpen": { "description": "If the end is open, then the range excludes rows whose first\n`len(end_open)` key columns exactly match `end_open`.", "items": { @@ -1509,27 +576,23 @@ "type": "any" }, "type": "array" - } - }, - "id": "KeyRange" - }, - "ListInstancesResponse": { - "description": "The response for ListInstances.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "`next_page_token` can be sent in a subsequent\nListInstances call to fetch more\nof the matching instances.", - "type": "string" }, - "instances": { - "description": "The list of requested instances.", + "startOpen": { + "description": "If the start is open, then the range excludes rows whose first\n`len(start_open)` key columns exactly match `start_open`.", "items": { - "$ref": "Instance" + "type": "any" + }, + "type": "array" + }, + "startClosed": { + "description": "If the start is closed, then the range includes all rows whose\nfirst `len(start_closed)` key columns exactly match `start_closed`.", + "items": { + "type": "any" }, "type": "array" } }, - "id": "ListInstancesResponse" + "id": "KeyRange" }, "ShortRepresentation": { "description": "Condensed representation of a node and its subtree. Only present for\n`SCALAR` PlanNode(s).", @@ -1540,12 +603,12 @@ "type": "string" }, "subqueries": { - "description": "A mapping of (subquery variable name) -\u003e (subquery node id) for cases\nwhere the `description` string of this node references a `SCALAR`\nsubquery contained in the expression subtree rooted at this node. The\nreferenced `SCALAR` subquery may not necessarily be a direct child of\nthis node.", - "type": "object", "additionalProperties": { "format": "int32", "type": "integer" - } + }, + "description": "A mapping of (subquery variable name) -\u003e (subquery node id) for cases\nwhere the `description` string of this node references a `SCALAR`\nsubquery contained in the expression subtree rooted at this node. The\nreferenced `SCALAR` subquery may not necessarily be a direct child of\nthis node.", + "type": "object" } }, "id": "ShortRepresentation" @@ -1592,12 +655,12 @@ "type": "object", "properties": { "readOnly": { - "description": "Transaction will not write.\n\nAuthorization to begin a read-only transaction requires\n`spanner.databases.beginReadOnlyTransaction` permission\non the `session` resource.", - "$ref": "ReadOnly" + "$ref": "ReadOnly", + "description": "Transaction will not write.\n\nAuthorization to begin a read-only transaction requires\n`spanner.databases.beginReadOnlyTransaction` permission\non the `session` resource." }, "readWrite": { - "$ref": "ReadWrite", - "description": "Transaction may write.\n\nAuthorization to begin a read-write transaction requires\n`spanner.databases.beginOrRollbackReadWriteTransaction` permission\non the `session` resource." + "description": "Transaction may write.\n\nAuthorization to begin a read-write transaction requires\n`spanner.databases.beginOrRollbackReadWriteTransaction` permission\non the `session` resource.", + "$ref": "ReadWrite" } }, "id": "TransactionOptions" @@ -1667,8 +730,6 @@ ] }, "op": { - "description": "An operator to apply the subject with.", - "type": "string", "enumDescriptions": [ "Default no-op.", "DEPRECATED. Use IN instead.", @@ -1684,12 +745,18 @@ "IN", "NOT_IN", "DISCHARGED" - ] + ], + "description": "An operator to apply the subject with.", + "type": "string" }, "svc": { "description": "Trusted attributes discharged by the service.", "type": "string" }, + "value": { + "description": "DEPRECATED. Use 'values' instead.", + "type": "string" + }, "sys": { "enumDescriptions": [ "Default non-attribute type", @@ -1707,10 +774,6 @@ ], "description": "Trusted attributes supplied by any service that owns resources and uses\nthe IAM system for access control.", "type": "string" - }, - "value": { - "description": "DEPRECATED. Use 'values' instead.", - "type": "string" } }, "id": "Condition" @@ -1727,6 +790,8 @@ "type": "array" }, "logType": { + "description": "The log type that this config enables.", + "type": "string", "enumDescriptions": [ "Default case. Should never be this.", "Admin reads. Example: CloudIAM getIamPolicy", @@ -1738,9 +803,7 @@ "ADMIN_READ", "DATA_WRITE", "DATA_READ" - ], - "description": "The log type that this config enables.", - "type": "string" + ] } }, "id": "AuditLogConfig" @@ -1749,15 +812,6 @@ "description": "Message type to initiate a read-only transaction.", "type": "object", "properties": { - "exactStaleness": { - "format": "google-duration", - "description": "Executes all reads at a timestamp that is `exact_staleness`\nold. The timestamp is chosen soon after the read is started.\n\nGuarantees that all writes that have committed more than the\nspecified number of seconds ago are visible. Because Cloud Spanner\nchooses the exact timestamp, this mode works even if the client's\nlocal clock is substantially skewed from Cloud Spanner commit\ntimestamps.\n\nUseful for reading at nearby replicas without the distributed\ntimestamp negotiation overhead of `max_staleness`.", - "type": "string" - }, - "strong": { - "description": "Read at a timestamp where all previously committed transactions\nare visible.", - "type": "boolean" - }, "minReadTimestamp": { "format": "google-datetime", "description": "Executes all reads at a timestamp \u003e= `min_read_timestamp`.\n\nThis is useful for requesting fresher data than some previous\nread, or data that is fresh enough to observe the effects of some\npreviously committed transaction whose timestamp is known.\n\nNote that this option can only be used in single-use transactions.", @@ -1776,6 +830,15 @@ "returnReadTimestamp": { "description": "If true, the Cloud Spanner-selected read timestamp is included in\nthe Transaction message that describes the transaction.", "type": "boolean" + }, + "exactStaleness": { + "format": "google-duration", + "description": "Executes all reads at a timestamp that is `exact_staleness`\nold. The timestamp is chosen soon after the read is started.\n\nGuarantees that all writes that have committed more than the\nspecified number of seconds ago are visible. Because Cloud Spanner\nchooses the exact timestamp, this mode works even if the client's\nlocal clock is substantially skewed from Cloud Spanner commit\ntimestamps.\n\nUseful for reading at nearby replicas without the distributed\ntimestamp negotiation overhead of `max_staleness`.", + "type": "string" + }, + "strong": { + "description": "Read at a timestamp where all previously committed transactions\nare visible.", + "type": "boolean" } }, "id": "ReadOnly" @@ -1819,12 +882,12 @@ "type": "string" }, "params": { - "description": "The SQL query string can contain parameter placeholders. A parameter\nplaceholder consists of `'@'` followed by the parameter\nname. Parameter names consist of any combination of letters,\nnumbers, and underscores.\n\nParameters can appear anywhere that a literal value is expected. The same\nparameter name can be used more than once, for example:\n `\"WHERE id \u003e @msg_id AND id \u003c @msg_id + 100\"`\n\nIt is an error to execute an SQL query with unbound parameters.\n\nParameter values are specified using `params`, which is a JSON\nobject whose keys are parameter names, and whose values are the\ncorresponding parameter values.", - "type": "object", "additionalProperties": { "description": "Properties of the object.", "type": "any" - } + }, + "description": "The SQL query string can contain parameter placeholders. A parameter\nplaceholder consists of `'@'` followed by the parameter\nname. Parameter names consist of any combination of letters,\nnumbers, and underscores.\n\nParameters can appear anywhere that a literal value is expected. The same\nparameter name can be used more than once, for example:\n `\"WHERE id \u003e @msg_id AND id \u003c @msg_id + 100\"`\n\nIt is an error to execute an SQL query with unbound parameters.\n\nParameter values are specified using `params`, which is a JSON\nobject whose keys are parameter names, and whose values are the\ncorresponding parameter values.", + "type": "object" } }, "id": "ExecuteSqlRequest" @@ -1833,6 +896,16 @@ "description": "Defines an Identity and Access Management (IAM) policy. It is used to\nspecify access control policies for Cloud Platform resources.\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of\n`members` to a `role`, where the members can be user accounts, Google groups,\nGoogle domains, and service accounts. A `role` is a named list of permissions\ndefined by IAM.\n\n**Example**\n\n {\n \"bindings\": [\n {\n \"role\": \"roles/owner\",\n \"members\": [\n \"user:mike@example.com\",\n \"group:admins@example.com\",\n \"domain:google.com\",\n \"serviceAccount:my-other-app@appspot.gserviceaccount.com\",\n ]\n },\n {\n \"role\": \"roles/viewer\",\n \"members\": [\"user:sean@example.com\"]\n }\n ]\n }\n\nFor a description of IAM and its features, see the\n[IAM developer's guide](https://cloud.google.com/iam).", "type": "object", "properties": { + "iamOwned": { + "type": "boolean" + }, + "rules": { + "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", + "items": { + "$ref": "Rule" + }, + "type": "array" + }, "version": { "format": "int32", "description": "Version of the `Policy`. The default version is 0.", @@ -1856,16 +929,6 @@ "format": "byte", "description": "`etag` is used for optimistic concurrency control as a way to help\nprevent simultaneous updates of a policy from overwriting each other.\nIt is strongly suggested that systems make use of the `etag` in the\nread-modify-write cycle to perform policy updates in order to avoid race\nconditions: An `etag` is returned in the response to `getIamPolicy`, and\nsystems are expected to put that etag in the request to `setIamPolicy` to\nensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing\npolicy is overwritten blindly.", "type": "string" - }, - "iamOwned": { - "type": "boolean" - }, - "rules": { - "description": "If more than one rule is specified, the rules are applied in the following\nmanner:\n- All matching LOG rules are always applied.\n- If any DENY/DENY_WITH_LOG rule matches, permission is denied.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is\n granted.\n Logging will be applied if one or more matching rule requires logging.\n- Otherwise, if no rule applies, permission is denied.", - "items": { - "$ref": "Rule" - }, - "type": "array" } }, "id": "Policy" @@ -1914,6 +977,10 @@ "description": "Arguments to insert, update, insert_or_update, and\nreplace operations.", "type": "object", "properties": { + "table": { + "description": "Required. The table whose rows will be written.", + "type": "string" + }, "values": { "description": "The values to be written. `values` can contain more than one\nlist of values. If it does, then multiple rows are written, one\nfor each entry in `values`. Each list in `values` must have\nexactly as many entries as there are entries in columns\nabove. Sending multiple lists is equivalent to sending multiple\n`Mutation`s, each containing one `values` entry and repeating\ntable and columns. Individual values in each list are\nencoded as described here.", "items": { @@ -1930,10 +997,6 @@ "type": "string" }, "type": "array" - }, - "table": { - "description": "Required. The table whose rows will be written.", - "type": "string" } }, "id": "Write" @@ -1954,6 +1017,18 @@ "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { + "error": { + "description": "The error result of the operation in case of failure or cancellation.", + "$ref": "Status" + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" + }, "done": { "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", "type": "boolean" @@ -1969,18 +1044,6 @@ "name": { "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", "type": "string" - }, - "error": { - "$ref": "Status", - "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" } }, "id": "Operation" @@ -1989,17 +1052,6 @@ "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", "type": "object", "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, "code": { "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", @@ -2008,6 +1060,17 @@ "message": { "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" } }, "id": "Status" @@ -2031,8 +1094,8 @@ "type": "array" }, "metadata": { - "description": "Metadata about the result set, such as row type information.", - "$ref": "ResultSetMetadata" + "$ref": "ResultSetMetadata", + "description": "Metadata about the result set, such as row type information." } }, "id": "ResultSet" @@ -2093,8 +1156,8 @@ "type": "array" }, "metadata": { - "$ref": "ResultSetMetadata", - "description": "Metadata about the result set, such as row type information.\nOnly present in the first response." + "description": "Metadata about the result set, such as row type information.\nOnly present in the first response.", + "$ref": "ResultSetMetadata" }, "resumeToken": { "format": "byte", @@ -2102,30 +1165,12 @@ "type": "string" }, "stats": { - "description": "Query plan and execution statistics for the query that produced this\nstreaming result set. These can be requested by setting\nExecuteSqlRequest.query_mode and are sent\nonly once with the last response in the stream.", - "$ref": "ResultSetStats" + "$ref": "ResultSetStats", + "description": "Query plan and execution statistics for the query that produced this\nstreaming result set. These can be requested by setting\nExecuteSqlRequest.query_mode and are sent\nonly once with the last response in the stream." } }, "id": "PartialResultSet" }, - "ListOperationsResponse": { - "description": "The response message for Operations.ListOperations.", - "type": "object", - "properties": { - "operations": { - "description": "A list of operations that matches the specified filter in the request.", - "items": { - "$ref": "Operation" - }, - "type": "array" - }, - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - } - }, - "id": "ListOperationsResponse" - }, "UpdateInstanceMetadata": { "description": "Metadata type for the operation returned by\nUpdateInstance.", "type": "object", @@ -2152,17 +1197,35 @@ }, "id": "UpdateInstanceMetadata" }, + "ListOperationsResponse": { + "description": "The response message for Operations.ListOperations.", + "type": "object", + "properties": { + "operations": { + "description": "A list of operations that matches the specified filter in the request.", + "items": { + "$ref": "Operation" + }, + "type": "array" + }, + "nextPageToken": { + "description": "The standard List next-page token.", + "type": "string" + } + }, + "id": "ListOperationsResponse" + }, "ResultSetMetadata": { "description": "Metadata about a ResultSet or PartialResultSet.", "type": "object", "properties": { - "transaction": { - "description": "If the read or SQL query began a transaction as a side-effect, the\ninformation about the new transaction is yielded here.", - "$ref": "Transaction" - }, "rowType": { - "$ref": "StructType", - "description": "Indicates the field names and types for the rows in the result\nset. For example, a SQL query like `\"SELECT UserId, UserName FROM\nUsers\"` could return a `row_type` value like:\n\n \"fields\": [\n { \"name\": \"UserId\", \"type\": { \"code\": \"INT64\" } },\n { \"name\": \"UserName\", \"type\": { \"code\": \"STRING\" } },\n ]" + "description": "Indicates the field names and types for the rows in the result\nset. For example, a SQL query like `\"SELECT UserId, UserName FROM\nUsers\"` could return a `row_type` value like:\n\n \"fields\": [\n { \"name\": \"UserId\", \"type\": { \"code\": \"INT64\" } },\n { \"name\": \"UserName\", \"type\": { \"code\": \"STRING\" } },\n ]", + "$ref": "StructType" + }, + "transaction": { + "$ref": "Transaction", + "description": "If the read or SQL query began a transaction as a side-effect, the\ninformation about the new transaction is yielded here." } }, "id": "ResultSetMetadata" @@ -2219,25 +1282,25 @@ "description": "A modification to one or more Cloud Spanner rows. Mutations can be\napplied to a Cloud Spanner database by sending them in a\nCommit call.", "type": "object", "properties": { - "delete": { - "$ref": "Delete", - "description": "Delete rows from a table. Succeeds whether or not the named\nrows were present." - }, "insertOrUpdate": { - "$ref": "Write", - "description": "Like insert, except that if the row already exists, then\nits column values are overwritten with the ones provided. Any\ncolumn values not explicitly written are preserved." + "description": "Like insert, except that if the row already exists, then\nits column values are overwritten with the ones provided. Any\ncolumn values not explicitly written are preserved.", + "$ref": "Write" }, "insert": { - "description": "Insert new rows in a table. If any of the rows already exist,\nthe write or transaction fails with error `ALREADY_EXISTS`.", - "$ref": "Write" + "$ref": "Write", + "description": "Insert new rows in a table. If any of the rows already exist,\nthe write or transaction fails with error `ALREADY_EXISTS`." }, "update": { "description": "Update existing rows in a table. If any of the rows does not\nalready exist, the transaction fails with error `NOT_FOUND`.", "$ref": "Write" }, "replace": { - "$ref": "Write", - "description": "Like insert, except that if the row already exists, it is\ndeleted, and the column values provided are inserted\ninstead. Unlike insert_or_update, this means any values not\nexplicitly written become `NULL`." + "description": "Like insert, except that if the row already exists, it is\ndeleted, and the column values provided are inserted\ninstead. Unlike insert_or_update, this means any values not\nexplicitly written become `NULL`.", + "$ref": "Write" + }, + "delete": { + "$ref": "Delete", + "description": "Delete rows from a table. Succeeds whether or not the named\nrows were present." } }, "id": "Mutation" @@ -2281,10 +1344,53 @@ }, "id": "Database" }, + "ListDatabasesResponse": { + "description": "The response for ListDatabases.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "`next_page_token` can be sent in a subsequent\nListDatabases call to fetch more\nof the matching databases.", + "type": "string" + }, + "databases": { + "description": "Databases that matched the request.", + "items": { + "$ref": "Database" + }, + "type": "array" + } + }, + "id": "ListDatabasesResponse" + }, + "SetIamPolicyRequest": { + "description": "Request message for `SetIamPolicy` method.", + "type": "object", + "properties": { + "policy": { + "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them.", + "$ref": "Policy" + }, + "updateMask": { + "format": "google-fieldmask", + "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", + "type": "string" + } + }, + "id": "SetIamPolicyRequest" + }, "Instance": { "description": "An isolated set of Cloud Spanner resources on which databases can be hosted.", "type": "object", "properties": { + "displayName": { + "description": "Required. The descriptive name for this instance as it appears in UIs.\nMust be unique per project and between 4 and 30 characters in length.", + "type": "string" + }, + "nodeCount": { + "format": "int32", + "description": "Required. The number of nodes allocated to this instance. This may be zero\nin API responses for instances that are not yet in state `READY`.\n\nEach Spanner node can provide up to 10,000 QPS of reads or 2000 QPS of\nwrites (writing single rows at 1KB data per row), and 2 TiB storage.\n\nFor optimal performance, we recommend provisioning enough nodes to keep\noverall CPU utilization under 75%.\n\nA minimum of 3 nodes is recommended for production environments. This\nminimum is required for SLAs to apply to your instance.\n\nNote that Cloud Spanner performance is highly dependent on workload, schema\ndesign, and dataset characteristics. The performance numbers above are\nestimates, and assume [best practices](https://cloud.google.com/spanner/docs/bulk-loading)\nare followed.", + "type": "integer" + }, "labels": { "description": "Cloud Labels are a flexible and lightweight mechanism for organizing cloud\nresources into groups that reflect a customer's organizational needs and\ndeployment strategies. Cloud Labels can be used to filter collections of\nresources. They can be used to control how resource metrics are aggregated.\nAnd they can be used as arguments to policy management rules (e.g. route,\nfirewall, load balancing, etc.).\n\n * Label keys must be between 1 and 63 characters long and must conform to\n the following regular expression: `[a-z]([-a-z0-9]*[a-z0-9])?`.\n * Label values must be between 0 and 63 characters long and must conform\n to the regular expression `([a-z]([-a-z0-9]*[a-z0-9])?)?`.\n * No more than 64 labels can be associated with a given resource.\n\nSee https://goo.gl/xmQnxf for more information on and examples of labels.\n\nIf you plan to use labels in your own code, please note that additional\ncharacters may be allowed in the future. And so you are advised to use an\ninternal label representation, such as JSON, which doesn't rely upon\nspecific characters being disallowed. For example, representing labels\nas the string: name + \"_\" + value would prove problematic if we were to\nallow \"_\" in a future release.", "type": "object", @@ -2313,53 +1419,10 @@ "name": { "description": "Required. A unique identifier for the instance, which cannot be changed\nafter the instance is created. Values are of the form\n`projects/\u003cproject\u003e/instances/a-z*[a-z0-9]`. The final\nsegment of the name must be between 6 and 30 characters in length.", "type": "string" - }, - "displayName": { - "description": "Required. The descriptive name for this instance as it appears in UIs.\nMust be unique per project and between 4 and 30 characters in length.", - "type": "string" - }, - "nodeCount": { - "format": "int32", - "description": "Required. The number of nodes allocated to this instance. This may be zero\nin API responses for instances that are not yet in state `READY`.\n\nEach Spanner node can provide up to 10,000 QPS of reads or 2000 QPS of\nwrites (writing single rows at 1KB data per row), and 2 TiB storage.\n\nFor optimal performance, we recommend provisioning enough nodes to keep\noverall CPU utilization under 75%.\n\nA minimum of 3 nodes is recommended for production environments. This\nminimum is required for SLAs to apply to your instance.\n\nNote that Cloud Spanner performance is highly dependent on workload, schema\ndesign, and dataset characteristics. The performance numbers above are\nestimates, and assume [best practices](https://cloud.google.com/spanner/docs/bulk-loading)\nare followed.", - "type": "integer" } }, "id": "Instance" }, - "SetIamPolicyRequest": { - "description": "Request message for `SetIamPolicy` method.", - "type": "object", - "properties": { - "updateMask": { - "format": "google-fieldmask", - "description": "OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only\nthe fields in the mask will be modified. If no mask is provided, the\nfollowing default mask is used:\npaths: \"bindings, etag\"\nThis field is only used by Cloud IAM.", - "type": "string" - }, - "policy": { - "$ref": "Policy", - "description": "REQUIRED: The complete policy to be applied to the `resource`. The size of\nthe policy is limited to a few 10s of KB. An empty policy is a\nvalid policy but certain Cloud Platform services (such as Projects)\nmight reject them." - } - }, - "id": "SetIamPolicyRequest" - }, - "ListDatabasesResponse": { - "description": "The response for ListDatabases.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "`next_page_token` can be sent in a subsequent\nListDatabases call to fetch more\nof the matching databases.", - "type": "string" - }, - "databases": { - "description": "Databases that matched the request.", - "items": { - "$ref": "Database" - }, - "type": "array" - } - }, - "id": "ListDatabasesResponse" - }, "RollbackRequest": { "description": "The request for Rollback.", "type": "object", @@ -2376,15 +1439,15 @@ "description": "A transaction.", "type": "object", "properties": { - "readTimestamp": { - "format": "google-datetime", - "description": "For snapshot read-only transactions, the read timestamp chosen\nfor the transaction. Not returned by default: see\nTransactionOptions.ReadOnly.return_read_timestamp.", - "type": "string" - }, "id": { "format": "byte", "description": "`id` may be used to identify the transaction in subsequent\nRead,\nExecuteSql,\nCommit, or\nRollback calls.\n\nSingle-use read-only transactions do not have IDs, because\nsingle-use transactions do not support multiple requests.", "type": "string" + }, + "readTimestamp": { + "format": "google-datetime", + "description": "For snapshot read-only transactions, the read timestamp chosen\nfor the transaction. Not returned by default: see\nTransactionOptions.ReadOnly.return_read_timestamp.", + "type": "string" } }, "id": "Transaction" @@ -2393,13 +1456,6 @@ "description": "Metadata type for the operation returned by\nUpdateDatabaseDdl.", "type": "object", "properties": { - "statements": { - "description": "For an update this list contains all the statements. For an\nindividual statement, this list contains only that statement.", - "items": { - "type": "string" - }, - "type": "array" - }, "commitTimestamps": { "description": "Reports the commit timestamps of all statements that have\nsucceeded so far, where `commit_timestamps[i]` is the commit\ntimestamp for the statement `statements[i]`.", "items": { @@ -2411,306 +1467,35 @@ "database": { "description": "The database being modified.", "type": "string" + }, + "statements": { + "description": "For an update this list contains all the statements. For an\nindividual statement, this list contains only that statement.", + "items": { + "type": "string" + }, + "type": "array" } }, "id": "UpdateDatabaseDdlMetadata" - }, - "CounterOptions": { - "description": "Options for counters", - "type": "object", - "properties": { - "field": { - "description": "The field value to attribute.", - "type": "string" - }, - "metric": { - "description": "The metric to update.", - "type": "string" - } - }, - "id": "CounterOptions" - }, - "StructType": { - "description": "`StructType` defines the fields of a STRUCT type.", - "type": "object", - "properties": { - "fields": { - "description": "The list of fields that make up this struct. Order is\nsignificant, because values of this struct type are represented as\nlists, where the order of field values matches the order of\nfields in the StructType. In turn, the order of fields\nmatches the order of columns in a read request, or the order of\nfields in the `SELECT` clause of a query.", - "items": { - "$ref": "Field" - }, - "type": "array" - } - }, - "id": "StructType" - }, - "QueryPlan": { - "description": "Contains an ordered list of nodes appearing in the query plan.", - "type": "object", - "properties": { - "planNodes": { - "description": "The nodes in the query plan. Plan nodes are returned in pre-order starting\nwith the plan root. Each PlanNode's `id` corresponds to its index in\n`plan_nodes`.", - "items": { - "$ref": "PlanNode" - }, - "type": "array" - } - }, - "id": "QueryPlan" - }, - "Field": { - "description": "Message representing a single field of a struct.", - "type": "object", - "properties": { - "type": { - "$ref": "Type", - "description": "The type of the field." - }, - "name": { - "description": "The name of the field. For reads, this is the column name. For\nSQL queries, it is the column alias (e.g., `\"Word\"` in the\nquery `\"SELECT 'hello' AS Word\"`), or the column name (e.g.,\n`\"ColName\"` in the query `\"SELECT ColName FROM Table\"`). Some\ncolumns might have an empty name (e.g., !\"SELECT\nUPPER(ColName)\"`). Note that a query result can contain\nmultiple fields with the same name.", - "type": "string" - } - }, - "id": "Field" - }, - "ResultSetStats": { - "description": "Additional statistics about a ResultSet or PartialResultSet.", - "type": "object", - "properties": { - "queryPlan": { - "$ref": "QueryPlan", - "description": "QueryPlan for the query associated with this result." - }, - "queryStats": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "Aggregated statistics from the execution of the query. Only present when\nthe query is profiled. For example, a query could return the statistics as\nfollows:\n\n {\n \"rows_returned\": \"3\",\n \"elapsed_time\": \"1.22 secs\",\n \"cpu_time\": \"1.19 secs\"\n }", - "type": "object" - } - }, - "id": "ResultSetStats" - }, - "TestIamPermissionsRequest": { - "description": "Request message for `TestIamPermissions` method.", - "type": "object", - "properties": { - "permissions": { - "description": "REQUIRED: The set of permissions to check for 'resource'.\nPermissions with wildcards (such as '*', 'spanner.*', 'spanner.instances.*') are not allowed.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "TestIamPermissionsRequest" - }, - "AuthorizationLoggingOptions": { - "description": "Authorization-related information used by Cloud Audit Logging.", - "type": "object", - "properties": { - "permissionType": { - "description": "The type of the permission that was checked.", - "type": "string", - "enumDescriptions": [ - "Default. Should not be used.", - "A read of admin (meta) data.", - "A write of admin (meta) data.", - "A read of standard data.", - "A write of standard data." - ], - "enum": [ - "PERMISSION_TYPE_UNSPECIFIED", - "ADMIN_READ", - "ADMIN_WRITE", - "DATA_READ", - "DATA_WRITE" - ] - } - }, - "id": "AuthorizationLoggingOptions" - }, - "CommitResponse": { - "description": "The response for Commit.", - "type": "object", - "properties": { - "commitTimestamp": { - "format": "google-datetime", - "description": "The Cloud Spanner timestamp at which the transaction committed.", - "type": "string" - } - }, - "id": "CommitResponse" - }, - "Type": { - "description": "`Type` indicates the type of a Cloud Spanner value, as might be stored in a\ntable cell or returned from an SQL query.", - "type": "object", - "properties": { - "structType": { - "$ref": "StructType", - "description": "If code == STRUCT, then `struct_type`\nprovides type information for the struct's fields." - }, - "arrayElementType": { - "description": "If code == ARRAY, then `array_element_type`\nis the type of the array elements.", - "$ref": "Type" - }, - "code": { - "enumDescriptions": [ - "Not specified.", - "Encoded as JSON `true` or `false`.", - "Encoded as `string`, in decimal format.", - "Encoded as `number`, or the strings `\"NaN\"`, `\"Infinity\"`, or\n`\"-Infinity\"`.", - "Encoded as `string` in RFC 3339 timestamp format. The time zone\nmust be present, and must be `\"Z\"`.", - "Encoded as `string` in RFC 3339 date format.", - "Encoded as `string`.", - "Encoded as a base64-encoded `string`, as described in RFC 4648,\nsection 4.", - "Encoded as `list`, where the list elements are represented\naccording to array_element_type.", - "Encoded as `list`, where list element `i` is represented according\nto [struct_type.fields[i]][google.spanner.v1.StructType.fields]." - ], - "enum": [ - "TYPE_CODE_UNSPECIFIED", - "BOOL", - "INT64", - "FLOAT64", - "TIMESTAMP", - "DATE", - "STRING", - "BYTES", - "ARRAY", - "STRUCT" - ], - "description": "Required. The TypeCode for this type.", - "type": "string" - } - }, - "id": "Type" - }, - "PlanNode": { - "description": "Node information for nodes appearing in a QueryPlan.plan_nodes.", - "type": "object", - "properties": { - "metadata": { - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - }, - "description": "Attributes relevant to the node contained in a group of key-value pairs.\nFor example, a Parameter Reference node could have the following\ninformation in its metadata:\n\n {\n \"parameter_reference\": \"param1\",\n \"parameter_type\": \"array\"\n }", - "type": "object" - }, - "executionStats": { - "description": "The execution statistics associated with the node, contained in a group of\nkey-value pairs. Only present if the plan was returned as a result of a\nprofile query. For example, number of executions, number of rows/time per\nexecution etc.", - "type": "object", - "additionalProperties": { - "description": "Properties of the object.", - "type": "any" - } - }, - "shortRepresentation": { - "description": "Condensed representation for SCALAR nodes.", - "$ref": "ShortRepresentation" - }, - "index": { - "format": "int32", - "description": "The `PlanNode`'s index in node list.", - "type": "integer" - }, - "displayName": { - "description": "The display name for the node.", - "type": "string" - }, - "kind": { - "enumDescriptions": [ - "Not specified.", - "Denotes a Relational operator node in the expression tree. Relational\noperators represent iterative processing of rows during query execution.\nFor example, a `TableScan` operation that reads rows from a table.", - "Denotes a Scalar node in the expression tree. Scalar nodes represent\nnon-iterable entities in the query plan. For example, constants or\narithmetic operators appearing inside predicate expressions or references\nto column names." - ], - "enum": [ - "KIND_UNSPECIFIED", - "RELATIONAL", - "SCALAR" - ], - "description": "Used to determine the type of node. May be needed for visualizing\ndifferent kinds of nodes differently. For example, If the node is a\nSCALAR node, it will have a condensed representation\nwhich can be used to directly embed a description of the node in its\nparent.", - "type": "string" - }, - "childLinks": { - "description": "List of child node `index`es and their relationship to this parent.", - "items": { - "$ref": "ChildLink" - }, - "type": "array" - } - }, - "id": "PlanNode" - }, - "AuditConfig": { - "description": "Specifies the audit configuration for a service.\nThe configuration determines which permission types are logged, and what\nidentities, if any, are exempted from logging.\nAn AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service,\nthe union of the two AuditConfigs is used for that service: the log_types\nspecified in each AuditConfig are enabled, and the exempted_members in each\nAuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n {\n \"audit_configs\": [\n {\n \"service\": \"allServices\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n \"exempted_members\": [\n \"user:foo@gmail.com\"\n ]\n },\n {\n \"log_type\": \"DATA_WRITE\",\n },\n {\n \"log_type\": \"ADMIN_READ\",\n }\n ]\n },\n {\n \"service\": \"fooservice.googleapis.com\"\n \"audit_log_configs\": [\n {\n \"log_type\": \"DATA_READ\",\n },\n {\n \"log_type\": \"DATA_WRITE\",\n \"exempted_members\": [\n \"user:bar@gmail.com\"\n ]\n }\n ]\n }\n ]\n }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ\nlogging. It also exempts foo@gmail.com from DATA_READ logging, and\nbar@gmail.com from DATA_WRITE logging.", - "type": "object", - "properties": { - "service": { - "description": "Specifies a service that will be enabled for audit logging.\nFor example, `storage.googleapis.com`, `cloudsql.googleapis.com`.\n`allServices` is a special value that covers all services.", - "type": "string" - }, - "auditLogConfigs": { - "description": "The configuration for logging of each type of permission.\nNext ID: 4", - "items": { - "$ref": "AuditLogConfig" - }, - "type": "array" - }, - "exemptedMembers": { - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "AuditConfig" - }, - "CreateInstanceMetadata": { - "description": "Metadata type for the operation returned by\nCreateInstance.", - "type": "object", - "properties": { - "endTime": { - "format": "google-datetime", - "description": "The time at which this operation failed or was completed successfully.", - "type": "string" - }, - "cancelTime": { - "format": "google-datetime", - "description": "The time at which this operation was cancelled. If set, this operation is\nin the process of undoing itself (which is guaranteed to succeed) and\ncannot be cancelled again.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "The time at which the\nCreateInstance request was\nreceived.", - "type": "string" - }, - "instance": { - "$ref": "Instance", - "description": "The instance being created." - } - }, - "id": "CreateInstanceMetadata" } }, - "protocol": "rest", "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, + "protocol": "rest", "canonicalName": "Spanner", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/spanner.data": { - "description": "View and manage the contents of your Spanner databases" - }, "https://www.googleapis.com/auth/spanner.admin": { "description": "Administer your Spanner databases" }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/spanner.data": { + "description": "View and manage the contents of your Spanner databases" } } } @@ -2720,5 +1505,1220 @@ "name": "spanner", "batchPath": "batch", "title": "Cloud Spanner API", - "ownerName": "Google" + "ownerName": "Google", + "resources": { + "projects": { + "resources": { + "instances": { + "methods": { + "getIamPolicy": { + "request": { + "$ref": "GetIamPolicyRequest" + }, + "description": "Gets the access control policy for an instance resource. Returns an empty\npolicy if an instance exists but does not have a policy set.\n\nAuthorization requires `spanner.instances.getIamPolicy` on\nresource.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:getIamPolicy", + "id": "spanner.projects.instances.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + }, + "patch": { + "httpMethod": "PATCH", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "name": { + "description": "Required. A unique identifier for the instance, which cannot be changed\nafter the instance is created. Values are of the form\n`projects/\u003cproject\u003e/instances/a-z*[a-z0-9]`. The final\nsegment of the name must be between 6 and 30 characters in length.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", + "path": "v1/{+name}", + "id": "spanner.projects.instances.patch", + "description": "Updates an instance, and begins allocating or releasing resources\nas requested. The returned long-running\noperation can be used to track the\nprogress of updating the instance. If the named instance does not\nexist, returns `NOT_FOUND`.\n\nImmediately upon completion of this request:\n\n * For resource types for which a decrease in the instance's allocation\n has been requested, billing is based on the newly-requested level.\n\nUntil completion of the returned operation:\n\n * Cancelling the operation sets its metadata's\n cancel_time, and begins\n restoring resources to their pre-request values. The operation\n is guaranteed to succeed at undoing all resource changes,\n after which point it terminates with a `CANCELLED` status.\n * All other attempts to modify the instance are rejected.\n * Reading the instance via the API continues to give the pre-request\n resource levels.\n\nUpon completion of the returned operation:\n\n * Billing begins for all successfully-allocated resources (some types\n may have lower than the requested levels).\n * All newly-reserved resources are available for serving the instance's\n tables.\n * The instance's new resource levels are readable via the API.\n\nThe returned long-running operation will\nhave a name of the format `\u003cinstance_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track the instance modification. The\nmetadata field type is\nUpdateInstanceMetadata.\nThe response field type is\nInstance, if successful.\n\nAuthorization requires `spanner.instances.update` permission on\nresource name.", + "request": { + "$ref": "UpdateInstanceRequest" + } + }, + "get": { + "response": { + "$ref": "Instance" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the requested instance. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", + "id": "spanner.projects.instances.get", + "path": "v1/{+name}", + "description": "Gets information about a particular instance." + }, + "testIamPermissions": { + "description": "Returns permissions that the caller has on the specified instance resource.\n\nAttempting this RPC on a non-existent Cloud Spanner instance resource will\nresult in a NOT_FOUND error if the user has `spanner.instances.list`\npermission on the containing Google Cloud Project. Otherwise returns an\nempty set of permissions.", + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:testIamPermissions", + "id": "spanner.projects.instances.testIamPermissions", + "path": "v1/{+resource}:testIamPermissions" + }, + "delete": { + "description": "Deletes an instance.\n\nImmediately upon completion of the request:\n\n * Billing ceases for all of the instance's reserved resources.\n\nSoon afterward:\n\n * The instance and *all of its databases* immediately and\n irrevocably disappear from the API. All data in the databases\n is permanently deleted.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "description": "Required. The name of the instance to be deleted. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e`", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}", + "id": "spanner.projects.instances.delete", + "path": "v1/{+name}" + }, + "list": { + "description": "Lists all instances in the given project.", + "response": { + "$ref": "ListInstancesResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "filter": { + "description": "An expression for filtering the results of the request. Filter rules are\ncase insensitive. The fields eligible for filtering are:\n\n * name\n * display_name\n * labels.key where key is the name of a label\n\nSome examples of using filters are:\n\n * name:* --\u003e The instance has a name.\n * name:Howl --\u003e The instance's name contains the string \"howl\".\n * name:HOWL --\u003e Equivalent to above.\n * NAME:howl --\u003e Equivalent to above.\n * labels.env:* --\u003e The instance has the label \"env\".\n * labels.env:dev --\u003e The instance has the label \"env\" and the value of\n the label contains the string \"dev\".\n * name:howl labels.env:dev --\u003e The instance's name contains \"howl\" and\n it has the label \"env\" with its value\n containing \"dev\".", + "type": "string", + "location": "query" + }, + "pageToken": { + "location": "query", + "description": "If non-empty, `page_token` should contain a\nnext_page_token from a\nprevious ListInstancesResponse.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Number of instances to be returned in the response. If 0 or less, defaults\nto the server's maximum allowed page size.", + "type": "integer", + "location": "query" + }, + "parent": { + "description": "Required. The name of the project for which a list of instances is\nrequested. Values are of the form `projects/\u003cproject\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances", + "id": "spanner.projects.instances.list", + "path": "v1/{+parent}/instances" + }, + "create": { + "flatPath": "v1/projects/{projectsId}/instances", + "id": "spanner.projects.instances.create", + "path": "v1/{+parent}/instances", + "request": { + "$ref": "CreateInstanceRequest" + }, + "description": "Creates an instance and begins preparing it to begin serving. The\nreturned long-running operation\ncan be used to track the progress of preparing the new\ninstance. The instance name is assigned by the caller. If the\nnamed instance already exists, `CreateInstance` returns\n`ALREADY_EXISTS`.\n\nImmediately upon completion of this request:\n\n * The instance is readable via the API, with all requested attributes\n but no allocated resources. Its state is `CREATING`.\n\nUntil completion of the returned operation:\n\n * Cancelling the operation renders the instance immediately unreadable\n via the API.\n * The instance can be deleted.\n * All other attempts to modify the instance are rejected.\n\nUpon completion of the returned operation:\n\n * Billing for all successfully-allocated resources begins (some types\n may have lower than the requested levels).\n * Databases can be created in the instance.\n * The instance's allocated resource levels are readable via the API.\n * The instance's state becomes `READY`.\n\nThe returned long-running operation will\nhave a name of the format `\u003cinstance_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track creation of the instance. The\nmetadata field type is\nCreateInstanceMetadata.\nThe response field type is\nInstance, if successful.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "parent": { + "description": "Required. The name of the project in which to create the instance. Values\nare of the form `projects/\u003cproject\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$", + "location": "path" + } + } + }, + "setIamPolicy": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}:setIamPolicy", + "id": "spanner.projects.instances.setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on an instance resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.instances.setIamPolicy` on\nresource.", + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for databases resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$" + } + } + } + }, + "resources": { + "operations": { + "methods": { + "get": { + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "response": { + "$ref": "Operation" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}", + "id": "spanner.projects.instances.operations.get", + "path": "v1/{+name}" + }, + "list": { + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "filter": { + "description": "The standard list filter.", + "type": "string", + "location": "query" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/operations$", + "location": "path" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The standard list page size.", + "type": "integer" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations", + "id": "spanner.projects.instances.operations.list", + "path": "v1/{+name}", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." + }, + "cancel": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}:cancel", + "id": "spanner.projects.instances.operations.cancel", + "path": "v1/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$", + "location": "path" + } + } + }, + "delete": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/operations/{operationsId}", + "id": "spanner.projects.instances.operations.delete", + "path": "v1/{+name}", + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/operations/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ] + } + } + }, + "databases": { + "methods": { + "getIamPolicy": { + "description": "Gets the access control policy for a database resource. Returns an empty\npolicy if a database exists but does not have a policy set.\n\nAuthorization requires `spanner.databases.getIamPolicy` permission on\nresource.", + "request": { + "$ref": "GetIamPolicyRequest" + }, + "response": { + "$ref": "Policy" + }, + "parameterOrder": [ + "resource" + ], + "httpMethod": "POST", + "parameters": { + "resource": { + "description": "REQUIRED: The Cloud Spanner resource for which the policy is being retrieved. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:getIamPolicy", + "id": "spanner.projects.instances.databases.getIamPolicy", + "path": "v1/{+resource}:getIamPolicy" + }, + "get": { + "description": "Gets the state of a Cloud Spanner database.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Database" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "location": "path", + "description": "Required. The name of the requested database. Values are of the form\n`projects/\u003cproject\u003e/instances/\u003cinstance\u003e/databases/\u003cdatabase\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}", + "path": "v1/{+name}", + "id": "spanner.projects.instances.databases.get" + }, + "dropDatabase": { + "description": "Drops (aka deletes) a Cloud Spanner database.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "database" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "database": { + "description": "Required. The database to be dropped.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}", + "id": "spanner.projects.instances.databases.dropDatabase", + "path": "v1/{+database}" + }, + "updateDdl": { + "description": "Updates the schema of a Cloud Spanner database by\ncreating/altering/dropping tables, columns, indexes, etc. The returned\nlong-running operation will have a name of\nthe format `\u003cdatabase_name\u003e/operations/\u003coperation_id\u003e` and can be used to\ntrack execution of the schema change(s). The\nmetadata field type is\nUpdateDatabaseDdlMetadata. The operation has no response.", + "request": { + "$ref": "UpdateDatabaseDdlRequest" + }, + "httpMethod": "PATCH", + "parameterOrder": [ + "database" + ], + "response": { + "$ref": "Operation" + }, + "parameters": { + "database": { + "description": "Required. The database to update.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/ddl", + "path": "v1/{+database}/ddl", + "id": "spanner.projects.instances.databases.updateDdl" + }, + "testIamPermissions": { + "request": { + "$ref": "TestIamPermissionsRequest" + }, + "description": "Returns permissions that the caller has on the specified database resource.\n\nAttempting this RPC on a non-existent Cloud Spanner database will result in\na NOT_FOUND error if the user has `spanner.databases.list` permission on\nthe containing Cloud Spanner instance. Otherwise returns an empty set of\npermissions.", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "TestIamPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The Cloud Spanner resource for which permissions are being tested. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for database resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:testIamPermissions", + "path": "v1/{+resource}:testIamPermissions", + "id": "spanner.projects.instances.databases.testIamPermissions" + }, + "getDdl": { + "httpMethod": "GET", + "parameterOrder": [ + "database" + ], + "response": { + "$ref": "GetDatabaseDdlResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "database": { + "location": "path", + "description": "Required. The database whose schema we wish to get.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/ddl", + "path": "v1/{+database}/ddl", + "id": "spanner.projects.instances.databases.getDdl", + "description": "Returns the schema of a Cloud Spanner database as a list of formatted\nDDL statements. This method does not show pending schema updates, those may\nbe queried using the Operations API." + }, + "list": { + "description": "Lists Cloud Spanner databases.", + "response": { + "$ref": "ListDatabasesResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "pageToken": { + "location": "query", + "description": "If non-empty, `page_token` should contain a\nnext_page_token from a\nprevious ListDatabasesResponse.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Number of databases to be returned in the response. If 0 or less,\ndefaults to the server's maximum allowed page size.", + "type": "integer", + "location": "query" + }, + "parent": { + "location": "path", + "description": "Required. The instance whose databases should be listed.\nValues are of the form `projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases", + "id": "spanner.projects.instances.databases.list", + "path": "v1/{+parent}/databases" + }, + "setIamPolicy": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}:setIamPolicy", + "path": "v1/{+resource}:setIamPolicy", + "id": "spanner.projects.instances.databases.setIamPolicy", + "request": { + "$ref": "SetIamPolicyRequest" + }, + "description": "Sets the access control policy on a database resource. Replaces any\nexisting policy.\n\nAuthorization requires `spanner.databases.setIamPolicy` permission on\nresource.", + "httpMethod": "POST", + "parameterOrder": [ + "resource" + ], + "response": { + "$ref": "Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "resource": { + "location": "path", + "description": "REQUIRED: The Cloud Spanner resource for which the policy is being set. The format is `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e` for instance resources and `projects/\u003cproject ID\u003e/instances/\u003cinstance ID\u003e/databases/\u003cdatabase ID\u003e` for databases resources.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$" + } + } + }, + "create": { + "httpMethod": "POST", + "parameterOrder": [ + "parent" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "parent": { + "description": "Required. The name of the instance that will serve the new database.\nValues are of the form `projects/\u003cproject\u003e/instances/\u003cinstance\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases", + "path": "v1/{+parent}/databases", + "id": "spanner.projects.instances.databases.create", + "request": { + "$ref": "CreateDatabaseRequest" + }, + "description": "Creates a new Cloud Spanner database and starts to prepare it for serving.\nThe returned long-running operation will\nhave a name of the format `\u003cdatabase_name\u003e/operations/\u003coperation_id\u003e` and\ncan be used to track preparation of the database. The\nmetadata field type is\nCreateDatabaseMetadata. The\nresponse field type is\nDatabase, if successful." + } + }, + "resources": { + "sessions": { + "methods": { + "executeSql": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:executeSql", + "path": "v1/{+session}:executeSql", + "id": "spanner.projects.instances.databases.sessions.executeSql", + "request": { + "$ref": "ExecuteSqlRequest" + }, + "description": "Executes an SQL query, returning all rows in a single reply. This\nmethod cannot be used to return a result set larger than 10 MiB;\nif the query yields more data than that, the query fails with\na `FAILED_PRECONDITION` error.\n\nQueries inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be fetched in streaming fashion by calling\nExecuteStreamingSql instead.", + "httpMethod": "POST", + "parameterOrder": [ + "session" + ], + "response": { + "$ref": "ResultSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "session": { + "location": "path", + "description": "Required. The session in which the SQL query should be performed.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" + } + } + }, + "streamingRead": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:streamingRead", + "id": "spanner.projects.instances.databases.sessions.streamingRead", + "path": "v1/{+session}:streamingRead", + "description": "Like Read, except returns the result set as a\nstream. Unlike Read, there is no limit on the\nsize of the returned result set. However, no individual row in\nthe result set can exceed 100 MiB, and no column value can exceed\n10 MiB.", + "request": { + "$ref": "ReadRequest" + }, + "response": { + "$ref": "PartialResultSet" + }, + "parameterOrder": [ + "session" + ], + "httpMethod": "POST", + "parameters": { + "session": { + "location": "path", + "description": "Required. The session in which the read should be performed.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ] + }, + "rollback": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:rollback", + "id": "spanner.projects.instances.databases.sessions.rollback", + "path": "v1/{+session}:rollback", + "request": { + "$ref": "RollbackRequest" + }, + "description": "Rolls back a transaction, releasing any locks it holds. It is a good\nidea to call this for any transaction that includes one or more\nRead or ExecuteSql requests and\nultimately decides not to commit.\n\n`Rollback` returns `OK` if it successfully aborts the transaction, the\ntransaction was already aborted, or the transaction is not\nfound. `Rollback` never returns `ABORTED`.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "session" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "session": { + "description": "Required. The session in which the transaction to roll back is running.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", + "location": "path" + } + } + }, + "create": { + "description": "Creates a new session. A session can be used to perform\ntransactions that read and/or modify data in a Cloud Spanner database.\nSessions are meant to be reused for many consecutive\ntransactions.\n\nSessions can only execute one transaction at a time. To execute\nmultiple concurrent read-write/write-only transactions, create\nmultiple sessions. Note that standalone reads and queries use a\ntransaction internally, and count toward the one transaction\nlimit.\n\nCloud Spanner limits the number of sessions that can exist at any given\ntime; thus, it is a good idea to delete idle and/or unneeded sessions.\nAside from explicit deletes, Cloud Spanner can delete sessions for which no\noperations are sent for more than an hour. If a session is deleted,\nrequests to it return `NOT_FOUND`.\n\nIdle sessions can be kept alive by sending a trivial SQL query\nperiodically, e.g., `\"SELECT 1\"`.", + "response": { + "$ref": "Session" + }, + "parameterOrder": [ + "database" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "database": { + "description": "Required. The database in which the new session is created.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions", + "id": "spanner.projects.instances.databases.sessions.create", + "path": "v1/{+database}/sessions" + }, + "read": { + "request": { + "$ref": "ReadRequest" + }, + "description": "Reads rows from the database using key lookups and scans, as a\nsimple key/value style alternative to\nExecuteSql. This method cannot be used to\nreturn a result set larger than 10 MiB; if the read matches more\ndata than that, the read fails with a `FAILED_PRECONDITION`\nerror.\n\nReads inside read-write transactions might return `ABORTED`. If\nthis occurs, the application should restart the transaction from\nthe beginning. See Transaction for more details.\n\nLarger result sets can be yielded in streaming fashion by calling\nStreamingRead instead.", + "httpMethod": "POST", + "parameterOrder": [ + "session" + ], + "response": { + "$ref": "ResultSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "session": { + "location": "path", + "description": "Required. The session in which the read should be performed.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:read", + "path": "v1/{+session}:read", + "id": "spanner.projects.instances.databases.sessions.read" + }, + "get": { + "description": "Gets a session. Returns `NOT_FOUND` if the session does not exist.\nThis is mainly useful for determining whether a session is still\nalive.", + "response": { + "$ref": "Session" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "name": { + "description": "Required. The name of the session to retrieve.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}", + "id": "spanner.projects.instances.databases.sessions.get", + "path": "v1/{+name}" + }, + "executeStreamingSql": { + "description": "Like ExecuteSql, except returns the result\nset as a stream. Unlike ExecuteSql, there\nis no limit on the size of the returned result set. However, no\nindividual row in the result set can exceed 100 MiB, and no\ncolumn value can exceed 10 MiB.", + "request": { + "$ref": "ExecuteSqlRequest" + }, + "response": { + "$ref": "PartialResultSet" + }, + "parameterOrder": [ + "session" + ], + "httpMethod": "POST", + "parameters": { + "session": { + "location": "path", + "description": "Required. The session in which the SQL query should be performed.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:executeStreamingSql", + "id": "spanner.projects.instances.databases.sessions.executeStreamingSql", + "path": "v1/{+session}:executeStreamingSql" + }, + "delete": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}", + "id": "spanner.projects.instances.databases.sessions.delete", + "path": "v1/{+name}", + "description": "Ends a session, releasing server resources associated with it.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "parameters": { + "name": { + "description": "Required. The name of the session to delete.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", + "location": "path" + } + } + }, + "beginTransaction": { + "response": { + "$ref": "Transaction" + }, + "parameterOrder": [ + "session" + ], + "httpMethod": "POST", + "parameters": { + "session": { + "description": "Required. The session in which the transaction runs.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:beginTransaction", + "id": "spanner.projects.instances.databases.sessions.beginTransaction", + "path": "v1/{+session}:beginTransaction", + "description": "Begins a new transaction. This step can often be skipped:\nRead, ExecuteSql and\nCommit can begin a new transaction as a\nside-effect.", + "request": { + "$ref": "BeginTransactionRequest" + } + }, + "commit": { + "response": { + "$ref": "CommitResponse" + }, + "parameterOrder": [ + "session" + ], + "httpMethod": "POST", + "parameters": { + "session": { + "description": "Required. The session in which the transaction to be committed is running.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/sessions/[^/]+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.data" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/sessions/{sessionsId}:commit", + "id": "spanner.projects.instances.databases.sessions.commit", + "path": "v1/{+session}:commit", + "description": "Commits a transaction. The request includes the mutations to be\napplied to rows in the database.\n\n`Commit` might return an `ABORTED` error. This can occur at any time;\ncommonly, the cause is conflicts with concurrent\ntransactions. However, it can also happen for a variety of other\nreasons. If `Commit` returns `ABORTED`, the caller should re-attempt\nthe transaction from the beginning, re-using the same session.", + "request": { + "$ref": "CommitRequest" + } + } + } + }, + "operations": { + "methods": { + "get": { + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}", + "path": "v1/{+name}", + "id": "spanner.projects.instances.databases.operations.get", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "description": "The name of the operation resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$", + "location": "path" + } + } + }, + "list": { + "response": { + "$ref": "ListOperationsResponse" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "parameters": { + "filter": { + "location": "query", + "description": "The standard list filter.", + "type": "string" + }, + "pageToken": { + "description": "The standard list page token.", + "type": "string", + "location": "query" + }, + "name": { + "location": "path", + "description": "The name of the operation's parent resource.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations$" + }, + "pageSize": { + "format": "int32", + "description": "The standard list page size.", + "type": "integer", + "location": "query" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations", + "id": "spanner.projects.instances.databases.operations.list", + "path": "v1/{+name}", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." + }, + "cancel": { + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}:cancel", + "path": "v1/{+name}:cancel", + "id": "spanner.projects.instances.databases.operations.cancel" + }, + "delete": { + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instances/[^/]+/databases/[^/]+/operations/[^/]+$" + } + }, + "flatPath": "v1/projects/{projectsId}/instances/{instancesId}/databases/{databasesId}/operations/{operationsId}", + "id": "spanner.projects.instances.databases.operations.delete", + "path": "v1/{+name}" + } + } + } + } + } + } + }, + "instanceConfigs": { + "methods": { + "get": { + "description": "Gets information about a particular instance configuration.", + "response": { + "$ref": "InstanceConfig" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "name": { + "description": "Required. The name of the requested instance configuration. Values are of\nthe form `projects/\u003cproject\u003e/instanceConfigs/\u003cconfig\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+/instanceConfigs/[^/]+$", + "location": "path" + } + }, + "flatPath": "v1/projects/{projectsId}/instanceConfigs/{instanceConfigsId}", + "id": "spanner.projects.instanceConfigs.get", + "path": "v1/{+name}" + }, + "list": { + "description": "Lists the supported instance configurations for a given project.", + "response": { + "$ref": "ListInstanceConfigsResponse" + }, + "parameterOrder": [ + "parent" + ], + "httpMethod": "GET", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/spanner.admin" + ], + "parameters": { + "pageSize": { + "format": "int32", + "description": "Number of instance configurations to be returned in the response. If 0 or\nless, defaults to the server's maximum allowed page size.", + "type": "integer", + "location": "query" + }, + "parent": { + "location": "path", + "description": "Required. The name of the project for which a list of supported instance\nconfigurations is requested. Values are of the form\n`projects/\u003cproject\u003e`.", + "type": "string", + "required": true, + "pattern": "^projects/[^/]+$" + }, + "pageToken": { + "location": "query", + "description": "If non-empty, `page_token` should contain a\nnext_page_token\nfrom a previous ListInstanceConfigsResponse.", + "type": "string" + } + }, + "flatPath": "v1/projects/{projectsId}/instanceConfigs", + "id": "spanner.projects.instanceConfigs.list", + "path": "v1/{+parent}/instanceConfigs" + } + } + } + } + } + }, + "parameters": { + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + } + }, + "version": "v1", + "baseUrl": "https://spanner.googleapis.com/", + "kind": "discovery#restDescription", + "description": "Cloud Spanner is a managed, mission-critical, globally consistent and scalable relational database service.", + "servicePath": "", + "basePath": "", + "revision": "20170726", + "documentationLink": "https://cloud.google.com/spanner/", + "id": "spanner:v1", + "discoveryVersion": "v1" } diff --git a/vendor/google.golang.org/api/speech/v1/speech-api.json b/vendor/google.golang.org/api/speech/v1/speech-api.json index c851d4e..ee73cdd 100644 --- a/vendor/google.golang.org/api/speech/v1/speech-api.json +++ b/vendor/google.golang.org/api/speech/v1/speech-api.json @@ -7,126 +7,133 @@ "resources": { "operations": { "methods": { - "cancel": { - "httpMethod": "POST", + "get": { + "response": { + "$ref": "Operation" + }, "parameterOrder": [ "name" ], - "response": { - "$ref": "Empty" - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], + "httpMethod": "GET", "parameters": { "name": { - "pattern": "^[^/]+$", "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/operations/{operationsId}:cancel", - "path": "v1/operations/{+name}:cancel", - "id": "speech.operations.cancel", - "request": { - "$ref": "CancelOperationRequest" - }, - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." - }, - "delete": { - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "parameters": { - "name": { - "description": "The name of the operation resource to be deleted.", + "description": "The name of the operation resource.", "type": "string", "required": true, - "pattern": "^[^/]+$", - "location": "path" + "pattern": "^[^/]+$" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1/operations/{operationsId}", - "id": "speech.operations.delete", - "path": "v1/operations/{+name}", - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`." - }, - "get": { - "path": "v1/operations/{+name}", "id": "speech.operations.get", - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "Operation" - }, - "parameters": { - "name": { - "pattern": "^[^/]+$", - "location": "path", - "description": "The name of the operation resource.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/operations/{operationsId}" + "path": "v1/operations/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." }, "list": { - "id": "speech.operations.list", - "path": "v1/operations", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", + "httpMethod": "GET", "response": { "$ref": "ListOperationsResponse" }, "parameterOrder": [], - "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "filter": { - "description": "The standard list filter.", - "type": "string", - "location": "query" - }, - "pageToken": { "location": "query", - "description": "The standard list page token.", + "description": "The standard list filter.", "type": "string" }, - "name": { - "description": "The name of the operation's parent resource.", + "pageToken": { "type": "string", - "location": "query" + "location": "query", + "description": "The standard list page token." + }, + "name": { + "location": "query", + "description": "The name of the operation's parent resource.", + "type": "string" }, "pageSize": { + "type": "integer", "location": "query", "format": "int32", - "description": "The standard list page size.", - "type": "integer" + "description": "The standard list page size." } }, - "flatPath": "v1/operations" + "flatPath": "v1/operations", + "path": "v1/operations", + "id": "speech.operations.list", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." + }, + "cancel": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^[^/]+$" + } + }, + "flatPath": "v1/operations/{operationsId}:cancel", + "id": "speech.operations.cancel", + "path": "v1/operations/{+name}:cancel", + "request": { + "$ref": "CancelOperationRequest" + }, + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." + }, + "delete": { + "flatPath": "v1/operations/{operationsId}", + "path": "v1/operations/{+name}", + "id": "speech.operations.delete", + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", + "httpMethod": "DELETE", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "name": { + "location": "path", + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^[^/]+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] } } }, "speech": { "methods": { "longrunningrecognize": { + "flatPath": "v1/speech:longrunningrecognize", + "path": "v1/speech:longrunningrecognize", + "id": "speech.speech.longrunningrecognize", + "request": { + "$ref": "LongRunningRecognizeRequest" + }, + "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message.", "httpMethod": "POST", "parameterOrder": [], "response": { @@ -135,62 +142,45 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": {}, - "flatPath": "v1/speech:longrunningrecognize", - "path": "v1/speech:longrunningrecognize", - "id": "speech.speech.longrunningrecognize", - "request": { - "$ref": "LongRunningRecognizeRequest" - }, - "description": "Performs asynchronous speech recognition: receive results via the\ngoogle.longrunning.Operations interface. Returns either an\n`Operation.error` or an `Operation.response` which contains\na `LongRunningRecognizeResponse` message." + "parameters": {} }, "recognize": { - "httpMethod": "POST", - "parameterOrder": [], + "request": { + "$ref": "RecognizeRequest" + }, + "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed.", "response": { "$ref": "RecognizeResponse" }, + "parameterOrder": [], + "httpMethod": "POST", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": {}, "flatPath": "v1/speech:recognize", - "path": "v1/speech:recognize", "id": "speech.speech.recognize", - "request": { - "$ref": "RecognizeRequest" - }, - "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed." + "path": "v1/speech:recognize" } } } }, "parameters": { - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, "upload_protocol": { + "type": "string", "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." }, "prettyPrint": { + "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" }, "fields": { - "description": "Selector specifying which fields to include in a partial response.", "type": "string", - "location": "query" + "location": "query", + "description": "Selector specifying which fields to include in a partial response." }, "uploadType": { "location": "query", @@ -198,48 +188,48 @@ "type": "string" }, "callback": { + "type": "string", "location": "query", - "description": "JSONP", - "type": "string" + "description": "JSONP" }, "$.xgafv": { - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" ], - "location": "query" + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format." }, "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], "type": "string", "enumDescriptions": [ "Responses with Content-Type of application/json", "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ] }, "key": { + "location": "query", "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "type": "string" }, "access_token": { + "type": "string", "location": "query", - "description": "OAuth access token.", - "type": "string" + "description": "OAuth access token." }, "quotaUser": { "location": "query", @@ -247,31 +237,74 @@ "type": "string" }, "pp": { + "location": "query", "description": "Pretty-print response.", "default": "true", - "type": "boolean", - "location": "query" + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" } }, "version": "v1", "baseUrl": "https://speech.googleapis.com/", "kind": "discovery#restDescription", - "description": "Converts audio to text by applying powerful neural network models.", "servicePath": "", + "description": "Converts audio to text by applying powerful neural network models.", "basePath": "", - "revision": "20170822", - "documentationLink": "https://cloud.google.com/speech/", "id": "speech:v1", + "documentationLink": "https://cloud.google.com/speech/", + "revision": "20170829", "discoveryVersion": "v1", "version_module": true, "schemas": { + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "details": { + "items": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "type": "object" + }, + "type": "array", + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use." + }, + "code": { + "type": "integer", + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code." + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status" + }, + "Empty": { + "type": "object", + "properties": {}, + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`." + }, "RecognizeRequest": { "description": "The top-level message sent by the client for the `Recognize` method.", "type": "object", "properties": { "audio": { - "description": "*Required* The audio data to be recognized.", - "$ref": "RecognitionAudio" + "$ref": "RecognitionAudio", + "description": "*Required* The audio data to be recognized." }, "config": { "$ref": "RecognitionConfig", @@ -281,43 +314,31 @@ "id": "RecognizeRequest" }, "ListOperationsResponse": { + "type": "object", "properties": { - "nextPageToken": { - "description": "The standard List next-page token.", - "type": "string" - }, "operations": { "description": "A list of operations that matches the specified filter in the request.", "items": { "$ref": "Operation" }, "type": "array" + }, + "nextPageToken": { + "type": "string", + "description": "The standard List next-page token." } }, "id": "ListOperationsResponse", - "description": "The response message for Operations.ListOperations.", - "type": "object" - }, - "SpeechContext": { - "properties": { - "phrases": { - "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "SpeechContext", - "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.", - "type": "object" + "description": "The response message for Operations.ListOperations." }, "SpeechRecognitionAlternative": { + "description": "Alternative hypotheses (a.k.a. n-best list).", + "type": "object", "properties": { "confidence": { + "type": "number", "format": "float", - "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate or consistent.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.", - "type": "number" + "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate or consistent.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set." }, "words": { "description": "*Output-only* A list of word-specific information for each recognized word.", @@ -327,24 +348,36 @@ "type": "array" }, "transcript": { - "description": "*Output-only* Transcript text representing the words that the user spoke.", - "type": "string" + "type": "string", + "description": "*Output-only* Transcript text representing the words that the user spoke." } }, - "id": "SpeechRecognitionAlternative", - "description": "Alternative hypotheses (a.k.a. n-best list).", - "type": "object" + "id": "SpeechRecognitionAlternative" + }, + "SpeechContext": { + "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.", + "type": "object", + "properties": { + "phrases": { + "items": { + "type": "string" + }, + "type": "array", + "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content)." + } + }, + "id": "SpeechContext" }, "SpeechRecognitionResult": { "description": "A speech recognition result corresponding to a portion of the audio.", "type": "object", "properties": { "alternatives": { - "description": "*Output-only* May contain one or more recognition hypotheses (up to the\nmaximum specified in `max_alternatives`).\nThese alternatives are ordered in terms of accuracy, with the top (first)\nalternative being the most probable, as ranked by the recognizer.", "items": { "$ref": "SpeechRecognitionAlternative" }, - "type": "array" + "type": "array", + "description": "*Output-only* May contain one or more recognition hypotheses (up to the\nmaximum specified in `max_alternatives`).\nThese alternatives are ordered in terms of accuracy, with the top (first)\nalternative being the most probable, as ranked by the recognizer." } }, "id": "SpeechRecognitionResult" @@ -366,7 +399,6 @@ "id": "RecognitionAudio" }, "LongRunningRecognizeRequest": { - "description": "The top-level message sent by the client for the `LongRunningRecognize`\nmethod.", "type": "object", "properties": { "audio": { @@ -374,13 +406,16 @@ "description": "*Required* The audio data to be recognized." }, "config": { - "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request.", - "$ref": "RecognitionConfig" + "$ref": "RecognitionConfig", + "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request." } }, - "id": "LongRunningRecognizeRequest" + "id": "LongRunningRecognizeRequest", + "description": "The top-level message sent by the client for the `LongRunningRecognize`\nmethod." }, "RecognizeResponse": { + "description": "The only message returned to the client by the `Recognize` method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.", + "type": "object", "properties": { "results": { "description": "*Output-only* Sequential list of transcription results corresponding to\nsequential portions of audio.", @@ -390,21 +425,28 @@ "type": "array" } }, - "id": "RecognizeResponse", - "description": "The only message returned to the client by the `Recognize` method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.", - "type": "object" + "id": "RecognizeResponse" }, "CancelOperationRequest": { - "properties": {}, - "id": "CancelOperationRequest", "description": "The request message for Operations.CancelOperation.", - "type": "object" + "type": "object", + "properties": {}, + "id": "CancelOperationRequest" }, "Operation": { + "type": "object", "properties": { + "metadata": { + "additionalProperties": { + "type": "any", + "description": "Properties of the object. Contains field @type with type URL." + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" + }, "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" + "type": "boolean", + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable." }, "response": { "additionalProperties": { @@ -415,41 +457,43 @@ "type": "object" }, "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" + "type": "string", + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`." }, "error": { "$ref": "Status", "description": "The error result of the operation in case of failure or cancellation." - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" } }, "id": "Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object" + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." }, "RecognitionConfig": { + "description": "Provides information to the recognizer that specifies how to process the\nrequest.", + "type": "object", "properties": { + "sampleRateHertz": { + "type": "integer", + "format": "int32", + "description": "*Required* Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling)." + }, "enableWordTimeOffsets": { - "description": "*Optional* If `true`, the top result includes a list of words and\nthe start and end time offsets (timestamps) for those words. If\n`false`, no word-level time offset information is returned. The default is\n`false`.", - "type": "boolean" + "type": "boolean", + "description": "*Optional* If `true`, the top result includes a list of words and\nthe start and end time offsets (timestamps) for those words. If\n`false`, no word-level time offset information is returned. The default is\n`false`." }, "maxAlternatives": { + "type": "integer", "format": "int32", - "description": "*Optional* Maximum number of recognition hypotheses to be returned.\nSpecifically, the maximum number of `SpeechRecognitionAlternative` messages\nwithin each `SpeechRecognitionResult`.\nThe server may return fewer than `max_alternatives`.\nValid values are `0`-`30`. A value of `0` or `1` will return a maximum of\none. If omitted, will return a maximum of one.", - "type": "integer" + "description": "*Optional* Maximum number of recognition hypotheses to be returned.\nSpecifically, the maximum number of `SpeechRecognitionAlternative` messages\nwithin each `SpeechRecognitionResult`.\nThe server may return fewer than `max_alternatives`.\nValid values are `0`-`30`. A value of `0` or `1` will return a maximum of\none. If omitted, will return a maximum of one." }, "languageCode": { "description": "*Required* The language of the supplied audio as a\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.\nExample: \"en-US\".\nSee [Language Support](https://cloud.google.com/speech/docs/languages)\nfor a list of the currently supported language codes.", "type": "string" }, + "profanityFilter": { + "type": "boolean", + "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out." + }, "speechContexts": { "description": "*Optional* A means to provide context to assist the speech recognition.", "items": { @@ -457,22 +501,7 @@ }, "type": "array" }, - "profanityFilter": { - "description": "*Optional* If set to `true`, the server will attempt to filter out\nprofanities, replacing all but the initial character in each filtered word\nwith asterisks, e.g. \"f***\". If set to `false` or omitted, profanities\nwon't be filtered out.", - "type": "boolean" - }, "encoding": { - "enum": [ - "ENCODING_UNSPECIFIED", - "LINEAR16", - "FLAC", - "MULAW", - "AMR", - "AMR_WB", - "OGG_OPUS", - "SPEEX_WITH_HEADER_BYTE" - ], - "description": "*Required* Encoding of audio data sent in all `RecognitionAudio` messages.", "type": "string", "enumDescriptions": [ "Not specified. Will return result google.rpc.Code.INVALID_ARGUMENT.", @@ -483,20 +512,30 @@ "Adaptive Multi-Rate Wideband codec. `sample_rate_hertz` must be 16000.", "Opus encoded audio frames in Ogg container\n([OggOpus](https://wiki.xiph.org/OggOpus)).\n`sample_rate_hertz` must be 16000.", "Although the use of lossy encodings is not recommended, if a very low\nbitrate encoding is required, `OGG_OPUS` is highly preferred over\nSpeex encoding. The [Speex](https://speex.org/) encoding supported by\nCloud Speech API has a header byte in each block, as in MIME type\n`audio/x-speex-with-header-byte`.\nIt is a variant of the RTP Speex encoding defined in\n[RFC 5574](https://tools.ietf.org/html/rfc5574).\nThe stream is a sequence of blocks, one block per RTP packet. Each block\nstarts with a byte containing the length of the block, in bytes, followed\nby one or more frames of Speex data, padded to an integral number of\nbytes (octets) as specified in RFC 5574. In other words, each RTP header\nis replaced with a single byte containing the block length. Only Speex\nwideband is supported. `sample_rate_hertz` must be 16000." - ] - }, - "sampleRateHertz": { - "format": "int32", - "description": "*Required* Sample rate in Hertz of the audio data sent in all\n`RecognitionAudio` messages. Valid values are: 8000-48000.\n16000 is optimal. For best results, set the sampling rate of the audio\nsource to 16000 Hz. If that's not possible, use the native sample rate of\nthe audio source (instead of re-sampling).", - "type": "integer" + ], + "enum": [ + "ENCODING_UNSPECIFIED", + "LINEAR16", + "FLAC", + "MULAW", + "AMR", + "AMR_WB", + "OGG_OPUS", + "SPEEX_WITH_HEADER_BYTE" + ], + "description": "*Required* Encoding of audio data sent in all `RecognitionAudio` messages." } }, - "id": "RecognitionConfig", - "description": "Provides information to the recognizer that specifies how to process the\nrequest.", - "type": "object" + "id": "RecognitionConfig" }, "WordInfo": { + "description": "Word-specific information for recognized words. Word information is only\nincluded in the response when certain request parameters are set, such\nas `enable_word_time_offsets`.", + "type": "object", "properties": { + "word": { + "type": "string", + "description": "*Output-only* The word corresponding to this set of information." + }, "endTime": { "format": "google-duration", "description": "*Output-only* Time offset relative to the beginning of the audio,\nand corresponding to the end of the spoken word.\nThis field is only set if `enable_word_time_offsets=true` and only\nin the top hypothesis.\nThis is an experimental feature and the accuracy of the time offset can\nvary.", @@ -506,48 +545,9 @@ "format": "google-duration", "description": "*Output-only* Time offset relative to the beginning of the audio,\nand corresponding to the start of the spoken word.\nThis field is only set if `enable_word_time_offsets=true` and only\nin the top hypothesis.\nThis is an experimental feature and the accuracy of the time offset can\nvary.", "type": "string" - }, - "word": { - "description": "*Output-only* The word corresponding to this set of information.", - "type": "string" } }, - "id": "WordInfo", - "description": "Word-specific information for recognized words. Word information is only\nincluded in the response when certain request parameters are set, such\nas `enable_word_time_offsets`.", - "type": "object" - }, - "Status": { - "properties": { - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - }, - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - } - }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" + "id": "WordInfo" } }, "protocol": "rest", diff --git a/vendor/google.golang.org/api/speech/v1/speech-gen.go b/vendor/google.golang.org/api/speech/v1/speech-gen.go index 9ec1c92..aa15c73 100644 --- a/vendor/google.golang.org/api/speech/v1/speech-gen.go +++ b/vendor/google.golang.org/api/speech/v1/speech-gen.go @@ -197,8 +197,8 @@ func (s *LongRunningRecognizeRequest) MarshalJSON() ([]byte, error) { type Operation struct { // Done: If the value is `false`, it means the operation is still in // progress. - // If true, the operation is completed, and either `error` or `response` - // is + // If `true`, the operation is completed, and either `error` or + // `response` is // available. Done bool `json:"done,omitempty"` diff --git a/vendor/google.golang.org/api/speech/v1beta1/speech-api.json b/vendor/google.golang.org/api/speech/v1beta1/speech-api.json index 35a020d..e9540df 100644 --- a/vendor/google.golang.org/api/speech/v1beta1/speech-api.json +++ b/vendor/google.golang.org/api/speech/v1beta1/speech-api.json @@ -1,77 +1,133 @@ { + "parameters": { + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + } + }, "version": "v1beta1", "baseUrl": "https://speech.googleapis.com/", - "kind": "discovery#restDescription", "servicePath": "", + "kind": "discovery#restDescription", "description": "Converts audio to text by applying powerful neural network models.", "basePath": "", "id": "speech:v1beta1", + "revision": "20170829", "documentationLink": "https://cloud.google.com/speech/", - "revision": "20170822", "discoveryVersion": "v1", "version_module": true, "schemas": { - "SyncRecognizeRequest": { - "description": "The top-level message sent by the client for the `SyncRecognize` method.", + "SpeechRecognitionAlternative": { + "description": "Alternative hypotheses (a.k.a. n-best list).", "type": "object", "properties": { - "audio": { - "description": "*Required* The audio data to be recognized.", - "$ref": "RecognitionAudio" - }, - "config": { - "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request.", - "$ref": "RecognitionConfig" - } - }, - "id": "SyncRecognizeRequest" - }, - "Status": { - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object", - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - } - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "transcript": { + "description": "*Output-only* Transcript text representing the words that the user spoke.", "type": "string" + }, + "confidence": { + "format": "float", + "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate, or even set, in\nany of the results.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.", + "type": "number" } }, - "id": "Status" + "id": "SpeechRecognitionAlternative" }, - "SyncRecognizeResponse": { - "description": "The only message returned to the client by `SyncRecognize`. method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.", + "SpeechContext": { + "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.", "type": "object", "properties": { - "results": { - "description": "*Output-only* Sequential list of transcription results corresponding to\nsequential portions of audio.", + "phrases": { + "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).", "items": { - "$ref": "SpeechRecognitionResult" + "type": "string" }, "type": "array" } }, - "id": "SyncRecognizeResponse" - }, - "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", - "properties": {}, - "id": "Empty" + "id": "SpeechContext" }, "ListOperationsResponse": { "description": "The response message for Operations.ListOperations.", @@ -91,37 +147,8 @@ }, "id": "ListOperationsResponse" }, - "SpeechContext": { - "description": "Provides \"hints\" to the speech recognizer to favor specific words and phrases\nin the results.", - "type": "object", - "properties": { - "phrases": { - "description": "*Optional* A list of strings containing words and phrases \"hints\" so that\nthe speech recognition is more likely to recognize them. This can be used\nto improve the accuracy for specific words and phrases, for example, if\nspecific commands are typically spoken by the user. This can also be used\nto add additional words to the vocabulary of the recognizer. See\n[usage limits](https://cloud.google.com/speech/limits#content).", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "SpeechContext" - }, - "SpeechRecognitionAlternative": { - "description": "Alternative hypotheses (a.k.a. n-best list).", - "type": "object", - "properties": { - "confidence": { - "format": "float", - "description": "*Output-only* The confidence estimate between 0.0 and 1.0. A higher number\nindicates an estimated greater likelihood that the recognized words are\ncorrect. This field is typically provided only for the top hypothesis, and\nonly for `is_final=true` results. Clients should not rely on the\n`confidence` field as it is not guaranteed to be accurate, or even set, in\nany of the results.\nThe default of 0.0 is a sentinel value indicating `confidence` was not set.", - "type": "number" - }, - "transcript": { - "description": "*Output-only* Transcript text representing the words that the user spoke.", - "type": "string" - } - }, - "id": "SpeechRecognitionAlternative" - }, "SpeechRecognitionResult": { + "id": "SpeechRecognitionResult", "description": "A speech recognition result corresponding to a portion of the audio.", "type": "object", "properties": { @@ -132,10 +159,10 @@ }, "type": "array" } - }, - "id": "SpeechRecognitionResult" + } }, "RecognitionAudio": { + "id": "RecognitionAudio", "description": "Contains audio data in the encoding specified in the `RecognitionConfig`.\nEither `content` or `uri` must be supplied. Supplying both or neither\nreturns google.rpc.Code.INVALID_ARGUMENT. See\n[audio limits](https://cloud.google.com/speech/limits#content).", "type": "object", "properties": { @@ -148,10 +175,10 @@ "description": "URI that points to a file that contains audio data bytes as specified in\n`RecognitionConfig`. Currently, only Google Cloud Storage URIs are\nsupported, which must be specified in the following format:\n`gs://bucket_name/object_name` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](https://cloud.google.com/storage/docs/reference-uris).", "type": "string" } - }, - "id": "RecognitionAudio" + } }, "AsyncRecognizeRequest": { + "id": "AsyncRecognizeRequest", "description": "The top-level message sent by the client for the `AsyncRecognize` method.", "type": "object", "properties": { @@ -163,45 +190,45 @@ "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request.", "$ref": "RecognitionConfig" } - }, - "id": "AsyncRecognizeRequest" + } }, "Operation": { + "id": "Operation", "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", "type": "object", "properties": { + "name": { + "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", + "type": "string" + }, "error": { "$ref": "Status", "description": "The error result of the operation in case of failure or cancellation." }, "metadata": { - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } + }, + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", + "type": "object" }, "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", "type": "boolean" }, "response": { - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", - "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" - } - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that\noriginally returns it. If you use the default HTTP mapping, the\n`name` should have the format of `operations/some/unique/name`.", - "type": "string" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" } - }, - "id": "Operation" + } }, "RecognitionConfig": { + "id": "RecognitionConfig", "description": "Provides information to the recognizer that specifies how to process the\nrequest.", "type": "object", "properties": { @@ -247,8 +274,69 @@ "description": "*Optional* A means to provide context to assist the speech recognition.", "$ref": "SpeechContext" } + } + }, + "SyncRecognizeRequest": { + "description": "The top-level message sent by the client for the `SyncRecognize` method.", + "type": "object", + "properties": { + "audio": { + "$ref": "RecognitionAudio", + "description": "*Required* The audio data to be recognized." + }, + "config": { + "description": "*Required* Provides information to the recognizer that specifies how to\nprocess the request.", + "$ref": "RecognitionConfig" + } }, - "id": "RecognitionConfig" + "id": "SyncRecognizeRequest" + }, + "Status": { + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" + }, + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + } + } + }, + "SyncRecognizeResponse": { + "description": "The only message returned to the client by `SyncRecognize`. method. It\ncontains the result as zero or more sequential `SpeechRecognitionResult`\nmessages.", + "type": "object", + "properties": { + "results": { + "description": "*Output-only* Sequential list of transcription results corresponding to\nsequential portions of audio.", + "items": { + "$ref": "SpeechRecognitionResult" + }, + "type": "array" + } + }, + "id": "SyncRecognizeResponse" + }, + "Empty": { + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {} } }, "protocol": "rest", @@ -275,43 +363,7 @@ "resources": { "operations": { "methods": { - "cancel": { - "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "POST", - "parameters": { - "name": { - "location": "path", - "description": "The name of the operation resource to be cancelled.", - "type": "string", - "required": true, - "pattern": "^[^/]+$" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1beta1/operations/{operationsId}:cancel", - "id": "speech.operations.cancel", - "path": "v1beta1/operations/{+name}:cancel" - }, "delete": { - "flatPath": "v1beta1/operations/{operationsId}", - "id": "speech.operations.delete", - "path": "v1beta1/operations/{+name}", - "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], @@ -323,17 +375,27 @@ "pattern": "^[^/]+$", "location": "path" } - } - }, - "get": { - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "httpMethod": "GET", + }, + "flatPath": "v1beta1/operations/{operationsId}", + "id": "speech.operations.delete", + "path": "v1beta1/operations/{+name}", + "description": "Deletes a long-running operation. This method indicates that the client is\nno longer interested in the operation result. It does not cancel the\noperation. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`.", "parameterOrder": [ "name" ], + "httpMethod": "DELETE", + "response": { + "$ref": "Empty" + } + }, + "get": { "response": { "$ref": "Operation" }, + "parameterOrder": [ + "name" + ], + "httpMethod": "GET", "parameters": { "name": { "description": "The name of the operation resource.", @@ -347,34 +409,31 @@ "https://www.googleapis.com/auth/cloud-platform" ], "flatPath": "v1beta1/operations/{operationsId}", + "id": "speech.operations.get", "path": "v1beta1/operations/{+name}", - "id": "speech.operations.get" + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice." }, "list": { - "flatPath": "v1beta1/operations", - "id": "speech.operations.list", - "path": "v1beta1/operations", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", + "httpMethod": "GET", "response": { "$ref": "ListOperationsResponse" }, "parameterOrder": [], - "httpMethod": "GET", "parameters": { "filter": { + "location": "query", "description": "The standard list filter.", - "type": "string", - "location": "query" + "type": "string" }, "pageToken": { + "location": "query", "description": "The standard list page token.", - "type": "string", - "location": "query" + "type": "string" }, "name": { - "location": "query", "description": "The name of the operation's parent resource.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { "format": "int32", @@ -385,13 +444,46 @@ }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" - ] + ], + "flatPath": "v1beta1/operations", + "path": "v1beta1/operations", + "id": "speech.operations.list", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id." + }, + "cancel": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "name" + ], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "name": { + "description": "The name of the operation resource to be cancelled.", + "type": "string", + "required": true, + "pattern": "^[^/]+$", + "location": "path" + } + }, + "flatPath": "v1beta1/operations/{operationsId}:cancel", + "id": "speech.operations.cancel", + "path": "v1beta1/operations/{+name}:cancel", + "description": "Starts asynchronous cancellation on a long-running operation. The server\nmakes a best effort to cancel the operation, but success is not\nguaranteed. If the server doesn't support this method, it returns\n`google.rpc.Code.UNIMPLEMENTED`. Clients can use\nOperations.GetOperation or\nother methods to check whether the cancellation succeeded or whether the\noperation completed despite cancellation. On successful cancellation,\nthe operation is not deleted; instead, it becomes an operation with\nan Operation.error value with a google.rpc.Status.code of 1,\ncorresponding to `Code.CANCELLED`." } } }, "speech": { "methods": { "asyncrecognize": { + "request": { + "$ref": "AsyncRecognizeRequest" + }, + "description": "Performs asynchronous speech recognition: receive results via the\n[google.longrunning.Operations]\n(/speech/reference/rest/v1beta1/operations#Operation)\ninterface. Returns either an\n`Operation.error` or an `Operation.response` which contains\nan `AsyncRecognizeResponse` message.", "response": { "$ref": "Operation" }, @@ -403,13 +495,11 @@ "parameters": {}, "flatPath": "v1beta1/speech:asyncrecognize", "id": "speech.speech.asyncrecognize", - "path": "v1beta1/speech:asyncrecognize", - "request": { - "$ref": "AsyncRecognizeRequest" - }, - "description": "Performs asynchronous speech recognition: receive results via the\n[google.longrunning.Operations]\n(/speech/reference/rest/v1beta1/operations#Operation)\ninterface. Returns either an\n`Operation.error` or an `Operation.response` which contains\nan `AsyncRecognizeResponse` message." + "path": "v1beta1/speech:asyncrecognize" }, "syncrecognize": { + "id": "speech.speech.syncrecognize", + "path": "v1beta1/speech:syncrecognize", "description": "Performs synchronous speech recognition: receive results after all audio\nhas been sent and processed.", "request": { "$ref": "SyncRecognizeRequest" @@ -423,99 +513,9 @@ "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "flatPath": "v1beta1/speech:syncrecognize", - "id": "speech.speech.syncrecognize", - "path": "v1beta1/speech:syncrecognize" + "flatPath": "v1beta1/speech:syncrecognize" } } } - }, - "parameters": { - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string", - "location": "query" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "$.xgafv": { - "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ] - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "alt": { - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query", - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string" - }, - "access_token": { - "description": "OAuth access token.", - "type": "string", - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - } } } diff --git a/vendor/google.golang.org/api/speech/v1beta1/speech-gen.go b/vendor/google.golang.org/api/speech/v1beta1/speech-gen.go index 941f437..e5a30d1 100644 --- a/vendor/google.golang.org/api/speech/v1beta1/speech-gen.go +++ b/vendor/google.golang.org/api/speech/v1beta1/speech-gen.go @@ -191,8 +191,8 @@ func (s *ListOperationsResponse) MarshalJSON() ([]byte, error) { type Operation struct { // Done: If the value is `false`, it means the operation is still in // progress. - // If true, the operation is completed, and either `error` or `response` - // is + // If `true`, the operation is completed, and either `error` or + // `response` is // available. Done bool `json:"done,omitempty"` diff --git a/vendor/google.golang.org/api/storagetransfer/v1/storagetransfer-api.json b/vendor/google.golang.org/api/storagetransfer/v1/storagetransfer-api.json index ad3f0e7..b222e93 100644 --- a/vendor/google.golang.org/api/storagetransfer/v1/storagetransfer-api.json +++ b/vendor/google.golang.org/api/storagetransfer/v1/storagetransfer-api.json @@ -1,21 +1,19 @@ { - "name": "storagetransfer", - "batchPath": "batch", - "revision": "20170824", - "documentationLink": "https://cloud.google.com/storage/transfer", "id": "storagetransfer:v1", + "documentationLink": "https://cloud.google.com/storage/transfer", + "revision": "20170824", "title": "Google Storage Transfer API", - "discoveryVersion": "v1", "ownerName": "Google", + "discoveryVersion": "v1", "version_module": true, "resources": { "googleServiceAccounts": { "methods": { "get": { + "httpMethod": "GET", "response": { "$ref": "GoogleServiceAccount" }, - "httpMethod": "GET", "parameterOrder": [ "projectId" ], @@ -24,50 +22,145 @@ ], "parameters": { "projectId": { - "location": "path", - "description": "The ID of the Google Cloud Platform Console project that the Google service\naccount is associated with.\nRequired.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "The ID of the Google Cloud Platform Console project that the Google service\naccount is associated with.\nRequired." } }, "flatPath": "v1/googleServiceAccounts/{projectId}", - "id": "storagetransfer.googleServiceAccounts.get", "path": "v1/googleServiceAccounts/{projectId}", + "id": "storagetransfer.googleServiceAccounts.get", "description": "Returns the Google service account that is used by Storage Transfer\nService to access buckets in the project where transfers\nrun or in other projects. Each Google service account is associated\nwith one Google Cloud Platform Console project. Users\nshould add this service account to the Google Cloud Storage bucket\nACLs to grant access to Storage Transfer Service. This service\naccount is created and owned by Storage Transfer Service and can\nonly be used by Storage Transfer Service." } } }, "transferOperations": { "methods": { - "resume": { + "pause": { + "path": "v1/{+name}:pause", + "id": "storagetransfer.transferOperations.pause", + "description": "Pauses a transfer operation.", + "request": { + "$ref": "PauseTransferOperationRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + }, + "parameters": { + "name": { + "location": "path", + "description": "The name of the transfer operation.\nRequired.", + "type": "string", + "required": true, + "pattern": "^transferOperations/.+$" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/transferOperations/{transferOperationsId}:pause" + }, + "delete": { + "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", + "httpMethod": "DELETE", "response": { "$ref": "Empty" }, "parameterOrder": [ "name" ], - "httpMethod": "POST", + "parameters": { + "name": { + "description": "The name of the operation resource to be deleted.", + "type": "string", + "required": true, + "pattern": "^transferOperations/.+$", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "flatPath": "v1/transferOperations/{transferOperationsId}", + "path": "v1/{+name}", + "id": "storagetransfer.transferOperations.delete" + }, + "list": { + "path": "v1/{+name}", + "id": "storagetransfer.transferOperations.list", + "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", + "httpMethod": "GET", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "ListOperationsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "pageToken": { + "description": "The list page token.", + "type": "string", + "location": "query" + }, + "name": { + "description": "The value `transferOperations`.", + "type": "string", + "required": true, + "pattern": "^transferOperations$", + "location": "path" + }, + "pageSize": { + "location": "query", + "format": "int32", + "description": "The list page size. The max allowed value is 256.", + "type": "integer" + }, + "filter": { + "location": "query", + "description": "A list of query parameters specified as JSON text in the form of {\\\"project_id\\\" : \\\"my_project_id\\\", \\\"job_names\\\" : [\\\"jobid1\\\", \\\"jobid2\\\",...], \\\"operation_names\\\" : [\\\"opid1\\\", \\\"opid2\\\",...], \\\"transfer_statuses\\\":[\\\"status1\\\", \\\"status2\\\",...]}. Since `job_names`, `operation_names`, and `transfer_statuses` support multiple values, they must be specified with array notation. `job_names`, `operation_names`, and `transfer_statuses` are optional.", + "type": "string" + } + }, + "flatPath": "v1/transferOperations" + }, + "resume": { "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "name": { - "pattern": "^transferOperations/.+$", - "location": "path", "description": "The name of the transfer operation.\nRequired.", "type": "string", - "required": true + "required": true, + "pattern": "^transferOperations/.+$", + "location": "path" } }, "flatPath": "v1/transferOperations/{transferOperationsId}:resume", - "id": "storagetransfer.transferOperations.resume", "path": "v1/{+name}:resume", + "id": "storagetransfer.transferOperations.resume", "request": { "$ref": "ResumeTransferOperationRequest" }, - "description": "Resumes a transfer operation that is paused." + "description": "Resumes a transfer operation that is paused.", + "httpMethod": "POST", + "parameterOrder": [ + "name" + ], + "response": { + "$ref": "Empty" + } }, "cancel": { + "description": "Cancels a transfer. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation.", "response": { "$ref": "Empty" }, @@ -89,142 +182,53 @@ }, "flatPath": "v1/transferOperations/{transferOperationsId}:cancel", "id": "storagetransfer.transferOperations.cancel", - "path": "v1/{+name}:cancel", - "description": "Cancels a transfer. Use the get method to check whether the cancellation succeeded or whether the operation completed despite cancellation." + "path": "v1/{+name}:cancel" }, "get": { - "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", - "httpMethod": "GET", - "parameterOrder": [ - "name" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" ], + "parameters": { + "name": { + "type": "string", + "required": true, + "pattern": "^transferOperations/.+$", + "location": "path", + "description": "The name of the operation resource." + } + }, + "flatPath": "v1/transferOperations/{transferOperationsId}", + "id": "storagetransfer.transferOperations.get", + "path": "v1/{+name}", + "description": "Gets the latest state of a long-running operation. Clients can use this\nmethod to poll the operation result at intervals as recommended by the API\nservice.", "response": { "$ref": "Operation" }, - "parameters": { - "name": { - "description": "The name of the operation resource.", - "type": "string", - "required": true, - "pattern": "^transferOperations/.+$", - "location": "path" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/transferOperations/{transferOperationsId}", - "path": "v1/{+name}", - "id": "storagetransfer.transferOperations.get" - }, - "pause": { - "response": { - "$ref": "Empty" - }, "parameterOrder": [ "name" ], - "httpMethod": "POST", - "parameters": { - "name": { - "pattern": "^transferOperations/.+$", - "location": "path", - "description": "The name of the transfer operation.\nRequired.", - "type": "string", - "required": true - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/transferOperations/{transferOperationsId}:pause", - "id": "storagetransfer.transferOperations.pause", - "path": "v1/{+name}:pause", - "description": "Pauses a transfer operation.", - "request": { - "$ref": "PauseTransferOperationRequest" - } - }, - "delete": { - "description": "This method is not supported and the server returns `UNIMPLEMENTED`.", - "response": { - "$ref": "Empty" - }, - "parameterOrder": [ - "name" - ], - "httpMethod": "DELETE", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "name": { - "pattern": "^transferOperations/.+$", - "location": "path", - "description": "The name of the operation resource to be deleted.", - "type": "string", - "required": true - } - }, - "flatPath": "v1/transferOperations/{transferOperationsId}", - "id": "storagetransfer.transferOperations.delete", - "path": "v1/{+name}" - }, - "list": { - "flatPath": "v1/transferOperations", - "path": "v1/{+name}", - "id": "storagetransfer.transferOperations.list", - "description": "Lists operations that match the specified filter in the request. If the\nserver doesn't support this method, it returns `UNIMPLEMENTED`.\n\nNOTE: the `name` binding allows API services to override the binding\nto use different resource name schemes, such as `users/*/operations`. To\noverride the binding, API services can add a binding such as\n`\"/v1/{name=users/*}/operations\"` to their service configuration.\nFor backwards compatibility, the default name includes the operations\ncollection id, however overriding users must ensure the name binding\nis the parent resource, without the operations collection id.", - "httpMethod": "GET", - "parameterOrder": [ - "name" - ], - "response": { - "$ref": "ListOperationsResponse" - }, - "parameters": { - "pageToken": { - "location": "query", - "description": "The list page token.", - "type": "string" - }, - "name": { - "type": "string", - "required": true, - "pattern": "^transferOperations$", - "location": "path", - "description": "The value `transferOperations`." - }, - "pageSize": { - "location": "query", - "format": "int32", - "description": "The list page size. The max allowed value is 256.", - "type": "integer" - }, - "filter": { - "description": "A list of query parameters specified as JSON text in the form of {\\\"project_id\\\" : \\\"my_project_id\\\", \\\"job_names\\\" : [\\\"jobid1\\\", \\\"jobid2\\\",...], \\\"operation_names\\\" : [\\\"opid1\\\", \\\"opid2\\\",...], \\\"transfer_statuses\\\":[\\\"status1\\\", \\\"status2\\\",...]}. Since `job_names`, `operation_names`, and `transfer_statuses` support multiple values, they must be specified with array notation. `job_names`, `operation_names`, and `transfer_statuses` are optional.", - "type": "string", - "location": "query" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ] + "httpMethod": "GET" } } }, "transferJobs": { "methods": { "list": { + "flatPath": "v1/transferJobs", + "id": "storagetransfer.transferJobs.list", + "path": "v1/transferJobs", + "description": "Lists transfer jobs.", "response": { "$ref": "ListTransferJobsResponse" }, "parameterOrder": [], "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "parameters": { + "filter": { + "description": "A list of query parameters specified as JSON text in the form of\n{\"project_id\":\"my_project_id\",\n\"job_names\":[\"jobid1\",\"jobid2\",...],\n\"job_statuses\":[\"status1\",\"status2\",...]}.\nSince `job_names` and `job_statuses` support multiple values, their values\nmust be specified with array notation. `project_id` is required. `job_names`\nand `job_statuses` are optional. The valid values for `job_statuses` are\ncase-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.", + "type": "string", + "location": "query" + }, "pageToken": { "location": "query", "description": "The list page token.", @@ -235,26 +239,22 @@ "description": "The list page size. The max allowed value is 256.", "type": "integer", "location": "query" - }, - "filter": { - "location": "query", - "description": "A list of query parameters specified as JSON text in the form of\n{\"project_id\":\"my_project_id\",\n\"job_names\":[\"jobid1\",\"jobid2\",...],\n\"job_statuses\":[\"status1\",\"status2\",...]}.\nSince `job_names` and `job_statuses` support multiple values, their values\nmust be specified with array notation. `project_id` is required. `job_names`\nand `job_statuses` are optional. The valid values for `job_statuses` are\ncase-insensitive: `ENABLED`, `DISABLED`, and `DELETED`.", - "type": "string" } }, - "flatPath": "v1/transferJobs", - "id": "storagetransfer.transferJobs.list", - "path": "v1/transferJobs", - "description": "Lists transfer jobs." + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] }, "get": { - "description": "Gets a transfer job.", "httpMethod": "GET", + "parameterOrder": [ + "jobName" + ], "response": { "$ref": "TransferJob" }, - "parameterOrder": [ - "jobName" + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" ], "parameters": { "projectId": { @@ -263,122 +263,103 @@ "type": "string" }, "jobName": { - "pattern": "^transferJobs/.+$", - "location": "path", "description": "The job to get.\nRequired.", "type": "string", - "required": true + "required": true, + "pattern": "^transferJobs/.+$", + "location": "path" } }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform" - ], "flatPath": "v1/transferJobs/{transferJobsId}", "path": "v1/{+jobName}", - "id": "storagetransfer.transferJobs.get" + "id": "storagetransfer.transferJobs.get", + "description": "Gets a transfer job." }, "patch": { - "path": "v1/{+jobName}", + "flatPath": "v1/transferJobs/{transferJobsId}", "id": "storagetransfer.transferJobs.patch", + "path": "v1/{+jobName}", "description": "Updates a transfer job. Updating a job's transfer spec does not affect\ntransfer operations that are running already. Updating the scheduling\nof a job is not allowed.", "request": { "$ref": "UpdateTransferJobRequest" }, - "httpMethod": "PATCH", - "parameterOrder": [ - "jobName" - ], "response": { "$ref": "TransferJob" }, + "parameterOrder": [ + "jobName" + ], + "httpMethod": "PATCH", "parameters": { "jobName": { - "pattern": "^transferJobs/.+$", - "location": "path", "description": "The name of job to update.\nRequired.", "type": "string", - "required": true + "required": true, + "pattern": "^transferJobs/.+$", + "location": "path" } }, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" - ], - "flatPath": "v1/transferJobs/{transferJobsId}" + ] }, "create": { + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "TransferJob" }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], + "parameters": {}, "flatPath": "v1/transferJobs", - "id": "storagetransfer.transferJobs.create", "path": "v1/transferJobs", - "description": "Creates a transfer job that runs periodically.", + "id": "storagetransfer.transferJobs.create", "request": { "$ref": "TransferJob" - } + }, + "description": "Creates a transfer job that runs periodically." } } } }, "parameters": { - "bearer_token": { - "type": "string", - "location": "query", - "description": "OAuth bearer token." - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, "prettyPrint": { "description": "Returns response with indentations and line breaks.", "default": "true", "type": "boolean", "location": "query" }, - "fields": { + "uploadType": { "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string", - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ] + "type": "string" }, "callback": { + "location": "query", "description": "JSONP", - "type": "string", - "location": "query" + "type": "string" }, "alt": { - "description": "Data format for response.", - "default": "json", "enum": [ "json", "media", @@ -390,17 +371,19 @@ "Media download with context-dependent Content-Type", "Responses with Content-Type of application/x-protobuf" ], - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "location": "query", + "description": "Data format for response.", + "default": "json" }, "access_token": { - "description": "OAuth access token.", "type": "string", - "location": "query" + "location": "query", + "description": "OAuth access token." + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" }, "quotaUser": { "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", @@ -408,14 +391,217 @@ "location": "query" }, "pp": { - "location": "query", "description": "Pretty-print response.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" } }, "schemas": { + "ListTransferJobsResponse": { + "description": "Response from ListTransferJobs.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "The list next page token.", + "type": "string" + }, + "transferJobs": { + "items": { + "$ref": "TransferJob" + }, + "type": "array", + "description": "A list of transfer jobs." + } + }, + "id": "ListTransferJobsResponse" + }, + "UpdateTransferJobRequest": { + "properties": { + "projectId": { + "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.", + "type": "string" + }, + "updateTransferJobFieldMask": { + "format": "google-fieldmask", + "description": "The field mask of the fields in `transferJob` that are to be updated in\nthis request. Fields in `transferJob` that can be updated are:\n`description`, `transferSpec`, and `status`. To update the `transferSpec`\nof the job, a complete transfer specification has to be provided. An\nincomplete specification which misses any required fields will be rejected\nwith the error `INVALID_ARGUMENT`.", + "type": "string" + }, + "transferJob": { + "$ref": "TransferJob", + "description": "The job to update. `transferJob` is expected to specify only three fields:\n`description`, `transferSpec`, and `status`. An UpdateTransferJobRequest\nthat specifies other fields will be rejected with an error\n`INVALID_ARGUMENT`.\nRequired." + } + }, + "id": "UpdateTransferJobRequest", + "description": "Request passed to UpdateTransferJob.", + "type": "object" + }, + "ObjectConditions": { + "type": "object", + "properties": { + "excludePrefixes": { + "description": "`excludePrefixes` must follow the requirements described for\n`includePrefixes`.\n\nThe max size of `excludePrefixes` is 1000.", + "items": { + "type": "string" + }, + "type": "array" + }, + "minTimeElapsedSinceLastModification": { + "type": "string", + "format": "google-duration", + "description": "If unspecified, `minTimeElapsedSinceLastModification` takes a zero value\nand `maxTimeElapsedSinceLastModification` takes the maximum possible\nvalue of Duration. Objects that satisfy the object conditions\nmust either have a `lastModificationTime` greater or equal to\n`NOW` - `maxTimeElapsedSinceLastModification` and less than\n`NOW` - `minTimeElapsedSinceLastModification`, or not have a\n`lastModificationTime`." + }, + "maxTimeElapsedSinceLastModification": { + "format": "google-duration", + "description": "`maxTimeElapsedSinceLastModification` is the complement to\n`minTimeElapsedSinceLastModification`.", + "type": "string" + }, + "includePrefixes": { + "description": "If `includePrefixes` is specified, objects that satisfy the object\nconditions must have names that start with one of the `includePrefixes`\nand that do not start with any of the `excludePrefixes`. If `includePrefixes`\nis not specified, all objects except those that have names starting with\none of the `excludePrefixes` must satisfy the object conditions.\n\nRequirements:\n\n * Each include-prefix and exclude-prefix can contain any sequence of\n Unicode characters, of max length 1024 bytes when UTF8-encoded, and\n must not contain Carriage Return or Line Feed characters. Wildcard\n matching and regular expression matching are not supported.\n\n * Each include-prefix and exclude-prefix must omit the leading slash.\n For example, to include the `requests.gz` object in a transfer from\n `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include\n prefix as `logs/y=2015/requests.gz`.\n\n * None of the include-prefix or the exclude-prefix values can be empty,\n if specified.\n\n * Each include-prefix must include a distinct portion of the object\n namespace, i.e., no include-prefix may be a prefix of another\n include-prefix.\n\n * Each exclude-prefix must exclude a distinct portion of the object\n namespace, i.e., no exclude-prefix may be a prefix of another\n exclude-prefix.\n\n * If `includePrefixes` is specified, then each exclude-prefix must start\n with the value of a path explicitly included by `includePrefixes`.\n\nThe max size of `includePrefixes` is 1000.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "id": "ObjectConditions", + "description": "Conditions that determine which objects will be transferred." + }, + "Operation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `transferOperations/some/unique/name`.", + "type": "string" + }, + "error": { + "$ref": "Status", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Represents the transfer operation object.", + "type": "object" + } + }, + "id": "Operation" + }, + "TransferSpec": { + "description": "Configuration for running a transfer.", + "type": "object", + "properties": { + "transferOptions": { + "$ref": "TransferOptions", + "description": "If the option `deleteObjectsUniqueInSink` is `true`, object conditions\nbased on objects' `lastModificationTime` are ignored and do not exclude\nobjects in a data source or a data sink." + }, + "awsS3DataSource": { + "description": "An AWS S3 data source.", + "$ref": "AwsS3Data" + }, + "httpDataSource": { + "$ref": "HttpData", + "description": "An HTTP URL data source." + }, + "objectConditions": { + "$ref": "ObjectConditions", + "description": "Only objects that satisfy these object conditions are included in the set\nof data source and data sink objects. Object conditions based on\nobjects' `lastModificationTime` do not exclude objects in a data sink." + }, + "gcsDataSink": { + "$ref": "GcsData", + "description": "A Google Cloud Storage data sink." + }, + "gcsDataSource": { + "description": "A Google Cloud Storage data source.", + "$ref": "GcsData" + } + }, + "id": "TransferSpec" + }, + "TransferOptions": { + "description": "TransferOptions uses three boolean parameters to define the actions\nto be performed on objects in a transfer.", + "type": "object", + "properties": { + "deleteObjectsFromSourceAfterTransfer": { + "type": "boolean", + "description": "Whether objects should be deleted from the source after they are\ntransferred to the sink. Note that this option and\n`deleteObjectsUniqueInSink` are mutually exclusive." + }, + "deleteObjectsUniqueInSink": { + "description": "Whether objects that exist only in the sink should be deleted. Note that\nthis option and `deleteObjectsFromSourceAfterTransfer` are mutually\nexclusive.", + "type": "boolean" + }, + "overwriteObjectsAlreadyExistingInSink": { + "type": "boolean", + "description": "Whether overwriting objects that already exist in the sink is allowed." + } + }, + "id": "TransferOptions" + }, + "ResumeTransferOperationRequest": { + "type": "object", + "properties": {}, + "id": "ResumeTransferOperationRequest", + "description": "Request passed to ResumeTransferOperation." + }, + "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", + "properties": { + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + } + }, + "id": "Status" + }, "ListOperationsResponse": { + "id": "ListOperationsResponse", "description": "The response message for Operations.ListOperations.", "type": "object", "properties": { @@ -430,8 +616,7 @@ }, "type": "array" } - }, - "id": "ListOperationsResponse" + } }, "GoogleServiceAccount": { "description": "Google service account", @@ -445,33 +630,34 @@ "id": "GoogleServiceAccount" }, "TimeOfDay": { - "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.", - "type": "object", "properties": { - "minutes": { - "format": "int32", - "description": "Minutes of hour of day. Must be from 0 to 59.", - "type": "integer" - }, "hours": { - "type": "integer", "format": "int32", - "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time." + "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose\nto allow the value \"24:00:00\" for scenarios like business closing time.", + "type": "integer" }, "nanos": { + "type": "integer", "format": "int32", - "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.", - "type": "integer" + "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999." }, "seconds": { "format": "int32", "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may\nallow the value 60 if it allows leap-seconds.", "type": "integer" + }, + "minutes": { + "format": "int32", + "description": "Minutes of hour of day. Must be from 0 to 59.", + "type": "integer" } }, - "id": "TimeOfDay" + "id": "TimeOfDay", + "description": "Represents a time of day. The date and time zone are either not significant\nor are specified elsewhere. An API may choose to allow leap seconds. Related\ntypes are google.type.Date and `google.protobuf.Timestamp`.", + "type": "object" }, "ErrorLogEntry": { + "id": "ErrorLogEntry", "description": "An entry describing an error that has occurred.", "type": "object", "properties": { @@ -486,8 +672,7 @@ "description": "A URL that refers to the target (a data source, a data sink,\nor an object) with which the error is associated.\nRequired.", "type": "string" } - }, - "id": "ErrorLogEntry" + } }, "TransferJob": { "description": "This resource represents the configuration of a transfer job that runs\nperiodically.", @@ -523,8 +708,8 @@ ] }, "schedule": { - "$ref": "Schedule", - "description": "Schedule specification.\nRequired." + "description": "Schedule specification.\nRequired.", + "$ref": "Schedule" }, "deletionTime": { "format": "google-datetime", @@ -532,17 +717,17 @@ "type": "string" }, "name": { - "description": "A globally unique name assigned by Storage Transfer Service when the\njob is created. This field should be left empty in requests to create a new\ntransfer job; otherwise, the requests result in an `INVALID_ARGUMENT`\nerror.", + "type": "string", + "description": "A globally unique name assigned by Storage Transfer Service when the\njob is created. This field should be left empty in requests to create a new\ntransfer job; otherwise, the requests result in an `INVALID_ARGUMENT`\nerror." + }, + "projectId": { + "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.", "type": "string" }, "lastModificationTime": { "format": "google-datetime", "description": "This field cannot be changed by user requests.", "type": "string" - }, - "projectId": { - "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.", - "type": "string" } }, "id": "TransferJob" @@ -552,12 +737,12 @@ "type": "object", "properties": { "scheduleEndDate": { - "description": "The last day the recurring transfer will be run. If `scheduleEndDate`\nis the same as `scheduleStartDate`, the transfer will be executed only\nonce.", - "$ref": "Date" + "$ref": "Date", + "description": "The last day the recurring transfer will be run. If `scheduleEndDate`\nis the same as `scheduleStartDate`, the transfer will be executed only\nonce." }, "startTimeOfDay": { - "description": "The time in UTC at which the transfer will be scheduled to start in a day.\nTransfers may start later than this time. If not specified, recurring and\none-time transfers that are scheduled to run today will run immediately;\nrecurring transfers that are scheduled to run on a future date will start\nat approximately midnight UTC on that date. Note that when configuring a\ntransfer with the Cloud Platform Console, the transfer's start time in a\nday is specified in your local timezone.", - "$ref": "TimeOfDay" + "$ref": "TimeOfDay", + "description": "The time in UTC at which the transfer will be scheduled to start in a day.\nTransfers may start later than this time. If not specified, recurring and\none-time transfers that are scheduled to run today will run immediately;\nrecurring transfers that are scheduled to run on a future date will start\nat approximately midnight UTC on that date. Note that when configuring a\ntransfer with the Cloud Platform Console, the transfer's start time in a\nday is specified in your local timezone." }, "scheduleStartDate": { "$ref": "Date", @@ -567,9 +752,15 @@ "id": "Schedule" }, "Date": { + "id": "Date", "description": "Represents a whole calendar date, e.g. date of birth. The time of day and\ntime zone are either specified elsewhere or are not significant. The date\nis relative to the Proleptic Gregorian Calendar. The day may be 0 to\nrepresent a year and month where the day is not significant, e.g. credit card\nexpiration date. The year may be 0 to represent a month and day independent\nof year, e.g. anniversary date. Related types are google.type.TimeOfDay\nand `google.protobuf.Timestamp`.", "type": "object", "properties": { + "month": { + "format": "int32", + "description": "Month of year. Must be from 1 to 12.", + "type": "integer" + }, "day": { "format": "int32", "description": "Day of month. Must be from 1 to 31 and valid for the year and month, or 0\nif specifying a year/month where the day is not significant.", @@ -579,32 +770,22 @@ "format": "int32", "description": "Year of date. Must be from 1 to 9999, or 0 if specifying a date without\na year.", "type": "integer" - }, - "month": { - "format": "int32", - "description": "Month of year. Must be from 1 to 12.", - "type": "integer" } - }, - "id": "Date" + } }, "TransferOperation": { "description": "A description of the execution of a transfer.", "type": "object", "properties": { - "transferJobName": { - "description": "The name of the transfer job that triggers this transfer operation.", - "type": "string" - }, - "transferSpec": { - "$ref": "TransferSpec", - "description": "Transfer specification.\nRequired." - }, - "counters": { - "$ref": "TransferCounters", - "description": "Information about the progress of the transfer operation." - }, "status": { + "enum": [ + "STATUS_UNSPECIFIED", + "IN_PROGRESS", + "PAUSED", + "SUCCESS", + "FAILED", + "ABORTED" + ], "description": "Status of the transfer operation.", "type": "string", "enumDescriptions": [ @@ -614,16 +795,12 @@ "Completed successfully.", "Terminated due to an unrecoverable failure.", "Aborted by the user." - ], - "enum": [ - "STATUS_UNSPECIFIED", - "IN_PROGRESS", - "PAUSED", - "SUCCESS", - "FAILED", - "ABORTED" ] }, + "counters": { + "$ref": "TransferCounters", + "description": "Information about the progress of the transfer operation." + }, "errorBreakdowns": { "description": "Summarizes errors encountered with sample error log entries.", "items": { @@ -648,6 +825,14 @@ "format": "google-datetime", "description": "Start time of this transfer execution.", "type": "string" + }, + "transferJobName": { + "type": "string", + "description": "The name of the transfer job that triggers this transfer operation." + }, + "transferSpec": { + "description": "Transfer specification.\nRequired.", + "$ref": "TransferSpec" } }, "id": "TransferOperation" @@ -668,19 +853,19 @@ "id": "AwsS3Data" }, "AwsAccessKey": { - "id": "AwsAccessKey", "description": "AWS access key (see\n[AWS Security Credentials](http://docs.aws.amazon.com/general/latest/gr/aws-security-credentials.html)).", "type": "object", "properties": { "accessKeyId": { - "description": "AWS access key ID.\nRequired.", - "type": "string" + "type": "string", + "description": "AWS access key ID.\nRequired." }, "secretAccessKey": { "type": "string", "description": "AWS secret access key. This field is not returned in RPC responses.\nRequired." } - } + }, + "id": "AwsAccessKey" }, "Empty": { "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", @@ -695,36 +880,18 @@ "properties": {} }, "TransferCounters": { + "description": "A collection of counters that report the progress of a transfer operation.", + "type": "object", "properties": { - "bytesFromSourceFailed": { - "format": "int64", - "description": "Bytes in the data source that failed during the transfer.", - "type": "string" - }, - "objectsFromSourceFailed": { - "type": "string", - "format": "int64", - "description": "Objects in the data source that failed during the transfer." - }, - "objectsCopiedToSink": { - "format": "int64", - "description": "Objects that are copied to the data sink.", - "type": "string" - }, - "bytesFoundOnlyFromSink": { - "format": "int64", - "description": "Bytes found only in the data sink that are scheduled to be deleted.", - "type": "string" - }, "objectsDeletedFromSource": { "format": "int64", "description": "Objects that are deleted from the data source.", "type": "string" }, "bytesCopiedToSink": { + "type": "string", "format": "int64", - "description": "Bytes that are copied to the data sink.", - "type": "string" + "description": "Bytes that are copied to the data sink." }, "bytesFoundFromSource": { "format": "int64", @@ -737,9 +904,9 @@ "type": "string" }, "objectsFoundFromSource": { + "type": "string", "format": "int64", - "description": "Objects found in the data source that are scheduled to be transferred,\nwhich will be copied, excluded based on conditions, or skipped due to\nfailures.", - "type": "string" + "description": "Objects found in the data source that are scheduled to be transferred,\nwhich will be copied, excluded based on conditions, or skipped due to\nfailures." }, "bytesDeletedFromSource": { "format": "int64", @@ -747,14 +914,14 @@ "type": "string" }, "objectsFailedToDeleteFromSink": { - "type": "string", "format": "int64", - "description": "Objects that failed to be deleted from the data sink." + "description": "Objects that failed to be deleted from the data sink.", + "type": "string" }, "objectsDeletedFromSink": { + "type": "string", "format": "int64", - "description": "Objects that are deleted from the data sink.", - "type": "string" + "description": "Objects that are deleted from the data sink." }, "objectsFoundOnlyFromSink": { "format": "int64", @@ -767,32 +934,42 @@ "description": "Bytes in the data source that are not transferred because they already\nexist in the data sink." }, "bytesFailedToDeleteFromSink": { + "type": "string", "format": "int64", - "description": "Bytes that failed to be deleted from the data sink.", - "type": "string" + "description": "Bytes that failed to be deleted from the data sink." }, "bytesDeletedFromSink": { "format": "int64", "description": "Bytes that are deleted from the data sink.", "type": "string" + }, + "bytesFromSourceFailed": { + "format": "int64", + "description": "Bytes in the data source that failed during the transfer.", + "type": "string" + }, + "objectsFromSourceFailed": { + "format": "int64", + "description": "Objects in the data source that failed during the transfer.", + "type": "string" + }, + "objectsCopiedToSink": { + "type": "string", + "format": "int64", + "description": "Objects that are copied to the data sink." + }, + "bytesFoundOnlyFromSink": { + "format": "int64", + "description": "Bytes found only in the data sink that are scheduled to be deleted.", + "type": "string" } }, - "id": "TransferCounters", - "description": "A collection of counters that report the progress of a transfer operation.", - "type": "object" + "id": "TransferCounters" }, "ErrorSummary": { - "id": "ErrorSummary", "description": "A summary of errors by error code, plus a count and sample error log\nentries.", "type": "object", "properties": { - "errorLogEntries": { - "description": "Error samples.", - "items": { - "$ref": "ErrorLogEntry" - }, - "type": "array" - }, "errorCode": { "description": "Required.", "type": "string", @@ -839,11 +1016,18 @@ "format": "int64", "description": "Count of this type of error.\nRequired.", "type": "string" + }, + "errorLogEntries": { + "description": "Error samples.", + "items": { + "$ref": "ErrorLogEntry" + }, + "type": "array" } - } + }, + "id": "ErrorSummary" }, "HttpData": { - "description": "An HttpData specifies a list of objects on the web to be transferred over\nHTTP. The information of the objects to be transferred is contained in a\nfile referenced by a URL. The first line in the file must be\n\"TsvHttpData-1.0\", which specifies the format of the file. Subsequent lines\nspecify the information of the list of objects, one object per list entry.\nEach entry has the following tab-delimited fields:\n\n* HTTP URL - The location of the object.\n\n* Length - The size of the object in bytes.\n\n* MD5 - The base64-encoded MD5 hash of the object.\n\nFor an example of a valid TSV file, see\n[Transferring data from URLs](https://cloud.google.com/storage/transfer/create-url-list).\n\nWhen transferring data based on a URL list, keep the following in mind:\n\n* When an object located at `http(s)://hostname:port/\u003cURL-path\u003e` is transferred\nto a data sink, the name of the object at the data sink is\n`\u003chostname\u003e/\u003cURL-path\u003e`.\n\n* If the specified size of an object does not match the actual size of the\nobject fetched, the object will not be transferred.\n\n* If the specified MD5 does not match the MD5 computed from the transferred\nbytes, the object transfer will fail. For more information, see\n[Generating MD5 hashes](https://cloud.google.com/storage/transfer/#md5)\n\n* Ensure that each URL you specify is publicly accessible. For\nexample, in Google Cloud Storage you can\n[share an object publicly]\n(https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get\na link to it.\n\n* Storage Transfer Service obeys `robots.txt` rules and requires the source\nHTTP server to support `Range` requests and to return a `Content-Length`\nheader in each response.\n\n* [ObjectConditions](#ObjectConditions) have no effect when filtering objects\nto transfer.", "type": "object", "properties": { "listUrl": { @@ -851,205 +1035,19 @@ "type": "string" } }, - "id": "HttpData" + "id": "HttpData", + "description": "An HttpData specifies a list of objects on the web to be transferred over\nHTTP. The information of the objects to be transferred is contained in a\nfile referenced by a URL. The first line in the file must be\n\"TsvHttpData-1.0\", which specifies the format of the file. Subsequent lines\nspecify the information of the list of objects, one object per list entry.\nEach entry has the following tab-delimited fields:\n\n* HTTP URL - The location of the object.\n\n* Length - The size of the object in bytes.\n\n* MD5 - The base64-encoded MD5 hash of the object.\n\nFor an example of a valid TSV file, see\n[Transferring data from URLs](https://cloud.google.com/storage/transfer/create-url-list).\n\nWhen transferring data based on a URL list, keep the following in mind:\n\n* When an object located at `http(s)://hostname:port/\u003cURL-path\u003e` is transferred\nto a data sink, the name of the object at the data sink is\n`\u003chostname\u003e/\u003cURL-path\u003e`.\n\n* If the specified size of an object does not match the actual size of the\nobject fetched, the object will not be transferred.\n\n* If the specified MD5 does not match the MD5 computed from the transferred\nbytes, the object transfer will fail. For more information, see\n[Generating MD5 hashes](https://cloud.google.com/storage/transfer/#md5)\n\n* Ensure that each URL you specify is publicly accessible. For\nexample, in Google Cloud Storage you can\n[share an object publicly]\n(https://cloud.google.com/storage/docs/cloud-console#_sharingdata) and get\na link to it.\n\n* Storage Transfer Service obeys `robots.txt` rules and requires the source\nHTTP server to support `Range` requests and to return a `Content-Length`\nheader in each response.\n\n* [ObjectConditions](#ObjectConditions) have no effect when filtering objects\nto transfer." }, "GcsData": { - "id": "GcsData", - "description": "In a GcsData, an object's name is the Google Cloud Storage object's name and\nits `lastModificationTime` refers to the object's updated time, which changes\nwhen the content or the metadata of the object is updated.", "type": "object", "properties": { "bucketName": { "description": "Google Cloud Storage bucket name (see\n[Bucket Name Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).\nRequired.", "type": "string" } - } - }, - "ListTransferJobsResponse": { - "description": "Response from ListTransferJobs.", - "type": "object", - "properties": { - "nextPageToken": { - "description": "The list next page token.", - "type": "string" - }, - "transferJobs": { - "description": "A list of transfer jobs.", - "items": { - "$ref": "TransferJob" - }, - "type": "array" - } }, - "id": "ListTransferJobsResponse" - }, - "UpdateTransferJobRequest": { - "type": "object", - "properties": { - "transferJob": { - "description": "The job to update. `transferJob` is expected to specify only three fields:\n`description`, `transferSpec`, and `status`. An UpdateTransferJobRequest\nthat specifies other fields will be rejected with an error\n`INVALID_ARGUMENT`.\nRequired.", - "$ref": "TransferJob" - }, - "projectId": { - "description": "The ID of the Google Cloud Platform Console project that owns the job.\nRequired.", - "type": "string" - }, - "updateTransferJobFieldMask": { - "format": "google-fieldmask", - "description": "The field mask of the fields in `transferJob` that are to be updated in\nthis request. Fields in `transferJob` that can be updated are:\n`description`, `transferSpec`, and `status`. To update the `transferSpec`\nof the job, a complete transfer specification has to be provided. An\nincomplete specification which misses any required fields will be rejected\nwith the error `INVALID_ARGUMENT`.", - "type": "string" - } - }, - "id": "UpdateTransferJobRequest", - "description": "Request passed to UpdateTransferJob." - }, - "ObjectConditions": { - "description": "Conditions that determine which objects will be transferred.", - "type": "object", - "properties": { - "excludePrefixes": { - "description": "`excludePrefixes` must follow the requirements described for\n`includePrefixes`.\n\nThe max size of `excludePrefixes` is 1000.", - "items": { - "type": "string" - }, - "type": "array" - }, - "minTimeElapsedSinceLastModification": { - "format": "google-duration", - "description": "If unspecified, `minTimeElapsedSinceLastModification` takes a zero value\nand `maxTimeElapsedSinceLastModification` takes the maximum possible\nvalue of Duration. Objects that satisfy the object conditions\nmust either have a `lastModificationTime` greater or equal to\n`NOW` - `maxTimeElapsedSinceLastModification` and less than\n`NOW` - `minTimeElapsedSinceLastModification`, or not have a\n`lastModificationTime`.", - "type": "string" - }, - "maxTimeElapsedSinceLastModification": { - "format": "google-duration", - "description": "`maxTimeElapsedSinceLastModification` is the complement to\n`minTimeElapsedSinceLastModification`.", - "type": "string" - }, - "includePrefixes": { - "description": "If `includePrefixes` is specified, objects that satisfy the object\nconditions must have names that start with one of the `includePrefixes`\nand that do not start with any of the `excludePrefixes`. If `includePrefixes`\nis not specified, all objects except those that have names starting with\none of the `excludePrefixes` must satisfy the object conditions.\n\nRequirements:\n\n * Each include-prefix and exclude-prefix can contain any sequence of\n Unicode characters, of max length 1024 bytes when UTF8-encoded, and\n must not contain Carriage Return or Line Feed characters. Wildcard\n matching and regular expression matching are not supported.\n\n * Each include-prefix and exclude-prefix must omit the leading slash.\n For example, to include the `requests.gz` object in a transfer from\n `s3://my-aws-bucket/logs/y=2015/requests.gz`, specify the include\n prefix as `logs/y=2015/requests.gz`.\n\n * None of the include-prefix or the exclude-prefix values can be empty,\n if specified.\n\n * Each include-prefix must include a distinct portion of the object\n namespace, i.e., no include-prefix may be a prefix of another\n include-prefix.\n\n * Each exclude-prefix must exclude a distinct portion of the object\n namespace, i.e., no exclude-prefix may be a prefix of another\n exclude-prefix.\n\n * If `includePrefixes` is specified, then each exclude-prefix must start\n with the value of a path explicitly included by `includePrefixes`.\n\nThe max size of `includePrefixes` is 1000.", - "items": { - "type": "string" - }, - "type": "array" - } - }, - "id": "ObjectConditions" - }, - "Operation": { - "type": "object", - "properties": { - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf `true`, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, - "response": { - "type": "object", - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "The normal response of the operation in case of success. If the original\nmethod returns no data on success, such as `Delete`, the response is\n`google.protobuf.Empty`. If the original method is standard\n`Get`/`Create`/`Update`, the response should be the resource. For other\nmethods, the response should have the type `XxxResponse`, where `Xxx`\nis the original method name. For example, if the original method name\nis `TakeSnapshot()`, the inferred response type is\n`TakeSnapshotResponse`." - }, - "name": { - "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should have the format of `transferOperations/some/unique/name`.", - "type": "string" - }, - "error": { - "description": "The error result of the operation in case of failure or cancellation.", - "$ref": "Status" - }, - "metadata": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "description": "Represents the transfer operation object.", - "type": "object" - } - }, - "id": "Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call." - }, - "TransferSpec": { - "id": "TransferSpec", - "description": "Configuration for running a transfer.", - "type": "object", - "properties": { - "objectConditions": { - "$ref": "ObjectConditions", - "description": "Only objects that satisfy these object conditions are included in the set\nof data source and data sink objects. Object conditions based on\nobjects' `lastModificationTime` do not exclude objects in a data sink." - }, - "gcsDataSink": { - "$ref": "GcsData", - "description": "A Google Cloud Storage data sink." - }, - "gcsDataSource": { - "$ref": "GcsData", - "description": "A Google Cloud Storage data source." - }, - "transferOptions": { - "description": "If the option `deleteObjectsUniqueInSink` is `true`, object conditions\nbased on objects' `lastModificationTime` are ignored and do not exclude\nobjects in a data source or a data sink.", - "$ref": "TransferOptions" - }, - "awsS3DataSource": { - "$ref": "AwsS3Data", - "description": "An AWS S3 data source." - }, - "httpDataSource": { - "description": "An HTTP URL data source.", - "$ref": "HttpData" - } - } - }, - "TransferOptions": { - "id": "TransferOptions", - "description": "TransferOptions uses three boolean parameters to define the actions\nto be performed on objects in a transfer.", - "type": "object", - "properties": { - "deleteObjectsUniqueInSink": { - "description": "Whether objects that exist only in the sink should be deleted. Note that\nthis option and `deleteObjectsFromSourceAfterTransfer` are mutually\nexclusive.", - "type": "boolean" - }, - "overwriteObjectsAlreadyExistingInSink": { - "description": "Whether overwriting objects that already exist in the sink is allowed.", - "type": "boolean" - }, - "deleteObjectsFromSourceAfterTransfer": { - "type": "boolean", - "description": "Whether objects should be deleted from the source after they are\ntransferred to the sink. Note that this option and\n`deleteObjectsUniqueInSink` are mutually exclusive." - } - } - }, - "ResumeTransferOperationRequest": { - "type": "object", - "properties": {}, - "id": "ResumeTransferOperationRequest", - "description": "Request passed to ResumeTransferOperation." - }, - "Status": { - "type": "object", - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons." + "id": "GcsData", + "description": "In a GcsData, an object's name is the Google Cloud Storage object's name and\nits `lastModificationTime` refers to the object's updated time, which changes\nwhen the content or the metadata of the object is updated." } }, "protocol": "rest", @@ -1068,10 +1066,12 @@ } } }, - "kind": "discovery#restDescription", - "description": "Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.", "servicePath": "", + "description": "Transfers data from external data sources to a Google Cloud Storage bucket or between Google Cloud Storage buckets.", + "kind": "discovery#restDescription", "rootUrl": "https://storagetransfer.googleapis.com/", "basePath": "", - "ownerDomain": "google.com" + "ownerDomain": "google.com", + "name": "storagetransfer", + "batchPath": "batch" } diff --git a/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-api.json b/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-api.json new file mode 100644 index 0000000..0adfb99 --- /dev/null +++ b/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-api.json @@ -0,0 +1,688 @@ +{ + "version": "v1", + "baseUrl": "https://streetviewpublish.googleapis.com/", + "servicePath": "", + "description": "Publishes 360 photos to Google Maps, along with position, orientation, and connectivity metadata. Apps can offer an interface for positioning, connecting, and uploading user-generated Street View images.\n", + "kind": "discovery#restDescription", + "basePath": "", + "id": "streetviewpublish:v1", + "documentationLink": "https://developers.google.com/streetview/publish/", + "revision": "20170828", + "discoveryVersion": "v1", + "version_module": true, + "schemas": { + "BatchGetPhotosResponse": { + "description": "Response to batch get of Photos.", + "type": "object", + "properties": { + "results": { + "description": "List of results for each individual\nPhoto requested, in the same order as\nthe requests in\nBatchGetPhotos.", + "type": "array", + "items": { + "$ref": "PhotoResponse" + } + } + }, + "id": "BatchGetPhotosResponse" + }, + "Place": { + "properties": { + "placeId": { + "description": "Required. Place identifier, as described in\nhttps://developers.google.com/places/place-id.", + "type": "string" + } + }, + "id": "Place", + "description": "Place metadata for an entity.", + "type": "object" + }, + "UploadRef": { + "properties": { + "uploadUrl": { + "description": "Required. An upload reference should be unique for each user. It follows\nthe form:\n\"https://streetviewpublish.googleapis.com/media/user/{account_id}/photo/{upload_reference}\"", + "type": "string" + } + }, + "id": "UploadRef", + "description": "Upload reference for media files.", + "type": "object" + }, + "BatchDeletePhotosRequest": { + "description": "Request to delete multiple Photos.", + "type": "object", + "properties": { + "photoIds": { + "description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=\u003cid1\u003e&photoIds=\u003cid2\u003e&...`.", + "type": "array", + "items": { + "type": "string" + } + } + }, + "id": "BatchDeletePhotosRequest" + }, + "LatLng": { + "id": "LatLng", + "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", + "type": "object", + "properties": { + "longitude": { + "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", + "format": "double", + "type": "number" + }, + "latitude": { + "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", + "format": "double", + "type": "number" + } + } + }, + "UpdatePhotoRequest": { + "description": "Request to update the metadata of a\nPhoto. Updating the pixels of a photo\nis not supported.", + "type": "object", + "properties": { + "updateMask": { + "description": "Mask that identifies fields on the photo metadata to update.\nIf not present, the old Photo metadata will be entirely replaced with the\nnew Photo metadata in this request. The update fails if invalid fields are\nspecified. Multiple fields can be specified in a comma-delimited list.\n\nThe following fields are valid:\n\n* `pose.heading`\n* `pose.latLngPair`\n* `pose.pitch`\n* `pose.roll`\n* `pose.level`\n* `pose.altitude`\n* `connections`\n* `places`\n\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e Repeated fields in\nupdateMask\nmean the entire set of repeated values will be replaced with the new\ncontents. For example, if\nupdateMask\ncontains `connections` and `UpdatePhotoRequest.photo.connections` is empty,\nall connections will be removed.\u003c/aside\u003e", + "format": "google-fieldmask", + "type": "string" + }, + "photo": { + "$ref": "Photo", + "description": "Required. Photo object containing the\nnew metadata." + } + }, + "id": "UpdatePhotoRequest" + }, + "Pose": { + "description": "Raw pose measurement for an entity.", + "type": "object", + "properties": { + "heading": { + "description": "Compass heading, measured at the center of the photo in degrees clockwise\nfrom North. Value must be \u003e=0 and \u003c360.\nNaN indicates an unmeasured quantity.", + "format": "double", + "type": "number" + }, + "altitude": { + "type": "number", + "description": "Altitude of the pose in meters above ground level (as defined by WGS84).\nNaN indicates an unmeasured quantity.", + "format": "double" + }, + "pitch": { + "description": "Pitch, measured at the center of the photo in degrees. Value must be \u003e=-90\nand \u003c= 90. A value of -90 means looking directly down, and a value of 90\nmeans looking directly up.\nNaN indicates an unmeasured quantity.", + "format": "double", + "type": "number" + }, + "latLngPair": { + "$ref": "LatLng", + "description": "Latitude and longitude pair of the pose, as explained here:\nhttps://cloud.google.com/datastore/docs/reference/rest/Shared.Types/LatLng\nWhen creating a Photo, if the\nlatitude and longitude pair are not provided here, the geolocation from the\nexif header will be used. If the latitude and longitude pair is not\nprovided and cannot be found in the exif header, the create photo process\nwill fail." + }, + "roll": { + "description": "Roll, measured in degrees. Value must be \u003e= 0 and \u003c360. A value of 0\nmeans level with the horizon.\nNaN indicates an unmeasured quantity.", + "format": "double", + "type": "number" + }, + "level": { + "description": "Level (the floor in a building) used to configure vertical navigation.", + "$ref": "Level" + } + }, + "id": "Pose" + }, + "PhotoId": { + "description": "Identifier for a Photo.", + "type": "object", + "properties": { + "id": { + "description": "Required. A unique identifier for a photo.", + "type": "string" + } + }, + "id": "PhotoId" + }, + "BatchUpdatePhotosRequest": { + "id": "BatchUpdatePhotosRequest", + "description": "Request to update the metadata of photos.\nUpdating the pixels of photos is not supported.", + "type": "object", + "properties": { + "updatePhotoRequests": { + "description": "Required. List of\nUpdatePhotoRequests.", + "type": "array", + "items": { + "$ref": "UpdatePhotoRequest" + } + } + } + }, + "ListPhotosResponse": { + "description": "Response to list all photos that belong to a user.", + "type": "object", + "properties": { + "photos": { + "description": "List of photos. The maximum number of items returned is based on the\npageSize field\nin the request.", + "type": "array", + "items": { + "$ref": "Photo" + } + }, + "nextPageToken": { + "description": "Token to retrieve the next page of results, or empty if there are no more\nresults in the list.", + "type": "string" + } + }, + "id": "ListPhotosResponse" + }, + "Photo": { + "type": "object", + "properties": { + "captureTime": { + "description": "Absolute time when the photo was captured.\nWhen the photo has no exif timestamp, this is used to set a timestamp in\nthe photo metadata.", + "format": "google-datetime", + "type": "string" + }, + "thumbnailUrl": { + "description": "Output only. The thumbnail URL for showing a preview of the given photo.", + "type": "string" + }, + "viewCount": { + "description": "Output only. View count of the photo.", + "format": "int64", + "type": "string" + }, + "downloadUrl": { + "description": "Output only. The download URL for the photo bytes. This field is set only\nwhen\nGetPhotoRequest.view\nis set to\nPhotoView.INCLUDE_DOWNLOAD_URL.", + "type": "string" + }, + "connections": { + "description": "Connections to other photos. A connection represents the link from this\nphoto to another photo.", + "type": "array", + "items": { + "$ref": "Connection" + } + }, + "places": { + "description": "Places where this photo belongs.", + "type": "array", + "items": { + "$ref": "Place" + } + }, + "uploadReference": { + "description": "Required when creating photo. Input only. The resource URL where the photo\nbytes are uploaded to.", + "$ref": "UploadRef" + }, + "photoId": { + "$ref": "PhotoId", + "description": "Required when updating photo. Output only when creating photo.\nIdentifier for the photo, which is unique among all photos in\nGoogle." + }, + "pose": { + "$ref": "Pose", + "description": "Pose of the photo." + }, + "shareLink": { + "description": "Output only. The share link for the photo.", + "type": "string" + } + }, + "id": "Photo", + "description": "Photo is used to store 360 photos along with photo metadata." + }, + "PhotoResponse": { + "description": "Response payload for a single\nPhoto\nin batch operations including\nBatchGetPhotos\nand\nBatchUpdatePhotos.", + "type": "object", + "properties": { + "status": { + "$ref": "Status", + "description": "The status for the operation to get or update a single photo in the batch\nrequest." + }, + "photo": { + "$ref": "Photo", + "description": "The Photo resource, if the request\nwas successful." + } + }, + "id": "PhotoResponse" + }, + "Connection": { + "properties": { + "target": { + "$ref": "PhotoId", + "description": "Required. The destination of the connection from the containing photo to\nanother photo." + } + }, + "id": "Connection", + "description": "A connection is the link from a source photo to a destination photo.", + "type": "object" + }, + "BatchUpdatePhotosResponse": { + "description": "Response to batch update of metadata of one or more\nPhotos.", + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "PhotoResponse" + }, + "description": "List of results for each individual\nPhoto updated, in the same order as\nthe request." + } + }, + "id": "BatchUpdatePhotosResponse" + }, + "Status": { + "type": "object", + "properties": { + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "type": "array", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + } + }, + "code": { + "type": "integer", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "format": "int32" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "id": "Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons." + }, + "BatchDeletePhotosResponse": { + "description": "Response to batch delete of one or more\nPhotos.", + "type": "object", + "properties": { + "status": { + "description": "The status for the operation to delete a single\nPhoto in the batch request.", + "type": "array", + "items": { + "$ref": "Status" + } + } + }, + "id": "BatchDeletePhotosResponse" + }, + "Level": { + "properties": { + "name": { + "description": "Required. A name assigned to this Level, restricted to 3 characters.\nConsider how the elevator buttons would be labeled for this level if there\nwas an elevator.", + "type": "string" + }, + "number": { + "description": "Floor number, used for ordering. 0 indicates the ground level, 1 indicates\nthe first level above ground level, -1 indicates the first level under\nground level. Non-integer values are OK.", + "format": "double", + "type": "number" + } + }, + "id": "Level", + "description": "Level information containing level number and its corresponding name.", + "type": "object" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + } + }, + "protocol": "rest", + "icons": { + "x32": "http://www.google.com/images/icons/product/search-32.gif", + "x16": "http://www.google.com/images/icons/product/search-16.gif" + }, + "canonicalName": "Street View Publish", + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/streetviewpublish": { + "description": "Publish and manage your 360 photos on Google Street View" + } + } + } + }, + "rootUrl": "https://streetviewpublish.googleapis.com/", + "ownerDomain": "google.com", + "name": "streetviewpublish", + "batchPath": "batch", + "fullyEncodeReservedExpansion": true, + "title": "Street View Publish API", + "ownerName": "Google", + "resources": { + "photos": { + "methods": { + "batchGet": { + "httpMethod": "GET", + "parameterOrder": [], + "response": { + "$ref": "BatchGetPhotosResponse" + }, + "parameters": { + "view": { + "type": "string", + "location": "query", + "enum": [ + "BASIC", + "INCLUDE_DOWNLOAD_URL" + ], + "description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response." + }, + "photoIds": { + "repeated": true, + "location": "query", + "description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=\u003cid1\u003e&photoIds=\u003cid2\u003e&...`.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "flatPath": "v1/photos:batchGet", + "id": "streetviewpublish.photos.batchGet", + "path": "v1/photos:batchGet", + "description": "Gets the metadata of the specified\nPhoto batch.\n\nNote that if\nBatchGetPhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchGetPhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchGetPhotosResponse.results.\nSee\nGetPhoto\nfor specific failures that can occur per photo." + }, + "list": { + "response": { + "$ref": "ListPhotosResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "filter": { + "location": "query", + "description": "The filter expression. For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`.", + "type": "string" + }, + "pageToken": { + "location": "query", + "description": "The\nnextPageToken\nvalue returned from a previous\nListPhotos\nrequest, if any.", + "type": "string" + }, + "pageSize": { + "description": "The maximum number of photos to return.\n`pageSize` must be non-negative. If `pageSize` is zero or is not provided,\nthe default page size of 100 will be used.\nThe number of photos returned in the response may be less than `pageSize`\nif the number of photos that belong to the user is less than `pageSize`.", + "format": "int32", + "type": "integer", + "location": "query" + }, + "view": { + "location": "query", + "enum": [ + "BASIC", + "INCLUDE_DOWNLOAD_URL" + ], + "description": "Specifies if a download URL for the photos bytes should be returned in the\nPhotos response.", + "type": "string" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "flatPath": "v1/photos", + "path": "v1/photos", + "id": "streetviewpublish.photos.list", + "description": "Lists all the Photos that belong to\nthe user." + }, + "batchUpdate": { + "description": "Updates the metadata of Photos, such\nas pose, place association, connections, etc. Changing the pixels of photos\nis not supported.\n\nNote that if\nBatchUpdatePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchUpdatePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchUpdatePhotosResponse.results.\nSee\nUpdatePhoto\nfor specific failures that can occur per photo.\n\nOnly the fields specified in\nupdateMask\nfield are used. If `updateMask` is not present, the update applies to all\nfields.\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e To update\nPose.altitude,\nPose.latLngPair has to be\nfilled as well. Otherwise, the request will fail.\u003c/aside\u003e", + "request": { + "$ref": "BatchUpdatePhotosRequest" + }, + "response": { + "$ref": "BatchUpdatePhotosResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "parameters": {}, + "flatPath": "v1/photos:batchUpdate", + "path": "v1/photos:batchUpdate", + "id": "streetviewpublish.photos.batchUpdate" + }, + "batchDelete": { + "path": "v1/photos:batchDelete", + "id": "streetviewpublish.photos.batchDelete", + "description": "Deletes a list of Photos and their\nmetadata.\n\nNote that if\nBatchDeletePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchDeletePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchDeletePhotosResponse.results.\nSee\nDeletePhoto\nfor specific failures that can occur per photo.", + "request": { + "$ref": "BatchDeletePhotosRequest" + }, + "response": { + "$ref": "BatchDeletePhotosResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "parameters": {}, + "flatPath": "v1/photos:batchDelete" + } + } + }, + "photo": { + "methods": { + "delete": { + "description": "Deletes a Photo and its metadata.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.NOT_FOUND if the photo ID does not exist.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "photoId" + ], + "httpMethod": "DELETE", + "parameters": { + "photoId": { + "description": "Required. ID of the Photo.", + "required": true, + "type": "string", + "location": "path" + } + }, + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "flatPath": "v1/photo/{photoId}", + "path": "v1/photo/{photoId}", + "id": "streetviewpublish.photo.delete" + }, + "get": { + "description": "Gets the metadata of the specified\nPhoto.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested Photo.\n* google.rpc.Code.NOT_FOUND if the requested\nPhoto does not exist.", + "httpMethod": "GET", + "parameterOrder": [ + "photoId" + ], + "response": { + "$ref": "Photo" + }, + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "parameters": { + "photoId": { + "description": "Required. ID of the Photo.", + "required": true, + "type": "string", + "location": "path" + }, + "view": { + "description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response.", + "type": "string", + "location": "query", + "enum": [ + "BASIC", + "INCLUDE_DOWNLOAD_URL" + ] + } + }, + "flatPath": "v1/photo/{photoId}", + "id": "streetviewpublish.photo.get", + "path": "v1/photo/{photoId}" + }, + "update": { + "path": "v1/photo/{id}", + "id": "streetviewpublish.photo.update", + "description": "Updates the metadata of a Photo, such\nas pose, place association, connections, etc. Changing the pixels of a\nphoto is not supported.\n\nOnly the fields specified in\nupdateMask\nfield are used. If `updateMask` is not present, the update applies to all\nfields.\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e To update\nPose.altitude,\nPose.latLngPair has to be\nfilled as well. Otherwise, the request will fail.\u003c/aside\u003e\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the requested photo does not exist.", + "request": { + "$ref": "Photo" + }, + "response": { + "$ref": "Photo" + }, + "parameterOrder": [ + "id" + ], + "httpMethod": "PUT", + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "parameters": { + "id": { + "location": "path", + "description": "Required. A unique identifier for a photo.", + "required": true, + "type": "string" + }, + "updateMask": { + "type": "string", + "location": "query", + "description": "Mask that identifies fields on the photo metadata to update.\nIf not present, the old Photo metadata will be entirely replaced with the\nnew Photo metadata in this request. The update fails if invalid fields are\nspecified. Multiple fields can be specified in a comma-delimited list.\n\nThe following fields are valid:\n\n* `pose.heading`\n* `pose.latLngPair`\n* `pose.pitch`\n* `pose.roll`\n* `pose.level`\n* `pose.altitude`\n* `connections`\n* `places`\n\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e Repeated fields in\nupdateMask\nmean the entire set of repeated values will be replaced with the new\ncontents. For example, if\nupdateMask\ncontains `connections` and `UpdatePhotoRequest.photo.connections` is empty,\nall connections will be removed.\u003c/aside\u003e", + "format": "google-fieldmask" + } + }, + "flatPath": "v1/photo/{id}" + }, + "create": { + "request": { + "$ref": "Photo" + }, + "description": "After the client finishes uploading the photo with the returned\nUploadRef,\nCreatePhoto\npublishes the uploaded Photo to\nStreet View on Google Maps.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the upload reference does not exist.\n* google.rpc.Code.RESOURCE_EXHAUSTED if the account has reached the\nstorage limit.", + "response": { + "$ref": "Photo" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "flatPath": "v1/photo", + "path": "v1/photo", + "id": "streetviewpublish.photo.create" + }, + "startUpload": { + "description": "Creates an upload session to start uploading photo bytes. The upload URL of\nthe returned UploadRef is used to\nupload the bytes for the Photo.\n\nIn addition to the photo requirements shown in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604,\nthe photo must also meet the following requirements:\n\n* Photo Sphere XMP metadata must be included in the photo medadata. See\nhttps://developers.google.com/streetview/spherical-metadata for the\nrequired fields.\n* The pixel size of the photo must meet the size requirements listed in\nhttps://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275604, and\nthe photo must be a full 360 horizontally.\n\nAfter the upload is complete, the\nUploadRef is used with\nCreatePhoto\nto create the Photo object entry.", + "request": { + "$ref": "Empty" + }, + "response": { + "$ref": "UploadRef" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/streetviewpublish" + ], + "parameters": {}, + "flatPath": "v1/photo:startUpload", + "path": "v1/photo:startUpload", + "id": "streetviewpublish.photo.startUpload" + } + } + } + }, + "parameters": { + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "key": { + "type": "string", + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token." + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "description": "Pretty-print response.", + "type": "boolean", + "default": "true", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + }, + "bearer_token": { + "location": "query", + "description": "OAuth bearer token.", + "type": "string" + }, + "upload_protocol": { + "location": "query", + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string" + }, + "prettyPrint": { + "description": "Returns response with indentations and line breaks.", + "type": "boolean", + "default": "true", + "location": "query" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "type": "string", + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\")." + }, + "$.xgafv": { + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string" + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string", + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ] + } + } +} diff --git a/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-gen.go b/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-gen.go new file mode 100644 index 0000000..a390885 --- /dev/null +++ b/vendor/google.golang.org/api/streetviewpublish/v1/streetviewpublish-gen.go @@ -0,0 +1,2444 @@ +// Package streetviewpublish provides access to the Street View Publish API. +// +// See https://developers.google.com/streetview/publish/ +// +// Usage example: +// +// import "google.golang.org/api/streetviewpublish/v1" +// ... +// streetviewpublishService, err := streetviewpublish.New(oauthHttpClient) +package streetviewpublish // import "google.golang.org/api/streetviewpublish/v1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "streetviewpublish:v1" +const apiName = "streetviewpublish" +const apiVersion = "v1" +const basePath = "https://streetviewpublish.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // Publish and manage your 360 photos on Google Street View + StreetviewpublishScope = "https://www.googleapis.com/auth/streetviewpublish" +) + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Photo = NewPhotoService(s) + s.Photos = NewPhotosService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Photo *PhotoService + + Photos *PhotosService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewPhotoService(s *Service) *PhotoService { + rs := &PhotoService{s: s} + return rs +} + +type PhotoService struct { + s *Service +} + +func NewPhotosService(s *Service) *PhotosService { + rs := &PhotosService{s: s} + return rs +} + +type PhotosService struct { + s *Service +} + +// BatchDeletePhotosRequest: Request to delete multiple Photos. +type BatchDeletePhotosRequest struct { + // PhotoIds: Required. IDs of the Photos. For HTTP + // GET requests, the URL query parameter should + // be + // `photoIds=&photoIds=&...`. + PhotoIds []string `json:"photoIds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PhotoIds") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PhotoIds") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BatchDeletePhotosRequest) MarshalJSON() ([]byte, error) { + type noMethod BatchDeletePhotosRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BatchDeletePhotosResponse: Response to batch delete of one or +// more +// Photos. +type BatchDeletePhotosResponse struct { + // Status: The status for the operation to delete a single + // Photo in the batch request. + Status []*Status `json:"status,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Status") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Status") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BatchDeletePhotosResponse) MarshalJSON() ([]byte, error) { + type noMethod BatchDeletePhotosResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BatchGetPhotosResponse: Response to batch get of Photos. +type BatchGetPhotosResponse struct { + // Results: List of results for each individual + // Photo requested, in the same order as + // the requests in + // BatchGetPhotos. + Results []*PhotoResponse `json:"results,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Results") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Results") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BatchGetPhotosResponse) MarshalJSON() ([]byte, error) { + type noMethod BatchGetPhotosResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BatchUpdatePhotosRequest: Request to update the metadata of +// photos. +// Updating the pixels of photos is not supported. +type BatchUpdatePhotosRequest struct { + // UpdatePhotoRequests: Required. List of + // UpdatePhotoRequests. + UpdatePhotoRequests []*UpdatePhotoRequest `json:"updatePhotoRequests,omitempty"` + + // ForceSendFields is a list of field names (e.g. "UpdatePhotoRequests") + // to unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "UpdatePhotoRequests") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *BatchUpdatePhotosRequest) MarshalJSON() ([]byte, error) { + type noMethod BatchUpdatePhotosRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BatchUpdatePhotosResponse: Response to batch update of metadata of +// one or more +// Photos. +type BatchUpdatePhotosResponse struct { + // Results: List of results for each individual + // Photo updated, in the same order as + // the request. + Results []*PhotoResponse `json:"results,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Results") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Results") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BatchUpdatePhotosResponse) MarshalJSON() ([]byte, error) { + type noMethod BatchUpdatePhotosResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Connection: A connection is the link from a source photo to a +// destination photo. +type Connection struct { + // Target: Required. The destination of the connection from the + // containing photo to + // another photo. + Target *PhotoId `json:"target,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Target") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Target") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Connection) MarshalJSON() ([]byte, error) { + type noMethod Connection + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated +// empty messages in your APIs. A typical example is to use it as the +// request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// LatLng: An object representing a latitude/longitude pair. This is +// expressed as a pair +// of doubles representing degrees latitude and degrees longitude. +// Unless +// specified otherwise, this must conform to the +// WGS84 +// st +// andard. Values must be within normalized ranges. +// +// Example of normalization code in Python: +// +// def NormalizeLongitude(longitude): +// """Wraps decimal degrees longitude to [-180.0, 180.0].""" +// q, r = divmod(longitude, 360.0) +// if r > 180.0 or (r == 180.0 and q <= -1.0): +// return r - 360.0 +// return r +// +// def NormalizeLatLng(latitude, longitude): +// """Wraps decimal degrees latitude and longitude to +// [-90.0, 90.0] and [-180.0, 180.0], respectively.""" +// r = latitude % 360.0 +// if r <= 90.0: +// return r, NormalizeLongitude(longitude) +// elif r >= 270.0: +// return r - 360, NormalizeLongitude(longitude) +// else: +// return 180 - r, NormalizeLongitude(longitude + 180.0) +// +// assert 180.0 == NormalizeLongitude(180.0) +// assert -180.0 == NormalizeLongitude(-180.0) +// assert -179.0 == NormalizeLongitude(181.0) +// assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0) +// assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0) +// assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0) +// assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0) +// assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0) +// assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0) +// assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0) +// assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0) +// assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0) +// assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0) +type LatLng struct { + // Latitude: The latitude in degrees. It must be in the range [-90.0, + // +90.0]. + Latitude float64 `json:"latitude,omitempty"` + + // Longitude: The longitude in degrees. It must be in the range [-180.0, + // +180.0]. + Longitude float64 `json:"longitude,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Latitude") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Latitude") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *LatLng) MarshalJSON() ([]byte, error) { + type noMethod LatLng + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *LatLng) UnmarshalJSON(data []byte) error { + type noMethod LatLng + var s1 struct { + Latitude gensupport.JSONFloat64 `json:"latitude"` + Longitude gensupport.JSONFloat64 `json:"longitude"` + *noMethod + } + s1.noMethod = (*noMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Latitude = float64(s1.Latitude) + s.Longitude = float64(s1.Longitude) + return nil +} + +// Level: Level information containing level number and its +// corresponding name. +type Level struct { + // Name: Required. A name assigned to this Level, restricted to 3 + // characters. + // Consider how the elevator buttons would be labeled for this level if + // there + // was an elevator. + Name string `json:"name,omitempty"` + + // Number: Floor number, used for ordering. 0 indicates the ground + // level, 1 indicates + // the first level above ground level, -1 indicates the first level + // under + // ground level. Non-integer values are OK. + Number float64 `json:"number,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Level) MarshalJSON() ([]byte, error) { + type noMethod Level + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *Level) UnmarshalJSON(data []byte) error { + type noMethod Level + var s1 struct { + Number gensupport.JSONFloat64 `json:"number"` + *noMethod + } + s1.noMethod = (*noMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Number = float64(s1.Number) + return nil +} + +// ListPhotosResponse: Response to list all photos that belong to a +// user. +type ListPhotosResponse struct { + // NextPageToken: Token to retrieve the next page of results, or empty + // if there are no more + // results in the list. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Photos: List of photos. The maximum number of items returned is based + // on the + // pageSize field + // in the request. + Photos []*Photo `json:"photos,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListPhotosResponse) MarshalJSON() ([]byte, error) { + type noMethod ListPhotosResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Photo: Photo is used to store 360 photos along with photo metadata. +type Photo struct { + // CaptureTime: Absolute time when the photo was captured. + // When the photo has no exif timestamp, this is used to set a timestamp + // in + // the photo metadata. + CaptureTime string `json:"captureTime,omitempty"` + + // Connections: Connections to other photos. A connection represents the + // link from this + // photo to another photo. + Connections []*Connection `json:"connections,omitempty"` + + // DownloadUrl: Output only. The download URL for the photo bytes. This + // field is set only + // when + // GetPhotoRequest.view + // is set to + // PhotoView.INCLUDE_DOWNLOAD_URL. + DownloadUrl string `json:"downloadUrl,omitempty"` + + // PhotoId: Required when updating photo. Output only when creating + // photo. + // Identifier for the photo, which is unique among all photos in + // Google. + PhotoId *PhotoId `json:"photoId,omitempty"` + + // Places: Places where this photo belongs. + Places []*Place `json:"places,omitempty"` + + // Pose: Pose of the photo. + Pose *Pose `json:"pose,omitempty"` + + // ShareLink: Output only. The share link for the photo. + ShareLink string `json:"shareLink,omitempty"` + + // ThumbnailUrl: Output only. The thumbnail URL for showing a preview of + // the given photo. + ThumbnailUrl string `json:"thumbnailUrl,omitempty"` + + // UploadReference: Required when creating photo. Input only. The + // resource URL where the photo + // bytes are uploaded to. + UploadReference *UploadRef `json:"uploadReference,omitempty"` + + // ViewCount: Output only. View count of the photo. + ViewCount int64 `json:"viewCount,omitempty,string"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "CaptureTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CaptureTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Photo) MarshalJSON() ([]byte, error) { + type noMethod Photo + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PhotoId: Identifier for a Photo. +type PhotoId struct { + // Id: Required. A unique identifier for a photo. + Id string `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PhotoId) MarshalJSON() ([]byte, error) { + type noMethod PhotoId + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// PhotoResponse: Response payload for a single +// Photo +// in batch operations including +// BatchGetPhotos +// and +// BatchUpdatePhotos. +type PhotoResponse struct { + // Photo: The Photo resource, if the request + // was successful. + Photo *Photo `json:"photo,omitempty"` + + // Status: The status for the operation to get or update a single photo + // in the batch + // request. + Status *Status `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Photo") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Photo") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PhotoResponse) MarshalJSON() ([]byte, error) { + type noMethod PhotoResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Place: Place metadata for an entity. +type Place struct { + // PlaceId: Required. Place identifier, as described + // in + // https://developers.google.com/places/place-id. + PlaceId string `json:"placeId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PlaceId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PlaceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Place) MarshalJSON() ([]byte, error) { + type noMethod Place + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Pose: Raw pose measurement for an entity. +type Pose struct { + // Altitude: Altitude of the pose in meters above ground level (as + // defined by WGS84). + // NaN indicates an unmeasured quantity. + Altitude float64 `json:"altitude,omitempty"` + + // Heading: Compass heading, measured at the center of the photo in + // degrees clockwise + // from North. Value must be >=0 and <360. + // NaN indicates an unmeasured quantity. + Heading float64 `json:"heading,omitempty"` + + // LatLngPair: Latitude and longitude pair of the pose, as explained + // here: + // https://cloud.google.com/datastore/docs/reference/rest/Shared.Ty + // pes/LatLng + // When creating a Photo, if the + // latitude and longitude pair are not provided here, the geolocation + // from the + // exif header will be used. If the latitude and longitude pair is + // not + // provided and cannot be found in the exif header, the create photo + // process + // will fail. + LatLngPair *LatLng `json:"latLngPair,omitempty"` + + // Level: Level (the floor in a building) used to configure vertical + // navigation. + Level *Level `json:"level,omitempty"` + + // Pitch: Pitch, measured at the center of the photo in degrees. Value + // must be >=-90 + // and <= 90. A value of -90 means looking directly down, and a value of + // 90 + // means looking directly up. + // NaN indicates an unmeasured quantity. + Pitch float64 `json:"pitch,omitempty"` + + // Roll: Roll, measured in degrees. Value must be >= 0 and <360. A value + // of 0 + // means level with the horizon. + // NaN indicates an unmeasured quantity. + Roll float64 `json:"roll,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Altitude") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Altitude") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Pose) MarshalJSON() ([]byte, error) { + type noMethod Pose + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *Pose) UnmarshalJSON(data []byte) error { + type noMethod Pose + var s1 struct { + Altitude gensupport.JSONFloat64 `json:"altitude"` + Heading gensupport.JSONFloat64 `json:"heading"` + Pitch gensupport.JSONFloat64 `json:"pitch"` + Roll gensupport.JSONFloat64 `json:"roll"` + *noMethod + } + s1.noMethod = (*noMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Altitude = float64(s1.Altitude) + s.Heading = float64(s1.Heading) + s.Pitch = float64(s1.Pitch) + s.Roll = float64(s1.Roll) + return nil +} + +// Status: The `Status` type defines a logical error model that is +// suitable for different +// programming environments, including REST APIs and RPC APIs. It is +// used by +// [gRPC](https://github.com/grpc). The error model is designed to +// be: +// +// - Simple to use and understand for most users +// - Flexible enough to meet unexpected needs +// +// # Overview +// +// The `Status` message contains three pieces of data: error code, error +// message, +// and error details. The error code should be an enum value +// of +// google.rpc.Code, but it may accept additional error codes if needed. +// The +// error message should be a developer-facing English message that +// helps +// developers *understand* and *resolve* the error. If a localized +// user-facing +// error message is needed, put the localized message in the error +// details or +// localize it in the client. The optional error details may contain +// arbitrary +// information about the error. There is a predefined set of error +// detail types +// in the package `google.rpc` that can be used for common error +// conditions. +// +// # Language mapping +// +// The `Status` message is the logical representation of the error +// model, but it +// is not necessarily the actual wire format. When the `Status` message +// is +// exposed in different client libraries and different wire protocols, +// it can be +// mapped differently. For example, it will likely be mapped to some +// exceptions +// in Java, but more likely mapped to some error codes in C. +// +// # Other uses +// +// The error model and the `Status` message can be used in a variety +// of +// environments, either with or without APIs, to provide a +// consistent developer experience across different +// environments. +// +// Example uses of this error model include: +// +// - Partial errors. If a service needs to return partial errors to the +// client, +// it may embed the `Status` in the normal response to indicate the +// partial +// errors. +// +// - Workflow errors. A typical workflow has multiple steps. Each step +// may +// have a `Status` message for error reporting. +// +// - Batch operations. If a client uses batch request and batch +// response, the +// `Status` message should be used directly inside batch response, +// one for +// each error sub-response. +// +// - Asynchronous operations. If an API call embeds asynchronous +// operation +// results in its response, the status of those operations should +// be +// represented directly using the `Status` message. +// +// - Logging. If some API errors are stored in logs, the message +// `Status` could +// be used directly after any stripping needed for security/privacy +// reasons. +type Status struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of + // message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any + // user-facing error message should be localized and sent in + // the + // google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Status) MarshalJSON() ([]byte, error) { + type noMethod Status + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UpdatePhotoRequest: Request to update the metadata of a +// Photo. Updating the pixels of a photo +// is not supported. +type UpdatePhotoRequest struct { + // Photo: Required. Photo object containing the + // new metadata. + Photo *Photo `json:"photo,omitempty"` + + // UpdateMask: Mask that identifies fields on the photo metadata to + // update. + // If not present, the old Photo metadata will be entirely replaced with + // the + // new Photo metadata in this request. The update fails if invalid + // fields are + // specified. Multiple fields can be specified in a comma-delimited + // list. + // + // The following fields are valid: + // + // * `pose.heading` + // * `pose.latLngPair` + // * `pose.pitch` + // * `pose.roll` + // * `pose.level` + // * `pose.altitude` + // * `connections` + // * `places` + // + // + // + UpdateMask string `json:"updateMask,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Photo") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Photo") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UpdatePhotoRequest) MarshalJSON() ([]byte, error) { + type noMethod UpdatePhotoRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UploadRef: Upload reference for media files. +type UploadRef struct { + // UploadUrl: Required. An upload reference should be unique for each + // user. It follows + // the + // form: + // "https://streetviewpublish.googleapis.com/media/user/{account_id + // }/photo/{upload_reference}" + UploadUrl string `json:"uploadUrl,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "UploadUrl") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "UploadUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadRef) MarshalJSON() ([]byte, error) { + type noMethod UploadRef + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// method id "streetviewpublish.photo.create": + +type PhotoCreateCall struct { + s *Service + photo *Photo + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: After the client finishes uploading the photo with the +// returned +// UploadRef, +// CreatePhoto +// publishes the uploaded Photo to +// Street View on Google Maps. +// +// This method returns the following error codes: +// +// * google.rpc.Code.INVALID_ARGUMENT if the request is malformed. +// * google.rpc.Code.NOT_FOUND if the upload reference does not exist. +// * google.rpc.Code.RESOURCE_EXHAUSTED if the account has reached +// the +// storage limit. +func (r *PhotoService) Create(photo *Photo) *PhotoCreateCall { + c := &PhotoCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.photo = photo + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotoCreateCall) Fields(s ...googleapi.Field) *PhotoCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotoCreateCall) Context(ctx context.Context) *PhotoCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotoCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotoCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.photo) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photo") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photo.create" call. +// Exactly one of *Photo or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Photo.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PhotoCreateCall) Do(opts ...googleapi.CallOption) (*Photo, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Photo{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "After the client finishes uploading the photo with the returned\nUploadRef,\nCreatePhoto\npublishes the uploaded Photo to\nStreet View on Google Maps.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the upload reference does not exist.\n* google.rpc.Code.RESOURCE_EXHAUSTED if the account has reached the\nstorage limit.", + // "flatPath": "v1/photo", + // "httpMethod": "POST", + // "id": "streetviewpublish.photo.create", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1/photo", + // "request": { + // "$ref": "Photo" + // }, + // "response": { + // "$ref": "Photo" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photo.delete": + +type PhotoDeleteCall struct { + s *Service + photoId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a Photo and its metadata. +// +// This method returns the following error codes: +// +// * google.rpc.Code.PERMISSION_DENIED if the requesting user did +// not +// create the requested photo. +// * google.rpc.Code.NOT_FOUND if the photo ID does not exist. +func (r *PhotoService) Delete(photoId string) *PhotoDeleteCall { + c := &PhotoDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.photoId = photoId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotoDeleteCall) Fields(s ...googleapi.Field) *PhotoDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotoDeleteCall) Context(ctx context.Context) *PhotoDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotoDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotoDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photo/{photoId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "photoId": c.photoId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photo.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PhotoDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a Photo and its metadata.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.NOT_FOUND if the photo ID does not exist.", + // "flatPath": "v1/photo/{photoId}", + // "httpMethod": "DELETE", + // "id": "streetviewpublish.photo.delete", + // "parameterOrder": [ + // "photoId" + // ], + // "parameters": { + // "photoId": { + // "description": "Required. ID of the Photo.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/photo/{photoId}", + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photo.get": + +type PhotoGetCall struct { + s *Service + photoId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the metadata of the specified +// Photo. +// +// This method returns the following error codes: +// +// * google.rpc.Code.PERMISSION_DENIED if the requesting user did +// not +// create the requested Photo. +// * google.rpc.Code.NOT_FOUND if the requested +// Photo does not exist. +func (r *PhotoService) Get(photoId string) *PhotoGetCall { + c := &PhotoGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.photoId = photoId + return c +} + +// View sets the optional parameter "view": Specifies if a download URL +// for the photo bytes should be returned in the +// Photo response. +// +// Possible values: +// "BASIC" +// "INCLUDE_DOWNLOAD_URL" +func (c *PhotoGetCall) View(view string) *PhotoGetCall { + c.urlParams_.Set("view", view) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotoGetCall) Fields(s ...googleapi.Field) *PhotoGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PhotoGetCall) IfNoneMatch(entityTag string) *PhotoGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotoGetCall) Context(ctx context.Context) *PhotoGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotoGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotoGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photo/{photoId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "photoId": c.photoId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photo.get" call. +// Exactly one of *Photo or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Photo.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PhotoGetCall) Do(opts ...googleapi.CallOption) (*Photo, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Photo{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the metadata of the specified\nPhoto.\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested Photo.\n* google.rpc.Code.NOT_FOUND if the requested\nPhoto does not exist.", + // "flatPath": "v1/photo/{photoId}", + // "httpMethod": "GET", + // "id": "streetviewpublish.photo.get", + // "parameterOrder": [ + // "photoId" + // ], + // "parameters": { + // "photoId": { + // "description": "Required. ID of the Photo.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "view": { + // "description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response.", + // "enum": [ + // "BASIC", + // "INCLUDE_DOWNLOAD_URL" + // ], + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/photo/{photoId}", + // "response": { + // "$ref": "Photo" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photo.startUpload": + +type PhotoStartUploadCall struct { + s *Service + empty *Empty + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// StartUpload: Creates an upload session to start uploading photo +// bytes. The upload URL of +// the returned UploadRef is used to +// upload the bytes for the Photo. +// +// In addition to the photo requirements shown +// in +// https://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275 +// 604, +// the photo must also meet the following requirements: +// +// * Photo Sphere XMP metadata must be included in the photo medadata. +// See +// https://developers.google.com/streetview/spherical-metadata for +// the +// required fields. +// * The pixel size of the photo must meet the size requirements listed +// in +// https://support.google.com/maps/answer/7012050?hl=en&ref_topic=6275 +// 604, and +// the photo must be a full 360 horizontally. +// +// After the upload is complete, the +// UploadRef is used with +// CreatePhoto +// to create the Photo object entry. +func (r *PhotoService) StartUpload(empty *Empty) *PhotoStartUploadCall { + c := &PhotoStartUploadCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.empty = empty + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotoStartUploadCall) Fields(s ...googleapi.Field) *PhotoStartUploadCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotoStartUploadCall) Context(ctx context.Context) *PhotoStartUploadCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotoStartUploadCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotoStartUploadCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.empty) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photo:startUpload") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photo.startUpload" call. +// Exactly one of *UploadRef or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *UploadRef.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *PhotoStartUploadCall) Do(opts ...googleapi.CallOption) (*UploadRef, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &UploadRef{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an upload session to start uploading photo bytes. The upload URL of\nthe returned UploadRef is used to\nupload the bytes for the Photo.\n\nIn addition to the photo requirements shown in\nhttps://support.google.com/maps/answer/7012050?hl=en\u0026ref_topic=6275604,\nthe photo must also meet the following requirements:\n\n* Photo Sphere XMP metadata must be included in the photo medadata. See\nhttps://developers.google.com/streetview/spherical-metadata for the\nrequired fields.\n* The pixel size of the photo must meet the size requirements listed in\nhttps://support.google.com/maps/answer/7012050?hl=en\u0026ref_topic=6275604, and\nthe photo must be a full 360 horizontally.\n\nAfter the upload is complete, the\nUploadRef is used with\nCreatePhoto\nto create the Photo object entry.", + // "flatPath": "v1/photo:startUpload", + // "httpMethod": "POST", + // "id": "streetviewpublish.photo.startUpload", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1/photo:startUpload", + // "request": { + // "$ref": "Empty" + // }, + // "response": { + // "$ref": "UploadRef" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photo.update": + +type PhotoUpdateCall struct { + s *Service + id string + photo *Photo + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Updates the metadata of a Photo, such +// as pose, place association, connections, etc. Changing the pixels of +// a +// photo is not supported. +// +// Only the fields specified in +// updateMask +// field are used. If `updateMask` is not present, the update applies to +// all +// fields. +// +// +// +// This method returns the following error codes: +// +// * google.rpc.Code.PERMISSION_DENIED if the requesting user did +// not +// create the requested photo. +// * google.rpc.Code.INVALID_ARGUMENT if the request is malformed. +// * google.rpc.Code.NOT_FOUND if the requested photo does not exist. +func (r *PhotoService) Update(id string, photo *Photo) *PhotoUpdateCall { + c := &PhotoUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.id = id + c.photo = photo + return c +} + +// UpdateMask sets the optional parameter "updateMask": Mask that +// identifies fields on the photo metadata to update. +// If not present, the old Photo metadata will be entirely replaced with +// the +// new Photo metadata in this request. The update fails if invalid +// fields are +// specified. Multiple fields can be specified in a comma-delimited +// list. +// +// The following fields are valid: +// +// * `pose.heading` +// * `pose.latLngPair` +// * `pose.pitch` +// * `pose.roll` +// * `pose.level` +// * `pose.altitude` +// * `connections` +// * `places` +// +// +// +func (c *PhotoUpdateCall) UpdateMask(updateMask string) *PhotoUpdateCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotoUpdateCall) Fields(s ...googleapi.Field) *PhotoUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotoUpdateCall) Context(ctx context.Context) *PhotoUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotoUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotoUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.photo) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photo/{id}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PUT", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "id": c.id, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photo.update" call. +// Exactly one of *Photo or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Photo.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *PhotoUpdateCall) Do(opts ...googleapi.CallOption) (*Photo, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Photo{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the metadata of a Photo, such\nas pose, place association, connections, etc. Changing the pixels of a\nphoto is not supported.\n\nOnly the fields specified in\nupdateMask\nfield are used. If `updateMask` is not present, the update applies to all\nfields.\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e To update\nPose.altitude,\nPose.latLngPair has to be\nfilled as well. Otherwise, the request will fail.\u003c/aside\u003e\n\nThis method returns the following error codes:\n\n* google.rpc.Code.PERMISSION_DENIED if the requesting user did not\ncreate the requested photo.\n* google.rpc.Code.INVALID_ARGUMENT if the request is malformed.\n* google.rpc.Code.NOT_FOUND if the requested photo does not exist.", + // "flatPath": "v1/photo/{id}", + // "httpMethod": "PUT", + // "id": "streetviewpublish.photo.update", + // "parameterOrder": [ + // "id" + // ], + // "parameters": { + // "id": { + // "description": "Required. A unique identifier for a photo.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Mask that identifies fields on the photo metadata to update.\nIf not present, the old Photo metadata will be entirely replaced with the\nnew Photo metadata in this request. The update fails if invalid fields are\nspecified. Multiple fields can be specified in a comma-delimited list.\n\nThe following fields are valid:\n\n* `pose.heading`\n* `pose.latLngPair`\n* `pose.pitch`\n* `pose.roll`\n* `pose.level`\n* `pose.altitude`\n* `connections`\n* `places`\n\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e Repeated fields in\nupdateMask\nmean the entire set of repeated values will be replaced with the new\ncontents. For example, if\nupdateMask\ncontains `connections` and `UpdatePhotoRequest.photo.connections` is empty,\nall connections will be removed.\u003c/aside\u003e", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/photo/{id}", + // "request": { + // "$ref": "Photo" + // }, + // "response": { + // "$ref": "Photo" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photos.batchDelete": + +type PhotosBatchDeleteCall struct { + s *Service + batchdeletephotosrequest *BatchDeletePhotosRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// BatchDelete: Deletes a list of Photos and their +// metadata. +// +// Note that if +// BatchDeletePhotos +// fails, either critical fields are missing or there was an +// authentication +// error. Even if +// BatchDeletePhotos +// succeeds, there may have been failures for single photos in the +// batch. +// These failures will be specified in +// each +// PhotoResponse.status +// in +// BatchDeletePhotosResponse.results. +// See +// De +// letePhoto +// for specific failures that can occur per photo. +func (r *PhotosService) BatchDelete(batchdeletephotosrequest *BatchDeletePhotosRequest) *PhotosBatchDeleteCall { + c := &PhotosBatchDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.batchdeletephotosrequest = batchdeletephotosrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotosBatchDeleteCall) Fields(s ...googleapi.Field) *PhotosBatchDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotosBatchDeleteCall) Context(ctx context.Context) *PhotosBatchDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotosBatchDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotosBatchDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.batchdeletephotosrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photos:batchDelete") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photos.batchDelete" call. +// Exactly one of *BatchDeletePhotosResponse or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *BatchDeletePhotosResponse.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PhotosBatchDeleteCall) Do(opts ...googleapi.CallOption) (*BatchDeletePhotosResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &BatchDeletePhotosResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a list of Photos and their\nmetadata.\n\nNote that if\nBatchDeletePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchDeletePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchDeletePhotosResponse.results.\nSee\nDeletePhoto\nfor specific failures that can occur per photo.", + // "flatPath": "v1/photos:batchDelete", + // "httpMethod": "POST", + // "id": "streetviewpublish.photos.batchDelete", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1/photos:batchDelete", + // "request": { + // "$ref": "BatchDeletePhotosRequest" + // }, + // "response": { + // "$ref": "BatchDeletePhotosResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photos.batchGet": + +type PhotosBatchGetCall struct { + s *Service + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// BatchGet: Gets the metadata of the specified +// Photo batch. +// +// Note that if +// BatchGetPhotos +// fails, either critical fields are missing or there was an +// authentication +// error. Even if +// BatchGetPhotos +// succeeds, there may have been failures for single photos in the +// batch. +// These failures will be specified in +// each +// PhotoResponse.status +// in +// BatchGetPhotosResponse.results. +// See +// GetPh +// oto +// for specific failures that can occur per photo. +func (r *PhotosService) BatchGet() *PhotosBatchGetCall { + c := &PhotosBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// PhotoIds sets the optional parameter "photoIds": Required. IDs of the +// Photos. For HTTP +// GET requests, the URL query parameter should +// be +// `photoIds=&photoIds=&...`. +func (c *PhotosBatchGetCall) PhotoIds(photoIds ...string) *PhotosBatchGetCall { + c.urlParams_.SetMulti("photoIds", append([]string{}, photoIds...)) + return c +} + +// View sets the optional parameter "view": Specifies if a download URL +// for the photo bytes should be returned in the +// Photo response. +// +// Possible values: +// "BASIC" +// "INCLUDE_DOWNLOAD_URL" +func (c *PhotosBatchGetCall) View(view string) *PhotosBatchGetCall { + c.urlParams_.Set("view", view) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotosBatchGetCall) Fields(s ...googleapi.Field) *PhotosBatchGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PhotosBatchGetCall) IfNoneMatch(entityTag string) *PhotosBatchGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotosBatchGetCall) Context(ctx context.Context) *PhotosBatchGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotosBatchGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotosBatchGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photos:batchGet") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photos.batchGet" call. +// Exactly one of *BatchGetPhotosResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *BatchGetPhotosResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PhotosBatchGetCall) Do(opts ...googleapi.CallOption) (*BatchGetPhotosResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &BatchGetPhotosResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the metadata of the specified\nPhoto batch.\n\nNote that if\nBatchGetPhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchGetPhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchGetPhotosResponse.results.\nSee\nGetPhoto\nfor specific failures that can occur per photo.", + // "flatPath": "v1/photos:batchGet", + // "httpMethod": "GET", + // "id": "streetviewpublish.photos.batchGet", + // "parameterOrder": [], + // "parameters": { + // "photoIds": { + // "description": "Required. IDs of the Photos. For HTTP\nGET requests, the URL query parameter should be\n`photoIds=\u003cid1\u003e\u0026photoIds=\u003cid2\u003e\u0026...`.", + // "location": "query", + // "repeated": true, + // "type": "string" + // }, + // "view": { + // "description": "Specifies if a download URL for the photo bytes should be returned in the\nPhoto response.", + // "enum": [ + // "BASIC", + // "INCLUDE_DOWNLOAD_URL" + // ], + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/photos:batchGet", + // "response": { + // "$ref": "BatchGetPhotosResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photos.batchUpdate": + +type PhotosBatchUpdateCall struct { + s *Service + batchupdatephotosrequest *BatchUpdatePhotosRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// BatchUpdate: Updates the metadata of Photos, such +// as pose, place association, connections, etc. Changing the pixels of +// photos +// is not supported. +// +// Note that if +// BatchUpdatePhotos +// fails, either critical fields are missing or there was an +// authentication +// error. Even if +// BatchUpdatePhotos +// succeeds, there may have been failures for single photos in the +// batch. +// These failures will be specified in +// each +// PhotoResponse.status +// in +// BatchUpdatePhotosResponse.results. +// See +// Up +// datePhoto +// for specific failures that can occur per photo. +// +// Only the fields specified in +// updateMask +// field are used. If `updateMask` is not present, the update applies to +// all +// fields. +// +// +func (r *PhotosService) BatchUpdate(batchupdatephotosrequest *BatchUpdatePhotosRequest) *PhotosBatchUpdateCall { + c := &PhotosBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.batchupdatephotosrequest = batchupdatephotosrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotosBatchUpdateCall) Fields(s ...googleapi.Field) *PhotosBatchUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotosBatchUpdateCall) Context(ctx context.Context) *PhotosBatchUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotosBatchUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotosBatchUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.batchupdatephotosrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photos:batchUpdate") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photos.batchUpdate" call. +// Exactly one of *BatchUpdatePhotosResponse or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *BatchUpdatePhotosResponse.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PhotosBatchUpdateCall) Do(opts ...googleapi.CallOption) (*BatchUpdatePhotosResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &BatchUpdatePhotosResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the metadata of Photos, such\nas pose, place association, connections, etc. Changing the pixels of photos\nis not supported.\n\nNote that if\nBatchUpdatePhotos\nfails, either critical fields are missing or there was an authentication\nerror. Even if\nBatchUpdatePhotos\nsucceeds, there may have been failures for single photos in the batch.\nThese failures will be specified in each\nPhotoResponse.status\nin\nBatchUpdatePhotosResponse.results.\nSee\nUpdatePhoto\nfor specific failures that can occur per photo.\n\nOnly the fields specified in\nupdateMask\nfield are used. If `updateMask` is not present, the update applies to all\nfields.\n\n\u003caside class=\"note\"\u003e\u003cb\u003eNote:\u003c/b\u003e To update\nPose.altitude,\nPose.latLngPair has to be\nfilled as well. Otherwise, the request will fail.\u003c/aside\u003e", + // "flatPath": "v1/photos:batchUpdate", + // "httpMethod": "POST", + // "id": "streetviewpublish.photos.batchUpdate", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1/photos:batchUpdate", + // "request": { + // "$ref": "BatchUpdatePhotosRequest" + // }, + // "response": { + // "$ref": "BatchUpdatePhotosResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// method id "streetviewpublish.photos.list": + +type PhotosListCall struct { + s *Service + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all the Photos that belong to +// the user. +func (r *PhotosService) List() *PhotosListCall { + c := &PhotosListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// Filter sets the optional parameter "filter": The filter expression. +// For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`. +func (c *PhotosListCall) Filter(filter string) *PhotosListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of photos to return. +// `pageSize` must be non-negative. If `pageSize` is zero or is not +// provided, +// the default page size of 100 will be used. +// The number of photos returned in the response may be less than +// `pageSize` +// if the number of photos that belong to the user is less than +// `pageSize`. +func (c *PhotosListCall) PageSize(pageSize int64) *PhotosListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": +// The +// nextPageToken +// value returned from a previous +// ListPhotos +// request, if any. +func (c *PhotosListCall) PageToken(pageToken string) *PhotosListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// View sets the optional parameter "view": Specifies if a download URL +// for the photos bytes should be returned in the +// Photos response. +// +// Possible values: +// "BASIC" +// "INCLUDE_DOWNLOAD_URL" +func (c *PhotosListCall) View(view string) *PhotosListCall { + c.urlParams_.Set("view", view) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PhotosListCall) Fields(s ...googleapi.Field) *PhotosListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PhotosListCall) IfNoneMatch(entityTag string) *PhotosListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PhotosListCall) Context(ctx context.Context) *PhotosListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PhotosListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PhotosListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/photos") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "streetviewpublish.photos.list" call. +// Exactly one of *ListPhotosResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListPhotosResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PhotosListCall) Do(opts ...googleapi.CallOption) (*ListPhotosResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListPhotosResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all the Photos that belong to\nthe user.", + // "flatPath": "v1/photos", + // "httpMethod": "GET", + // "id": "streetviewpublish.photos.list", + // "parameterOrder": [], + // "parameters": { + // "filter": { + // "description": "The filter expression. For example: `placeId=ChIJj61dQgK6j4AR4GeTYWZsKWw`.", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "The maximum number of photos to return.\n`pageSize` must be non-negative. If `pageSize` is zero or is not provided,\nthe default page size of 100 will be used.\nThe number of photos returned in the response may be less than `pageSize`\nif the number of photos that belong to the user is less than `pageSize`.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The\nnextPageToken\nvalue returned from a previous\nListPhotos\nrequest, if any.", + // "location": "query", + // "type": "string" + // }, + // "view": { + // "description": "Specifies if a download URL for the photos bytes should be returned in the\nPhotos response.", + // "enum": [ + // "BASIC", + // "INCLUDE_DOWNLOAD_URL" + // ], + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/photos", + // "response": { + // "$ref": "ListPhotosResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/streetviewpublish" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *PhotosListCall) Pages(ctx context.Context, f func(*ListPhotosResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} diff --git a/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-api.json b/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-api.json index a8506bd..80706dd 100644 --- a/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-api.json +++ b/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-api.json @@ -1,12 +1,12 @@ { "kind": "discovery#restDescription", - "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/TdjAcGRUDskRBNNbXs3PGqnucOE\"", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/4IS26QJ6i_pGnl9nFsOUv5mlO44\"", "discoveryVersion": "v1", "id": "toolresults:v1beta3", "name": "toolresults", "canonicalName": "Tool Results", "version": "v1beta3", - "revision": "20170818", + "revision": "20170829", "title": "Cloud Tool Results API", "description": "Reads and publishes results from Firebase Test Lab.", "ownerDomain": "google.com", @@ -1617,6 +1617,47 @@ "resources": { "clusters": { "methods": { + "get": { + "id": "toolresults.projects.histories.executions.clusters.get", + "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}", + "httpMethod": "GET", + "description": "Retrieves a single screenshot cluster by its ID", + "parameters": { + "clusterId": { + "type": "string", + "description": "A Cluster id\n\nRequired.", + "required": true, + "location": "path" + }, + "executionId": { + "type": "string", + "description": "An Execution id.\n\nRequired.", + "required": true, + "location": "path" + }, + "historyId": { + "type": "string", + "description": "A History id.\n\nRequired.", + "required": true, + "location": "path" + }, + "projectId": { + "type": "string", + "description": "A Project id.\n\nRequired.", + "required": true, + "location": "path" + } + }, + "parameterOrder": [ + "projectId", + "historyId", + "executionId", + "clusterId" + ], + "response": { + "$ref": "ScreenshotCluster" + } + }, "list": { "id": "toolresults.projects.histories.executions.clusters.list", "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters", diff --git a/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-gen.go b/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-gen.go index df98bf4..94b3b7b 100644 --- a/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-gen.go +++ b/vendor/google.golang.org/api/toolresults/v1beta3/toolresults-gen.go @@ -1769,6 +1769,10 @@ type ScreenshotCluster struct { // Screens: Full list of screens. Screens []*Screen `json:"screens,omitempty"` + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + // ForceSendFields is a list of field names (e.g. "Activity") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -4410,6 +4414,170 @@ func (c *ProjectsHistoriesExecutionsPatchCall) Do(opts ...googleapi.CallOption) } +// method id "toolresults.projects.histories.executions.clusters.get": + +type ProjectsHistoriesExecutionsClustersGetCall struct { + s *Service + projectId string + historyId string + executionId string + clusterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Retrieves a single screenshot cluster by its ID +func (r *ProjectsHistoriesExecutionsClustersService) Get(projectId string, historyId string, executionId string, clusterId string) *ProjectsHistoriesExecutionsClustersGetCall { + c := &ProjectsHistoriesExecutionsClustersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.historyId = historyId + c.executionId = executionId + c.clusterId = clusterId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Fields(s ...googleapi.Field) *ProjectsHistoriesExecutionsClustersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsHistoriesExecutionsClustersGetCall) IfNoneMatch(entityTag string) *ProjectsHistoriesExecutionsClustersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Context(ctx context.Context) *ProjectsHistoriesExecutionsClustersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsHistoriesExecutionsClustersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "historyId": c.historyId, + "executionId": c.executionId, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "toolresults.projects.histories.executions.clusters.get" call. +// Exactly one of *ScreenshotCluster or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ScreenshotCluster.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Do(opts ...googleapi.CallOption) (*ScreenshotCluster, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ScreenshotCluster{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves a single screenshot cluster by its ID", + // "httpMethod": "GET", + // "id": "toolresults.projects.histories.executions.clusters.get", + // "parameterOrder": [ + // "projectId", + // "historyId", + // "executionId", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "A Cluster id\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "executionId": { + // "description": "An Execution id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "historyId": { + // "description": "A History id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "A Project id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}", + // "response": { + // "$ref": "ScreenshotCluster" + // } + // } + +} + // method id "toolresults.projects.histories.executions.clusters.list": type ProjectsHistoriesExecutionsClustersListCall struct { diff --git a/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-api.json b/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-api.json index 08c1ddc..7b93d0c 100644 --- a/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-api.json +++ b/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-api.json @@ -1,12 +1,12 @@ { "kind": "discovery#restDescription", - "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/dlMcK_O5qqvy3yxCr-z4e9qy7Xs\"", + "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/vf_A6M-eICL1BJXtaEXx9IJ01jU\"", "discoveryVersion": "v1", "id": "toolresults:v1beta3firstparty", "name": "toolresults", "canonicalName": "Tool Results", "version": "v1beta3firstparty", - "revision": "20170818", + "revision": "20170829", "title": "Cloud Tool Results firstparty API", "description": "Reads and publishes results from Firebase Test Lab.", "ownerDomain": "google.com", @@ -1581,6 +1581,47 @@ "resources": { "clusters": { "methods": { + "get": { + "id": "toolresults.projects.histories.executions.clusters.get", + "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}", + "httpMethod": "GET", + "description": "Retrieves a single screenshot cluster by its ID", + "parameters": { + "clusterId": { + "type": "string", + "description": "A Cluster id\n\nRequired.", + "required": true, + "location": "path" + }, + "executionId": { + "type": "string", + "description": "An Execution id.\n\nRequired.", + "required": true, + "location": "path" + }, + "historyId": { + "type": "string", + "description": "A History id.\n\nRequired.", + "required": true, + "location": "path" + }, + "projectId": { + "type": "string", + "description": "A Project id.\n\nRequired.", + "required": true, + "location": "path" + } + }, + "parameterOrder": [ + "projectId", + "historyId", + "executionId", + "clusterId" + ], + "response": { + "$ref": "ScreenshotCluster" + } + }, "list": { "id": "toolresults.projects.histories.executions.clusters.list", "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters", diff --git a/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-gen.go b/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-gen.go index ddf1aac..c11b8be 100644 --- a/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-gen.go +++ b/vendor/google.golang.org/api/toolresults/v1beta3firstparty/toolresults-gen.go @@ -1763,6 +1763,10 @@ type ScreenshotCluster struct { // Screens: Full list of screens. Screens []*Screen `json:"screens,omitempty"` + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + // ForceSendFields is a list of field names (e.g. "Activity") to // unconditionally include in API requests. By default, fields with // empty values are omitted from API requests. However, any non-pointer, @@ -4377,6 +4381,170 @@ func (c *ProjectsHistoriesExecutionsPatchCall) Do(opts ...googleapi.CallOption) } +// method id "toolresults.projects.histories.executions.clusters.get": + +type ProjectsHistoriesExecutionsClustersGetCall struct { + s *Service + projectId string + historyId string + executionId string + clusterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Retrieves a single screenshot cluster by its ID +func (r *ProjectsHistoriesExecutionsClustersService) Get(projectId string, historyId string, executionId string, clusterId string) *ProjectsHistoriesExecutionsClustersGetCall { + c := &ProjectsHistoriesExecutionsClustersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.projectId = projectId + c.historyId = historyId + c.executionId = executionId + c.clusterId = clusterId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Fields(s ...googleapi.Field) *ProjectsHistoriesExecutionsClustersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsHistoriesExecutionsClustersGetCall) IfNoneMatch(entityTag string) *ProjectsHistoriesExecutionsClustersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Context(ctx context.Context) *ProjectsHistoriesExecutionsClustersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsHistoriesExecutionsClustersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "projectId": c.projectId, + "historyId": c.historyId, + "executionId": c.executionId, + "clusterId": c.clusterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "toolresults.projects.histories.executions.clusters.get" call. +// Exactly one of *ScreenshotCluster or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ScreenshotCluster.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsHistoriesExecutionsClustersGetCall) Do(opts ...googleapi.CallOption) (*ScreenshotCluster, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ScreenshotCluster{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Retrieves a single screenshot cluster by its ID", + // "httpMethod": "GET", + // "id": "toolresults.projects.histories.executions.clusters.get", + // "parameterOrder": [ + // "projectId", + // "historyId", + // "executionId", + // "clusterId" + // ], + // "parameters": { + // "clusterId": { + // "description": "A Cluster id\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "executionId": { + // "description": "An Execution id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "historyId": { + // "description": "A History id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "projectId": { + // "description": "A Project id.\n\nRequired.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "{projectId}/histories/{historyId}/executions/{executionId}/clusters/{clusterId}", + // "response": { + // "$ref": "ScreenshotCluster" + // } + // } + +} + // method id "toolresults.projects.histories.executions.clusters.list": type ProjectsHistoriesExecutionsClustersListCall struct { diff --git a/vendor/google.golang.org/api/translate/v2/translate-api.json b/vendor/google.golang.org/api/translate/v2/translate-api.json index 1ec48e8..dc80ea7 100644 --- a/vendor/google.golang.org/api/translate/v2/translate-api.json +++ b/vendor/google.golang.org/api/translate/v2/translate-api.json @@ -1,16 +1,45 @@ { - "revision": "20170525", - "documentationLink": "https://code.google.com/apis/language/translate/v2/getting_started.html", - "id": "translate:v2", - "discoveryVersion": "v1", "schemas": { + "DetectionsListResponse": { + "id": "DetectionsListResponse", + "type": "object", + "properties": { + "detections": { + "description": "A detections contains detection results of several text", + "items": { + "$ref": "DetectionsResource" + }, + "type": "array" + } + } + }, + "GetSupportedLanguagesRequest": { + "id": "GetSupportedLanguagesRequest", + "description": "The request message for discovering supported languages.", + "type": "object", + "properties": { + "target": { + "description": "The language to use to return localized, human readable names of supported\nlanguages.", + "type": "string" + } + } + }, + "LanguagesListResponse": { + "id": "LanguagesListResponse", + "type": "object", + "properties": { + "languages": { + "description": "List of source/target languages supported by the translation API. If target parameter is unspecified, the list is sorted by the ASCII code point order of the language code. If target parameter is specified, the list is sorted by the collation order of the language name in the target language.", + "items": { + "$ref": "LanguagesResource" + }, + "type": "array" + } + } + }, "TranslationsResource": { "type": "object", "properties": { - "translatedText": { - "description": "Text translated into the target language.", - "type": "string" - }, "detectedSourceLanguage": { "description": "The source language of the initial request, detected automatically, if\nno source language was passed within the initial request. If the\nsource language was passed, auto-detection of the language will not\noccur and this field will be empty.", "type": "string" @@ -18,20 +47,20 @@ "model": { "description": "The `model` type used for this translation. Valid values are\nlisted in public documentation. Can be different from requested `model`.\nPresent only if specific model type was explicitly requested.", "type": "string" + }, + "translatedText": { + "description": "Text translated into the target language.", + "type": "string" } }, "id": "TranslationsResource" }, "DetectionsResource": { + "id": "DetectionsResource", "description": "An array of languages which we detect for the given text The most likely language list first.", "items": { "type": "object", "properties": { - "confidence": { - "format": "float", - "description": "The confidence of the detection result of this language.", - "type": "number" - }, "language": { "description": "The language we detected.", "type": "string" @@ -39,13 +68,18 @@ "isReliable": { "description": "A boolean to indicate is the language detection result reliable.", "type": "boolean" + }, + "confidence": { + "format": "float", + "description": "The confidence of the detection result of this language.", + "type": "number" } } }, - "type": "array", - "id": "DetectionsResource" + "type": "array" }, "TranslationsListResponse": { + "id": "TranslationsListResponse", "description": "The main language translation response message.", "type": "object", "properties": { @@ -56,13 +90,17 @@ }, "type": "array" } - }, - "id": "TranslationsListResponse" + } }, "TranslateTextRequest": { + "id": "TranslateTextRequest", "description": "The main translation request message for the Cloud Translation API.", "type": "object", "properties": { + "target": { + "description": "The language to use for translation of the input text, set to one of the\nlanguage codes listed in Language Support.", + "type": "string" + }, "format": { "description": "The format of the source text, in either HTML (default) or plain-text. A\nvalue of \"html\" indicates HTML and a value of \"text\" indicates plain-text.", "type": "string" @@ -81,15 +119,11 @@ "model": { "description": "The `model` type requested for this translation. Valid values are\nlisted in public documentation.", "type": "string" - }, - "target": { - "description": "The language to use for translation of the input text, set to one of the\nlanguage codes listed in Language Support.", - "type": "string" } - }, - "id": "TranslateTextRequest" + } }, "DetectLanguageRequest": { + "id": "DetectLanguageRequest", "description": "The request message for language detection.", "type": "object", "properties": { @@ -100,8 +134,7 @@ }, "type": "array" } - }, - "id": "DetectLanguageRequest" + } }, "LanguagesResource": { "type": "object", @@ -116,59 +149,22 @@ } }, "id": "LanguagesResource" - }, - "DetectionsListResponse": { - "type": "object", - "properties": { - "detections": { - "description": "A detections contains detection results of several text", - "items": { - "$ref": "DetectionsResource" - }, - "type": "array" - } - }, - "id": "DetectionsListResponse" - }, - "GetSupportedLanguagesRequest": { - "description": "The request message for discovering supported languages.", - "type": "object", - "properties": { - "target": { - "description": "The language to use to return localized, human readable names of supported\nlanguages.", - "type": "string" - } - }, - "id": "GetSupportedLanguagesRequest" - }, - "LanguagesListResponse": { - "type": "object", - "properties": { - "languages": { - "description": "List of source/target languages supported by the translation API. If target parameter is unspecified, the list is sorted by the ASCII code point order of the language code. If target parameter is specified, the list is sorted by the collation order of the language name in the target language.", - "items": { - "$ref": "LanguagesResource" - }, - "type": "array" - } - }, - "id": "LanguagesListResponse" } }, + "protocol": "rest", "icons": { "x16": "https://www.google.com/images/icons/product/translate-16.png", "x32": "https://www.google.com/images/icons/product/translate-32.png" }, - "protocol": "rest", "canonicalName": "Translate", "auth": { "oauth2": { "scopes": { - "https://www.googleapis.com/auth/cloud-translation": { - "description": "Translate text from one language to another using Google Translate" - }, "https://www.googleapis.com/auth/cloud-platform": { "description": "View and manage your data across Google Cloud Platform services" + }, + "https://www.googleapis.com/auth/cloud-translation": { + "description": "Translate text from one language to another using Google Translate" } } } @@ -177,72 +173,147 @@ "ownerDomain": "google.com", "name": "translate", "batchPath": "batch/translate", + "title": "Google Cloud Translation API", "features": [ "dataWrapper" ], - "title": "Google Cloud Translation API", "ownerName": "Google", "resources": { - "languages": { + "detections": { "methods": { - "list": { - "id": "language.languages.list", - "path": "v2/languages", - "description": "Returns a list of supported languages for translation.", + "detect": { + "httpMethod": "POST", + "parameterOrder": [], "response": { - "$ref": "LanguagesListResponse" + "$ref": "DetectionsListResponse" }, + "parameters": {}, + "scopes": [ + "https://www.googleapis.com/auth/cloud-translation", + "https://www.googleapis.com/auth/cloud-platform" + ], + "path": "v2/detect", + "id": "language.detections.detect", + "request": { + "$ref": "DetectLanguageRequest" + }, + "description": "Detects the language of text within a request." + }, + "list": { + "description": "Detects the language of text within a request.", "httpMethod": "GET", - "parameters": { - "model": { - "location": "query", - "description": "The model type for which supported languages should be returned.", - "type": "string" - }, - "target": { - "location": "query", - "description": "The language to use to return localized, human readable names of supported\nlanguages.", - "type": "string" - } + "parameterOrder": [ + "q" + ], + "response": { + "$ref": "DetectionsListResponse" }, "scopes": [ "https://www.googleapis.com/auth/cloud-translation", "https://www.googleapis.com/auth/cloud-platform" - ] + ], + "parameters": { + "q": { + "description": "The input text upon which to perform language detection. Repeat this\nparameter to perform language detection on multiple text inputs.", + "required": true, + "type": "string", + "repeated": true, + "location": "query" + } + }, + "path": "v2/detect", + "id": "language.detections.list" + } + } + }, + "languages": { + "methods": { + "list": { + "scopes": [ + "https://www.googleapis.com/auth/cloud-translation", + "https://www.googleapis.com/auth/cloud-platform" + ], + "parameters": { + "target": { + "description": "The language to use to return localized, human readable names of supported\nlanguages.", + "type": "string", + "location": "query" + }, + "model": { + "description": "The model type for which supported languages should be returned.", + "type": "string", + "location": "query" + } + }, + "id": "language.languages.list", + "path": "v2/languages", + "description": "Returns a list of supported languages for translation.", + "httpMethod": "GET", + "response": { + "$ref": "LanguagesListResponse" + } } } }, "translations": { "methods": { "translate": { + "path": "v2", + "id": "language.translations.translate", + "description": "Translates input text, returning translated text.", "request": { "$ref": "TranslateTextRequest" }, - "description": "Translates input text, returning translated text.", + "httpMethod": "POST", + "parameterOrder": [], "response": { "$ref": "TranslationsListResponse" }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-translation", "https://www.googleapis.com/auth/cloud-platform" ], - "id": "language.translations.translate", - "path": "v2" + "parameters": {} }, "list": { "description": "Translates input text, returning translated text.", - "parameterOrder": [ - "q", - "target" - ], "httpMethod": "GET", "response": { "$ref": "TranslationsListResponse" }, + "parameterOrder": [ + "q", + "target" + ], + "scopes": [ + "https://www.googleapis.com/auth/cloud-translation", + "https://www.googleapis.com/auth/cloud-platform" + ], "parameters": { + "q": { + "repeated": true, + "location": "query", + "description": "The input text to translate. Repeat this parameter to perform translation\noperations on multiple text inputs.", + "required": true, + "type": "string" + }, + "source": { + "description": "The language of the source text, set to one of the language codes listed in\nLanguage Support. If the source language is not specified, the API will\nattempt to identify the source language automatically and return it within\nthe response.", + "type": "string", + "location": "query" + }, + "cid": { + "repeated": true, + "location": "query", + "description": "The customization id for translate", + "type": "string" + }, + "target": { + "description": "The language to use for translation of the input text, set to one of the\nlanguage codes listed in Language Support.", + "required": true, + "type": "string", + "location": "query" + }, "format": { "description": "The format of the source text, in either HTML (default) or plain-text. A\nvalue of \"html\" indicates HTML and a value of \"text\" indicates plain-text.", "type": "string", @@ -257,103 +328,39 @@ ] }, "model": { - "location": "query", "description": "The `model` type requested for this translation. Valid values are\nlisted in public documentation.", - "type": "string" - }, - "q": { - "location": "query", - "description": "The input text to translate. Repeat this parameter to perform translation\noperations on multiple text inputs.", - "required": true, "type": "string", - "repeated": true - }, - "source": { - "location": "query", - "description": "The language of the source text, set to one of the language codes listed in\nLanguage Support. If the source language is not specified, the API will\nattempt to identify the source language automatically and return it within\nthe response.", - "type": "string" - }, - "cid": { - "description": "The customization id for translate", - "type": "string", - "repeated": true, - "location": "query" - }, - "target": { - "location": "query", - "description": "The language to use for translation of the input text, set to one of the\nlanguage codes listed in Language Support.", - "required": true, - "type": "string" - } - }, - "scopes": [ - "https://www.googleapis.com/auth/cloud-translation", - "https://www.googleapis.com/auth/cloud-platform" - ], - "id": "language.translations.list", - "path": "v2" - } - } - }, - "detections": { - "methods": { - "detect": { - "request": { - "$ref": "DetectLanguageRequest" - }, - "description": "Detects the language of text within a request.", - "httpMethod": "POST", - "parameterOrder": [], - "response": { - "$ref": "DetectionsListResponse" - }, - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-translation", - "https://www.googleapis.com/auth/cloud-platform" - ], - "path": "v2/detect", - "id": "language.detections.detect" - }, - "list": { - "response": { - "$ref": "DetectionsListResponse" - }, - "parameterOrder": [ - "q" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/cloud-translation", - "https://www.googleapis.com/auth/cloud-platform" - ], - "parameters": { - "q": { - "description": "The input text upon which to perform language detection. Repeat this\nparameter to perform language detection on multiple text inputs.", - "required": true, - "type": "string", - "repeated": true, "location": "query" } }, - "id": "language.detections.list", - "path": "v2/detect", - "description": "Detects the language of text within a request." + "path": "v2", + "id": "language.translations.list" } } } }, "parameters": { + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.", + "type": "string" + }, + "pp": { + "description": "Pretty-print response.", + "default": "true", + "type": "boolean", + "location": "query" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, "oauth_token": { "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, "upload_protocol": { "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", "type": "string", @@ -365,17 +372,24 @@ "type": "boolean", "location": "query" }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, "uploadType": { "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, "$.xgafv": { + "description": "V1 error format.", + "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" @@ -384,14 +398,7 @@ "enum": [ "1", "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" + ] }, "alt": { "enum": [ @@ -409,32 +416,25 @@ "description": "Data format for response.", "default": "json" }, - "key": { - "location": "query", - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string" - }, "access_token": { "description": "OAuth access token.", "type": "string", "location": "query" }, - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.", - "type": "string", - "location": "query" - }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", - "location": "query" + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" } }, "version": "v2", "baseUrl": "https://translation.googleapis.com/language/translate/", - "servicePath": "language/translate/", - "description": "The Google Cloud Translation API lets websites and programs integrate with\n Google Translate programmatically.", "kind": "discovery#restDescription", - "basePath": "/language/translate/" + "description": "The Google Cloud Translation API lets websites and programs integrate with\n Google Translate programmatically.", + "servicePath": "language/translate/", + "basePath": "/language/translate/", + "revision": "20170525", + "documentationLink": "https://code.google.com/apis/language/translate/v2/getting_started.html", + "id": "translate:v2", + "discoveryVersion": "v1" } diff --git a/vendor/google.golang.org/api/transport/grpc/dial.go b/vendor/google.golang.org/api/transport/grpc/dial.go new file mode 100644 index 0000000..8a23bd3 --- /dev/null +++ b/vendor/google.golang.org/api/transport/grpc/dial.go @@ -0,0 +1,86 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// 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. + +// Package transport/grpc supports network connections to GRPC servers. +// This package is not intended for use by end developers. Use the +// google.golang.org/api/option package to configure API clients. +package grpc + +import ( + "errors" + + "golang.org/x/net/context" + "google.golang.org/api/internal" + "google.golang.org/api/option" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/credentials/oauth" +) + +// Set at init time by dial_appengine.go. If nil, we're not on App Engine. +var appengineDialerHook func(context.Context) grpc.DialOption + +// Dial returns a GRPC connection for use communicating with a Google cloud +// service, configured with the given ClientOptions. +func Dial(ctx context.Context, opts ...option.ClientOption) (*grpc.ClientConn, error) { + var o internal.DialSettings + for _, opt := range opts { + opt.Apply(&o) + } + if o.HTTPClient != nil { + return nil, errors.New("unsupported HTTP client specified") + } + if o.GRPCConn != nil { + return o.GRPCConn, nil + } + creds, err := internal.Creds(ctx, &o) + if err != nil { + return nil, err + } + grpcOpts := []grpc.DialOption{ + grpc.WithPerRPCCredentials(oauth.TokenSource{creds.TokenSource}), + grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(nil, "")), + } + if appengineDialerHook != nil { + // Use the Socket API on App Engine. + grpcOpts = append(grpcOpts, appengineDialerHook(ctx)) + } + grpcOpts = append(grpcOpts, o.GRPCDialOpts...) + if o.UserAgent != "" { + grpcOpts = append(grpcOpts, grpc.WithUserAgent(o.UserAgent)) + } + return grpc.DialContext(ctx, o.Endpoint, grpcOpts...) +} + +// DialInsecure returns an insecure GRPC connection for use communicating +// with fake or mock Google cloud service implementations, such as emulators. +// The connection is configured with the given ClientOptions. +func DialInsecure(ctx context.Context, opts ...option.ClientOption) (*grpc.ClientConn, error) { + var o internal.DialSettings + for _, opt := range opts { + opt.Apply(&o) + } + if o.HTTPClient != nil { + return nil, errors.New("unsupported HTTP client specified") + } + if o.GRPCConn != nil { + return o.GRPCConn, nil + } + grpcOpts := []grpc.DialOption{grpc.WithInsecure()} + grpcOpts = append(grpcOpts, o.GRPCDialOpts...) + if o.UserAgent != "" { + grpcOpts = append(grpcOpts, grpc.WithUserAgent(o.UserAgent)) + } + return grpc.DialContext(ctx, o.Endpoint, grpcOpts...) +} diff --git a/vendor/google.golang.org/api/transport/grpc/dial_appengine.go b/vendor/google.golang.org/api/transport/grpc/dial_appengine.go new file mode 100644 index 0000000..a40cef2 --- /dev/null +++ b/vendor/google.golang.org/api/transport/grpc/dial_appengine.go @@ -0,0 +1,41 @@ +// Copyright 2016 Google Inc. All Rights Reserved. +// +// 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. + +// +build appengine + +package grpc + +import ( + "net" + "time" + + "golang.org/x/net/context" + "google.golang.org/appengine" + "google.golang.org/appengine/socket" + "google.golang.org/grpc" +) + +func init() { + // NOTE: dev_appserver doesn't currently support SSL. + // When it does, this code can be removed. + if appengine.IsDevAppServer() { + return + } + + appengineDialerHook = func(ctx context.Context) grpc.DialOption { + return grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { + return socket.DialTimeout(ctx, "tcp", addr, timeout) + }) + } +} diff --git a/vendor/google.golang.org/api/transport/grpc/dial_test.go b/vendor/google.golang.org/api/transport/grpc/dial_test.go new file mode 100644 index 0000000..66d34d8 --- /dev/null +++ b/vendor/google.golang.org/api/transport/grpc/dial_test.go @@ -0,0 +1,66 @@ +// Copyright 2016 Google Inc. All Rights Reserved. +// +// 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. + +package grpc + +import ( + "errors" + "net" + "testing" + "time" + + "golang.org/x/net/context" + "golang.org/x/oauth2" + "google.golang.org/api/option" + "google.golang.org/grpc" +) + +// Check that user optioned grpc.WithDialer option overrides the App Engine hook. +func TestGRPCHook(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Millisecond) + expected := false + + appengineDialerHook = (func(ctx context.Context) grpc.DialOption { + return grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { + t.Error("did not expect a call to notExpected dialer, got one") + cancel() + return nil, errors.New("not expected") + }) + }) + defer func() { + appengineDialerHook = nil + }() + + expectedDialer := grpc.WithDialer(func(addr string, timeout time.Duration) (net.Conn, error) { + expected = true + cancel() + return nil, errors.New("expected") + }) + + conn, err := Dial(ctx, + option.WithTokenSource(oauth2.StaticTokenSource(nil)), // No creds. + option.WithGRPCDialOption(expectedDialer), + option.WithEndpoint("example.google.com:443")) + if err != nil { + t.Errorf("DialGRPC: error %v, want nil", err) + } + + // gRPC doesn't connect before the first call. + grpc.Invoke(ctx, "foo", nil, nil, conn) + conn.Close() + + if !expected { + t.Error("expected a call to expected dialer, didn't get one") + } +} diff --git a/vendor/google.golang.org/api/transport/http/dial.go b/vendor/google.golang.org/api/transport/http/dial.go new file mode 100644 index 0000000..a04956d --- /dev/null +++ b/vendor/google.golang.org/api/transport/http/dial.go @@ -0,0 +1,107 @@ +// Copyright 2015 Google Inc. All Rights Reserved. +// +// 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. + +// Package transport/http supports network connections to HTTP servers. +// This package is not intended for use by end developers. Use the +// google.golang.org/api/option package to configure API clients. +package http + +import ( + "errors" + "net/http" + + "golang.org/x/net/context" + "golang.org/x/oauth2" + "google.golang.org/api/googleapi/transport" + "google.golang.org/api/internal" + "google.golang.org/api/option" +) + +// NewClient returns an HTTP client for use communicating with a Google cloud +// service, configured with the given ClientOptions. It also returns the endpoint +// for the service as specified in the options. +func NewClient(ctx context.Context, opts ...option.ClientOption) (*http.Client, string, error) { + var o internal.DialSettings + for _, opt := range opts { + opt.Apply(&o) + } + if o.GRPCConn != nil { + return nil, "", errors.New("unsupported gRPC connection specified") + } + // TODO(cbro): consider injecting the User-Agent even if an explicit HTTP client is provided? + if o.HTTPClient != nil { + return o.HTTPClient, o.Endpoint, nil + } + if o.APIKey != "" { + hc := &http.Client{ + Transport: &transport.APIKey{ + Key: o.APIKey, + Transport: userAgentTransport{ + base: baseTransport(ctx), + userAgent: o.UserAgent, + }, + }, + } + return hc, o.Endpoint, nil + } + creds, err := internal.Creds(ctx, &o) + if err != nil { + return nil, "", err + } + hc := &http.Client{ + Transport: &oauth2.Transport{ + Source: creds.TokenSource, + Base: userAgentTransport{ + base: baseTransport(ctx), + userAgent: o.UserAgent, + }, + }, + } + return hc, o.Endpoint, nil +} + +type userAgentTransport struct { + userAgent string + base http.RoundTripper +} + +func (t userAgentTransport) RoundTrip(req *http.Request) (*http.Response, error) { + rt := t.base + if rt == nil { + return nil, errors.New("transport: no Transport specified") + } + if t.userAgent == "" { + return rt.RoundTrip(req) + } + newReq := *req + newReq.Header = make(http.Header) + for k, vv := range req.Header { + newReq.Header[k] = vv + } + // TODO(cbro): append to existing User-Agent header? + newReq.Header["User-Agent"] = []string{t.userAgent} + return rt.RoundTrip(&newReq) +} + +// Set at init time by dial_appengine.go. If nil, we're not on App Engine. +var appengineUrlfetchHook func(context.Context) http.RoundTripper + +// baseTransport returns the base HTTP transport. +// On App Engine, this is urlfetch.Transport, otherwise it's http.DefaultTransport. +func baseTransport(ctx context.Context) http.RoundTripper { + if appengineUrlfetchHook != nil { + return appengineUrlfetchHook(ctx) + } + return http.DefaultTransport +} diff --git a/vendor/google.golang.org/api/transport/http/dial_appengine.go b/vendor/google.golang.org/api/transport/http/dial_appengine.go new file mode 100644 index 0000000..0cdef74 --- /dev/null +++ b/vendor/google.golang.org/api/transport/http/dial_appengine.go @@ -0,0 +1,30 @@ +// Copyright 2016 Google Inc. All Rights Reserved. +// +// 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. + +// +build appengine + +package http + +import ( + "net/http" + + "golang.org/x/net/context" + "google.golang.org/appengine/urlfetch" +) + +func init() { + appengineUrlfetchHook = func(ctx context.Context) http.RoundTripper { + return &urlfetch.Transport{Context: ctx} + } +} diff --git a/vendor/google.golang.org/api/vault/v1/vault-api.json b/vendor/google.golang.org/api/vault/v1/vault-api.json new file mode 100644 index 0000000..79228db --- /dev/null +++ b/vendor/google.golang.org/api/vault/v1/vault-api.json @@ -0,0 +1,964 @@ +{ + "version": "v1", + "baseUrl": "https://vault.googleapis.com/", + "servicePath": "", + "kind": "discovery#restDescription", + "description": "", + "basePath": "", + "documentationLink": "https://apps.google.com/products/vault/", + "revision": "20170828", + "id": "vault:v1", + "discoveryVersion": "v1", + "version_module": "True", + "schemas": { + "CloseMatterResponse": { + "description": "Response to a CloseMatterRequest.", + "type": "object", + "properties": { + "matter": { + "description": "The updated matter, with state CLOSED.", + "$ref": "Matter" + } + }, + "id": "CloseMatterResponse" + }, + "HeldDriveQuery": { + "description": "Query options for drive holds.", + "type": "object", + "properties": { + "includeTeamDriveFiles": { + "description": "If true, include files in Team Drives in the hold.", + "type": "boolean" + } + }, + "id": "HeldDriveQuery" + }, + "HeldGroupsQuery": { + "properties": { + "startTime": { + "format": "google-datetime", + "description": "The start date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.", + "type": "string" + }, + "terms": { + "description": "The search terms for the hold.", + "type": "string" + }, + "endTime": { + "format": "google-datetime", + "description": "The end date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.", + "type": "string" + } + }, + "id": "HeldGroupsQuery", + "description": "Query options for group holds.", + "type": "object" + }, + "HeldOrgUnit": { + "properties": { + "holdTime": { + "format": "google-datetime", + "description": "When the org unit was put on hold. This property is immutable.", + "type": "string" + }, + "orgUnitId": { + "description": "The org unit's immutable ID as provided by the admin SDK.", + "type": "string" + } + }, + "id": "HeldOrgUnit", + "description": "A organizational unit being held in a particular hold.\nThis structure is immutable.", + "type": "object" + }, + "AddMatterPermissionsRequest": { + "properties": { + "matterPermission": { + "$ref": "MatterPermission", + "description": "The MatterPermission to add." + }, + "ccMe": { + "description": "Only relevant if send_emails is true.\nTrue to CC requestor in the email message.\nFalse to not CC requestor.", + "type": "boolean" + }, + "sendEmails": { + "description": "True to send notification email to the added account.\nFalse to not send notification email.", + "type": "boolean" + } + }, + "id": "AddMatterPermissionsRequest", + "description": "Add an account with the permission specified. The role cannot be owner.\nIf an account already has a role in the matter, it will be\noverwritten.", + "type": "object" + }, + "Matter": { + "properties": { + "matterId": { + "description": "The matter ID which is generated by the server.\nShould be blank when creating a new matter.", + "type": "string" + }, + "state": { + "enumDescriptions": [ + "The matter has no specified state.", + "This matter is open.", + "This matter is closed.", + "This matter is deleted." + ], + "enum": [ + "STATE_UNSPECIFIED", + "OPEN", + "CLOSED", + "DELETED" + ], + "description": "The state of the matter.", + "type": "string" + }, + "matterPermissions": { + "description": "List of users and access to the matter. Currently there is no programmer\ndefined limit on the number of permissions a matter can have.", + "items": { + "$ref": "MatterPermission" + }, + "type": "array" + }, + "name": { + "description": "The name of the matter.", + "type": "string" + }, + "description": { + "description": "The description of the matter.", + "type": "string" + } + }, + "id": "Matter", + "description": "Represents a matter.", + "type": "object" + }, + "HeldAccount": { + "properties": { + "accountId": { + "description": "The account's ID as provided by the\n\u003ca href=\"https://developers.google.com/admin-sdk/\"\u003eAdmin SDK\u003c/a\u003e.", + "type": "string" + }, + "holdTime": { + "format": "google-datetime", + "description": "When the account was put on hold.", + "type": "string" + } + }, + "id": "HeldAccount", + "description": "An account being held in a particular hold. This structure is immutable.\nThis can be either a single user or a google group, depending on the corpus.", + "type": "object" + }, + "ReopenMatterResponse": { + "properties": { + "matter": { + "$ref": "Matter", + "description": "The updated matter, with state OPEN." + } + }, + "id": "ReopenMatterResponse", + "description": "Response to a ReopenMatterRequest.", + "type": "object" + }, + "CorpusQuery": { + "properties": { + "groupsQuery": { + "$ref": "HeldGroupsQuery", + "description": "Details pertaining to Groups holds. If set, corpus must be Groups." + }, + "mailQuery": { + "$ref": "HeldMailQuery", + "description": "Details pertaining to mail holds. If set, corpus must be mail." + }, + "driveQuery": { + "$ref": "HeldDriveQuery", + "description": "Details pertaining to Drive holds. If set, corpus must be Drive." + } + }, + "id": "CorpusQuery", + "description": "Corpus specific queries.", + "type": "object" + }, + "Hold": { + "properties": { + "accounts": { + "description": "If set, the hold applies to the enumerated accounts and org_unit must be\nempty.", + "items": { + "$ref": "HeldAccount" + }, + "type": "array" + }, + "query": { + "$ref": "CorpusQuery", + "description": "The corpus-specific query. If set, the corpusQuery must match corpus\ntype." + }, + "orgUnit": { + "description": "If set, the hold applies to all members of the organizational unit and\naccounts must be empty. This property is mutable. For groups holds,\nset the accounts field.", + "$ref": "HeldOrgUnit" + }, + "corpus": { + "enum": [ + "CORPUS_TYPE_UNSPECIFIED", + "DRIVE", + "MAIL", + "GROUPS" + ], + "description": "The corpus to be searched.", + "type": "string", + "enumDescriptions": [ + "No corpus specified.", + "Drive.", + "Mail.", + "Groups." + ] + }, + "updateTime": { + "format": "google-datetime", + "description": "The last time this hold was modified.", + "type": "string" + }, + "holdId": { + "description": "The unique immutable ID of the hold. Assigned during creation.", + "type": "string" + }, + "name": { + "description": "The name of the hold.", + "type": "string" + } + }, + "id": "Hold", + "description": "Represents a hold within Vault. A hold restricts purging of\nartifacts based on the combination of the query and accounts restrictions.\nA hold can be configured to either apply to an explicitly configured set\nof accounts, or can be applied to all members of an organizational unit.", + "type": "object" + }, + "ListHoldsResponse": { + "properties": { + "nextPageToken": { + "description": "Page token to retrieve the next page of results in the list.\nIf this is empty, then there are no more holds to list.", + "type": "string" + }, + "holds": { + "description": "The list of holds.", + "items": { + "$ref": "Hold" + }, + "type": "array" + } + }, + "id": "ListHoldsResponse", + "description": "The holds for a matter.", + "type": "object" + }, + "UndeleteMatterRequest": { + "description": "Undelete a matter by ID.", + "type": "object", + "properties": {}, + "id": "UndeleteMatterRequest" + }, + "ListHeldAccountsResponse": { + "description": "Returns a list of held accounts for a hold.", + "type": "object", + "properties": { + "accounts": { + "description": "The held accounts on a hold.", + "items": { + "$ref": "HeldAccount" + }, + "type": "array" + } + }, + "id": "ListHeldAccountsResponse" + }, + "Empty": { + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object", + "properties": {}, + "id": "Empty" + }, + "CloseMatterRequest": { + "properties": {}, + "id": "CloseMatterRequest", + "description": "Close a matter by ID.", + "type": "object" + }, + "ReopenMatterRequest": { + "description": "Reopen a matter by ID.", + "type": "object", + "properties": {}, + "id": "ReopenMatterRequest" + }, + "RemoveMatterPermissionsRequest": { + "properties": { + "accountId": { + "description": "The account ID.", + "type": "string" + } + }, + "id": "RemoveMatterPermissionsRequest", + "description": "Remove an account as a matter collaborator.", + "type": "object" + }, + "MatterPermission": { + "description": "Currently each matter only has one owner, and all others are collaborators.\nWhen an account is purged, its corresponding MatterPermission resources\ncease to exist.", + "type": "object", + "properties": { + "accountId": { + "description": "The account id, as provided by \u003ca href=\"https://developers.google.com/admin-sdk/\"\u003eAdmin SDK\u003c/a\u003e.", + "type": "string" + }, + "role": { + "enum": [ + "ROLE_UNSPECIFIED", + "COLLABORATOR", + "OWNER" + ], + "description": "The user's role in this matter.", + "type": "string", + "enumDescriptions": [ + "No role assigned.", + "A collaborator to the matter.", + "The owner of the matter." + ] + } + }, + "id": "MatterPermission" + }, + "ListMattersResponse": { + "description": "Provides the list of matters.", + "type": "object", + "properties": { + "nextPageToken": { + "description": "Page token to retrieve the next page of results in the list.", + "type": "string" + }, + "matters": { + "description": "List of matters.", + "items": { + "$ref": "Matter" + }, + "type": "array" + } + }, + "id": "ListMattersResponse" + }, + "HeldMailQuery": { + "properties": { + "endTime": { + "format": "google-datetime", + "description": "The end date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.", + "type": "string" + }, + "startTime": { + "format": "google-datetime", + "description": "The start date range for the search query. These timestamps are in GMT and\nrounded down to the start of the given date.", + "type": "string" + }, + "terms": { + "description": "The search terms for the hold.", + "type": "string" + } + }, + "id": "HeldMailQuery", + "description": "Query options for mail holds.", + "type": "object" + } + }, + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "protocol": "rest", + "canonicalName": "Vault", + "rootUrl": "https://vault.googleapis.com/", + "ownerDomain": "google.com", + "name": "vault", + "batchPath": "batch", + "fullyEncodeReservedExpansion": true, + "title": "Google Vault API", + "ownerName": "Google", + "resources": { + "matters": { + "methods": { + "create": { + "response": { + "$ref": "Matter" + }, + "parameterOrder": [], + "httpMethod": "POST", + "parameters": {}, + "flatPath": "v1/matters", + "id": "vault.matters.create", + "path": "v1/matters", + "description": "Creates a new matter. Returns created matter with default view.", + "request": { + "$ref": "Matter" + } + }, + "removePermissions": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "POST", + "parameters": { + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}:removePermissions", + "id": "vault.matters.removePermissions", + "path": "v1/matters/{matterId}:removePermissions", + "request": { + "$ref": "RemoveMatterPermissionsRequest" + }, + "description": "Removes an account as a matter collaborator." + }, + "reopen": { + "response": { + "$ref": "ReopenMatterResponse" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "POST", + "parameters": { + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}:reopen", + "id": "vault.matters.reopen", + "path": "v1/matters/{matterId}:reopen", + "description": "Reopens the specified matter. Returns matter with updated state.", + "request": { + "$ref": "ReopenMatterRequest" + } + }, + "get": { + "path": "v1/matters/{matterId}", + "id": "vault.matters.get", + "description": "Gets the specified matter.", + "httpMethod": "GET", + "response": { + "$ref": "Matter" + }, + "parameterOrder": [ + "matterId" + ], + "parameters": { + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + }, + "view": { + "location": "query", + "enum": [ + "VIEW_UNSPECIFIED", + "BASIC", + "FULL" + ], + "description": "Specifies which parts of the Matter to return in the response.", + "type": "string" + } + }, + "flatPath": "v1/matters/{matterId}" + }, + "undelete": { + "description": "Undeletes the specified matter. Returns matter with updated state.", + "request": { + "$ref": "UndeleteMatterRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "matterId" + ], + "response": { + "$ref": "Matter" + }, + "parameters": { + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}:undelete", + "path": "v1/matters/{matterId}:undelete", + "id": "vault.matters.undelete" + }, + "close": { + "response": { + "$ref": "CloseMatterResponse" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "POST", + "parameters": { + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}:close", + "id": "vault.matters.close", + "path": "v1/matters/{matterId}:close", + "request": { + "$ref": "CloseMatterRequest" + }, + "description": "Closes the specified matter. Returns matter with updated state." + }, + "update": { + "httpMethod": "PUT", + "parameterOrder": [ + "matterId" + ], + "response": { + "$ref": "Matter" + }, + "parameters": { + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}", + "path": "v1/matters/{matterId}", + "id": "vault.matters.update", + "description": "Updates the specified matter.\nThis updates only the name and description of the matter, identified by\nmatter id. Changes to any other fields are ignored.\nReturns the default view of the matter.", + "request": { + "$ref": "Matter" + } + }, + "delete": { + "description": "Deletes the specified matter. Returns matter with updated state.", + "response": { + "$ref": "Matter" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "DELETE", + "parameters": { + "matterId": { + "description": "The matter ID", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}", + "id": "vault.matters.delete", + "path": "v1/matters/{matterId}" + }, + "addPermissions": { + "path": "v1/matters/{matterId}:addPermissions", + "id": "vault.matters.addPermissions", + "description": "Adds an account as a matter collaborator.", + "request": { + "$ref": "AddMatterPermissionsRequest" + }, + "httpMethod": "POST", + "parameterOrder": [ + "matterId" + ], + "response": { + "$ref": "MatterPermission" + }, + "parameters": { + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}:addPermissions" + }, + "list": { + "response": { + "$ref": "ListMattersResponse" + }, + "parameterOrder": [], + "httpMethod": "GET", + "parameters": { + "pageToken": { + "description": "The pagination token as returned in the response.", + "type": "string", + "location": "query" + }, + "pageSize": { + "format": "int32", + "description": "The number of matters to return in the response.\nDefault and maximum are 100.", + "type": "integer", + "location": "query" + }, + "view": { + "location": "query", + "enum": [ + "VIEW_UNSPECIFIED", + "BASIC", + "FULL" + ], + "description": "Specifies which parts of the matter to return in response.", + "type": "string" + } + }, + "flatPath": "v1/matters", + "id": "vault.matters.list", + "path": "v1/matters", + "description": "Lists matters the user has access to." + } + }, + "resources": { + "holds": { + "resources": { + "accounts": { + "methods": { + "delete": { + "description": "Removes a HeldAccount from a hold. If this request leaves the hold with\nno held accounts, the hold will not apply to any accounts.", + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "matterId", + "holdId", + "accountId" + ], + "httpMethod": "DELETE", + "parameters": { + "holdId": { + "description": "The hold ID.", + "type": "string", + "required": true, + "location": "path" + }, + "accountId": { + "description": "The ID of the account to remove from the hold.", + "type": "string", + "required": true, + "location": "path" + }, + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts/{accountId}", + "id": "vault.matters.holds.accounts.delete", + "path": "v1/matters/{matterId}/holds/{holdId}/accounts/{accountId}" + }, + "list": { + "path": "v1/matters/{matterId}/holds/{holdId}/accounts", + "id": "vault.matters.holds.accounts.list", + "description": "Lists HeldAccounts for a hold. This will only list individually specified\nheld accounts. If the hold is on an OU, then use\n\u003ca href=\"https://developers.google.com/admin-sdk/\"\u003eAdmin SDK\u003c/a\u003e\nto enumerate its members.", + "httpMethod": "GET", + "response": { + "$ref": "ListHeldAccountsResponse" + }, + "parameterOrder": [ + "matterId", + "holdId" + ], + "parameters": { + "holdId": { + "description": "The hold ID.", + "type": "string", + "required": true, + "location": "path" + }, + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts" + }, + "create": { + "request": { + "$ref": "HeldAccount" + }, + "description": "Adds a HeldAccount to a hold. Accounts can only be added to a hold that\nhas no held_org_unit set. Attempting to add an account to an OU-based\nhold will result in an error.", + "httpMethod": "POST", + "parameterOrder": [ + "matterId", + "holdId" + ], + "response": { + "$ref": "HeldAccount" + }, + "parameters": { + "holdId": { + "description": "The hold ID.", + "type": "string", + "required": true, + "location": "path" + }, + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts", + "path": "v1/matters/{matterId}/holds/{holdId}/accounts", + "id": "vault.matters.holds.accounts.create" + } + } + } + }, + "methods": { + "delete": { + "response": { + "$ref": "Empty" + }, + "parameterOrder": [ + "matterId", + "holdId" + ], + "httpMethod": "DELETE", + "parameters": { + "holdId": { + "description": "The hold ID.", + "type": "string", + "required": true, + "location": "path" + }, + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}", + "id": "vault.matters.holds.delete", + "path": "v1/matters/{matterId}/holds/{holdId}", + "description": "Removes a hold by ID. This will release any HeldAccounts on this Hold." + }, + "list": { + "response": { + "$ref": "ListHoldsResponse" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "GET", + "parameters": { + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + }, + "pageToken": { + "location": "query", + "description": "The pagination token as returned in the response.\nAn empty token means start from the beginning.", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "The number of holds to return in the response, between 0 and 100 inclusive.\nLeaving this empty, or as 0, is the same as page_size = 100.", + "type": "integer", + "location": "query" + } + }, + "flatPath": "v1/matters/{matterId}/holds", + "id": "vault.matters.holds.list", + "path": "v1/matters/{matterId}/holds", + "description": "Lists holds within a matter. An empty page token in ListHoldsResponse\ndenotes no more holds to list." + }, + "get": { + "description": "Gets a hold by ID.", + "response": { + "$ref": "Hold" + }, + "httpMethod": "GET", + "parameterOrder": [ + "matterId", + "holdId" + ], + "parameters": { + "holdId": { + "location": "path", + "description": "The hold ID.", + "type": "string", + "required": true + }, + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}", + "id": "vault.matters.holds.get", + "path": "v1/matters/{matterId}/holds/{holdId}" + }, + "update": { + "response": { + "$ref": "Hold" + }, + "parameterOrder": [ + "matterId", + "holdId" + ], + "httpMethod": "PUT", + "parameters": { + "holdId": { + "description": "The ID of the hold.", + "type": "string", + "required": true, + "location": "path" + }, + "matterId": { + "description": "The matter ID.", + "type": "string", + "required": true, + "location": "path" + } + }, + "flatPath": "v1/matters/{matterId}/holds/{holdId}", + "id": "vault.matters.holds.update", + "path": "v1/matters/{matterId}/holds/{holdId}", + "description": "Updates the OU and/or query parameters of a hold. You cannot add accounts\nto a hold that covers an OU, nor can you add OUs to a hold that covers\nindividual accounts. Accounts listed in the hold will be ignored.", + "request": { + "$ref": "Hold" + } + }, + "create": { + "request": { + "$ref": "Hold" + }, + "description": "Creates a hold in the given matter.", + "response": { + "$ref": "Hold" + }, + "parameterOrder": [ + "matterId" + ], + "httpMethod": "POST", + "parameters": { + "matterId": { + "location": "path", + "description": "The matter ID.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/matters/{matterId}/holds", + "id": "vault.matters.holds.create", + "path": "v1/matters/{matterId}/holds" + } + } + } + } + } + }, + "parameters": { + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "type": "string", + "location": "query" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string", + "location": "query" + }, + "$.xgafv": { + "enum": [ + "1", + "2" + ], + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" + }, + "callback": { + "location": "query", + "description": "JSONP", + "type": "string" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string", + "location": "query" + }, + "access_token": { + "description": "OAuth access token.", + "type": "string", + "location": "query" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string", + "location": "query" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", + "location": "query" + } + } +} diff --git a/vendor/google.golang.org/api/vault/v1/vault-gen.go b/vendor/google.golang.org/api/vault/v1/vault-gen.go new file mode 100644 index 0000000..947a654 --- /dev/null +++ b/vendor/google.golang.org/api/vault/v1/vault-gen.go @@ -0,0 +1,3316 @@ +// Package vault provides access to the Google Vault API. +// +// See https://apps.google.com/products/vault/ +// +// Usage example: +// +// import "google.golang.org/api/vault/v1" +// ... +// vaultService, err := vault.New(oauthHttpClient) +package vault // import "google.golang.org/api/vault/v1" + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + context "golang.org/x/net/context" + ctxhttp "golang.org/x/net/context/ctxhttp" + gensupport "google.golang.org/api/gensupport" + googleapi "google.golang.org/api/googleapi" + "io" + "net/http" + "net/url" + "strconv" + "strings" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = ctxhttp.Do + +const apiId = "vault:v1" +const apiName = "vault" +const apiVersion = "v1" +const basePath = "https://vault.googleapis.com/" + +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Matters = NewMattersService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Matters *MattersService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewMattersService(s *Service) *MattersService { + rs := &MattersService{s: s} + rs.Holds = NewMattersHoldsService(s) + return rs +} + +type MattersService struct { + s *Service + + Holds *MattersHoldsService +} + +func NewMattersHoldsService(s *Service) *MattersHoldsService { + rs := &MattersHoldsService{s: s} + rs.Accounts = NewMattersHoldsAccountsService(s) + return rs +} + +type MattersHoldsService struct { + s *Service + + Accounts *MattersHoldsAccountsService +} + +func NewMattersHoldsAccountsService(s *Service) *MattersHoldsAccountsService { + rs := &MattersHoldsAccountsService{s: s} + return rs +} + +type MattersHoldsAccountsService struct { + s *Service +} + +// AddMatterPermissionsRequest: Add an account with the permission +// specified. The role cannot be owner. +// If an account already has a role in the matter, it will +// be +// overwritten. +type AddMatterPermissionsRequest struct { + // CcMe: Only relevant if send_emails is true. + // True to CC requestor in the email message. + // False to not CC requestor. + CcMe bool `json:"ccMe,omitempty"` + + // MatterPermission: The MatterPermission to add. + MatterPermission *MatterPermission `json:"matterPermission,omitempty"` + + // SendEmails: True to send notification email to the added + // account. + // False to not send notification email. + SendEmails bool `json:"sendEmails,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CcMe") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CcMe") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AddMatterPermissionsRequest) MarshalJSON() ([]byte, error) { + type noMethod AddMatterPermissionsRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CloseMatterRequest: Close a matter by ID. +type CloseMatterRequest struct { +} + +// CloseMatterResponse: Response to a CloseMatterRequest. +type CloseMatterResponse struct { + // Matter: The updated matter, with state CLOSED. + Matter *Matter `json:"matter,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Matter") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Matter") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CloseMatterResponse) MarshalJSON() ([]byte, error) { + type noMethod CloseMatterResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CorpusQuery: Corpus specific queries. +type CorpusQuery struct { + // DriveQuery: Details pertaining to Drive holds. If set, corpus must be + // Drive. + DriveQuery *HeldDriveQuery `json:"driveQuery,omitempty"` + + // GroupsQuery: Details pertaining to Groups holds. If set, corpus must + // be Groups. + GroupsQuery *HeldGroupsQuery `json:"groupsQuery,omitempty"` + + // MailQuery: Details pertaining to mail holds. If set, corpus must be + // mail. + MailQuery *HeldMailQuery `json:"mailQuery,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DriveQuery") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DriveQuery") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CorpusQuery) MarshalJSON() ([]byte, error) { + type noMethod CorpusQuery + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Empty: A generic empty message that you can re-use to avoid defining +// duplicated +// empty messages in your APIs. A typical example is to use it as the +// request +// or the response type of an API method. For instance: +// +// service Foo { +// rpc Bar(google.protobuf.Empty) returns +// (google.protobuf.Empty); +// } +// +// The JSON representation for `Empty` is empty JSON object `{}`. +type Empty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// HeldAccount: An account being held in a particular hold. This +// structure is immutable. +// This can be either a single user or a google group, depending on the +// corpus. +type HeldAccount struct { + // AccountId: The account's ID as provided by the + // Admin SDK. + AccountId string `json:"accountId,omitempty"` + + // HoldTime: When the account was put on hold. + HoldTime string `json:"holdTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AccountId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HeldAccount) MarshalJSON() ([]byte, error) { + type noMethod HeldAccount + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HeldDriveQuery: Query options for drive holds. +type HeldDriveQuery struct { + // IncludeTeamDriveFiles: If true, include files in Team Drives in the + // hold. + IncludeTeamDriveFiles bool `json:"includeTeamDriveFiles,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IncludeTeamDriveFiles") to unconditionally include in API requests. + // By default, fields with empty values are omitted from API requests. + // However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IncludeTeamDriveFiles") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HeldDriveQuery) MarshalJSON() ([]byte, error) { + type noMethod HeldDriveQuery + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HeldGroupsQuery: Query options for group holds. +type HeldGroupsQuery struct { + // EndTime: The end date range for the search query. These timestamps + // are in GMT and + // rounded down to the start of the given date. + EndTime string `json:"endTime,omitempty"` + + // StartTime: The start date range for the search query. These + // timestamps are in GMT and + // rounded down to the start of the given date. + StartTime string `json:"startTime,omitempty"` + + // Terms: The search terms for the hold. + Terms string `json:"terms,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HeldGroupsQuery) MarshalJSON() ([]byte, error) { + type noMethod HeldGroupsQuery + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HeldMailQuery: Query options for mail holds. +type HeldMailQuery struct { + // EndTime: The end date range for the search query. These timestamps + // are in GMT and + // rounded down to the start of the given date. + EndTime string `json:"endTime,omitempty"` + + // StartTime: The start date range for the search query. These + // timestamps are in GMT and + // rounded down to the start of the given date. + StartTime string `json:"startTime,omitempty"` + + // Terms: The search terms for the hold. + Terms string `json:"terms,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HeldMailQuery) MarshalJSON() ([]byte, error) { + type noMethod HeldMailQuery + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HeldOrgUnit: A organizational unit being held in a particular +// hold. +// This structure is immutable. +type HeldOrgUnit struct { + // HoldTime: When the org unit was put on hold. This property is + // immutable. + HoldTime string `json:"holdTime,omitempty"` + + // OrgUnitId: The org unit's immutable ID as provided by the admin SDK. + OrgUnitId string `json:"orgUnitId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HoldTime") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HoldTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HeldOrgUnit) MarshalJSON() ([]byte, error) { + type noMethod HeldOrgUnit + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Hold: Represents a hold within Vault. A hold restricts purging +// of +// artifacts based on the combination of the query and accounts +// restrictions. +// A hold can be configured to either apply to an explicitly configured +// set +// of accounts, or can be applied to all members of an organizational +// unit. +type Hold struct { + // Accounts: If set, the hold applies to the enumerated accounts and + // org_unit must be + // empty. + Accounts []*HeldAccount `json:"accounts,omitempty"` + + // Corpus: The corpus to be searched. + // + // Possible values: + // "CORPUS_TYPE_UNSPECIFIED" - No corpus specified. + // "DRIVE" - Drive. + // "MAIL" - Mail. + // "GROUPS" - Groups. + Corpus string `json:"corpus,omitempty"` + + // HoldId: The unique immutable ID of the hold. Assigned during + // creation. + HoldId string `json:"holdId,omitempty"` + + // Name: The name of the hold. + Name string `json:"name,omitempty"` + + // OrgUnit: If set, the hold applies to all members of the + // organizational unit and + // accounts must be empty. This property is mutable. For groups + // holds, + // set the accounts field. + OrgUnit *HeldOrgUnit `json:"orgUnit,omitempty"` + + // Query: The corpus-specific query. If set, the corpusQuery must match + // corpus + // type. + Query *CorpusQuery `json:"query,omitempty"` + + // UpdateTime: The last time this hold was modified. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Accounts") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Accounts") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Hold) MarshalJSON() ([]byte, error) { + type noMethod Hold + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListHeldAccountsResponse: Returns a list of held accounts for a hold. +type ListHeldAccountsResponse struct { + // Accounts: The held accounts on a hold. + Accounts []*HeldAccount `json:"accounts,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Accounts") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Accounts") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListHeldAccountsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListHeldAccountsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListHoldsResponse: The holds for a matter. +type ListHoldsResponse struct { + // Holds: The list of holds. + Holds []*Hold `json:"holds,omitempty"` + + // NextPageToken: Page token to retrieve the next page of results in the + // list. + // If this is empty, then there are no more holds to list. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Holds") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Holds") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListHoldsResponse) MarshalJSON() ([]byte, error) { + type noMethod ListHoldsResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListMattersResponse: Provides the list of matters. +type ListMattersResponse struct { + // Matters: List of matters. + Matters []*Matter `json:"matters,omitempty"` + + // NextPageToken: Page token to retrieve the next page of results in the + // list. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Matters") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Matters") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListMattersResponse) MarshalJSON() ([]byte, error) { + type noMethod ListMattersResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// Matter: Represents a matter. +type Matter struct { + // Description: The description of the matter. + Description string `json:"description,omitempty"` + + // MatterId: The matter ID which is generated by the server. + // Should be blank when creating a new matter. + MatterId string `json:"matterId,omitempty"` + + // MatterPermissions: List of users and access to the matter. Currently + // there is no programmer + // defined limit on the number of permissions a matter can have. + MatterPermissions []*MatterPermission `json:"matterPermissions,omitempty"` + + // Name: The name of the matter. + Name string `json:"name,omitempty"` + + // State: The state of the matter. + // + // Possible values: + // "STATE_UNSPECIFIED" - The matter has no specified state. + // "OPEN" - This matter is open. + // "CLOSED" - This matter is closed. + // "DELETED" - This matter is deleted. + State string `json:"state,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Matter) MarshalJSON() ([]byte, error) { + type noMethod Matter + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// MatterPermission: Currently each matter only has one owner, and all +// others are collaborators. +// When an account is purged, its corresponding MatterPermission +// resources +// cease to exist. +type MatterPermission struct { + // AccountId: The account id, as provided by Admin SDK. + AccountId string `json:"accountId,omitempty"` + + // Role: The user's role in this matter. + // + // Possible values: + // "ROLE_UNSPECIFIED" - No role assigned. + // "COLLABORATOR" - A collaborator to the matter. + // "OWNER" - The owner of the matter. + Role string `json:"role,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AccountId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MatterPermission) MarshalJSON() ([]byte, error) { + type noMethod MatterPermission + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// RemoveMatterPermissionsRequest: Remove an account as a matter +// collaborator. +type RemoveMatterPermissionsRequest struct { + // AccountId: The account ID. + AccountId string `json:"accountId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountId") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *RemoveMatterPermissionsRequest) MarshalJSON() ([]byte, error) { + type noMethod RemoveMatterPermissionsRequest + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ReopenMatterRequest: Reopen a matter by ID. +type ReopenMatterRequest struct { +} + +// ReopenMatterResponse: Response to a ReopenMatterRequest. +type ReopenMatterResponse struct { + // Matter: The updated matter, with state OPEN. + Matter *Matter `json:"matter,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Matter") to + // unconditionally include in API requests. By default, fields with + // empty values are omitted from API requests. However, any non-pointer, + // non-interface field appearing in ForceSendFields will be sent to the + // server regardless of whether the field is empty or not. This may be + // used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Matter") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ReopenMatterResponse) MarshalJSON() ([]byte, error) { + type noMethod ReopenMatterResponse + raw := noMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UndeleteMatterRequest: Undelete a matter by ID. +type UndeleteMatterRequest struct { +} + +// method id "vault.matters.addPermissions": + +type MattersAddPermissionsCall struct { + s *Service + matterId string + addmatterpermissionsrequest *AddMatterPermissionsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// AddPermissions: Adds an account as a matter collaborator. +func (r *MattersService) AddPermissions(matterId string, addmatterpermissionsrequest *AddMatterPermissionsRequest) *MattersAddPermissionsCall { + c := &MattersAddPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.addmatterpermissionsrequest = addmatterpermissionsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersAddPermissionsCall) Fields(s ...googleapi.Field) *MattersAddPermissionsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersAddPermissionsCall) Context(ctx context.Context) *MattersAddPermissionsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersAddPermissionsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersAddPermissionsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.addmatterpermissionsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}:addPermissions") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.addPermissions" call. +// Exactly one of *MatterPermission or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *MatterPermission.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersAddPermissionsCall) Do(opts ...googleapi.CallOption) (*MatterPermission, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &MatterPermission{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Adds an account as a matter collaborator.", + // "flatPath": "v1/matters/{matterId}:addPermissions", + // "httpMethod": "POST", + // "id": "vault.matters.addPermissions", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}:addPermissions", + // "request": { + // "$ref": "AddMatterPermissionsRequest" + // }, + // "response": { + // "$ref": "MatterPermission" + // } + // } + +} + +// method id "vault.matters.close": + +type MattersCloseCall struct { + s *Service + matterId string + closematterrequest *CloseMatterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Close: Closes the specified matter. Returns matter with updated +// state. +func (r *MattersService) Close(matterId string, closematterrequest *CloseMatterRequest) *MattersCloseCall { + c := &MattersCloseCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.closematterrequest = closematterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersCloseCall) Fields(s ...googleapi.Field) *MattersCloseCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersCloseCall) Context(ctx context.Context) *MattersCloseCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersCloseCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersCloseCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.closematterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}:close") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.close" call. +// Exactly one of *CloseMatterResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *CloseMatterResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersCloseCall) Do(opts ...googleapi.CallOption) (*CloseMatterResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &CloseMatterResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Closes the specified matter. Returns matter with updated state.", + // "flatPath": "v1/matters/{matterId}:close", + // "httpMethod": "POST", + // "id": "vault.matters.close", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}:close", + // "request": { + // "$ref": "CloseMatterRequest" + // }, + // "response": { + // "$ref": "CloseMatterResponse" + // } + // } + +} + +// method id "vault.matters.create": + +type MattersCreateCall struct { + s *Service + matter *Matter + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a new matter. Returns created matter with default +// view. +func (r *MattersService) Create(matter *Matter) *MattersCreateCall { + c := &MattersCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matter = matter + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersCreateCall) Fields(s ...googleapi.Field) *MattersCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersCreateCall) Context(ctx context.Context) *MattersCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.matter) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.create" call. +// Exactly one of *Matter or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Matter.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersCreateCall) Do(opts ...googleapi.CallOption) (*Matter, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Matter{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a new matter. Returns created matter with default view.", + // "flatPath": "v1/matters", + // "httpMethod": "POST", + // "id": "vault.matters.create", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1/matters", + // "request": { + // "$ref": "Matter" + // }, + // "response": { + // "$ref": "Matter" + // } + // } + +} + +// method id "vault.matters.delete": + +type MattersDeleteCall struct { + s *Service + matterId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes the specified matter. Returns matter with updated +// state. +func (r *MattersService) Delete(matterId string) *MattersDeleteCall { + c := &MattersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersDeleteCall) Fields(s ...googleapi.Field) *MattersDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersDeleteCall) Context(ctx context.Context) *MattersDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.delete" call. +// Exactly one of *Matter or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Matter.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersDeleteCall) Do(opts ...googleapi.CallOption) (*Matter, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Matter{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes the specified matter. Returns matter with updated state.", + // "flatPath": "v1/matters/{matterId}", + // "httpMethod": "DELETE", + // "id": "vault.matters.delete", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}", + // "response": { + // "$ref": "Matter" + // } + // } + +} + +// method id "vault.matters.get": + +type MattersGetCall struct { + s *Service + matterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets the specified matter. +func (r *MattersService) Get(matterId string) *MattersGetCall { + c := &MattersGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + return c +} + +// View sets the optional parameter "view": Specifies which parts of the +// Matter to return in the response. +// +// Possible values: +// "VIEW_UNSPECIFIED" +// "BASIC" +// "FULL" +func (c *MattersGetCall) View(view string) *MattersGetCall { + c.urlParams_.Set("view", view) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersGetCall) Fields(s ...googleapi.Field) *MattersGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *MattersGetCall) IfNoneMatch(entityTag string) *MattersGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersGetCall) Context(ctx context.Context) *MattersGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.get" call. +// Exactly one of *Matter or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Matter.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersGetCall) Do(opts ...googleapi.CallOption) (*Matter, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Matter{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the specified matter.", + // "flatPath": "v1/matters/{matterId}", + // "httpMethod": "GET", + // "id": "vault.matters.get", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "view": { + // "description": "Specifies which parts of the Matter to return in the response.", + // "enum": [ + // "VIEW_UNSPECIFIED", + // "BASIC", + // "FULL" + // ], + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}", + // "response": { + // "$ref": "Matter" + // } + // } + +} + +// method id "vault.matters.list": + +type MattersListCall struct { + s *Service + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists matters the user has access to. +func (r *MattersService) List() *MattersListCall { + c := &MattersListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// PageSize sets the optional parameter "pageSize": The number of +// matters to return in the response. +// Default and maximum are 100. +func (c *MattersListCall) PageSize(pageSize int64) *MattersListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The pagination +// token as returned in the response. +func (c *MattersListCall) PageToken(pageToken string) *MattersListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// View sets the optional parameter "view": Specifies which parts of the +// matter to return in response. +// +// Possible values: +// "VIEW_UNSPECIFIED" +// "BASIC" +// "FULL" +func (c *MattersListCall) View(view string) *MattersListCall { + c.urlParams_.Set("view", view) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersListCall) Fields(s ...googleapi.Field) *MattersListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *MattersListCall) IfNoneMatch(entityTag string) *MattersListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersListCall) Context(ctx context.Context) *MattersListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.list" call. +// Exactly one of *ListMattersResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListMattersResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersListCall) Do(opts ...googleapi.CallOption) (*ListMattersResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListMattersResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists matters the user has access to.", + // "flatPath": "v1/matters", + // "httpMethod": "GET", + // "id": "vault.matters.list", + // "parameterOrder": [], + // "parameters": { + // "pageSize": { + // "description": "The number of matters to return in the response.\nDefault and maximum are 100.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The pagination token as returned in the response.", + // "location": "query", + // "type": "string" + // }, + // "view": { + // "description": "Specifies which parts of the matter to return in response.", + // "enum": [ + // "VIEW_UNSPECIFIED", + // "BASIC", + // "FULL" + // ], + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/matters", + // "response": { + // "$ref": "ListMattersResponse" + // } + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *MattersListCall) Pages(ctx context.Context, f func(*ListMattersResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "vault.matters.removePermissions": + +type MattersRemovePermissionsCall struct { + s *Service + matterId string + removematterpermissionsrequest *RemoveMatterPermissionsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// RemovePermissions: Removes an account as a matter collaborator. +func (r *MattersService) RemovePermissions(matterId string, removematterpermissionsrequest *RemoveMatterPermissionsRequest) *MattersRemovePermissionsCall { + c := &MattersRemovePermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.removematterpermissionsrequest = removematterpermissionsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersRemovePermissionsCall) Fields(s ...googleapi.Field) *MattersRemovePermissionsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersRemovePermissionsCall) Context(ctx context.Context) *MattersRemovePermissionsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersRemovePermissionsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersRemovePermissionsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.removematterpermissionsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}:removePermissions") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.removePermissions" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersRemovePermissionsCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Removes an account as a matter collaborator.", + // "flatPath": "v1/matters/{matterId}:removePermissions", + // "httpMethod": "POST", + // "id": "vault.matters.removePermissions", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}:removePermissions", + // "request": { + // "$ref": "RemoveMatterPermissionsRequest" + // }, + // "response": { + // "$ref": "Empty" + // } + // } + +} + +// method id "vault.matters.reopen": + +type MattersReopenCall struct { + s *Service + matterId string + reopenmatterrequest *ReopenMatterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Reopen: Reopens the specified matter. Returns matter with updated +// state. +func (r *MattersService) Reopen(matterId string, reopenmatterrequest *ReopenMatterRequest) *MattersReopenCall { + c := &MattersReopenCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.reopenmatterrequest = reopenmatterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersReopenCall) Fields(s ...googleapi.Field) *MattersReopenCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersReopenCall) Context(ctx context.Context) *MattersReopenCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersReopenCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersReopenCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.reopenmatterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}:reopen") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.reopen" call. +// Exactly one of *ReopenMatterResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ReopenMatterResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersReopenCall) Do(opts ...googleapi.CallOption) (*ReopenMatterResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ReopenMatterResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Reopens the specified matter. Returns matter with updated state.", + // "flatPath": "v1/matters/{matterId}:reopen", + // "httpMethod": "POST", + // "id": "vault.matters.reopen", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}:reopen", + // "request": { + // "$ref": "ReopenMatterRequest" + // }, + // "response": { + // "$ref": "ReopenMatterResponse" + // } + // } + +} + +// method id "vault.matters.undelete": + +type MattersUndeleteCall struct { + s *Service + matterId string + undeletematterrequest *UndeleteMatterRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Undelete: Undeletes the specified matter. Returns matter with updated +// state. +func (r *MattersService) Undelete(matterId string, undeletematterrequest *UndeleteMatterRequest) *MattersUndeleteCall { + c := &MattersUndeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.undeletematterrequest = undeletematterrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersUndeleteCall) Fields(s ...googleapi.Field) *MattersUndeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersUndeleteCall) Context(ctx context.Context) *MattersUndeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersUndeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersUndeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.undeletematterrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}:undelete") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.undelete" call. +// Exactly one of *Matter or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Matter.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersUndeleteCall) Do(opts ...googleapi.CallOption) (*Matter, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Matter{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Undeletes the specified matter. Returns matter with updated state.", + // "flatPath": "v1/matters/{matterId}:undelete", + // "httpMethod": "POST", + // "id": "vault.matters.undelete", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}:undelete", + // "request": { + // "$ref": "UndeleteMatterRequest" + // }, + // "response": { + // "$ref": "Matter" + // } + // } + +} + +// method id "vault.matters.update": + +type MattersUpdateCall struct { + s *Service + matterId string + matter *Matter + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Updates the specified matter. +// This updates only the name and description of the matter, identified +// by +// matter id. Changes to any other fields are ignored. +// Returns the default view of the matter. +func (r *MattersService) Update(matterId string, matter *Matter) *MattersUpdateCall { + c := &MattersUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.matter = matter + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersUpdateCall) Fields(s ...googleapi.Field) *MattersUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersUpdateCall) Context(ctx context.Context) *MattersUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.matter) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PUT", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.update" call. +// Exactly one of *Matter or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Matter.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersUpdateCall) Do(opts ...googleapi.CallOption) (*Matter, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Matter{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the specified matter.\nThis updates only the name and description of the matter, identified by\nmatter id. Changes to any other fields are ignored.\nReturns the default view of the matter.", + // "flatPath": "v1/matters/{matterId}", + // "httpMethod": "PUT", + // "id": "vault.matters.update", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}", + // "request": { + // "$ref": "Matter" + // }, + // "response": { + // "$ref": "Matter" + // } + // } + +} + +// method id "vault.matters.holds.create": + +type MattersHoldsCreateCall struct { + s *Service + matterId string + hold *Hold + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a hold in the given matter. +func (r *MattersHoldsService) Create(matterId string, hold *Hold) *MattersHoldsCreateCall { + c := &MattersHoldsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.hold = hold + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsCreateCall) Fields(s ...googleapi.Field) *MattersHoldsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsCreateCall) Context(ctx context.Context) *MattersHoldsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.hold) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.create" call. +// Exactly one of *Hold or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Hold.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *MattersHoldsCreateCall) Do(opts ...googleapi.CallOption) (*Hold, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Hold{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a hold in the given matter.", + // "flatPath": "v1/matters/{matterId}/holds", + // "httpMethod": "POST", + // "id": "vault.matters.holds.create", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds", + // "request": { + // "$ref": "Hold" + // }, + // "response": { + // "$ref": "Hold" + // } + // } + +} + +// method id "vault.matters.holds.delete": + +type MattersHoldsDeleteCall struct { + s *Service + matterId string + holdId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Removes a hold by ID. This will release any HeldAccounts on +// this Hold. +func (r *MattersHoldsService) Delete(matterId string, holdId string) *MattersHoldsDeleteCall { + c := &MattersHoldsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsDeleteCall) Fields(s ...googleapi.Field) *MattersHoldsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsDeleteCall) Context(ctx context.Context) *MattersHoldsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersHoldsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Removes a hold by ID. This will release any HeldAccounts on this Hold.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}", + // "httpMethod": "DELETE", + // "id": "vault.matters.holds.delete", + // "parameterOrder": [ + // "matterId", + // "holdId" + // ], + // "parameters": { + // "holdId": { + // "description": "The hold ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}", + // "response": { + // "$ref": "Empty" + // } + // } + +} + +// method id "vault.matters.holds.get": + +type MattersHoldsGetCall struct { + s *Service + matterId string + holdId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets a hold by ID. +func (r *MattersHoldsService) Get(matterId string, holdId string) *MattersHoldsGetCall { + c := &MattersHoldsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsGetCall) Fields(s ...googleapi.Field) *MattersHoldsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *MattersHoldsGetCall) IfNoneMatch(entityTag string) *MattersHoldsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsGetCall) Context(ctx context.Context) *MattersHoldsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.get" call. +// Exactly one of *Hold or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Hold.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *MattersHoldsGetCall) Do(opts ...googleapi.CallOption) (*Hold, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Hold{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets a hold by ID.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}", + // "httpMethod": "GET", + // "id": "vault.matters.holds.get", + // "parameterOrder": [ + // "matterId", + // "holdId" + // ], + // "parameters": { + // "holdId": { + // "description": "The hold ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}", + // "response": { + // "$ref": "Hold" + // } + // } + +} + +// method id "vault.matters.holds.list": + +type MattersHoldsListCall struct { + s *Service + matterId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists holds within a matter. An empty page token in +// ListHoldsResponse +// denotes no more holds to list. +func (r *MattersHoldsService) List(matterId string) *MattersHoldsListCall { + c := &MattersHoldsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + return c +} + +// PageSize sets the optional parameter "pageSize": The number of holds +// to return in the response, between 0 and 100 inclusive. +// Leaving this empty, or as 0, is the same as page_size = 100. +func (c *MattersHoldsListCall) PageSize(pageSize int64) *MattersHoldsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The pagination +// token as returned in the response. +// An empty token means start from the beginning. +func (c *MattersHoldsListCall) PageToken(pageToken string) *MattersHoldsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsListCall) Fields(s ...googleapi.Field) *MattersHoldsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *MattersHoldsListCall) IfNoneMatch(entityTag string) *MattersHoldsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsListCall) Context(ctx context.Context) *MattersHoldsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.list" call. +// Exactly one of *ListHoldsResponse or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *ListHoldsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersHoldsListCall) Do(opts ...googleapi.CallOption) (*ListHoldsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListHoldsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists holds within a matter. An empty page token in ListHoldsResponse\ndenotes no more holds to list.", + // "flatPath": "v1/matters/{matterId}/holds", + // "httpMethod": "GET", + // "id": "vault.matters.holds.list", + // "parameterOrder": [ + // "matterId" + // ], + // "parameters": { + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "pageSize": { + // "description": "The number of holds to return in the response, between 0 and 100 inclusive.\nLeaving this empty, or as 0, is the same as page_size = 100.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The pagination token as returned in the response.\nAn empty token means start from the beginning.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds", + // "response": { + // "$ref": "ListHoldsResponse" + // } + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *MattersHoldsListCall) Pages(ctx context.Context, f func(*ListHoldsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "vault.matters.holds.update": + +type MattersHoldsUpdateCall struct { + s *Service + matterId string + holdId string + hold *Hold + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Updates the OU and/or query parameters of a hold. You cannot +// add accounts +// to a hold that covers an OU, nor can you add OUs to a hold that +// covers +// individual accounts. Accounts listed in the hold will be ignored. +func (r *MattersHoldsService) Update(matterId string, holdId string, hold *Hold) *MattersHoldsUpdateCall { + c := &MattersHoldsUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + c.hold = hold + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsUpdateCall) Fields(s ...googleapi.Field) *MattersHoldsUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsUpdateCall) Context(ctx context.Context) *MattersHoldsUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.hold) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("PUT", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.update" call. +// Exactly one of *Hold or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Hold.ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *MattersHoldsUpdateCall) Do(opts ...googleapi.CallOption) (*Hold, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Hold{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the OU and/or query parameters of a hold. You cannot add accounts\nto a hold that covers an OU, nor can you add OUs to a hold that covers\nindividual accounts. Accounts listed in the hold will be ignored.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}", + // "httpMethod": "PUT", + // "id": "vault.matters.holds.update", + // "parameterOrder": [ + // "matterId", + // "holdId" + // ], + // "parameters": { + // "holdId": { + // "description": "The ID of the hold.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}", + // "request": { + // "$ref": "Hold" + // }, + // "response": { + // "$ref": "Hold" + // } + // } + +} + +// method id "vault.matters.holds.accounts.create": + +type MattersHoldsAccountsCreateCall struct { + s *Service + matterId string + holdId string + heldaccount *HeldAccount + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Adds a HeldAccount to a hold. Accounts can only be added to a +// hold that +// has no held_org_unit set. Attempting to add an account to an +// OU-based +// hold will result in an error. +func (r *MattersHoldsAccountsService) Create(matterId string, holdId string, heldaccount *HeldAccount) *MattersHoldsAccountsCreateCall { + c := &MattersHoldsAccountsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + c.heldaccount = heldaccount + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsAccountsCreateCall) Fields(s ...googleapi.Field) *MattersHoldsAccountsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsAccountsCreateCall) Context(ctx context.Context) *MattersHoldsAccountsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsAccountsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsAccountsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.heldaccount) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}/accounts") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("POST", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.accounts.create" call. +// Exactly one of *HeldAccount or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *HeldAccount.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *MattersHoldsAccountsCreateCall) Do(opts ...googleapi.CallOption) (*HeldAccount, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &HeldAccount{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Adds a HeldAccount to a hold. Accounts can only be added to a hold that\nhas no held_org_unit set. Attempting to add an account to an OU-based\nhold will result in an error.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts", + // "httpMethod": "POST", + // "id": "vault.matters.holds.accounts.create", + // "parameterOrder": [ + // "matterId", + // "holdId" + // ], + // "parameters": { + // "holdId": { + // "description": "The hold ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}/accounts", + // "request": { + // "$ref": "HeldAccount" + // }, + // "response": { + // "$ref": "HeldAccount" + // } + // } + +} + +// method id "vault.matters.holds.accounts.delete": + +type MattersHoldsAccountsDeleteCall struct { + s *Service + matterId string + holdId string + accountId string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Removes a HeldAccount from a hold. If this request leaves the +// hold with +// no held accounts, the hold will not apply to any accounts. +func (r *MattersHoldsAccountsService) Delete(matterId string, holdId string, accountId string) *MattersHoldsAccountsDeleteCall { + c := &MattersHoldsAccountsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + c.accountId = accountId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsAccountsDeleteCall) Fields(s ...googleapi.Field) *MattersHoldsAccountsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsAccountsDeleteCall) Context(ctx context.Context) *MattersHoldsAccountsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsAccountsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsAccountsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}/accounts/{accountId}") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("DELETE", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + "accountId": c.accountId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.accounts.delete" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *MattersHoldsAccountsDeleteCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Removes a HeldAccount from a hold. If this request leaves the hold with\nno held accounts, the hold will not apply to any accounts.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts/{accountId}", + // "httpMethod": "DELETE", + // "id": "vault.matters.holds.accounts.delete", + // "parameterOrder": [ + // "matterId", + // "holdId", + // "accountId" + // ], + // "parameters": { + // "accountId": { + // "description": "The ID of the account to remove from the hold.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "holdId": { + // "description": "The hold ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}/accounts/{accountId}", + // "response": { + // "$ref": "Empty" + // } + // } + +} + +// method id "vault.matters.holds.accounts.list": + +type MattersHoldsAccountsListCall struct { + s *Service + matterId string + holdId string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists HeldAccounts for a hold. This will only list individually +// specified +// held accounts. If the hold is on an OU, then use +// Admin SDK +// to enumerate its members. +func (r *MattersHoldsAccountsService) List(matterId string, holdId string) *MattersHoldsAccountsListCall { + c := &MattersHoldsAccountsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.matterId = matterId + c.holdId = holdId + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *MattersHoldsAccountsListCall) Fields(s ...googleapi.Field) *MattersHoldsAccountsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *MattersHoldsAccountsListCall) IfNoneMatch(entityTag string) *MattersHoldsAccountsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *MattersHoldsAccountsListCall) Context(ctx context.Context) *MattersHoldsAccountsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *MattersHoldsAccountsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *MattersHoldsAccountsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/matters/{matterId}/holds/{holdId}/accounts") + urls += "?" + c.urlParams_.Encode() + req, _ := http.NewRequest("GET", urls, body) + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "matterId": c.matterId, + "holdId": c.holdId, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "vault.matters.holds.accounts.list" call. +// Exactly one of *ListHeldAccountsResponse or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *ListHeldAccountsResponse.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *MattersHoldsAccountsListCall) Do(opts ...googleapi.CallOption) (*ListHeldAccountsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListHeldAccountsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := json.NewDecoder(res.Body).Decode(target); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists HeldAccounts for a hold. This will only list individually specified\nheld accounts. If the hold is on an OU, then use\n\u003ca href=\"https://developers.google.com/admin-sdk/\"\u003eAdmin SDK\u003c/a\u003e\nto enumerate its members.", + // "flatPath": "v1/matters/{matterId}/holds/{holdId}/accounts", + // "httpMethod": "GET", + // "id": "vault.matters.holds.accounts.list", + // "parameterOrder": [ + // "matterId", + // "holdId" + // ], + // "parameters": { + // "holdId": { + // "description": "The hold ID.", + // "location": "path", + // "required": true, + // "type": "string" + // }, + // "matterId": { + // "description": "The matter ID.", + // "location": "path", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/matters/{matterId}/holds/{holdId}/accounts", + // "response": { + // "$ref": "ListHeldAccountsResponse" + // } + // } + +} diff --git a/vendor/google.golang.org/api/videointelligence/v1beta1/videointelligence-api.json b/vendor/google.golang.org/api/videointelligence/v1beta1/videointelligence-api.json index bc93a67..148c861 100644 --- a/vendor/google.golang.org/api/videointelligence/v1beta1/videointelligence-api.json +++ b/vendor/google.golang.org/api/videointelligence/v1beta1/videointelligence-api.json @@ -1,8 +1,349 @@ { + "version": "v1beta1", + "baseUrl": "https://videointelligence.googleapis.com/", + "description": "Google Cloud Video Intelligence API.", + "kind": "discovery#restDescription", + "servicePath": "", + "basePath": "", + "documentationLink": "https://cloud.google.com/video-intelligence/docs/", + "revision": "20170807", + "id": "videointelligence:v1beta1", "discoveryVersion": "v1", "version_module": true, "schemas": { + "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest": { + "type": "object", + "properties": { + "locationId": { + "description": "Optional cloud region where annotation should take place. Supported cloud\nregions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region\nis specified, a region will be determined based on video file location.", + "type": "string" + }, + "inputUri": { + "description": "Input video location. Currently, only\n[Google Cloud Storage](https://cloud.google.com/storage/) URIs are\nsupported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).\nA video URI may include wildcards in `object-id`, and thus identify\nmultiple videos. Supported wildcards: '*' to match 0 or more characters;\n'?' to match 1 character. If unset, the input video should be embedded\nin the request as `input_content`. If set, `input_content` should be unset.", + "type": "string" + }, + "inputContent": { + "type": "string", + "description": "The video data bytes. Encoding: base64. If unset, the input video(s)\nshould be specified via `input_uri`. If set, `input_uri` should be unset." + }, + "features": { + "description": "Requested video annotation features.", + "items": { + "enum": [ + "FEATURE_UNSPECIFIED", + "LABEL_DETECTION", + "SHOT_CHANGE_DETECTION", + "SAFE_SEARCH_DETECTION" + ], + "type": "string" + }, + "type": "array", + "enumDescriptions": [ + "Unspecified.", + "Label detection. Detect objects, such as dog or flower.", + "Shot change detection.", + "Safe search detection." + ] + }, + "outputUri": { + "description": "Optional location where the output (in JSON format) should be stored.\nCurrently, only [Google Cloud Storage](https://cloud.google.com/storage/)\nURIs are supported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).", + "type": "string" + }, + "videoContext": { + "description": "Additional video context and/or feature-specific parameters.", + "$ref": "GoogleCloudVideointelligenceV1beta1_VideoContext" + } + }, + "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest", + "description": "Video annotation request." + }, + "GoogleCloudVideointelligenceV1beta1_LabelLocation": { + "description": "Label location.", + "type": "object", + "properties": { + "segment": { + "description": "Video segment. Set to [-1, -1] for video-level labels.\nSet to [timestamp, timestamp] for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested).", + "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment" + }, + "level": { + "enumDescriptions": [ + "Unspecified.", + "Video-level. Corresponds to the whole video.", + "Segment-level. Corresponds to one of `AnnotateSpec.segments`.", + "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).", + "Frame-level. Corresponds to a single video frame." + ], + "enum": [ + "LABEL_LEVEL_UNSPECIFIED", + "VIDEO_LEVEL", + "SEGMENT_LEVEL", + "SHOT_LEVEL", + "FRAME_LEVEL" + ], + "description": "Label level.", + "type": "string" + }, + "confidence": { + "format": "float", + "description": "Confidence that the label is accurate. Range: [0, 1].", + "type": "number" + } + }, + "id": "GoogleCloudVideointelligenceV1beta1_LabelLocation" + }, + "GoogleCloudVideointelligenceV1beta1_VideoSegment": { + "id": "GoogleCloudVideointelligenceV1beta1_VideoSegment", + "description": "Video segment.", + "type": "object", + "properties": { + "endTimeOffset": { + "format": "int64", + "description": "End offset in microseconds (inclusive). Unset means 0.", + "type": "string" + }, + "startTimeOffset": { + "format": "int64", + "description": "Start offset in microseconds (inclusive). Unset means 0.", + "type": "string" + } + } + }, + "GoogleCloudVideointelligenceV1_SafeSearchAnnotation": { + "description": "Safe search annotation (based on per-frame visual signals only).\nIf no unsafe content has been detected in a frame, no annotations\nare present for that frame.", + "type": "object", + "properties": { + "time": { + "format": "google-duration", + "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the video frame for this annotation.", + "type": "string" + }, + "adult": { + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], + "description": "Likelihood of adult content.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ] + } + }, + "id": "GoogleCloudVideointelligenceV1_SafeSearchAnnotation" + }, + "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation": { + "properties": { + "adult": { + "description": "Likelihood of adult content.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ] + }, + "racy": { + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], + "description": "Likelihood of racy content.", + "type": "string" + }, + "timeOffset": { + "format": "int64", + "description": "Video time offset in microseconds.", + "type": "string" + }, + "spoof": { + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], + "description": "Likelihood that an obvious modification was made to the original\nversion to make it appear funny or offensive.", + "type": "string" + }, + "violent": { + "description": "Likelihood of violent content.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ] + }, + "medical": { + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], + "description": "Likelihood of medical content.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "Very unlikely.", + "Unlikely.", + "Possible.", + "Likely.", + "Very likely." + ] + } + }, + "id": "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation", + "description": "Safe search annotation (based on per-frame visual signals only).\nIf no unsafe content has been detected in a frame, no annotations\nare present for that frame. If only some types of unsafe content\nhave been detected in a frame, the likelihood is set to `UNKNOWN`\nfor all other types of unsafe content.", + "type": "object" + }, + "GoogleCloudVideointelligenceV1_VideoAnnotationProgress": { + "properties": { + "inputUri": { + "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).", + "type": "string" + }, + "progressPercent": { + "format": "int32", + "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.", + "type": "integer" + }, + "updateTime": { + "type": "string", + "format": "google-datetime", + "description": "Time of the most recent update." + }, + "startTime": { + "format": "google-datetime", + "description": "Time when the request was received.", + "type": "string" + } + }, + "id": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress", + "description": "Annotation progress for a single video.", + "type": "object" + }, + "GoogleCloudVideointelligenceV1beta1_AnnotateVideoProgress": { + "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", + "type": "object", + "properties": { + "annotationProgress": { + "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.", + "items": { + "$ref": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress" + }, + "type": "array" + } + }, + "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoProgress" + }, + "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": { + "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", + "type": "object", + "properties": { + "annotationProgress": { + "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.", + "items": { + "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress" + }, + "type": "array" + } + }, + "id": "GoogleCloudVideointelligenceV1_AnnotateVideoProgress" + }, + "GoogleCloudVideointelligenceV1_LabelLocation": { + "description": "Label location.", + "type": "object", + "properties": { + "segment": { + "$ref": "GoogleCloudVideointelligenceV1_VideoSegment", + "description": "Video segment. Unset for video-level labels.\nSet to a frame timestamp for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)." + }, + "level": { + "enum": [ + "LABEL_LEVEL_UNSPECIFIED", + "VIDEO_LEVEL", + "SEGMENT_LEVEL", + "SHOT_LEVEL", + "FRAME_LEVEL" + ], + "description": "Label level.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "Video-level. Corresponds to the whole video.", + "Segment-level. Corresponds to one of `AnnotateSpec.segments`.", + "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).", + "Frame-level. Corresponds to a single video frame." + ] + }, + "confidence": { + "format": "float", + "description": "Confidence that the label is accurate. Range: [0, 1].", + "type": "number" + } + }, + "id": "GoogleCloudVideointelligenceV1_LabelLocation" + }, "GoogleCloudVideointelligenceV1_VideoAnnotationResults": { + "id": "GoogleCloudVideointelligenceV1_VideoAnnotationResults", + "description": "Annotation results for a single video.", + "type": "object", "properties": { "error": { "$ref": "GoogleRpc_Status", @@ -33,65 +374,12 @@ }, "type": "array" } - }, - "id": "GoogleCloudVideointelligenceV1_VideoAnnotationResults", - "description": "Annotation results for a single video.", - "type": "object" - }, - "GoogleCloudVideointelligenceV1_LabelLocation": { - "description": "Label location.", - "type": "object", - "properties": { - "confidence": { - "format": "float", - "description": "Confidence that the label is accurate. Range: [0, 1].", - "type": "number" - }, - "segment": { - "description": "Video segment. Unset for video-level labels.\nSet to a frame timestamp for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested).", - "$ref": "GoogleCloudVideointelligenceV1_VideoSegment" - }, - "level": { - "enum": [ - "LABEL_LEVEL_UNSPECIFIED", - "VIDEO_LEVEL", - "SEGMENT_LEVEL", - "SHOT_LEVEL", - "FRAME_LEVEL" - ], - "description": "Label level.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Video-level. Corresponds to the whole video.", - "Segment-level. Corresponds to one of `AnnotateSpec.segments`.", - "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).", - "Frame-level. Corresponds to a single video frame." - ] - } - }, - "id": "GoogleCloudVideointelligenceV1_LabelLocation" - }, - "GoogleCloudVideointelligenceV1_AnnotateVideoProgress": { - "properties": { - "annotationProgress": { - "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.", - "items": { - "$ref": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress" - }, - "type": "array" - } - }, - "id": "GoogleCloudVideointelligenceV1_AnnotateVideoProgress", - "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", - "type": "object" + } }, "GoogleLongrunning_Operation": { + "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", + "type": "object", "properties": { - "done": { - "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", - "type": "boolean" - }, "response": { "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", @@ -109,37 +397,35 @@ "description": "The error result of the operation in case of failure or cancellation." }, "metadata": { + "type": "object", "additionalProperties": { "description": "Properties of the object. Contains field @type with type URL.", "type": "any" }, - "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any.", - "type": "object" + "description": "Service-specific metadata associated with the operation. It typically\ncontains progress information and common metadata such as create time.\nSome services might not provide such metadata. Any method that returns a\nlong-running operation should document the metadata type, if any." + }, + "done": { + "description": "If the value is `false`, it means the operation is still in progress.\nIf true, the operation is completed, and either `error` or `response` is\navailable.", + "type": "boolean" } }, - "id": "GoogleLongrunning_Operation", - "description": "This resource represents a long-running operation that is the result of a\nnetwork API call.", - "type": "object" + "id": "GoogleLongrunning_Operation" }, "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults": { "properties": { - "error": { - "$ref": "GoogleRpc_Status", - "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail." - }, "shotAnnotations": { - "description": "Shot annotations. Each shot is represented as a video segment.", "items": { "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment" }, - "type": "array" + "type": "array", + "description": "Shot annotations. Each shot is represented as a video segment." }, "safeSearchAnnotations": { - "description": "Safe search annotations.", "items": { "$ref": "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation" }, - "type": "array" + "type": "array", + "description": "Safe search annotations." }, "inputUri": { "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).", @@ -151,6 +437,10 @@ "$ref": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation" }, "type": "array" + }, + "error": { + "$ref": "GoogleRpc_Status", + "description": "If set, indicates an error. Note that for a single `AnnotateVideoRequest`\nsome videos may succeed and some may fail." } }, "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationResults", @@ -158,11 +448,9 @@ "type": "object" }, "GoogleCloudVideointelligenceV1beta1_LabelAnnotation": { + "description": "Label annotation.", + "type": "object", "properties": { - "description": { - "description": "Textual description, e.g. `Fixed-gear bicycle`.", - "type": "string" - }, "locations": { "description": "Where the label was detected and with what confidence.", "items": { @@ -173,13 +461,18 @@ "languageCode": { "description": "Language code for `description` in BCP-47 format.", "type": "string" + }, + "description": { + "description": "Textual description, e.g. `Fixed-gear bicycle`.", + "type": "string" } }, - "id": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation", - "description": "Label annotation.", - "type": "object" + "id": "GoogleCloudVideointelligenceV1beta1_LabelAnnotation" }, "GoogleCloudVideointelligenceV1_AnnotateVideoResponse": { + "id": "GoogleCloudVideointelligenceV1_AnnotateVideoResponse", + "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", + "type": "object", "properties": { "annotationResults": { "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.", @@ -188,12 +481,11 @@ }, "type": "array" } - }, - "id": "GoogleCloudVideointelligenceV1_AnnotateVideoResponse", - "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", - "type": "object" + } }, "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse": { + "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", + "type": "object", "properties": { "annotationResults": { "description": "Annotation results for all videos specified in `AnnotateVideoRequest`.", @@ -203,38 +495,34 @@ "type": "array" } }, - "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse", - "description": "Video annotation response. Included in the `response`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", - "type": "object" + "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoResponse" + }, + "GoogleCloudVideointelligenceV1_LabelAnnotation": { + "id": "GoogleCloudVideointelligenceV1_LabelAnnotation", + "description": "Label annotation.", + "type": "object", + "properties": { + "locations": { + "description": "Where the label was detected and with what confidence.", + "items": { + "$ref": "GoogleCloudVideointelligenceV1_LabelLocation" + }, + "type": "array" + }, + "languageCode": { + "description": "Language code for `description` in BCP-47 format.", + "type": "string" + }, + "description": { + "type": "string", + "description": "Textual description, e.g. `Fixed-gear bicycle`." + } + } }, "GoogleCloudVideointelligenceV1beta1_VideoContext": { "description": "Video context and/or feature-specific parameters.", "type": "object", "properties": { - "stationaryCamera": { - "description": "Whether the video has been shot from a stationary (i.e. non-moving) camera.\nWhen set to true, might improve detection accuracy for moving objects.", - "type": "boolean" - }, - "labelDetectionMode": { - "enumDescriptions": [ - "Unspecified.", - "Detect shot-level labels.", - "Detect frame-level labels.", - "Detect both shot-level and frame-level labels." - ], - "enum": [ - "LABEL_DETECTION_MODE_UNSPECIFIED", - "SHOT_MODE", - "FRAME_MODE", - "SHOT_AND_FRAME_MODE" - ], - "description": "If label detection has been requested, what labels should be detected\nin addition to video-level labels or segment-level labels. If unspecified,\ndefaults to `SHOT_MODE`.", - "type": "string" - }, - "safeSearchDetectionModel": { - "description": "Model to use for safe search detection.\nSupported values: \"latest\" and \"stable\" (the default).", - "type": "string" - }, "segments": { "description": "Video segments to annotate. The segments may overlap and are not required\nto be contiguous or span the whole video. If unspecified, each video\nis treated as a single segment.", "items": { @@ -249,33 +537,63 @@ "shotChangeDetectionModel": { "description": "Model to use for shot change detection.\nSupported values: \"latest\" and \"stable\" (the default).", "type": "string" + }, + "labelDetectionMode": { + "enum": [ + "LABEL_DETECTION_MODE_UNSPECIFIED", + "SHOT_MODE", + "FRAME_MODE", + "SHOT_AND_FRAME_MODE" + ], + "description": "If label detection has been requested, what labels should be detected\nin addition to video-level labels or segment-level labels. If unspecified,\ndefaults to `SHOT_MODE`.", + "type": "string", + "enumDescriptions": [ + "Unspecified.", + "Detect shot-level labels.", + "Detect frame-level labels.", + "Detect both shot-level and frame-level labels." + ] + }, + "stationaryCamera": { + "description": "Whether the video has been shot from a stationary (i.e. non-moving) camera.\nWhen set to true, might improve detection accuracy for moving objects.", + "type": "boolean" + }, + "safeSearchDetectionModel": { + "description": "Model to use for safe search detection.\nSupported values: \"latest\" and \"stable\" (the default).", + "type": "string" } }, "id": "GoogleCloudVideointelligenceV1beta1_VideoContext" }, - "GoogleCloudVideointelligenceV1_LabelAnnotation": { - "description": "Label annotation.", + "GoogleRpc_Status": { "type": "object", "properties": { - "description": { - "description": "Textual description, e.g. `Fixed-gear bicycle`.", + "code": { + "format": "int32", + "description": "The status code, which should be an enum value of google.rpc.Code.", + "type": "integer" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", "type": "string" }, - "locations": { - "description": "Where the label was detected and with what confidence.", + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", "items": { - "$ref": "GoogleCloudVideointelligenceV1_LabelLocation" + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" }, "type": "array" - }, - "languageCode": { - "description": "Language code for `description` in BCP-47 format.", - "type": "string" } }, - "id": "GoogleCloudVideointelligenceV1_LabelAnnotation" + "id": "GoogleRpc_Status", + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons." }, "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress": { + "type": "object", "properties": { "inputUri": { "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).", @@ -298,37 +616,12 @@ } }, "id": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress", - "description": "Annotation progress for a single video.", - "type": "object" - }, - "GoogleRpc_Status": { - "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - }, - "code": { - "format": "int32", - "description": "The status code, which should be an enum value of google.rpc.Code.", - "type": "integer" - }, - "message": { - "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", - "type": "string" - } - }, - "id": "GoogleRpc_Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object" + "description": "Annotation progress for a single video." }, "GoogleCloudVideointelligenceV1_VideoSegment": { + "id": "GoogleCloudVideointelligenceV1_VideoSegment", + "description": "Video segment.", + "type": "object", "properties": { "startTime": { "format": "google-duration", @@ -340,298 +633,14 @@ "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the end of the segment (inclusive).", "type": "string" } - }, - "id": "GoogleCloudVideointelligenceV1_VideoSegment", - "description": "Video segment.", - "type": "object" - }, - "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest": { - "description": "Video annotation request.", - "type": "object", - "properties": { - "inputContent": { - "description": "The video data bytes. Encoding: base64. If unset, the input video(s)\nshould be specified via `input_uri`. If set, `input_uri` should be unset.", - "type": "string" - }, - "outputUri": { - "description": "Optional location where the output (in JSON format) should be stored.\nCurrently, only [Google Cloud Storage](https://cloud.google.com/storage/)\nURIs are supported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).", - "type": "string" - }, - "features": { - "description": "Requested video annotation features.", - "items": { - "enum": [ - "FEATURE_UNSPECIFIED", - "LABEL_DETECTION", - "SHOT_CHANGE_DETECTION", - "SAFE_SEARCH_DETECTION" - ], - "type": "string" - }, - "type": "array", - "enumDescriptions": [ - "Unspecified.", - "Label detection. Detect objects, such as dog or flower.", - "Shot change detection.", - "Safe search detection." - ] - }, - "videoContext": { - "description": "Additional video context and/or feature-specific parameters.", - "$ref": "GoogleCloudVideointelligenceV1beta1_VideoContext" - }, - "locationId": { - "description": "Optional cloud region where annotation should take place. Supported cloud\nregions: `us-east1`, `us-west1`, `europe-west1`, `asia-east1`. If no region\nis specified, a region will be determined based on video file location.", - "type": "string" - }, - "inputUri": { - "description": "Input video location. Currently, only\n[Google Cloud Storage](https://cloud.google.com/storage/) URIs are\nsupported, which must be specified in the following format:\n`gs://bucket-id/object-id` (other URI formats return\ngoogle.rpc.Code.INVALID_ARGUMENT). For more information, see\n[Request URIs](/storage/docs/reference-uris).\nA video URI may include wildcards in `object-id`, and thus identify\nmultiple videos. Supported wildcards: '*' to match 0 or more characters;\n'?' to match 1 character. If unset, the input video should be embedded\nin the request as `input_content`. If set, `input_content` should be unset.", - "type": "string" - } - }, - "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest" - }, - "GoogleCloudVideointelligenceV1beta1_LabelLocation": { - "description": "Label location.", - "type": "object", - "properties": { - "confidence": { - "format": "float", - "description": "Confidence that the label is accurate. Range: [0, 1].", - "type": "number" - }, - "segment": { - "$ref": "GoogleCloudVideointelligenceV1beta1_VideoSegment", - "description": "Video segment. Set to [-1, -1] for video-level labels.\nSet to [timestamp, timestamp] for frame-level labels.\nOtherwise, corresponds to one of `AnnotateSpec.segments`\n(if specified) or to shot boundaries (if requested)." - }, - "level": { - "enum": [ - "LABEL_LEVEL_UNSPECIFIED", - "VIDEO_LEVEL", - "SEGMENT_LEVEL", - "SHOT_LEVEL", - "FRAME_LEVEL" - ], - "description": "Label level.", - "type": "string", - "enumDescriptions": [ - "Unspecified.", - "Video-level. Corresponds to the whole video.", - "Segment-level. Corresponds to one of `AnnotateSpec.segments`.", - "Shot-level. Corresponds to a single shot (i.e. a series of frames\nwithout a major camera position or background change).", - "Frame-level. Corresponds to a single video frame." - ] - } - }, - "id": "GoogleCloudVideointelligenceV1beta1_LabelLocation" - }, - "GoogleCloudVideointelligenceV1beta1_VideoSegment": { - "properties": { - "endTimeOffset": { - "format": "int64", - "description": "End offset in microseconds (inclusive). Unset means 0.", - "type": "string" - }, - "startTimeOffset": { - "format": "int64", - "description": "Start offset in microseconds (inclusive). Unset means 0.", - "type": "string" - } - }, - "id": "GoogleCloudVideointelligenceV1beta1_VideoSegment", - "description": "Video segment.", - "type": "object" - }, - "GoogleCloudVideointelligenceV1_SafeSearchAnnotation": { - "properties": { - "time": { - "format": "google-duration", - "description": "Time-offset, relative to the beginning of the video,\ncorresponding to the video frame for this annotation.", - "type": "string" - }, - "adult": { - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood of adult content.", - "type": "string" - } - }, - "id": "GoogleCloudVideointelligenceV1_SafeSearchAnnotation", - "description": "Safe search annotation (based on per-frame visual signals only).\nIf no unsafe content has been detected in a frame, no annotations\nare present for that frame.", - "type": "object" - }, - "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation": { - "description": "Safe search annotation (based on per-frame visual signals only).\nIf no unsafe content has been detected in a frame, no annotations\nare present for that frame. If only some types of unsafe content\nhave been detected in a frame, the likelihood is set to `UNKNOWN`\nfor all other types of unsafe content.", - "type": "object", - "properties": { - "timeOffset": { - "format": "int64", - "description": "Video time offset in microseconds.", - "type": "string" - }, - "spoof": { - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood that an obvious modification was made to the original\nversion to make it appear funny or offensive.", - "type": "string", - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ] - }, - "violent": { - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood of violent content.", - "type": "string" - }, - "medical": { - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood of medical content.", - "type": "string" - }, - "adult": { - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood of adult content.", - "type": "string", - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ] - }, - "racy": { - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Likelihood of racy content.", - "type": "string", - "enumDescriptions": [ - "Unknown likelihood.", - "Very unlikely.", - "Unlikely.", - "Possible.", - "Likely.", - "Very likely." - ] - } - }, - "id": "GoogleCloudVideointelligenceV1beta1_SafeSearchAnnotation" - }, - "GoogleCloudVideointelligenceV1beta1_AnnotateVideoProgress": { - "description": "Video annotation progress. Included in the `metadata`\nfield of the `Operation` returned by the `GetOperation`\ncall of the `google::longrunning::Operations` service.", - "type": "object", - "properties": { - "annotationProgress": { - "description": "Progress metadata for all videos specified in `AnnotateVideoRequest`.", - "items": { - "$ref": "GoogleCloudVideointelligenceV1beta1_VideoAnnotationProgress" - }, - "type": "array" - } - }, - "id": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoProgress" - }, - "GoogleCloudVideointelligenceV1_VideoAnnotationProgress": { - "properties": { - "updateTime": { - "format": "google-datetime", - "description": "Time of the most recent update.", - "type": "string" - }, - "startTime": { - "format": "google-datetime", - "description": "Time when the request was received.", - "type": "string" - }, - "inputUri": { - "description": "Video file location in\n[Google Cloud Storage](https://cloud.google.com/storage/).", - "type": "string" - }, - "progressPercent": { - "format": "int32", - "description": "Approximate percentage processed thus far.\nGuaranteed to be 100 when fully processed.", - "type": "integer" - } - }, - "id": "GoogleCloudVideointelligenceV1_VideoAnnotationProgress", - "description": "Annotation progress for a single video.", - "type": "object" + } } }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, "canonicalName": "Cloud Video Intelligence", "auth": { "oauth2": { @@ -652,34 +661,34 @@ "videos": { "methods": { "annotate": { - "request": { - "$ref": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest" - }, - "description": "Performs asynchronous video annotation. Progress and results can be\nretrieved through the `google.longrunning.Operations` interface.\n`Operation.metadata` contains `AnnotateVideoProgress` (progress).\n`Operation.response` contains `AnnotateVideoResponse` (results).", "response": { "$ref": "GoogleLongrunning_Operation" }, "parameterOrder": [], "httpMethod": "POST", + "parameters": {}, "scopes": [ "https://www.googleapis.com/auth/cloud-platform" ], - "parameters": {}, "flatPath": "v1beta1/videos:annotate", "id": "videointelligence.videos.annotate", - "path": "v1beta1/videos:annotate" + "path": "v1beta1/videos:annotate", + "description": "Performs asynchronous video annotation. Progress and results can be\nretrieved through the `google.longrunning.Operations` interface.\n`Operation.metadata` contains `AnnotateVideoProgress` (progress).\n`Operation.response` contains `AnnotateVideoResponse` (results).", + "request": { + "$ref": "GoogleCloudVideointelligenceV1beta1_AnnotateVideoRequest" + } } } } }, "parameters": { - "bearer_token": { - "description": "OAuth bearer token.", + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", "type": "string", "location": "query" }, - "oauth_token": { - "description": "OAuth 2.0 token for the current user.", + "bearer_token": { + "description": "OAuth bearer token.", "type": "string", "location": "query" }, @@ -689,38 +698,38 @@ "location": "query" }, "prettyPrint": { - "location": "query", "description": "Returns response with indentations and line breaks.", "default": "true", - "type": "boolean" + "type": "boolean", + "location": "query" }, "fields": { - "location": "query", "description": "Selector specifying which fields to include in a partial response.", - "type": "string" + "type": "string", + "location": "query" }, "uploadType": { "location": "query", "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", "enum": [ "1", "2" ], "description": "V1 error format.", - "type": "string" - }, - "callback": { - "location": "query", - "description": "JSONP", - "type": "string" + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query" }, "alt": { "enum": [ @@ -738,13 +747,13 @@ "description": "Data format for response.", "default": "json" }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "access_token": { + "description": "OAuth access token.", "type": "string", "location": "query" }, - "access_token": { - "description": "OAuth access token.", + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", "type": "string", "location": "query" }, @@ -759,14 +768,5 @@ "default": "true", "type": "boolean" } - }, - "version": "v1beta1", - "baseUrl": "https://videointelligence.googleapis.com/", - "servicePath": "", - "description": "Google Cloud Video Intelligence API.", - "kind": "discovery#restDescription", - "basePath": "", - "revision": "20170807", - "documentationLink": "https://cloud.google.com/video-intelligence/docs/", - "id": "videointelligence:v1beta1" + } } diff --git a/vendor/google.golang.org/api/vision/v1/vision-api.json b/vendor/google.golang.org/api/vision/v1/vision-api.json index 3ec9db0..3b404db 100644 --- a/vendor/google.golang.org/api/vision/v1/vision-api.json +++ b/vendor/google.golang.org/api/vision/v1/vision-api.json @@ -1,14 +1,198 @@ { - "id": "vision:v1", - "documentationLink": "https://cloud.google.com/vision/", + "batchPath": "batch", + "title": "Google Cloud Vision API", + "ownerName": "Google", + "resources": { + "images": { + "methods": { + "annotate": { + "flatPath": "v1/images:annotate", + "id": "vision.images.annotate", + "path": "v1/images:annotate", + "request": { + "$ref": "BatchAnnotateImagesRequest" + }, + "description": "Run image detection and annotation for a batch of images.", + "response": { + "$ref": "BatchAnnotateImagesResponse" + }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform", + "https://www.googleapis.com/auth/cloud-vision" + ], + "parameters": {} + } + } + } + }, + "parameters": { + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "type": "string", + "location": "query" + }, + "prettyPrint": { + "location": "query", + "description": "Returns response with indentations and line breaks.", + "default": "true", + "type": "boolean" + }, + "fields": { + "location": "query", + "description": "Selector specifying which fields to include in a partial response.", + "type": "string" + }, + "uploadType": { + "location": "query", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "type": "string" + }, + "$.xgafv": { + "description": "V1 error format.", + "type": "string", + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "enum": [ + "1", + "2" + ] + }, + "callback": { + "description": "JSONP", + "type": "string", + "location": "query" + }, + "alt": { + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "description": "Data format for response.", + "default": "json", + "enum": [ + "json", + "media", + "proto" + ], + "type": "string" + }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, + "access_token": { + "location": "query", + "description": "OAuth access token.", + "type": "string" + }, + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" + }, + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", + "type": "string", + "location": "query" + }, + "oauth_token": { + "location": "query", + "description": "OAuth 2.0 token for the current user.", + "type": "string" + } + }, + "version": "v1", + "baseUrl": "https://vision.googleapis.com/", + "servicePath": "", + "kind": "discovery#restDescription", + "description": "Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.", + "basePath": "", "revision": "20170821", + "documentationLink": "https://cloud.google.com/vision/", + "id": "vision:v1", "discoveryVersion": "v1", "version_module": true, "schemas": { + "DetectedBreak": { + "description": "Detected start or end of a structural component.", + "type": "object", + "properties": { + "type": { + "enumDescriptions": [ + "Unknown break label type.", + "Regular space.", + "Sure space (very wide).", + "Line-wrapping break.", + "End-line hyphen that is not present in text; does not co-occur with\n`SPACE`, `LEADER_SPACE`, or `LINE_BREAK`.", + "Line break that ends a paragraph." + ], + "enum": [ + "UNKNOWN", + "SPACE", + "SURE_SPACE", + "EOL_SURE_SPACE", + "HYPHEN", + "LINE_BREAK" + ], + "description": "Detected break type.", + "type": "string" + }, + "isPrefix": { + "description": "True if break prepends the element.", + "type": "boolean" + } + }, + "id": "DetectedBreak" + }, + "ImageContext": { + "description": "Image context and/or feature-specific parameters.", + "type": "object", + "properties": { + "cropHintsParams": { + "$ref": "CropHintsParams", + "description": "Parameters for crop hints annotation request." + }, + "languageHints": { + "description": "List of languages to use for TEXT_DETECTION. In most cases, an empty value\nyields the best results since it enables automatic language detection. For\nlanguages based on the Latin alphabet, setting `language_hints` is not\nneeded. In rare cases, when the language of the text in the image is known,\nsetting a hint will help get better results (although it will be a\nsignificant hindrance if the hint is wrong). Text detection returns an\nerror if one or more of the specified languages is not one of the\n[supported languages](/vision/docs/languages).", + "items": { + "type": "string" + }, + "type": "array" + }, + "latLongRect": { + "$ref": "LatLongRect", + "description": "lat/long rectangle that specifies the location of the image." + } + }, + "id": "ImageContext" + }, "Page": { "description": "Detected page from OCR.", "type": "object", "properties": { + "property": { + "$ref": "TextProperty", + "description": "Additional information detected on the page." + }, + "height": { + "format": "int32", + "description": "Page height in pixels.", + "type": "integer" + }, "width": { "format": "int32", "description": "Page width in pixels.", @@ -20,15 +204,6 @@ "$ref": "Block" }, "type": "array" - }, - "property": { - "description": "Additional information detected on the page.", - "$ref": "TextProperty" - }, - "height": { - "format": "int32", - "description": "Page height in pixels.", - "type": "integer" } }, "id": "Page" @@ -45,29 +220,20 @@ "type": "array" }, "image": { - "description": "The image to be processed.", - "$ref": "Image" + "$ref": "Image", + "description": "The image to be processed." }, "imageContext": { - "$ref": "ImageContext", - "description": "Additional context that may accompany the image." + "description": "Additional context that may accompany the image.", + "$ref": "ImageContext" } }, "id": "AnnotateImageRequest" }, "Status": { + "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", + "type": "object", "properties": { - "details": { - "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", - "items": { - "additionalProperties": { - "description": "Properties of the object. Contains field @type with type URL.", - "type": "any" - }, - "type": "object" - }, - "type": "array" - }, "code": { "format": "int32", "description": "The status code, which should be an enum value of google.rpc.Code.", @@ -76,17 +242,43 @@ "message": { "description": "A developer-facing error message, which should be in English. Any\nuser-facing error message should be localized and sent in the\ngoogle.rpc.Status.details field, or localized by the client.", "type": "string" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of\nmessage types for APIs to use.", + "items": { + "type": "object", + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + } + }, + "type": "array" } }, - "id": "Status", - "description": "The `Status` type defines a logical error model that is suitable for different\nprogramming environments, including REST APIs and RPC APIs. It is used by\n[gRPC](https://github.com/grpc). The error model is designed to be:\n\n- Simple to use and understand for most users\n- Flexible enough to meet unexpected needs\n\n# Overview\n\nThe `Status` message contains three pieces of data: error code, error message,\nand error details. The error code should be an enum value of\ngoogle.rpc.Code, but it may accept additional error codes if needed. The\nerror message should be a developer-facing English message that helps\ndevelopers *understand* and *resolve* the error. If a localized user-facing\nerror message is needed, put the localized message in the error details or\nlocalize it in the client. The optional error details may contain arbitrary\ninformation about the error. There is a predefined set of error detail types\nin the package `google.rpc` that can be used for common error conditions.\n\n# Language mapping\n\nThe `Status` message is the logical representation of the error model, but it\nis not necessarily the actual wire format. When the `Status` message is\nexposed in different client libraries and different wire protocols, it can be\nmapped differently. For example, it will likely be mapped to some exceptions\nin Java, but more likely mapped to some error codes in C.\n\n# Other uses\n\nThe error model and the `Status` message can be used in a variety of\nenvironments, either with or without APIs, to provide a\nconsistent developer experience across different environments.\n\nExample uses of this error model include:\n\n- Partial errors. If a service needs to return partial errors to the client,\n it may embed the `Status` in the normal response to indicate the partial\n errors.\n\n- Workflow errors. A typical workflow has multiple steps. Each step may\n have a `Status` message for error reporting.\n\n- Batch operations. If a client uses batch request and batch response, the\n `Status` message should be used directly inside batch response, one for\n each error sub-response.\n\n- Asynchronous operations. If an API call embeds asynchronous operation\n results in its response, the status of those operations should be\n represented directly using the `Status` message.\n\n- Logging. If some API errors are stored in logs, the message `Status` could\n be used directly after any stripping needed for security/privacy reasons.", - "type": "object" + "id": "Status" + }, + "LatLongRect": { + "description": "Rectangle determined by min and max `LatLng` pairs.", + "type": "object", + "properties": { + "minLatLng": { + "description": "Min lat/long pair.", + "$ref": "LatLng" + }, + "maxLatLng": { + "$ref": "LatLng", + "description": "Max lat/long pair." + } + }, + "id": "LatLongRect" }, "Symbol": { + "description": "A single symbol representation.", + "type": "object", "properties": { "property": { - "$ref": "TextProperty", - "description": "Additional information detected for the symbol." + "description": "Additional information detected for the symbol.", + "$ref": "TextProperty" }, "boundingBox": { "description": "The bounding box for the symbol.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n * when the text is horizontal it might look like:\n 0----1\n | |\n 3----2\n * when it's rotated 180 degrees around the top-left corner it becomes:\n 2----3\n | |\n 1----0\n and the vertice order will still be (0, 1, 2, 3).", @@ -97,26 +289,11 @@ "type": "string" } }, - "id": "Symbol", - "description": "A single symbol representation.", - "type": "object" - }, - "LatLongRect": { - "description": "Rectangle determined by min and max `LatLng` pairs.", - "type": "object", - "properties": { - "minLatLng": { - "$ref": "LatLng", - "description": "Min lat/long pair." - }, - "maxLatLng": { - "$ref": "LatLng", - "description": "Max lat/long pair." - } - }, - "id": "LatLongRect" + "id": "Symbol" }, "CropHintsAnnotation": { + "description": "Set of crop hints that are used to generate new crops when serving images.", + "type": "object", "properties": { "cropHints": { "description": "Crop hint results.", @@ -126,11 +303,11 @@ "type": "array" } }, - "id": "CropHintsAnnotation", - "description": "Set of crop hints that are used to generate new crops when serving images.", - "type": "object" + "id": "CropHintsAnnotation" }, "LatLng": { + "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", + "type": "object", "properties": { "latitude": { "format": "double", @@ -143,19 +320,12 @@ "type": "number" } }, - "id": "LatLng", - "description": "An object representing a latitude/longitude pair. This is expressed as a pair\nof doubles representing degrees latitude and degrees longitude. Unless\nspecified otherwise, this must conform to the\n\u003ca href=\"http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf\"\u003eWGS84\nstandard\u003c/a\u003e. Values must be within normalized ranges.\n\nExample of normalization code in Python:\n\n def NormalizeLongitude(longitude):\n \"\"\"Wraps decimal degrees longitude to [-180.0, 180.0].\"\"\"\n q, r = divmod(longitude, 360.0)\n if r \u003e 180.0 or (r == 180.0 and q \u003c= -1.0):\n return r - 360.0\n return r\n\n def NormalizeLatLng(latitude, longitude):\n \"\"\"Wraps decimal degrees latitude and longitude to\n [-90.0, 90.0] and [-180.0, 180.0], respectively.\"\"\"\n r = latitude % 360.0\n if r \u003c= 90.0:\n return r, NormalizeLongitude(longitude)\n elif r \u003e= 270.0:\n return r - 360, NormalizeLongitude(longitude)\n else:\n return 180 - r, NormalizeLongitude(longitude + 180.0)\n\n assert 180.0 == NormalizeLongitude(180.0)\n assert -180.0 == NormalizeLongitude(-180.0)\n assert -179.0 == NormalizeLongitude(181.0)\n assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)\n assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)\n assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)\n assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)\n assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)\n assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)\n assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)\n assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)\n assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)", - "type": "object" + "id": "LatLng" }, "Color": { "description": "Represents a color in the RGBA color space. This representation is designed\nfor simplicity of conversion to/from color representations in various\nlanguages over compactness; for example, the fields of this representation\ncan be trivially provided to the constructor of \"java.awt.Color\" in Java; it\ncan also be trivially provided to UIColor's \"+colorWithRed:green:blue:alpha\"\nmethod in iOS; and, with just a little work, it can be easily formatted into\na CSS \"rgba()\" string in JavaScript, as well. Here are some examples:\n\nExample (Java):\n\n import com.google.type.Color;\n\n // ...\n public static java.awt.Color fromProto(Color protocolor) {\n float alpha = protocolor.hasAlpha()\n ? protocolor.getAlpha().getValue()\n : 1.0;\n\n return new java.awt.Color(\n protocolor.getRed(),\n protocolor.getGreen(),\n protocolor.getBlue(),\n alpha);\n }\n\n public static Color toProto(java.awt.Color color) {\n float red = (float) color.getRed();\n float green = (float) color.getGreen();\n float blue = (float) color.getBlue();\n float denominator = 255.0;\n Color.Builder resultBuilder =\n Color\n .newBuilder()\n .setRed(red / denominator)\n .setGreen(green / denominator)\n .setBlue(blue / denominator);\n int alpha = color.getAlpha();\n if (alpha != 255) {\n result.setAlpha(\n FloatValue\n .newBuilder()\n .setValue(((float) alpha) / denominator)\n .build());\n }\n return resultBuilder.build();\n }\n // ...\n\nExample (iOS / Obj-C):\n\n // ...\n static UIColor* fromProto(Color* protocolor) {\n float red = [protocolor red];\n float green = [protocolor green];\n float blue = [protocolor blue];\n FloatValue* alpha_wrapper = [protocolor alpha];\n float alpha = 1.0;\n if (alpha_wrapper != nil) {\n alpha = [alpha_wrapper value];\n }\n return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];\n }\n\n static Color* toProto(UIColor* color) {\n CGFloat red, green, blue, alpha;\n if (![color getRed:&red green:&green blue:&blue alpha:&alpha]) {\n return nil;\n }\n Color* result = [Color alloc] init];\n [result setRed:red];\n [result setGreen:green];\n [result setBlue:blue];\n if (alpha \u003c= 0.9999) {\n [result setAlpha:floatWrapperWithValue(alpha)];\n }\n [result autorelease];\n return result;\n }\n // ...\n\n Example (JavaScript):\n\n // ...\n\n var protoToCssColor = function(rgb_color) {\n var redFrac = rgb_color.red || 0.0;\n var greenFrac = rgb_color.green || 0.0;\n var blueFrac = rgb_color.blue || 0.0;\n var red = Math.floor(redFrac * 255);\n var green = Math.floor(greenFrac * 255);\n var blue = Math.floor(blueFrac * 255);\n\n if (!('alpha' in rgb_color)) {\n return rgbToCssColor_(red, green, blue);\n }\n\n var alphaFrac = rgb_color.alpha.value || 0.0;\n var rgbParams = [red, green, blue].join(',');\n return ['rgba(', rgbParams, ',', alphaFrac, ')'].join('');\n };\n\n var rgbToCssColor_ = function(red, green, blue) {\n var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue);\n var hexString = rgbNumber.toString(16);\n var missingZeros = 6 - hexString.length;\n var resultBuilder = ['#'];\n for (var i = 0; i \u003c missingZeros; i++) {\n resultBuilder.push('0');\n }\n resultBuilder.push(hexString);\n return resultBuilder.join('');\n };\n\n // ...", "type": "object", "properties": { - "red": { - "format": "float", - "description": "The amount of red in the color as a value in the interval [0, 1].", - "type": "number" - }, "alpha": { "format": "float", "description": "The fraction of this color that should be applied to the pixel. That is,\nthe final pixel color is defined by the equation:\n\n pixel color = alpha * (this color) + (1.0 - alpha) * (background color)\n\nThis means that a value of 1.0 corresponds to a solid color, whereas\na value of 0.0 corresponds to a completely transparent color. This\nuses a wrapper message rather than a simple float scalar so that it is\npossible to distinguish between a default value and the value being unset.\nIf omitted, this color object is to be rendered as a solid color\n(as if the alpha value had been explicitly given with a value of 1.0).", @@ -170,22 +340,29 @@ "format": "float", "description": "The amount of green in the color as a value in the interval [0, 1].", "type": "number" + }, + "red": { + "format": "float", + "description": "The amount of red in the color as a value in the interval [0, 1].", + "type": "number" } }, "id": "Color" }, "ImageProperties": { + "description": "Stores image properties, such as dominant colors.", + "type": "object", "properties": { "dominantColors": { - "$ref": "DominantColorsAnnotation", - "description": "If present, dominant colors completed successfully." + "description": "If present, dominant colors completed successfully.", + "$ref": "DominantColorsAnnotation" } }, - "id": "ImageProperties", - "description": "Stores image properties, such as dominant colors.", - "type": "object" + "id": "ImageProperties" }, "Feature": { + "description": "Users describe the type of Google Cloud Vision API tasks to perform over\nimages by using *Feature*s. Each Feature indicates a type of image\ndetection task to perform. Features encode the Cloud Vision API\nvertical to operate on and the number of top-scoring results to return.", + "type": "object", "properties": { "maxResults": { "format": "int32", @@ -223,14 +400,34 @@ "type": "string" } }, - "id": "Feature", - "description": "Users describe the type of Google Cloud Vision API tasks to perform over\nimages by using *Feature*s. Each Feature indicates a type of image\ndetection task to perform. Features encode the Cloud Vision API\nvertical to operate on and the number of top-scoring results to return.", - "type": "object" + "id": "Feature" }, "SafeSearchAnnotation": { + "description": "Set of features pertaining to the image, computed by computer vision\nmethods over safe-search verticals (for example, adult, spoof, medical,\nviolence).", + "type": "object", "properties": { "adult": { + "enumDescriptions": [ + "Unknown likelihood.", + "It is very unlikely that the image belongs to the specified vertical.", + "It is unlikely that the image belongs to the specified vertical.", + "It is possible that the image belongs to the specified vertical.", + "It is likely that the image belongs to the specified vertical.", + "It is very likely that the image belongs to the specified vertical." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ], "description": "Represents the adult content likelihood for the image.", + "type": "string" + }, + "spoof": { + "description": "Spoof likelihood. The likelihood that an modification\nwas made to the image's canonical version to make it appear\nfunny or offensive.", "type": "string", "enumDescriptions": [ "Unknown likelihood.", @@ -249,26 +446,6 @@ "VERY_LIKELY" ] }, - "spoof": { - "enumDescriptions": [ - "Unknown likelihood.", - "It is very unlikely that the image belongs to the specified vertical.", - "It is unlikely that the image belongs to the specified vertical.", - "It is possible that the image belongs to the specified vertical.", - "It is likely that the image belongs to the specified vertical.", - "It is very likely that the image belongs to the specified vertical." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Spoof likelihood. The likelihood that an modification\nwas made to the image's canonical version to make it appear\nfunny or offensive.", - "type": "string" - }, "medical": { "enumDescriptions": [ "Unknown likelihood.", @@ -290,14 +467,6 @@ "type": "string" }, "violence": { - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], "description": "Violence likelihood.", "type": "string", "enumDescriptions": [ @@ -307,12 +476,18 @@ "It is possible that the image belongs to the specified vertical.", "It is likely that the image belongs to the specified vertical.", "It is very likely that the image belongs to the specified vertical." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" ] } }, - "id": "SafeSearchAnnotation", - "description": "Set of features pertaining to the image, computed by computer vision\nmethods over safe-search verticals (for example, adult, spoof, medical,\nviolence).", - "type": "object" + "id": "SafeSearchAnnotation" }, "DominantColorsAnnotation": { "description": "Set of dominant colors and their corresponding scores.", @@ -379,6 +554,40 @@ }, "id": "DetectedLanguage" }, + "WebEntity": { + "description": "Entity deduced from similar images on the Internet.", + "type": "object", + "properties": { + "description": { + "description": "Canonical description of the entity, in English.", + "type": "string" + }, + "score": { + "format": "float", + "description": "Overall relevancy score for the entity.\nNot normalized and not comparable across different image queries.", + "type": "number" + }, + "entityId": { + "description": "Opaque entity ID.", + "type": "string" + } + }, + "id": "WebEntity" + }, + "BoundingPoly": { + "description": "A bounding polygon for the detected image annotation.", + "type": "object", + "properties": { + "vertices": { + "description": "The bounding polygon vertices.", + "items": { + "$ref": "Vertex" + }, + "type": "array" + } + }, + "id": "BoundingPoly" + }, "TextProperty": { "description": "Additional information detected on the structural component.", "type": "object", @@ -397,62 +606,17 @@ }, "id": "TextProperty" }, - "WebEntity": { - "properties": { - "description": { - "description": "Canonical description of the entity, in English.", - "type": "string" - }, - "score": { - "format": "float", - "description": "Overall relevancy score for the entity.\nNot normalized and not comparable across different image queries.", - "type": "number" - }, - "entityId": { - "description": "Opaque entity ID.", - "type": "string" - } - }, - "id": "WebEntity", - "description": "Entity deduced from similar images on the Internet.", - "type": "object" - }, - "BoundingPoly": { - "description": "A bounding polygon for the detected image annotation.", - "type": "object", - "properties": { - "vertices": { - "description": "The bounding polygon vertices.", - "items": { - "$ref": "Vertex" - }, - "type": "array" - } - }, - "id": "BoundingPoly" - }, "AnnotateImageResponse": { "description": "Response to an image annotation request.", "type": "object", "properties": { - "safeSearchAnnotation": { - "description": "If present, safe-search annotation has completed successfully.", - "$ref": "SafeSearchAnnotation" - }, - "labelAnnotations": { - "description": "If present, label detection has completed successfully.", - "items": { - "$ref": "EntityAnnotation" - }, - "type": "array" - }, "error": { - "description": "If set, represents the error message for the operation.\nNote that filled-in image annotations are guaranteed to be\ncorrect, even when `error` is set.", - "$ref": "Status" + "$ref": "Status", + "description": "If set, represents the error message for the operation.\nNote that filled-in image annotations are guaranteed to be\ncorrect, even when `error` is set." }, "fullTextAnnotation": { - "$ref": "TextAnnotation", - "description": "If present, text (OCR) detection or document (OCR) text detection has\ncompleted successfully.\nThis annotation provides the structural hierarchy for the OCR detected\ntext." + "description": "If present, text (OCR) detection or document (OCR) text detection has\ncompleted successfully.\nThis annotation provides the structural hierarchy for the OCR detected\ntext.", + "$ref": "TextAnnotation" }, "landmarkAnnotations": { "description": "If present, landmark detection has completed successfully.", @@ -468,10 +632,6 @@ }, "type": "array" }, - "imagePropertiesAnnotation": { - "description": "If present, image properties were extracted successfully.", - "$ref": "ImageProperties" - }, "faceAnnotations": { "description": "If present, face detection has completed successfully.", "items": { @@ -479,6 +639,10 @@ }, "type": "array" }, + "imagePropertiesAnnotation": { + "$ref": "ImageProperties", + "description": "If present, image properties were extracted successfully." + }, "logoAnnotations": { "description": "If present, logo detection has completed successfully.", "items": { @@ -493,6 +657,17 @@ "cropHintsAnnotation": { "$ref": "CropHintsAnnotation", "description": "If present, crop hints have completed successfully." + }, + "labelAnnotations": { + "description": "If present, label detection has completed successfully.", + "items": { + "$ref": "EntityAnnotation" + }, + "type": "array" + }, + "safeSearchAnnotation": { + "$ref": "SafeSearchAnnotation", + "description": "If present, safe-search annotation has completed successfully." } }, "id": "AnnotateImageResponse" @@ -597,6 +772,8 @@ "id": "WebDetection" }, "BatchAnnotateImagesResponse": { + "description": "Response to a batch image annotation request.", + "type": "object", "properties": { "responses": { "description": "Individual responses to image annotation requests within the batch.", @@ -606,35 +783,7 @@ "type": "array" } }, - "id": "BatchAnnotateImagesResponse", - "description": "Response to a batch image annotation request.", - "type": "object" - }, - "ImageSource": { - "description": "External image source (Google Cloud Storage image location).", - "type": "object", - "properties": { - "gcsImageUri": { - "description": "NOTE: For new code `image_uri` below is preferred.\nGoogle Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.", - "type": "string" - }, - "imageUri": { - "description": "Image URI which supports:\n1) Google Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.\n2) Publicly accessible image HTTP/HTTPS URL.\nThis is preferred over the legacy `gcs_image_uri` above. When both\n`gcs_image_uri` and `image_uri` are specified, `image_uri` takes\nprecedence.", - "type": "string" - } - }, - "id": "ImageSource" - }, - "LocationInfo": { - "description": "Detected entity location information.", - "type": "object", - "properties": { - "latLng": { - "$ref": "LatLng", - "description": "lat/long location coordinates." - } - }, - "id": "LocationInfo" + "id": "BatchAnnotateImagesResponse" }, "Property": { "description": "A `Property` consists of a user-supplied name/value pair.", @@ -656,8 +805,41 @@ }, "id": "Property" }, - "Position": { + "LocationInfo": { + "description": "Detected entity location information.", + "type": "object", "properties": { + "latLng": { + "$ref": "LatLng", + "description": "lat/long location coordinates." + } + }, + "id": "LocationInfo" + }, + "ImageSource": { + "description": "External image source (Google Cloud Storage image location).", + "type": "object", + "properties": { + "gcsImageUri": { + "description": "NOTE: For new code `image_uri` below is preferred.\nGoogle Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.", + "type": "string" + }, + "imageUri": { + "description": "Image URI which supports:\n1) Google Cloud Storage image URI, which must be in the following form:\n`gs://bucket_name/object_name` (for details, see\n[Google Cloud Storage Request\nURIs](https://cloud.google.com/storage/docs/reference-uris)).\nNOTE: Cloud Storage object versioning is not supported.\n2) Publicly accessible image HTTP/HTTPS URL.\nThis is preferred over the legacy `gcs_image_uri` above. When both\n`gcs_image_uri` and `image_uri` are specified, `image_uri` takes\nprecedence.", + "type": "string" + } + }, + "id": "ImageSource" + }, + "Position": { + "description": "A 3D position in the image, used primarily for Face detection landmarks.\nA valid Position must have both x and y coordinates.\nThe position coordinates are in the same scale as the original image.", + "type": "object", + "properties": { + "y": { + "format": "float", + "description": "Y coordinate.", + "type": "number" + }, "z": { "format": "float", "description": "Z coordinate (or depth).", @@ -667,16 +849,9 @@ "format": "float", "description": "X coordinate.", "type": "number" - }, - "y": { - "format": "float", - "description": "Y coordinate.", - "type": "number" } }, - "id": "Position", - "description": "A 3D position in the image, used primarily for Face detection landmarks.\nA valid Position must have both x and y coordinates.\nThe position coordinates are in the same scale as the original image.", - "type": "object" + "id": "Position" }, "WebPage": { "description": "Metadata for web pages.", @@ -698,19 +873,19 @@ "description": "Color information consists of RGB channels, score, and the fraction of\nthe image that the color occupies in the image.", "type": "object", "properties": { + "score": { + "format": "float", + "description": "Image-specific score for this color. Value in range [0, 1].", + "type": "number" + }, "pixelFraction": { "format": "float", "description": "The fraction of pixels the color occupies in the image.\nValue in range [0, 1].", "type": "number" }, "color": { - "description": "RGB components of the color.", - "$ref": "Color" - }, - "score": { - "format": "float", - "description": "Image-specific score for this color. Value in range [0, 1].", - "type": "number" + "$ref": "Color", + "description": "RGB components of the color." } }, "id": "ColorInfo" @@ -719,8 +894,21 @@ "description": "Set of detected entity features.", "type": "object", "properties": { - "description": { - "description": "Entity textual description, expressed in its `locale` language.", + "mid": { + "description": "Opaque entity ID. Some IDs may be available in\n[Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).", + "type": "string" + }, + "confidence": { + "format": "float", + "description": "The accuracy of the entity detection in an image.\nFor example, for an image in which the \"Eiffel Tower\" entity is detected,\nthis field represents the confidence that there is a tower in the query\nimage. Range [0, 1].", + "type": "number" + }, + "boundingPoly": { + "$ref": "BoundingPoly", + "description": "Image region to which this entity belongs. Not produced\nfor `LABEL_DETECTION` features." + }, + "locale": { + "description": "The language code for the locale in which the entity textual\n`description` is expressed.", "type": "string" }, "topicality": { @@ -728,6 +916,10 @@ "description": "The relevancy of the ICA (Image Content Annotation) label to the\nimage. For example, the relevancy of \"tower\" is likely higher to an image\ncontaining the detected \"Eiffel Tower\" than to an image containing a\ndetected distant towering building, even though the confidence that\nthere is a tower in each image may be the same. Range [0, 1].", "type": "number" }, + "description": { + "description": "Entity textual description, expressed in its `locale` language.", + "type": "string" + }, "properties": { "description": "Some entities may have optional user-supplied `Property` (name/value)\nfields, such a score or string that qualifies the entity.", "items": { @@ -746,23 +938,6 @@ "$ref": "LocationInfo" }, "type": "array" - }, - "mid": { - "description": "Opaque entity ID. Some IDs may be available in\n[Google Knowledge Graph Search API](https://developers.google.com/knowledge-graph/).", - "type": "string" - }, - "confidence": { - "format": "float", - "description": "The accuracy of the entity detection in an image.\nFor example, for an image in which the \"Eiffel Tower\" entity is detected,\nthis field represents the confidence that there is a tower in the query\nimage. Range [0, 1].", - "type": "number" - }, - "locale": { - "description": "The language code for the locale in which the entity textual\n`description` is expressed.", - "type": "string" - }, - "boundingPoly": { - "description": "Image region to which this entity belongs. Not produced\nfor `LABEL_DETECTION` features.", - "$ref": "BoundingPoly" } }, "id": "EntityAnnotation" @@ -789,6 +964,8 @@ "id": "CropHint" }, "Landmark": { + "description": "A face-specific landmark (for example, a face feature).\nLandmark positions may fall outside the bounds of the image\nif the face is near one or more edges of the image.\nTherefore it is NOT guaranteed that `0 \u003c= x \u003c width` or\n`0 \u003c= y \u003c height`.", + "type": "object", "properties": { "position": { "description": "Face landmark position.", @@ -873,9 +1050,7 @@ ] } }, - "id": "Landmark", - "description": "A face-specific landmark (for example, a face feature).\nLandmark positions may fall outside the bounds of the image\nif the face is near one or more edges of the image.\nTherefore it is NOT guaranteed that `0 \u003c= x \u003c width` or\n`0 \u003c= y \u003c height`.", - "type": "object" + "id": "Landmark" }, "WebImage": { "description": "Metadata for online images.", @@ -897,40 +1072,24 @@ "description": "A word representation.", "type": "object", "properties": { + "property": { + "description": "Additional information detected for the word.", + "$ref": "TextProperty" + }, + "boundingBox": { + "$ref": "BoundingPoly", + "description": "The bounding box for the word.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n * when the text is horizontal it might look like:\n 0----1\n | |\n 3----2\n * when it's rotated 180 degrees around the top-left corner it becomes:\n 2----3\n | |\n 1----0\n and the vertice order will still be (0, 1, 2, 3)." + }, "symbols": { "description": "List of symbols in the word.\nThe order of the symbols follows the natural reading order.", "items": { "$ref": "Symbol" }, "type": "array" - }, - "property": { - "description": "Additional information detected for the word.", - "$ref": "TextProperty" - }, - "boundingBox": { - "description": "The bounding box for the word.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n * when the text is horizontal it might look like:\n 0----1\n | |\n 3----2\n * when it's rotated 180 degrees around the top-left corner it becomes:\n 2----3\n | |\n 1----0\n and the vertice order will still be (0, 1, 2, 3).", - "$ref": "BoundingPoly" } }, "id": "Word" }, - "Image": { - "description": "Client image to perform Google Cloud Vision API tasks over.", - "type": "object", - "properties": { - "source": { - "description": "Google Cloud Storage image location. If both `content` and `source`\nare provided for an image, `content` takes precedence and is\nused to perform the image annotation request.", - "$ref": "ImageSource" - }, - "content": { - "format": "byte", - "description": "Image content, represented as a stream of bytes.\nNote: as with all `bytes` fields, protobuffers use a pure binary\nrepresentation, whereas JSON representations use base64.", - "type": "string" - } - }, - "id": "Image" - }, "Paragraph": { "description": "Structural unit of text representing a number of words in certain order.", "type": "object", @@ -940,8 +1099,8 @@ "$ref": "TextProperty" }, "boundingBox": { - "$ref": "BoundingPoly", - "description": "The bounding box for the paragraph.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n * when the text is horizontal it might look like:\n 0----1\n | |\n 3----2\n * when it's rotated 180 degrees around the top-left corner it becomes:\n 2----3\n | |\n 1----0\n and the vertice order will still be (0, 1, 2, 3)." + "description": "The bounding box for the paragraph.\nThe vertices are in the order of top-left, top-right, bottom-right,\nbottom-left. When a rotation of the bounding box is detected the rotation\nis represented as around the top-left corner as defined when the text is\nread in the 'natural' orientation.\nFor example:\n * when the text is horizontal it might look like:\n 0----1\n | |\n 3----2\n * when it's rotated 180 degrees around the top-left corner it becomes:\n 2----3\n | |\n 1----0\n and the vertice order will still be (0, 1, 2, 3).", + "$ref": "BoundingPoly" }, "words": { "description": "List of words in this paragraph.", @@ -953,91 +1112,51 @@ }, "id": "Paragraph" }, + "Image": { + "description": "Client image to perform Google Cloud Vision API tasks over.", + "type": "object", + "properties": { + "source": { + "$ref": "ImageSource", + "description": "Google Cloud Storage image location. If both `content` and `source`\nare provided for an image, `content` takes precedence and is\nused to perform the image annotation request." + }, + "content": { + "format": "byte", + "description": "Image content, represented as a stream of bytes.\nNote: as with all `bytes` fields, protobuffers use a pure binary\nrepresentation, whereas JSON representations use base64.", + "type": "string" + } + }, + "id": "Image" + }, "FaceAnnotation": { "description": "A face annotation object contains the results of face detection.", "type": "object", "properties": { - "tiltAngle": { - "format": "float", - "description": "Pitch angle, which indicates the upwards/downwards angle that the face is\npointing relative to the image's horizontal plane. Range [-180,180].", - "type": "number" - }, - "fdBoundingPoly": { - "description": "The `fd_bounding_poly` bounding polygon is tighter than the\n`boundingPoly`, and encloses only the skin part of the face. Typically, it\nis used to eliminate the face from any image analysis that detects the\n\"amount of skin\" visible in an image. It is not based on the\nlandmarker results, only on the initial face detection, hence\nthe \u003ccode\u003efd\u003c/code\u003e (face detection) prefix.", - "$ref": "BoundingPoly" - }, - "surpriseLikelihood": { - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Surprise likelihood.", - "type": "string", - "enumDescriptions": [ - "Unknown likelihood.", - "It is very unlikely that the image belongs to the specified vertical.", - "It is unlikely that the image belongs to the specified vertical.", - "It is possible that the image belongs to the specified vertical.", - "It is likely that the image belongs to the specified vertical.", - "It is very likely that the image belongs to the specified vertical." - ] - }, - "landmarks": { - "description": "Detected face landmarks.", - "items": { - "$ref": "Landmark" - }, - "type": "array" - }, - "angerLikelihood": { - "description": "Anger likelihood.", - "type": "string", - "enumDescriptions": [ - "Unknown likelihood.", - "It is very unlikely that the image belongs to the specified vertical.", - "It is unlikely that the image belongs to the specified vertical.", - "It is possible that the image belongs to the specified vertical.", - "It is likely that the image belongs to the specified vertical.", - "It is very likely that the image belongs to the specified vertical." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ] - }, - "joyLikelihood": { - "enumDescriptions": [ - "Unknown likelihood.", - "It is very unlikely that the image belongs to the specified vertical.", - "It is unlikely that the image belongs to the specified vertical.", - "It is possible that the image belongs to the specified vertical.", - "It is likely that the image belongs to the specified vertical.", - "It is very likely that the image belongs to the specified vertical." - ], - "enum": [ - "UNKNOWN", - "VERY_UNLIKELY", - "UNLIKELY", - "POSSIBLE", - "LIKELY", - "VERY_LIKELY" - ], - "description": "Joy likelihood.", - "type": "string" - }, "landmarkingConfidence": { "format": "float", "description": "Face landmarking confidence. Range [0, 1].", "type": "number" }, + "joyLikelihood": { + "description": "Joy likelihood.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "It is very unlikely that the image belongs to the specified vertical.", + "It is unlikely that the image belongs to the specified vertical.", + "It is possible that the image belongs to the specified vertical.", + "It is likely that the image belongs to the specified vertical.", + "It is very likely that the image belongs to the specified vertical." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ] + }, "detectionConfidence": { "format": "float", "description": "Detection confidence. Range [0, 1].", @@ -1049,6 +1168,8 @@ "type": "number" }, "underExposedLikelihood": { + "description": "Under-exposed likelihood.", + "type": "string", "enumDescriptions": [ "Unknown likelihood.", "It is very unlikely that the image belongs to the specified vertical.", @@ -1064,9 +1185,7 @@ "POSSIBLE", "LIKELY", "VERY_LIKELY" - ], - "description": "Under-exposed likelihood.", - "type": "string" + ] }, "blurredLikelihood": { "enumDescriptions": [ @@ -1109,8 +1228,8 @@ "type": "string" }, "boundingPoly": { - "description": "The bounding polygon around the face. The coordinates of the bounding box\nare in the original image's scale, as returned in `ImageParams`.\nThe bounding box is computed to \"frame\" the face in accordance with human\nexpectations. It is based on the landmarker results.\nNote that one or more x and/or y coordinates may not be generated in the\n`BoundingPoly` (the polygon will be unbounded) if only a partial face\nappears in the image to be annotated.", - "$ref": "BoundingPoly" + "$ref": "BoundingPoly", + "description": "The bounding polygon around the face. The coordinates of the bounding box\nare in the original image's scale, as returned in `ImageParams`.\nThe bounding box is computed to \"frame\" the face in accordance with human\nexpectations. It is based on the landmarker results.\nNote that one or more x and/or y coordinates may not be generated in the\n`BoundingPoly` (the polygon will be unbounded) if only a partial face\nappears in the image to be annotated." }, "rollAngle": { "format": "float", @@ -1136,6 +1255,62 @@ "LIKELY", "VERY_LIKELY" ] + }, + "tiltAngle": { + "format": "float", + "description": "Pitch angle, which indicates the upwards/downwards angle that the face is\npointing relative to the image's horizontal plane. Range [-180,180].", + "type": "number" + }, + "fdBoundingPoly": { + "description": "The `fd_bounding_poly` bounding polygon is tighter than the\n`boundingPoly`, and encloses only the skin part of the face. Typically, it\nis used to eliminate the face from any image analysis that detects the\n\"amount of skin\" visible in an image. It is not based on the\nlandmarker results, only on the initial face detection, hence\nthe \u003ccode\u003efd\u003c/code\u003e (face detection) prefix.", + "$ref": "BoundingPoly" + }, + "angerLikelihood": { + "description": "Anger likelihood.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "It is very unlikely that the image belongs to the specified vertical.", + "It is unlikely that the image belongs to the specified vertical.", + "It is possible that the image belongs to the specified vertical.", + "It is likely that the image belongs to the specified vertical.", + "It is very likely that the image belongs to the specified vertical." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ] + }, + "landmarks": { + "description": "Detected face landmarks.", + "items": { + "$ref": "Landmark" + }, + "type": "array" + }, + "surpriseLikelihood": { + "description": "Surprise likelihood.", + "type": "string", + "enumDescriptions": [ + "Unknown likelihood.", + "It is very unlikely that the image belongs to the specified vertical.", + "It is unlikely that the image belongs to the specified vertical.", + "It is possible that the image belongs to the specified vertical.", + "It is likely that the image belongs to the specified vertical.", + "It is very likely that the image belongs to the specified vertical." + ], + "enum": [ + "UNKNOWN", + "VERY_UNLIKELY", + "UNLIKELY", + "POSSIBLE", + "LIKELY", + "VERY_LIKELY" + ] } }, "id": "FaceAnnotation" @@ -1153,66 +1328,13 @@ } }, "id": "BatchAnnotateImagesRequest" - }, - "DetectedBreak": { - "description": "Detected start or end of a structural component.", - "type": "object", - "properties": { - "type": { - "enumDescriptions": [ - "Unknown break label type.", - "Regular space.", - "Sure space (very wide).", - "Line-wrapping break.", - "End-line hyphen that is not present in text; does not co-occur with\n`SPACE`, `LEADER_SPACE`, or `LINE_BREAK`.", - "Line break that ends a paragraph." - ], - "enum": [ - "UNKNOWN", - "SPACE", - "SURE_SPACE", - "EOL_SURE_SPACE", - "HYPHEN", - "LINE_BREAK" - ], - "description": "Detected break type.", - "type": "string" - }, - "isPrefix": { - "description": "True if break prepends the element.", - "type": "boolean" - } - }, - "id": "DetectedBreak" - }, - "ImageContext": { - "description": "Image context and/or feature-specific parameters.", - "type": "object", - "properties": { - "cropHintsParams": { - "$ref": "CropHintsParams", - "description": "Parameters for crop hints annotation request." - }, - "languageHints": { - "description": "List of languages to use for TEXT_DETECTION. In most cases, an empty value\nyields the best results since it enables automatic language detection. For\nlanguages based on the Latin alphabet, setting `language_hints` is not\nneeded. In rare cases, when the language of the text in the image is known,\nsetting a hint will help get better results (although it will be a\nsignificant hindrance if the hint is wrong). Text detection returns an\nerror if one or more of the specified languages is not one of the\n[supported languages](/vision/docs/languages).", - "items": { - "type": "string" - }, - "type": "array" - }, - "latLongRect": { - "description": "lat/long rectangle that specifies the location of the image.", - "$ref": "LatLongRect" - } - }, - "id": "ImageContext" } }, - "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" - }, "protocol": "rest", + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, "canonicalName": "Vision", "auth": { "oauth2": { @@ -1228,127 +1350,5 @@ }, "rootUrl": "https://vision.googleapis.com/", "ownerDomain": "google.com", - "name": "vision", - "batchPath": "batch", - "title": "Google Cloud Vision API", - "ownerName": "Google", - "resources": { - "images": { - "methods": { - "annotate": { - "description": "Run image detection and annotation for a batch of images.", - "request": { - "$ref": "BatchAnnotateImagesRequest" - }, - "response": { - "$ref": "BatchAnnotateImagesResponse" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": {}, - "scopes": [ - "https://www.googleapis.com/auth/cloud-platform", - "https://www.googleapis.com/auth/cloud-vision" - ], - "flatPath": "v1/images:annotate", - "id": "vision.images.annotate", - "path": "v1/images:annotate" - } - } - } - }, - "parameters": { - "upload_protocol": { - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string", - "location": "query" - }, - "prettyPrint": { - "location": "query", - "description": "Returns response with indentations and line breaks.", - "default": "true", - "type": "boolean" - }, - "fields": { - "location": "query", - "description": "Selector specifying which fields to include in a partial response.", - "type": "string" - }, - "uploadType": { - "location": "query", - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", - "type": "string" - }, - "callback": { - "description": "JSONP", - "type": "string", - "location": "query" - }, - "$.xgafv": { - "enumDescriptions": [ - "v1 error format", - "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" - ], - "description": "V1 error format.", - "type": "string" - }, - "alt": { - "description": "Data format for response.", - "default": "json", - "enum": [ - "json", - "media", - "proto" - ], - "type": "string", - "enumDescriptions": [ - "Responses with Content-Type of application/json", - "Media download with context-dependent Content-Type", - "Responses with Content-Type of application/x-protobuf" - ], - "location": "query" - }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" - }, - "access_token": { - "location": "query", - "description": "OAuth access token.", - "type": "string" - }, - "quotaUser": { - "location": "query", - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", - "type": "string" - }, - "pp": { - "location": "query", - "description": "Pretty-print response.", - "default": "true", - "type": "boolean" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, - "bearer_token": { - "description": "OAuth bearer token.", - "type": "string", - "location": "query" - } - }, - "version": "v1", - "baseUrl": "https://vision.googleapis.com/", - "servicePath": "", - "description": "Integrates Google Vision features, including image labeling, face, logo, and landmark detection, optical character recognition (OCR), and detection of explicit content, into applications.", - "kind": "discovery#restDescription", - "basePath": "" + "name": "vision" } diff --git a/vendor/google.golang.org/api/youtubereporting/v1/youtubereporting-api.json b/vendor/google.golang.org/api/youtubereporting/v1/youtubereporting-api.json index 5622541..b078d98 100644 --- a/vendor/google.golang.org/api/youtubereporting/v1/youtubereporting-api.json +++ b/vendor/google.golang.org/api/youtubereporting/v1/youtubereporting-api.json @@ -1,125 +1,154 @@ { + "kind": "discovery#restDescription", + "description": "Schedules reporting jobs containing your YouTube Analytics data and downloads the resulting bulk data reports in the form of CSV files.", + "servicePath": "", + "rootUrl": "https://youtubereporting.googleapis.com/", + "basePath": "", + "ownerDomain": "google.com", + "name": "youtubereporting", + "batchPath": "batch", + "id": "youtubereporting:v1", + "documentationLink": "https://developers.google.com/youtube/reporting/v1/reports/", + "revision": "20170829", "title": "YouTube Reporting API", - "discoveryVersion": "v1", "ownerName": "Google", + "discoveryVersion": "v1", "resources": { "reportTypes": { "methods": { "list": { + "flatPath": "v1/reportTypes", + "path": "v1/reportTypes", + "id": "youtubereporting.reportTypes.list", "description": "Lists report types.", + "httpMethod": "GET", "response": { "$ref": "ListReportTypesResponse" }, "parameterOrder": [], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", - "https://www.googleapis.com/auth/yt-analytics.readonly" - ], "parameters": { + "onBehalfOfContentOwner": { + "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", + "type": "string", + "location": "query" + }, "includeSystemManaged": { "description": "If set to true, also system-managed report types will be returned;\notherwise only the report types that can be used to create new reporting\njobs will be returned.", "type": "boolean", "location": "query" }, "pageToken": { - "location": "query", "description": "A token identifying a page of results the server should return. Typically,\nthis is the value of\nListReportTypesResponse.next_page_token\nreturned in response to the previous call to the `ListReportTypes` method.", - "type": "string" + "type": "string", + "location": "query" }, "pageSize": { + "location": "query", "format": "int32", "description": "Requested page size. Server may return fewer report types than requested.\nIf unspecified, server will pick an appropriate default.", - "type": "integer", - "location": "query" - }, - "onBehalfOfContentOwner": { - "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", - "type": "string", - "location": "query" - } - }, - "flatPath": "v1/reportTypes", - "id": "youtubereporting.reportTypes.list", - "path": "v1/reportTypes" - } - } - }, - "media": { - "methods": { - "download": { - "description": "Method for media download. Download is supported\non the URI `/v1/media/{+name}?alt=media`.", - "supportsMediaDownload": true, - "response": { - "$ref": "Media" - }, - "parameterOrder": [ - "resourceName" - ], - "httpMethod": "GET", - "scopes": [ - "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", - "https://www.googleapis.com/auth/yt-analytics.readonly" - ], - "parameters": { - "resourceName": { - "location": "path", - "description": "Name of the media that is being downloaded. See\nReadRequest.resource_name.", - "type": "string", - "required": true, - "pattern": "^.+$" - } - }, - "flatPath": "v1/media/{mediaId}", - "id": "youtubereporting.media.download", - "path": "v1/media/{+resourceName}" - } - } - }, - "jobs": { - "methods": { - "delete": { - "flatPath": "v1/jobs/{jobId}", - "path": "v1/jobs/{jobId}", - "id": "youtubereporting.jobs.delete", - "description": "Deletes a job.", - "httpMethod": "DELETE", - "parameterOrder": [ - "jobId" - ], - "response": { - "$ref": "Empty" - }, - "parameters": { - "jobId": { - "description": "The ID of the job to delete.", - "type": "string", - "required": true, - "location": "path" - }, - "onBehalfOfContentOwner": { - "location": "query", - "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", - "type": "string" + "type": "integer" } }, "scopes": [ "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly" ] - }, - "get": { - "flatPath": "v1/jobs/{jobId}", - "id": "youtubereporting.jobs.get", - "path": "v1/jobs/{jobId}", - "description": "Gets a job.", + } + } + }, + "media": { + "methods": { + "download": { + "supportsMediaDownload": true, + "httpMethod": "GET", + "parameterOrder": [ + "resourceName" + ], + "response": { + "$ref": "Media" + }, + "scopes": [ + "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", + "https://www.googleapis.com/auth/yt-analytics.readonly" + ], + "parameters": { + "resourceName": { + "pattern": "^.+$", + "location": "path", + "description": "Name of the media that is being downloaded. See\nReadRequest.resource_name.", + "type": "string", + "required": true + } + }, + "flatPath": "v1/media/{mediaId}", + "path": "v1/media/{+resourceName}", + "id": "youtubereporting.media.download", + "description": "Method for media download. Download is supported\non the URI `/v1/media/{+name}?alt=media`." + } + } + }, + "jobs": { + "methods": { + "create": { + "flatPath": "v1/jobs", + "id": "youtubereporting.jobs.create", + "path": "v1/jobs", + "request": { + "$ref": "Job" + }, + "description": "Creates a job and returns it.", "response": { "$ref": "Job" }, + "parameterOrder": [], + "httpMethod": "POST", + "scopes": [ + "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", + "https://www.googleapis.com/auth/yt-analytics.readonly" + ], + "parameters": { + "onBehalfOfContentOwner": { + "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", + "type": "string", + "location": "query" + } + } + }, + "delete": { + "response": { + "$ref": "Empty" + }, "parameterOrder": [ "jobId" ], - "httpMethod": "GET", + "httpMethod": "DELETE", + "scopes": [ + "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", + "https://www.googleapis.com/auth/yt-analytics.readonly" + ], + "parameters": { + "jobId": { + "location": "path", + "description": "The ID of the job to delete.", + "type": "string", + "required": true + }, + "onBehalfOfContentOwner": { + "type": "string", + "location": "query", + "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel)." + } + }, + "flatPath": "v1/jobs/{jobId}", + "id": "youtubereporting.jobs.delete", + "path": "v1/jobs/{jobId}", + "description": "Deletes a job." + }, + "get": { + "scopes": [ + "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", + "https://www.googleapis.com/auth/yt-analytics.readonly" + ], "parameters": { "jobId": { "description": "The ID of the job to retrieve.", @@ -133,60 +162,42 @@ "type": "string" } }, - "scopes": [ - "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", - "https://www.googleapis.com/auth/yt-analytics.readonly" + "flatPath": "v1/jobs/{jobId}", + "path": "v1/jobs/{jobId}", + "id": "youtubereporting.jobs.get", + "description": "Gets a job.", + "httpMethod": "GET", + "response": { + "$ref": "Job" + }, + "parameterOrder": [ + "jobId" ] }, "list": { - "httpMethod": "GET", - "parameterOrder": [], + "description": "Lists jobs.", "response": { "$ref": "ListJobsResponse" }, - "scopes": [ - "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", - "https://www.googleapis.com/auth/yt-analytics.readonly" - ], + "parameterOrder": [], + "httpMethod": "GET", "parameters": { - "pageSize": { - "location": "query", - "format": "int32", - "description": "Requested page size. Server may return fewer jobs than requested.\nIf unspecified, server will pick an appropriate default.", - "type": "integer" - }, - "onBehalfOfContentOwner": { - "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", - "type": "string", - "location": "query" - }, "includeSystemManaged": { + "location": "query", "description": "If set to true, also system-managed jobs will be returned; otherwise only\nuser-created jobs will be returned. System-managed jobs can neither be\nmodified nor deleted.", - "type": "boolean", - "location": "query" + "type": "boolean" }, "pageToken": { + "location": "query", "description": "A token identifying a page of results the server should return. Typically,\nthis is the value of\nListReportTypesResponse.next_page_token\nreturned in response to the previous call to the `ListJobs` method.", - "type": "string", + "type": "string" + }, + "pageSize": { + "format": "int32", + "description": "Requested page size. Server may return fewer jobs than requested.\nIf unspecified, server will pick an appropriate default.", + "type": "integer", "location": "query" - } - }, - "flatPath": "v1/jobs", - "path": "v1/jobs", - "id": "youtubereporting.jobs.list", - "description": "Lists jobs." - }, - "create": { - "description": "Creates a job and returns it.", - "request": { - "$ref": "Job" - }, - "response": { - "$ref": "Job" - }, - "parameterOrder": [], - "httpMethod": "POST", - "parameters": { + }, "onBehalfOfContentOwner": { "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", "type": "string", @@ -198,7 +209,7 @@ "https://www.googleapis.com/auth/yt-analytics.readonly" ], "flatPath": "v1/jobs", - "id": "youtubereporting.jobs.create", + "id": "youtubereporting.jobs.list", "path": "v1/jobs" } }, @@ -206,57 +217,60 @@ "reports": { "methods": { "get": { + "id": "youtubereporting.jobs.reports.get", + "path": "v1/jobs/{jobId}/reports/{reportId}", "description": "Gets the metadata of a specific report.", - "response": { - "$ref": "Report" - }, "parameterOrder": [ "jobId", "reportId" ], + "response": { + "$ref": "Report" + }, "httpMethod": "GET", "scopes": [ "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", "https://www.googleapis.com/auth/yt-analytics.readonly" ], "parameters": { - "jobId": { - "location": "path", - "description": "The ID of the job.", - "type": "string", - "required": true - }, - "onBehalfOfContentOwner": { - "location": "query", - "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", - "type": "string" - }, "reportId": { "location": "path", "description": "The ID of the report to retrieve.", "type": "string", "required": true + }, + "jobId": { + "description": "The ID of the job.", + "type": "string", + "required": true, + "location": "path" + }, + "onBehalfOfContentOwner": { + "location": "query", + "description": "The content owner's external ID on which behalf the user is acting on. If\nnot set, the user is acting for himself (his own channel).", + "type": "string" } }, - "flatPath": "v1/jobs/{jobId}/reports/{reportId}", - "id": "youtubereporting.jobs.reports.get", - "path": "v1/jobs/{jobId}/reports/{reportId}" + "flatPath": "v1/jobs/{jobId}/reports/{reportId}" }, "list": { - "description": "Lists reports created by a specific job.\nReturns NOT_FOUND if the job does not exist.", - "httpMethod": "GET", "parameterOrder": [ "jobId" ], + "httpMethod": "GET", "response": { "$ref": "ListReportsResponse" }, + "scopes": [ + "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", + "https://www.googleapis.com/auth/yt-analytics.readonly" + ], "parameters": { "jobId": { - "location": "path", - "description": "The ID of the job.", "type": "string", - "required": true + "required": true, + "location": "path", + "description": "The ID of the job." }, "createdAfter": { "format": "google-datetime", @@ -264,22 +278,22 @@ "type": "string", "location": "query" }, - "pageToken": { - "location": "query", - "description": "A token identifying a page of results the server should return. Typically,\nthis is the value of\nListReportsResponse.next_page_token\nreturned in response to the previous call to the `ListReports` method.", - "type": "string" - }, "startTimeAtOrAfter": { + "location": "query", "format": "google-datetime", "description": "If set, only reports whose start time is greater than or equal the\nspecified date/time are returned.", + "type": "string" + }, + "pageToken": { + "description": "A token identifying a page of results the server should return. Typically,\nthis is the value of\nListReportsResponse.next_page_token\nreturned in response to the previous call to the `ListReports` method.", "type": "string", "location": "query" }, "pageSize": { + "location": "query", "format": "int32", "description": "Requested page size. Server may return fewer report types than requested.\nIf unspecified, server will pick an appropriate default.", - "type": "integer", - "location": "query" + "type": "integer" }, "onBehalfOfContentOwner": { "location": "query", @@ -287,19 +301,16 @@ "type": "string" }, "startTimeBefore": { + "location": "query", "format": "google-datetime", "description": "If set, only reports whose start time is smaller than the specified\ndate/time are returned.", - "type": "string", - "location": "query" + "type": "string" } }, - "scopes": [ - "https://www.googleapis.com/auth/yt-analytics-monetary.readonly", - "https://www.googleapis.com/auth/yt-analytics.readonly" - ], "flatPath": "v1/jobs/{jobId}/reports", + "id": "youtubereporting.jobs.reports.list", "path": "v1/jobs/{jobId}/reports", - "id": "youtubereporting.jobs.reports.list" + "description": "Lists reports created by a specific job.\nReturns NOT_FOUND if the job does not exist." } } } @@ -307,31 +318,26 @@ } }, "parameters": { - "quotaUser": { - "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "pp": { + "location": "query", + "description": "Pretty-print response.", + "default": "true", + "type": "boolean" + }, + "bearer_token": { + "description": "OAuth bearer token.", "type": "string", "location": "query" }, - "pp": { - "description": "Pretty-print response.", - "default": "true", - "type": "boolean", + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "type": "string", "location": "query" }, - "bearer_token": { - "location": "query", - "description": "OAuth bearer token.", - "type": "string" - }, - "oauth_token": { - "location": "query", - "description": "OAuth 2.0 token for the current user.", - "type": "string" - }, "upload_protocol": { + "type": "string", "location": "query", - "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", - "type": "string" + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\")." }, "prettyPrint": { "description": "Returns response with indentations and line breaks.", @@ -339,33 +345,33 @@ "type": "boolean", "location": "query" }, - "uploadType": { - "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "fields": { + "description": "Selector specifying which fields to include in a partial response.", "type": "string", "location": "query" }, - "fields": { + "uploadType": { "location": "query", - "description": "Selector specifying which fields to include in a partial response.", + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", "type": "string" }, "$.xgafv": { + "location": "query", + "enum": [ + "1", + "2" + ], "description": "V1 error format.", "type": "string", "enumDescriptions": [ "v1 error format", "v2 error format" - ], - "location": "query", - "enum": [ - "1", - "2" ] }, "callback": { - "description": "JSONP", "type": "string", - "location": "query" + "location": "query", + "description": "JSONP" }, "alt": { "type": "string", @@ -383,29 +389,32 @@ "proto" ] }, + "key": { + "location": "query", + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "type": "string" + }, "access_token": { "location": "query", "description": "OAuth access token.", "type": "string" }, - "key": { - "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", - "type": "string", - "location": "query" + "quotaUser": { + "location": "query", + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "type": "string" } }, "schemas": { "Job": { - "description": "A job creating reports of a specific type.", - "type": "object", "properties": { "id": { "description": "The server-generated ID of the job (max. 40 characters).", "type": "string" }, "systemManaged": { - "description": "True if this a system-managed job that cannot be modified by the user;\notherwise false.", - "type": "boolean" + "type": "boolean", + "description": "True if this a system-managed job that cannot be modified by the user;\notherwise false." }, "createTime": { "format": "google-datetime", @@ -426,10 +435,11 @@ "type": "string" } }, - "id": "Job" + "id": "Job", + "description": "A job creating reports of a specific type.", + "type": "object" }, "ListReportsResponse": { - "description": "Response message for ReportingService.ListReports.", "type": "object", "properties": { "reports": { @@ -444,7 +454,8 @@ "type": "string" } }, - "id": "ListReportsResponse" + "id": "ListReportsResponse", + "description": "Response message for ReportingService.ListReports." }, "Media": { "description": "Media resource.", @@ -457,52 +468,14 @@ }, "id": "Media" }, - "ReportType": { - "description": "A report type.", - "type": "object", - "properties": { - "deprecateTime": { - "format": "google-datetime", - "description": "The date/time when this report type was/will be deprecated.", - "type": "string" - }, - "name": { - "description": "The name of the report type (max. 100 characters).", - "type": "string" - }, - "systemManaged": { - "description": "True if this a system-managed report type; otherwise false. Reporting jobs\nfor system-managed report types are created automatically and can thus not\nbe used in the `CreateJob` method.", - "type": "boolean" - }, - "id": { - "description": "The ID of the report type (max. 100 characters).", - "type": "string" - } - }, - "id": "ReportType" - }, - "ListReportTypesResponse": { - "description": "Response message for ReportingService.ListReportTypes.", - "type": "object", - "properties": { - "reportTypes": { - "description": "The list of report types.", - "items": { - "$ref": "ReportType" - }, - "type": "array" - }, - "nextPageToken": { - "description": "A token to retrieve next page of results.\nPass this value in the\nListReportTypesRequest.page_token\nfield in the subsequent call to `ListReportTypes` method to retrieve the next\npage of results.", - "type": "string" - } - }, - "id": "ListReportTypesResponse" - }, "Report": { "description": "A report's metadata including the URL from which the report itself can be\ndownloaded.", "type": "object", "properties": { + "id": { + "description": "The server-generated ID of the report.", + "type": "string" + }, "jobExpireTime": { "format": "google-datetime", "description": "The date/time when the job this report belongs to will expire/expired.", @@ -530,21 +503,60 @@ "jobId": { "description": "The ID of the job that created this report.", "type": "string" - }, - "id": { - "description": "The server-generated ID of the report.", - "type": "string" } }, "id": "Report" }, "Empty": { - "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", - "type": "object", "properties": {}, - "id": "Empty" + "id": "Empty", + "description": "A generic empty message that you can re-use to avoid defining duplicated\nempty messages in your APIs. A typical example is to use it as the request\nor the response type of an API method. For instance:\n\n service Foo {\n rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n }\n\nThe JSON representation for `Empty` is empty JSON object `{}`.", + "type": "object" + }, + "ListReportTypesResponse": { + "description": "Response message for ReportingService.ListReportTypes.", + "type": "object", + "properties": { + "reportTypes": { + "items": { + "$ref": "ReportType" + }, + "type": "array", + "description": "The list of report types." + }, + "nextPageToken": { + "description": "A token to retrieve next page of results.\nPass this value in the\nListReportTypesRequest.page_token\nfield in the subsequent call to `ListReportTypes` method to retrieve the next\npage of results.", + "type": "string" + } + }, + "id": "ListReportTypesResponse" + }, + "ReportType": { + "id": "ReportType", + "description": "A report type.", + "type": "object", + "properties": { + "name": { + "description": "The name of the report type (max. 100 characters).", + "type": "string" + }, + "systemManaged": { + "type": "boolean", + "description": "True if this a system-managed report type; otherwise false. Reporting jobs\nfor system-managed report types are created automatically and can thus not\nbe used in the `CreateJob` method." + }, + "id": { + "description": "The ID of the report type (max. 100 characters).", + "type": "string" + }, + "deprecateTime": { + "format": "google-datetime", + "description": "The date/time when this report type was/will be deprecated.", + "type": "string" + } + } }, "ListJobsResponse": { + "id": "ListJobsResponse", "description": "Response message for ReportingService.ListJobs.", "type": "object", "properties": { @@ -559,13 +571,12 @@ }, "type": "array" } - }, - "id": "ListJobsResponse" + } } }, "icons": { - "x32": "http://www.google.com/images/icons/product/search-32.gif", - "x16": "http://www.google.com/images/icons/product/search-16.gif" + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" }, "protocol": "rest", "version": "v1", @@ -582,16 +593,5 @@ } } } - }, - "servicePath": "", - "description": "Schedules reporting jobs containing your YouTube Analytics data and downloads the resulting bulk data reports in the form of CSV files.", - "kind": "discovery#restDescription", - "rootUrl": "https://youtubereporting.googleapis.com/", - "basePath": "", - "ownerDomain": "google.com", - "name": "youtubereporting", - "batchPath": "batch", - "revision": "20170823", - "documentationLink": "https://developers.google.com/youtube/reporting/v1/reports/", - "id": "youtubereporting:v1" + } }